Skip to content

Commit 6da78b9

Browse files
authoredFeb 19, 2018
Merge pull request #6187 from DelazJ/rulebaseDialog
Show "Edit rule" dialog instead of widget when in Layer properties dialog
2 parents d7edf6c + 3a6eac2 commit 6da78b9

File tree

3 files changed

+126
-117
lines changed

3 files changed

+126
-117
lines changed
 

‎src/gui/symbology/qgsrulebasedrendererwidget.cpp

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,25 @@ void QgsRuleBasedRendererWidget::editRule( const QModelIndex &index )
181181
return;
182182

183183
QgsRuleBasedRenderer::Rule *rule = mModel->ruleForIndex( index );
184+
QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this );
185+
186+
if ( panel && panel->dockMode() )
187+
{
188+
QgsRendererRulePropsWidget *widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mContext );//panel?
189+
widget->setPanelTitle( tr( "Edit Rule" ) );
190+
connect( widget, &QgsPanelWidget::panelAccepted, this, &QgsRuleBasedRendererWidget::ruleWidgetPanelAccepted );
191+
connect( widget, &QgsPanelWidget::widgetChanged, this, &QgsRuleBasedRendererWidget::liveUpdateRuleFromPanel );
192+
openPanel( widget );
193+
return;
194+
}
184195

185-
QgsRendererRulePropsWidget *widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mContext );
186-
widget->setPanelTitle( tr( "Edit Rule" ) );
187-
connect( widget, &QgsPanelWidget::panelAccepted, this, &QgsRuleBasedRendererWidget::ruleWidgetPanelAccepted );
188-
connect( widget, &QgsPanelWidget::widgetChanged, this, &QgsRuleBasedRendererWidget::liveUpdateRuleFromPanel );
189-
openPanel( widget );
196+
QgsRendererRulePropsDialog dlg( rule, mLayer, mStyle, this, mContext );
197+
if ( dlg.exec() )
198+
{
199+
mModel->updateRule( index.parent(), index.row() );
200+
mModel->clearFeatureCounts();
201+
emit widgetChanged();
202+
}
190203
}
191204

192205
void QgsRuleBasedRendererWidget::removeRule()
@@ -666,23 +679,30 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRenderer::Ru
666679
connect( mScaleRangeWidget, &QgsScaleRangeWidget::rangeChanged, this, &QgsPanelWidget::widgetChanged );
667680
}
668681

682+
#include "qgsvscrollarea.h"
683+
669684
QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Rule *rule, QgsVectorLayer *layer, QgsStyle *style, QWidget *parent, const QgsSymbolWidgetContext &context )
670685
: QDialog( parent )
671686
{
672687

673688
#ifdef Q_OS_MAC
674689
setWindowModality( Qt::WindowModal );
675690
#endif
676-
this->setLayout( new QVBoxLayout() );
677691

678-
buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
692+
QVBoxLayout *layout = new QVBoxLayout( this );
693+
QgsVScrollArea *scrollArea = new QgsVScrollArea( this );
694+
layout->addWidget( scrollArea );
695+
696+
buttonBox = new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok );
679697
mPropsWidget = new QgsRendererRulePropsWidget( rule, layer, style, this, context );
680698

681-
this->layout()->addWidget( mPropsWidget );
682-
this->layout()->addWidget( buttonBox );
699+
scrollArea->setWidget( mPropsWidget );
700+
layout->addWidget( buttonBox );
701+
this->setWindowTitle( "Edit Rule" );
683702

684703
connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsRendererRulePropsDialog::accept );
685704
connect( buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject );
705+
connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsRendererRulePropsDialog::showHelp );
686706

687707
QgsSettings settings;
688708
restoreGeometry( settings.value( QStringLiteral( "Windows/QgsRendererRulePropsDialog/geometry" ) ).toByteArray() );
@@ -710,6 +730,11 @@ void QgsRendererRulePropsDialog::accept()
710730
QDialog::accept();
711731
}
712732

