Skip to content

Commit f6e67ae

Browse files
committed
[style dock] inline refine rules for rule based styles
1 parent 3d6ea7b commit f6e67ae

File tree

3 files changed

+56
-44
lines changed

3 files changed

+56
-44
lines changed

src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -253,61 +253,26 @@ void QgsRuleBasedRendererV2Widget::refineRuleScales()
253253

254254
void 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

283267
void 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

313278
void 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+
490488
void QgsRuleBasedRendererV2Widget::ruleWidgetPanelAccepted( QgsPanelWidget *panel )
491489
{
492490
QgsRendererRulePropsWidget* widget = qobject_cast<QgsRendererRulePropsWidget*>( panel );

src/gui/symbology-ng/qgsrulebasedrendererv2widget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ class GUI_EXPORT QgsRuleBasedRendererV2Widget : public QgsRendererV2Widget, priv
157157
void paste() override;
158158

159159
private slots:
160+
void refineRuleCategoriesAccepted( QgsPanelWidget* panel );
161+
void refineRuleRangesAccepted( QgsPanelWidget* panel );
160162
void ruleWidgetPanelAccepted( QgsPanelWidget* panel );
161163
void liveUpdateRuleFromPanel();
162164
};

src/ui/qgsrulebasedrendererv2widget.ui

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@
1111
</rect>
1212
</property>
1313
<layout class="QVBoxLayout" name="verticalLayout">
14+
<property name="leftMargin">
15+
<number>0</number>
16+
</property>
17+
<property name="topMargin">
18+
<number>0</number>
19+
</property>
20+
<property name="rightMargin">
21+
<number>0</number>
22+
</property>
23+
<property name="bottomMargin">
24+
<number>0</number>
25+
</property>
1426
<item>
1527
<widget class="QTreeView" name="viewRules">
1628
<property name="contextMenuPolicy">
@@ -93,7 +105,7 @@
93105
</property>
94106
<property name="icon">
95107
<iconset resource="../../images/images.qrc">
96-
<normaloff>:/images/themes/default/mActionSum.svg</normaloff>:/images/themes/default/mActionSum.svg</iconset>
108+
<normaloff>:/images/themes/default/mActionSum.svg</normaloff>:/images/themes/default/mActionSum.svg</iconset>
97109
</property>
98110
</widget>
99111
</item>

0 commit comments

Comments
 (0)