@@ -253,61 +253,26 @@ void QgsRuleBasedRendererV2Widget::refineRuleScales()
253253
254254void QgsRuleBasedRendererV2Widget::refineRuleCategoriesGui ( const QModelIndexList& indexList )
255255{
256- QDialog dlg;
257- dlg.setWindowTitle ( tr ( " Refine a rule to categories" ) );
258256 QVBoxLayout* l = new QVBoxLayout ();
259257 QgsCategorizedSymbolRendererV2Widget* w = new QgsCategorizedSymbolRendererV2Widget ( mLayer , mStyle , nullptr );
258+ w->setPanelTitle ( tr ( " Add categories to rules" ) );
259+ connect ( w, SIGNAL ( panelAccepted ( QgsPanelWidget* ) ), this , SLOT ( refineRuleCategoriesAccepted ( QgsPanelWidget* ) ) );
260+ w->setDockMode ( this ->dockMode () );
260261 w->setMapCanvas ( mMapCanvas );
261- l->addWidget ( w );
262- QDialogButtonBox* bb = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
263- l->addWidget ( bb );
264- connect ( bb, SIGNAL ( accepted () ), &dlg, SLOT ( accept () ) );
265- connect ( bb, SIGNAL ( rejected () ), &dlg, SLOT ( reject () ) );
266- dlg.setLayout ( l );
267-
268- if ( !dlg.exec () )
269- return ;
262+ openPanel ( w );
270263
271- // create new rules
272- QgsCategorizedSymbolRendererV2* r = static_cast <QgsCategorizedSymbolRendererV2*>( w->renderer () );
273- Q_FOREACH ( const QModelIndex& index, indexList )
274- {
275- QgsRuleBasedRendererV2::Rule* initialRule = mModel ->ruleForIndex ( index );
276- mModel ->willAddRules ( index, r->categories ().count () );
277- QgsRuleBasedRendererV2::refineRuleCategories ( initialRule, r );
278- }
279- mModel ->finishedAddingRules ();
280264}
281265
282266
283267void QgsRuleBasedRendererV2Widget::refineRuleRangesGui ( const QModelIndexList& indexList )
284268{
285-
286-
287- QDialog dlg;
288- dlg.setWindowTitle ( tr ( " Refine a rule to ranges" ) );
289- QVBoxLayout* l = new QVBoxLayout ();
290269 QgsGraduatedSymbolRendererV2Widget* w = new QgsGraduatedSymbolRendererV2Widget ( mLayer , mStyle , nullptr );
270+ w->setPanelTitle ( tr ( " Add ranges to rules" ) );
271+ connect ( w, SIGNAL ( panelAccepted ( QgsPanelWidget* ) ), this , SLOT ( refineRuleRangesAccepted ( QgsPanelWidget* ) ) );
291272 w->setMapCanvas ( mMapCanvas );
292- l->addWidget ( w );
293- QDialogButtonBox* bb = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
294- l->addWidget ( bb );
295- connect ( bb, SIGNAL ( accepted () ), &dlg, SLOT ( accept () ) );
296- connect ( bb, SIGNAL ( rejected () ), &dlg, SLOT ( reject () ) );
297- dlg.setLayout ( l );
298-
299- if ( !dlg.exec () )
300- return ;
273+ w->setDockMode ( this ->dockMode () );
274+ openPanel ( w );
301275
302- // create new rules
303- QgsGraduatedSymbolRendererV2* r = static_cast <QgsGraduatedSymbolRendererV2*>( w->renderer () );
304- Q_FOREACH ( const QModelIndex& index, indexList )
305- {
306- QgsRuleBasedRendererV2::Rule* initialRule = mModel ->ruleForIndex ( index );
307- mModel ->willAddRules ( index, r->ranges ().count () );
308- QgsRuleBasedRendererV2::refineRuleRanges ( initialRule, r );
309- }
310- mModel ->finishedAddingRules ();
311276}
312277
313278void QgsRuleBasedRendererV2Widget::refineRuleScalesGui ( const QModelIndexList& indexList )
@@ -487,6 +452,39 @@ void QgsRuleBasedRendererV2Widget::paste()
487452 mModel ->dropMimeData ( mime, Qt::CopyAction, index.row (), index.column (), index.parent () );
488453}
489454
455+ void QgsRuleBasedRendererV2Widget::refineRuleCategoriesAccepted ( QgsPanelWidget *panel )
456+ {
457+ QgsCategorizedSymbolRendererV2Widget* w = qobject_cast<QgsCategorizedSymbolRendererV2Widget*>( panel );
458+
459+ // create new rules
460+ QgsCategorizedSymbolRendererV2* r = static_cast <QgsCategorizedSymbolRendererV2*>( w->renderer () );
461+ QModelIndexList indexList = viewRules->selectionModel ()->selectedRows ();
462+ Q_FOREACH ( const QModelIndex& index, indexList )
463+ {
464+ QgsRuleBasedRendererV2::Rule* initialRule = mModel ->ruleForIndex ( index );
465+ mModel ->willAddRules ( index, r->categories ().count () );
466+ QgsRuleBasedRendererV2::refineRuleCategories ( initialRule, r );
467+ }
468+ mModel ->finishedAddingRules ();
469+ emit widgetChanged ();
470+ }
471+
472+ void QgsRuleBasedRendererV2Widget::refineRuleRangesAccepted ( QgsPanelWidget *panel )
473+ {
474+ QgsGraduatedSymbolRendererV2Widget* w = qobject_cast<QgsGraduatedSymbolRendererV2Widget*>( panel );
475+ // create new rules
476+ QgsGraduatedSymbolRendererV2* r = static_cast <QgsGraduatedSymbolRendererV2*>( w->renderer () );
477+ QModelIndexList indexList = viewRules->selectionModel ()->selectedRows ();
478+ Q_FOREACH ( const QModelIndex& index, indexList )
479+ {
480+ QgsRuleBasedRendererV2::Rule* initialRule = mModel ->ruleForIndex ( index );
481+ mModel ->willAddRules ( index, r->ranges ().count () );
482+ QgsRuleBasedRendererV2::refineRuleRanges ( initialRule, r );
483+ }
484+ mModel ->finishedAddingRules ();
485+ emit widgetChanged ();
486+ }
487+
490488void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted ( QgsPanelWidget *panel )
491489{
492490 QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );
0 commit comments