15
15
16
16
#include " qgsdashspacedialog.h"
17
17
#include " qgsapplication.h"
18
+
19
+ #include < QDialogButtonBox>
18
20
#include < QFile>
19
21
20
- QgsDashSpaceDialog::QgsDashSpaceDialog ( const QVector<qreal> &v , QWidget *parent, Qt::WindowFlags f ): QDialog ( parent, f )
22
+ QgsDashSpaceWidget::QgsDashSpaceWidget ( const QVector<qreal> &vectorPattern , QWidget *parent ) : QgsPanelWidget ( parent )
21
23
{
22
24
setupUi ( this );
23
- connect ( mAddButton , &QPushButton::clicked, this , &QgsDashSpaceDialog::mAddButton_clicked );
24
- connect ( mRemoveButton , &QPushButton::clicked, this , &QgsDashSpaceDialog::mRemoveButton_clicked );
25
25
26
26
mAddButton ->setIcon ( QgsApplication::getThemeIcon ( " symbologyAdd.svg" ) );
27
27
mRemoveButton ->setIcon ( QgsApplication::getThemeIcon ( " symbologyRemove.svg" ) );
28
28
29
29
double dash = 0 ;
30
30
double space = 0 ;
31
- for ( int i = 0 ; i < ( v .size () - 1 ); ++i )
31
+ for ( int i = 0 ; i < ( vectorPattern .size () - 1 ); ++i )
32
32
{
33
- dash = v .at ( i );
33
+ dash = vectorPattern .at ( i );
34
34
++i;
35
- space = v .at ( i );
35
+ space = vectorPattern .at ( i );
36
36
QTreeWidgetItem *entry = new QTreeWidgetItem ();
37
37
entry->setFlags ( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
38
38
entry->setText ( 0 , QString::number ( dash ) );
39
39
entry->setText ( 1 , QString::number ( space ) );
40
40
mDashSpaceTreeWidget ->addTopLevelItem ( entry );
41
41
}
42
+
43
+ connect ( mAddButton , &QPushButton::clicked, this , &QgsDashSpaceWidget::mAddButton_clicked );
44
+ connect ( mRemoveButton , &QPushButton::clicked, this , &QgsDashSpaceWidget::mRemoveButton_clicked );
45
+ connect ( mDashSpaceTreeWidget , &QTreeWidget::itemChanged, this , [ this ] { emit widgetChanged (); } );
42
46
}
43
47
44
- void QgsDashSpaceDialog ::mAddButton_clicked ()
48
+ void QgsDashSpaceWidget ::mAddButton_clicked ()
45
49
{
46
50
// add new (default) item
47
51
QTreeWidgetItem *entry = new QTreeWidgetItem ();
48
52
entry->setFlags ( Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled );
49
53
entry->setText ( 0 , QStringLiteral ( " 5" ) );
50
54
entry->setText ( 1 , QStringLiteral ( " 2" ) );
51
55
mDashSpaceTreeWidget ->addTopLevelItem ( entry );
56
+ emit widgetChanged ();
52
57
}
53
58
54
- void QgsDashSpaceDialog ::mRemoveButton_clicked ()
59
+ void QgsDashSpaceWidget ::mRemoveButton_clicked ()
55
60
{
56
61
// get active item
57
62
QTreeWidgetItem *currentItem = mDashSpaceTreeWidget ->currentItem ();
58
63
if ( currentItem )
59
64
{
60
65
mDashSpaceTreeWidget ->takeTopLevelItem ( mDashSpaceTreeWidget ->indexOfTopLevelItem ( currentItem ) );
61
66
}
67
+ emit widgetChanged ();
62
68
}
63
69
64
- QVector<qreal> QgsDashSpaceDialog ::dashDotVector () const
70
+ QVector<qreal> QgsDashSpaceWidget ::dashDotVector () const
65
71
{
66
72
QVector<qreal> dashVector;
67
73
int nTopLevelItems = mDashSpaceTreeWidget ->topLevelItemCount ();
@@ -76,3 +82,29 @@ QVector<qreal> QgsDashSpaceDialog::dashDotVector() const
76
82
return dashVector;
77
83
}
78
84
85
+ void QgsDashSpaceWidget::setUnit ( QgsUnitTypes::RenderUnit unit )
86
+ {
87
+ QTreeWidgetItem *headerItem = mDashSpaceTreeWidget ->headerItem ();
88
+ headerItem->setText ( 0 , QStringLiteral ( " %1 (%2)" ).arg ( tr ( " Dash" ), QgsUnitTypes::toAbbreviatedString ( unit ) ) );
89
+ headerItem->setText ( 1 , QStringLiteral ( " %1 (%2)" ).arg ( tr ( " Space" ), QgsUnitTypes::toAbbreviatedString ( unit ) ) );
90
+ }
91
+
92
+ QgsDashSpaceDialog::QgsDashSpaceDialog ( const QVector<qreal> &v, QWidget *parent, Qt::WindowFlags f ) : QDialog( parent, f )
93
+ {
94
+ QVBoxLayout *vLayout = new QVBoxLayout ();
95
+ mWidget = new QgsDashSpaceWidget ( v );
96
+ vLayout->addWidget ( mWidget );
97
+ QDialogButtonBox *bbox = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal );
98
+ vLayout->addWidget ( bbox );
99
+ setLayout ( vLayout );
100
+ }
101
+
102
+ QVector<qreal> QgsDashSpaceDialog::dashDotVector () const
103
+ {
104
+ return mWidget ->dashDotVector ();
105
+ }
106
+
107
+ void QgsDashSpaceDialog::setUnit ( QgsUnitTypes::RenderUnit unit )
108
+ {
109
+ mWidget ->setUnit ( unit );
110
+ }
0 commit comments