@@ -134,29 +134,24 @@ void QgsRuleBasedRendererV2Widget::addRule()
134134 QgsSymbolV2* s = QgsSymbolV2::defaultSymbol ( mLayer ->geometryType () );
135135 QgsRuleBasedRendererV2::Rule* newrule = new QgsRuleBasedRendererV2::Rule ( s );
136136
137- QgsRendererRulePropsDialog dlg ( newrule, mLayer , mStyle , this , mMapCanvas );
138- if ( dlg. exec () )
137+ QgsRuleBasedRendererV2::Rule* current = currentRule ( );
138+ if ( current )
139139 {
140- QgsRuleBasedRendererV2::Rule* current = currentRule ();
141- if ( current )
142- {
143- // add after this rule
144- QModelIndex currentIndex = viewRules->selectionModel ()->currentIndex ();
145- mModel ->insertRule ( currentIndex.parent (), currentIndex.row () + 1 , newrule );
146- }
147- else
148- {
149- // append to root rule
150- int rows = mModel ->rowCount ();
151- mModel ->insertRule ( QModelIndex (), rows, newrule );
152- }
153- mModel ->clearFeatureCounts ();
154- emit widgetChanged ();
140+ // add after this rule
141+ QModelIndex currentIndex = viewRules->selectionModel ()->currentIndex ();
142+ mModel ->insertRule ( currentIndex.parent (), currentIndex.row () + 1 , newrule );
143+ QModelIndex newindex = mModel ->index ( currentIndex.row () + 1 , 0 , currentIndex.parent () );
144+ viewRules->selectionModel ()->setCurrentIndex ( newindex, QItemSelectionModel::ClearAndSelect );
155145 }
156146 else
157147 {
158- delete newrule;
148+ // append to root rule
149+ int rows = mModel ->rowCount ();
150+ mModel ->insertRule ( QModelIndex (), rows, newrule );
151+ QModelIndex newindex = mModel ->index ( rows, 0 );
152+ viewRules->selectionModel ()->setCurrentIndex ( newindex, QItemSelectionModel::ClearAndSelect );
159153 }
154+ editRule ();
160155}
161156
162157QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2Widget::currentRule ()
@@ -180,12 +175,12 @@ void QgsRuleBasedRendererV2Widget::editRule( const QModelIndex& index )
180175
181176 QgsRuleBasedRendererV2::Rule* rule = mModel ->ruleForIndex ( index );
182177
183- QgsRendererRulePropsWidget* widget = new QgsRendererRulePropsWidget ( rule, mLayer , mStyle , this , mMapCanvas );
178+ QgsRendererRulePropsWidget* widget = new QgsRendererRulePropsWidget ( rule, mLayer , mStyle , this , mMapCanvas );
184179 widget->setDockMode ( true );
185- widget->setPanelTitle (tr (" Edit rule" ) );
186- connect ( widget, SIGNAL (panelAccepted (QgsPanelWidget*) ), this , SLOT (ruleWidgetPanelAccepted (QgsPanelWidget*)) );
187- connect ( widget, SIGNAL (widgetChanged ()), this , SLOT (liveUpdateRuleFromPanel ()) );
188- openPanel (widget);
180+ widget->setPanelTitle ( tr ( " Edit rule" ) );
181+ connect ( widget, SIGNAL ( panelAccepted ( QgsPanelWidget* ) ), this , SLOT ( ruleWidgetPanelAccepted ( QgsPanelWidget* ) ) );
182+ connect ( widget, SIGNAL ( widgetChanged () ), this , SLOT ( liveUpdateRuleFromPanel () ) );
183+ openPanel ( widget );
189184}
190185
191186void QgsRuleBasedRendererV2Widget::removeRule ()
@@ -491,20 +486,21 @@ void QgsRuleBasedRendererV2Widget::paste()
491486 mModel ->dropMimeData ( mime, Qt::CopyAction, index.row (), index.column (), index.parent () );
492487}
493488
494- void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted (QgsPanelWidget *panel)
489+ void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted ( QgsPanelWidget *panel )
495490{
496- QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );
497- widget->apply ();
491+ QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );
492+ widget->apply ();
498493
499- // model should know about the change and emit dataChanged signal for the view
500- QModelIndex index = viewRules->selectionModel ()->currentIndex ();
501- mModel ->updateRule ( index.parent (), index.row () );
502- mModel ->clearFeatureCounts ();
494+ // model should know about the change and emit dataChanged signal for the view
495+ QModelIndex index = viewRules->selectionModel ()->currentIndex ();
496+ mModel ->updateRule ( index.parent (), index.row () );
497+ mModel ->clearFeatureCounts ();
498+ emit widgetChanged ();
503499}
504500
505501void QgsRuleBasedRendererV2Widget::liveUpdateRuleFromPanel ()
506502{
507- ruleWidgetPanelAccepted ( qobject_cast<QgsPanelWidget*>(sender ()) );
503+ ruleWidgetPanelAccepted ( qobject_cast<QgsPanelWidget*>( sender () ) );
508504}
509505
510506
@@ -649,8 +645,8 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRendererV2::
649645
650646 mSymbolSelector = new QgsSymbolV2SelectorWidget ( mSymbol , style, mLayer , this );
651647 mSymbolSelector ->setMapCanvas ( mMapCanvas );
652- connect (mSymbolSelector , SIGNAL (widgetChanged ()), this , SIGNAL (widgetChanged ()) );
653- connect ( mSymbolSelector , SIGNAL (showPanel (QgsPanelWidget*) ), this , SLOT (openPanel (QgsPanelWidget*)) );
648+ connect ( mSymbolSelector , SIGNAL ( widgetChanged () ), this , SIGNAL ( widgetChanged () ) );
649+ connect ( mSymbolSelector , SIGNAL ( showPanel ( QgsPanelWidget* ) ), this , SLOT ( openPanel ( QgsPanelWidget* ) ) );
654650
655651 QVBoxLayout* l = new QVBoxLayout;
656652 l->addWidget ( mSymbolSelector );
@@ -666,20 +662,20 @@ QgsRendererRulePropsWidget::~QgsRendererRulePropsWidget()
666662
667663}
668664
669- QgsRendererRulePropsDialog::QgsRendererRulePropsDialog (QgsRuleBasedRendererV2::Rule *rule, QgsVectorLayer *layer, QgsStyleV2 *style, QWidget *parent, QgsMapCanvas *mapCanvas)
670- : QDialog(parent)
665+ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog ( QgsRuleBasedRendererV2::Rule *rule, QgsVectorLayer *layer, QgsStyleV2 *style, QWidget *parent, QgsMapCanvas *mapCanvas )
666+ : QDialog( parent )
671667{
672668
673669#ifdef Q_OS_MAC
674670 setWindowModality ( Qt::WindowModal );
675671#endif
676- this ->setLayout (new QVBoxLayout ());
672+ this ->setLayout ( new QVBoxLayout () );
677673
678- buttonBox = new QDialogButtonBox (QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
679- mPropsWidget = new QgsRendererRulePropsWidget (rule, layer, style, this , mapCanvas);
674+ buttonBox = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
675+ mPropsWidget = new QgsRendererRulePropsWidget ( rule, layer, style, this , mapCanvas );
680676
681- this ->layout ()->addWidget (mPropsWidget );
682- this ->layout ()->addWidget (buttonBox);
677+ this ->layout ()->addWidget ( mPropsWidget );
678+ this ->layout ()->addWidget ( buttonBox );
683679
684680 connect ( buttonBox, SIGNAL ( accepted () ), this , SLOT ( accept () ) );
685681 connect ( buttonBox, SIGNAL ( rejected () ), this , SLOT ( reject () ) );
@@ -796,7 +792,7 @@ void QgsRendererRulePropsWidget::apply()
796792 mRule ->setSymbol ( groupSymbol->isChecked () ? mSymbol ->clone () : nullptr );
797793}
798794
799- void QgsRendererRulePropsWidget::setDockMode (bool dockMode)
795+ void QgsRendererRulePropsWidget::setDockMode ( bool dockMode )
800796{
801797 QgsPanelWidget::setDockMode ( dockMode );
802798 mSymbolSelector ->setDockMode ( true );
0 commit comments