@@ -95,37 +95,9 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
95
95
}
96
96
97
97
98
- connect ( buttonBox, SIGNAL ( accepted () ), this , SLOT ( onOK () ) );
99
-
100
98
// initialize registry's widget functions
101
99
_initRendererWidgetFunctions ();
102
100
103
- // Blend mode
104
- mBlendModeComboBox ->setBlendMode ( mLayer ->blendMode () );
105
-
106
- // Feature blend mode
107
- mFeatureBlendComboBox ->setBlendMode ( mLayer ->featureBlendMode () );
108
-
109
- // Layer transparency
110
- mLayerTransparencySlider ->setValue ( mLayer ->layerTransparency () );
111
- mLayerTransparencySpnBx ->setValue ( mLayer ->layerTransparency () );
112
-
113
- // connect layer transparency slider and spin box
114
- connect ( mLayerTransparencySlider , SIGNAL ( valueChanged ( int ) ), mLayerTransparencySpnBx , SLOT ( setValue ( int ) ) );
115
- connect ( mLayerTransparencySpnBx , SIGNAL ( valueChanged ( int ) ), mLayerTransparencySlider , SLOT ( setValue ( int ) ) );
116
-
117
- // paint effect widget
118
- if ( mLayer ->rendererV2 () )
119
- {
120
- if ( mLayer ->rendererV2 ()->paintEffect () )
121
- {
122
- mPaintEffect = mLayer ->rendererV2 ()->paintEffect ()->clone ();
123
- mEffectWidget ->setPaintEffect ( mPaintEffect );
124
- }
125
-
126
- mOrderBy = mLayer ->rendererV2 ()->orderBy ();
127
- }
128
-
129
101
QgsRendererV2Registry* reg = QgsRendererV2Registry::instance ();
130
102
QStringList renderers = reg->renderersList ();
131
103
Q_FOREACH ( const QString& name, renderers )
@@ -136,34 +108,18 @@ QgsRendererV2PropertiesDialog::QgsRendererV2PropertiesDialog( QgsVectorLayer* la
136
108
137
109
cboRenderers->setCurrentIndex ( -1 ); // set no current renderer
138
110
139
- // setup slot rendererChanged()
111
+ connect ( buttonBox, SIGNAL ( accepted () ), this , SLOT ( onOK () ) );
112
+
113
+ // connect layer transparency slider and spin box
114
+ connect ( mLayerTransparencySlider , SIGNAL ( valueChanged ( int ) ), mLayerTransparencySpnBx , SLOT ( setValue ( int ) ) );
115
+ connect ( mLayerTransparencySpnBx , SIGNAL ( valueChanged ( int ) ), mLayerTransparencySlider , SLOT ( setValue ( int ) ) );
116
+
140
117
connect ( cboRenderers, SIGNAL ( currentIndexChanged ( int ) ), this , SLOT ( rendererChanged () ) );
141
- // setup order by
142
- if ( mLayer ->rendererV2 ()->orderByEnabled () )
143
- {
144
- checkboxEnableOrderBy->setChecked ( true );
145
- }
146
- else
147
- {
148
- btnOrderBy->setEnabled ( false );
149
- checkboxEnableOrderBy->setChecked ( false );
150
- lineEditOrderBy->setEnabled ( false );
151
- }
152
- lineEditOrderBy->setReadOnly ( true );
153
118
connect ( checkboxEnableOrderBy, SIGNAL ( toggled ( bool ) ), btnOrderBy, SLOT ( setEnabled ( bool ) ) );
154
119
connect ( checkboxEnableOrderBy, SIGNAL ( toggled ( bool ) ), lineEditOrderBy, SLOT ( setEnabled ( bool ) ) );
155
120
connect ( btnOrderBy, SIGNAL ( clicked ( bool ) ), this , SLOT ( showOrderByDialog () ) );
156
- lineEditOrderBy->setText ( mOrderBy .dump () );
157
121
158
- // set current renderer from layer
159
- QString rendererName = mLayer ->rendererV2 ()->type ();
160
-
161
- int rendererIdx = cboRenderers->findData ( rendererName );
162
- cboRenderers->setCurrentIndex ( rendererIdx );
163
-
164
- // no renderer found... this mustn't happen
165
- Q_ASSERT ( rendererIdx != -1 && " there must be a renderer!" );
166
- connectValueChanged ( findChildren<QWidget*>(), SIGNAL ( widgetChanged () ) );
122
+ syncToLayer ();
167
123
}
168
124
169
125
void QgsRendererV2PropertiesDialog::connectValueChanged ( QList<QWidget *> widgets, const char *slot )
@@ -206,6 +162,47 @@ void QgsRendererV2PropertiesDialog::connectValueChanged( QList<QWidget *> widget
206
162
}
207
163
}
208
164
165
+ void QgsRendererV2PropertiesDialog::disconnectValueChanged ( QList<QWidget *> widgets, const char *slot )
166
+ {
167
+ Q_FOREACH ( QWidget* widget, widgets )
168
+ {
169
+ if ( QgsDataDefinedButton* w = qobject_cast<QgsDataDefinedButton*>( widget ) )
170
+ {
171
+ disconnect ( w, SIGNAL ( dataDefinedActivated ( bool ) ), this , slot );
172
+ disconnect ( w, SIGNAL ( dataDefinedChanged ( QString ) ), this , slot );
173
+ }
174
+ else if ( QgsFieldExpressionWidget* w = qobject_cast<QgsFieldExpressionWidget*>( widget ) )
175
+ {
176
+ disconnect ( w, SIGNAL ( fieldChanged ( QString ) ), this , slot );
177
+ }
178
+ else if ( QComboBox* w = qobject_cast<QComboBox*>( widget ) )
179
+ {
180
+ disconnect ( w, SIGNAL ( currentIndexChanged ( int ) ), this , slot );
181
+ }
182
+ else if ( QSpinBox* w = qobject_cast<QSpinBox*>( widget ) )
183
+ {
184
+ disconnect ( w, SIGNAL ( valueChanged ( int ) ), this , slot );
185
+ }
186
+ else if ( QDoubleSpinBox* w = qobject_cast<QDoubleSpinBox*>( widget ) )
187
+ {
188
+ disconnect ( w , SIGNAL ( valueChanged ( double ) ), this , slot );
189
+ }
190
+ else if ( QgsColorButtonV2* w = qobject_cast<QgsColorButtonV2*>( widget ) )
191
+ {
192
+ disconnect ( w, SIGNAL ( colorChanged ( QColor ) ), this , slot );
193
+ }
194
+ else if ( QCheckBox* w = qobject_cast<QCheckBox*>( widget ) )
195
+ {
196
+ disconnect ( w, SIGNAL ( toggled ( bool ) ), this , slot );
197
+ }
198
+ else if ( QLineEdit* w = qobject_cast<QLineEdit*>( widget ) )
199
+ {
200
+ disconnect ( w, SIGNAL ( textEdited ( QString ) ), this , slot );
201
+ }
202
+ }
203
+
204
+ }
205
+
209
206
QgsRendererV2PropertiesDialog::~QgsRendererV2PropertiesDialog ()
210
207
{
211
208
delete mPaintEffect ;
@@ -222,6 +219,7 @@ void QgsRendererV2PropertiesDialog::setMapCanvas( QgsMapCanvas* canvas )
222
219
void QgsRendererV2PropertiesDialog::rendererChanged ()
223
220
{
224
221
222
+ QgsDebugMsg ( " RENDERER CHANGED" );
225
223
if ( cboRenderers->currentIndex () == -1 )
226
224
{
227
225
QgsDebugMsg ( " No current item -- this should never happen!" );
@@ -312,6 +310,61 @@ void QgsRendererV2PropertiesDialog::onOK()
312
310
accept ();
313
311
}
314
312
313
+ void QgsRendererV2PropertiesDialog::syncToLayer ()
314
+ {
315
+ QgsDebugMsg ( " SYNC TO LAYER!!" );
316
+ disconnectValueChanged ( findChildren<QWidget*>(), SIGNAL ( widgetChanged () ) );
317
+ // Blend mode
318
+ mBlendModeComboBox ->setBlendMode ( mLayer ->blendMode () );
319
+
320
+ // Feature blend mode
321
+ mFeatureBlendComboBox ->setBlendMode ( mLayer ->featureBlendMode () );
322
+
323
+ // Layer transparency
324
+ mLayerTransparencySlider ->setValue ( mLayer ->layerTransparency () );
325
+ mLayerTransparencySpnBx ->setValue ( mLayer ->layerTransparency () );
326
+
327
+ QgsDebugMsg ( QString ( " VALUE: %1" ).arg ( mLayer ->layerTransparency () ) );
328
+ // paint effect widget
329
+ if ( mLayer ->rendererV2 () )
330
+ {
331
+ if ( mLayer ->rendererV2 ()->paintEffect () )
332
+ {
333
+ mPaintEffect = mLayer ->rendererV2 ()->paintEffect ()->clone ();
334
+ mEffectWidget ->setPaintEffect ( mPaintEffect );
335
+ }
336
+
337
+ mOrderBy = mLayer ->rendererV2 ()->orderBy ();
338
+ }
339
+
340
+ lineEditOrderBy->setText ( mOrderBy .dump () );
341
+
342
+ // setup slot rendererChanged()
343
+ // setup order by
344
+ if ( mLayer ->rendererV2 ()->orderByEnabled () )
345
+ {
346
+ checkboxEnableOrderBy->setChecked ( true );
347
+ }
348
+ else
349
+ {
350
+ btnOrderBy->setEnabled ( false );
351
+ checkboxEnableOrderBy->setChecked ( false );
352
+ lineEditOrderBy->setEnabled ( false );
353
+ }
354
+ lineEditOrderBy->setReadOnly ( true );
355
+
356
+ // set current renderer from layer
357
+ QString rendererName = mLayer ->rendererV2 ()->type ();
358
+
359
+ int rendererIdx = cboRenderers->findData ( rendererName );
360
+ cboRenderers->setCurrentIndex ( rendererIdx );
361
+
362
+ // no renderer found... this mustn't happen
363
+ Q_ASSERT ( rendererIdx != -1 && " there must be a renderer!" );
364
+
365
+ connectValueChanged ( findChildren<QWidget*>(), SIGNAL ( widgetChanged () ) );
366
+ }
367
+
315
368
void QgsRendererV2PropertiesDialog::showOrderByDialog ()
316
369
{
317
370
QgsOrderByDialog dlg ( mLayer , this );
0 commit comments