diff --git a/python/gui/symbology-ng/qgsrulebasedrendererv2widget.sip b/python/gui/symbology-ng/qgsrulebasedrendererv2widget.sip index 314181369e1..524aa4b6ee0 100644 --- a/python/gui/symbology-ng/qgsrulebasedrendererv2widget.sip +++ b/python/gui/symbology-ng/qgsrulebasedrendererv2widget.sip @@ -79,6 +79,7 @@ class QgsRuleBasedRendererV2Widget : QgsRendererV2Widget void setRenderingOrder(); void currentRuleChanged( const QModelIndex& current = QModelIndex(), const QModelIndex& previous = QModelIndex() ); + void selectedRulesChanged(); void saveSectionWidth( int section, int oldSize, int newSize ); void restoreSectionWidths(); diff --git a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp index 307714c33d4..610c9ac8d2d 100644 --- a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp +++ b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp @@ -95,6 +95,7 @@ QgsRuleBasedRendererV2Widget::QgsRuleBasedRendererV2Widget( QgsVectorLayer* laye connect( viewRules, SIGNAL( customContextMenuRequested( const QPoint& ) ), this, SLOT( contextMenuViewCategories( const QPoint& ) ) ); connect( viewRules->selectionModel(), SIGNAL( currentChanged( QModelIndex, QModelIndex ) ), this, SLOT( currentRuleChanged( QModelIndex, QModelIndex ) ) ); + connect( viewRules->selectionModel(), SIGNAL( selectionChanged( QItemSelection, QItemSelection ) ), this, SLOT( selectedRulesChanged() ) ); connect( btnAddRule, SIGNAL( clicked() ), this, SLOT( addRule() ) ); connect( btnEditRule, SIGNAL( clicked() ), this, SLOT( editRule() ) ); @@ -105,6 +106,7 @@ QgsRuleBasedRendererV2Widget::QgsRuleBasedRendererV2Widget( QgsVectorLayer* laye connect( btnRenderingOrder, SIGNAL( clicked() ), this, SLOT( setRenderingOrder() ) ); currentRuleChanged(); + selectedRulesChanged(); // store/restore header section widths connect( viewRules->header(), SIGNAL( sectionResized( int, int, int ) ), this, SLOT( saveSectionWidth( int, int, int ) ) ); @@ -200,7 +202,7 @@ void QgsRuleBasedRendererV2Widget::removeRule() void QgsRuleBasedRendererV2Widget::currentRuleChanged( const QModelIndex& current, const QModelIndex& previous ) { Q_UNUSED( previous ); - btnRefineRule->setEnabled( current.isValid() ); + btnEditRule->setEnabled( current.isValid() ); } @@ -578,6 +580,13 @@ void QgsRuleBasedRendererV2Widget::countFeatures() mModel->setFeatureCounts( countMap ); } +void QgsRuleBasedRendererV2Widget::selectedRulesChanged() +{ + bool enabled = !viewRules->selectionModel()->selectedIndexes().isEmpty(); + btnRefineRule->setEnabled( enabled ); + btnRemoveRule->setEnabled( enabled ); +} + /////////// QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRendererV2::Rule* rule, QgsVectorLayer* layer, QgsStyleV2* style, QWidget* parent , QgsMapCanvas* mapCanvas ) diff --git a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.h b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.h index 499c28e66ff..9849b2755e7 100644 --- a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.h +++ b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.h @@ -126,6 +126,7 @@ class GUI_EXPORT QgsRuleBasedRendererV2Widget : public QgsRendererV2Widget, priv void setRenderingOrder(); void currentRuleChanged( const QModelIndex& current = QModelIndex(), const QModelIndex& previous = QModelIndex() ); + void selectedRulesChanged(); void saveSectionWidth( int section, int oldSize, int newSize ); void restoreSectionWidths(); diff --git a/src/ui/qgsrulebasedrendererv2widget.ui b/src/ui/qgsrulebasedrendererv2widget.ui index 5fac2d1e466..a283c48a3a9 100644 --- a/src/ui/qgsrulebasedrendererv2widget.ui +++ b/src/ui/qgsrulebasedrendererv2widget.ui @@ -64,7 +64,7 @@ - Edit rule + Edit current rule @@ -78,7 +78,7 @@ - Remove rule + Remove selected rules @@ -95,7 +95,7 @@ true - Refine current rules + Refine selected rules false