733+
void QgsRendererRulePropsDialog::showHelp()
734+
{
735+
QgsHelp::openHelp( QStringLiteral( "working_with_vector/vector_properties.html#rule-based-rendering" ) );
736+
}
737+
713738

714739
void QgsRendererRulePropsWidget::buildExpression()
715740
{

‎src/gui/symbology/qgsrulebasedrendererwidget.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ class GUI_EXPORT QgsRendererRulePropsDialog : public QDialog
273273
void buildExpression();
274274
void accept() override;
275275

276+
private slots:
277+
void showHelp();
278+
276279
private:
277280
QgsRendererRulePropsWidget *mPropsWidget = nullptr;
278281
QDialogButtonBox *buttonBox = nullptr;

‎src/ui/qgsrendererrulepropsdialogbase.ui

Lines changed: 89 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -6,134 +6,115 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>427</width>
10-
<height>274</height>
9+
<width>376</width>
10+
<height>155</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
1414
<string>Form</string>
1515
</property>
16-
<layout class="QVBoxLayout" name="verticalLayout_2">
16+
<layout class="QVBoxLayout" name="verticalLayout">
1717
<item>
18-
<widget class="QScrollArea" name="scrollArea">
19-
<property name="widgetResizable">
20-
<bool>true</bool>
18+
<layout class="QFormLayout" name="formLayout">
19+
<property name="fieldGrowthPolicy">
20+
<enum>QFormLayout::ExpandingFieldsGrow</enum>
2121
</property>
22-
<widget class="QWidget" name="scrollAreaWidgetContents">
23-
<property name="geometry">
24-
<rect>
25-
<x>0</x>
26-
<y>0</y>
27-
<width>407</width>
28-
<height>254</height>
29-
</rect>
30-
</property>
31-
<layout class="QVBoxLayout" name="verticalLayout">
32-
<item>
33-
<layout class="QFormLayout" name="formLayout">
34-
<property name="fieldGrowthPolicy">
35-
<enum>QFormLayout::ExpandingFieldsGrow</enum>
36-
</property>
37-
<item row="0" column="0">
38-
<widget class="QLabel" name="label_1">
39-
<property name="text">
40-
<string>Label</string>
41-
</property>
42-
</widget>
43-
</item>
44-
<item row="0" column="1">
45-
<widget class="QLineEdit" name="editLabel"/>
46-
</item>
47-
<item row="1" column="0">
48-
<widget class="QLabel" name="label_5">
49-
<property name="text">
50-
<string>Filter</string>
51-
</property>
52-
</widget>
53-
</item>
54-
<item row="1" column="1">
55-
<layout class="QHBoxLayout" name="horizontalLayout">
56-
<item>
57-
<widget class="QLineEdit" name="editFilter"/>
58-
</item>
59-
<item>
60-
<widget class="QPushButton" name="btnExpressionBuilder">
61-
<property name="sizePolicy">
62-
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
63-
<horstretch>0</horstretch>
64-
<verstretch>0</verstretch>
65-
</sizepolicy>
66-
</property>
67-
<property name="icon">
68-
<iconset>
69-
<normaloff>:/images/themes/default/mIconExpression.svg</normaloff>:/images/themes/default/mIconExpression.svg</iconset>
70-
</property>
71-
</widget>
72-
</item>
73-
<item>
74-
<widget class="QPushButton" name="btnTestFilter">
75-
<property name="text">
76-
<string>Test</string>
77-
</property>
78-
</widget>
79-
</item>
80-
</layout>
81-
</item>
82-
<item row="2" column="0">
83-
<widget class="QLabel" name="label_4">
84-
<property name="text">
85-
<string>Description</string>
86-
</property>
87-
</widget>
88-
</item>
89-
<item row="2" column="1">
90-
<widget class="QLineEdit" name="editDescription"/>
91-
</item>
92-
</layout>
93-
</item>
22+
<item row="0" column="0">
23+
<widget class="QLabel" name="label_1">
24+
<property name="text">
25+
<string>Label</string>
26+
</property>
27+
</widget>
28+
</item>
29+
<item row="0" column="1">
30+
<widget class="QLineEdit" name="editLabel"/>
31+
</item>
32+
<item row="1" column="0">
33+
<widget class="QLabel" name="label_5">
34+
<property name="text">
35+
<string>Filter</string>
36+
</property>
37+
</widget>
38+
</item>
39+
<item row="1" column="1">
40+
<layout class="QHBoxLayout" name="horizontalLayout">
9441
<item>
95-
<widget class="QGroupBox" name="groupScale">
96-
<property name="title">
97-
<string>Scale range</string>
98-
</property>
99-
<property name="checkable">
100-
<bool>true</bool>
101-
</property>
102-
<property name="checked">
103-
<bool>false</bool>
104-
</property>
105-
<layout class="QHBoxLayout" name="horizontalLayout_2">
106-
<item>
107-
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget" native="true">
108-
<property name="toolTip">
109-
<string/>
110-
</property>
111-
<property name="whatsThis">
112-
<string/>
113-
</property>
114-
</widget>
115-
</item>
116-
</layout>
117-
</widget>
42+
<widget class="QLineEdit" name="editFilter"/>
11843
</item>
11944
<item>
120-
<widget class="QGroupBox" name="groupSymbol">
45+
<widget class="QPushButton" name="btnExpressionBuilder">
12146
<property name="sizePolicy">
122-
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
47+
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
12348
<horstretch>0</horstretch>
12449
<verstretch>0</verstretch>
12550
</sizepolicy>
12651
</property>
127-
<property name="title">
128-
<string>Symbol</string>
52+
<property name="icon">
53+
<iconset>
54+
<normaloff>:/images/themes/default/mIconExpression.svg</normaloff>:/images/themes/default/mIconExpression.svg</iconset>
12955
</property>
130-
<property name="checkable">
131-
<bool>true</bool>
56+
</widget>
57+
</item>
58+
<item>
59+
<widget class="QPushButton" name="btnTestFilter">
60+
<property name="text">
61+
<string>Test</string>
13262
</property>
13363
</widget>
13464
</item>
13565
</layout>
136-
</widget>
66+
</item>
67+
<item row="2" column="0">
68+
<widget class="QLabel" name="label_4">
69+
<property name="text">
70+
<string>Description</string>
71+
</property>
72+
</widget>
73+
</item>
74+
<item row="2" column="1">
75+
<widget class="QLineEdit" name="editDescription"/>
76+
</item>
77+
</layout>
78+
</item>
79+
<item>
80+
<widget class="QGroupBox" name="groupScale">
81+
<property name="title">
82+
<string>Scale range</string>
83+
</property>
84+
<property name="checkable">
85+
<bool>true</bool>
86+
</property>
87+
<property name="checked">
88+
<bool>false</bool>
89+
</property>
90+
<layout class="QHBoxLayout" name="horizontalLayout_2">
91+
<item>
92+
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget" native="true">
93+
<property name="toolTip">
94+
<string/>
95+
</property>
96+
<property name="whatsThis">
97+
<string/>
98+
</property>
99+
</widget>
100+
</item>
101+
</layout>
102+
</widget>
103+
</item>
104+
<item>
105+
<widget class="QGroupBox" name="groupSymbol">
106+
<property name="sizePolicy">
107+
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
108+
<horstretch>0</horstretch>
109+
<verstretch>0</verstretch>
110+
</sizepolicy>
111+
</property>
112+
<property name="title">
113+
<string>Symbol</string>
114+
</property>
115+
<property name="checkable">
116+
<bool>true</bool>
117+
</property>
137118
</widget>
138119
</item>
139120
</layout>

0 commit comments

Comments
 (0)
Please sign in to comment.