Skip to content

Commit 1c91ae7

Browse files
committedJul 6, 2016
Show breadcrumb and back button for rule based labeling (fixes #15153)
Following the way how rule based rendering widget was adjusted...
1 parent e00ba6d commit 1c91ae7

10 files changed

+185
-258
lines changed
 

‎python/gui/qgspanelwidget.sip

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ class QgsPanelWidget : public QWidget
7777
signals:
7878

7979
/**
80-
* Emiited when the panel is accpeted by the user.
80+
* Emitted when the panel is accepted by the user.
8181
* @param panel The panel widget that was accepted.
82-
* @note This argument is normally raised with emit panelAccpeted(this)
82+
* @note This argument is normally raised with emit panelAccepted(this)
8383
* so that callers can retrive the widget easier in calling code.
8484
*/
8585
void panelAccepted( QgsPanelWidget* panel );
@@ -93,7 +93,7 @@ class QgsPanelWidget : public QWidget
9393
void showPanel( QgsPanelWidget* panel );
9494

9595
/**
96-
* Emiited when the widget state changes.
96+
* Emitted when the widget state changes.
9797
* Connect to this to pull any changes off the widget when needed.
9898
* As panels are non blocking "dialogs" you should listen to this signal
9999
* to give the user feedback when something changes.
@@ -114,7 +114,7 @@ class QgsPanelWidget : public QWidget
114114
void openPanel( QgsPanelWidget* panel );
115115

116116
/**
117-
* Accept the panel. Causes panelAccepted to be emiited.
117+
* Accept the panel. Causes panelAccepted to be emitted.
118118
* Widgets are normally removed form the interface using the panel manager or the caller.
119119
*/
120120
void acceptPanel();

‎src/app/qgslabelingwidget.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ void QgsLabelingWidget::setLayer( QgsMapLayer* mapLayer )
8686

8787
void QgsLabelingWidget::setDockMode( bool enabled )
8888
{
89-
mDockMode = enabled;
90-
mLabelGui->setDockMode( mDockMode );
89+
QgsPanelWidget::setDockMode( enabled );
90+
mLabelGui->setDockMode( enabled );
9191
}
9292

9393
void QgsLabelingWidget::adaptToLayer()
@@ -155,7 +155,9 @@ void QgsLabelingWidget::labelModeChanged( int index )
155155
delete mWidget;
156156
mWidget = nullptr;
157157

158-
QgsRuleBasedLabelingWidget* ruleWidget = new QgsRuleBasedLabelingWidget( mLayer, mCanvas, this, mDockMode );
158+
QgsRuleBasedLabelingWidget* ruleWidget = new QgsRuleBasedLabelingWidget( mLayer, mCanvas, this );
159+
ruleWidget->setDockMode( dockMode() );
160+
connect( ruleWidget, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( openPanel( QgsPanelWidget* ) ) );
159161
connect( ruleWidget, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
160162
mWidget = ruleWidget;
161163
mStackedWidget->addWidget( mWidget );

‎src/app/qgslabelingwidget.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ class QgsLabelingWidget : public QgsMapLayerConfigWidget, private Ui::QgsLabelin
6363
QgsVectorLayer* mLayer;
6464
QgsMapCanvas* mCanvas;
6565

66-
bool mDockMode;
67-
6866
QWidget* mWidget;
6967
QgsLabelingGui* mLabelGui;
7068
QScopedPointer< QgsAbstractVectorLayerLabeling > mOldSettings;

‎src/app/qgsrulebasedlabelingwidget.cpp

Lines changed: 42 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@
2424
#include <QClipboard>
2525
#include <QMessageBox>
2626

27-
QgsRuleBasedLabelingWidget::QgsRuleBasedLabelingWidget( QgsVectorLayer* layer, QgsMapCanvas* canvas, QWidget* parent, bool dockMode )
28-
: QWidget( parent )
27+
QgsRuleBasedLabelingWidget::QgsRuleBasedLabelingWidget( QgsVectorLayer* layer, QgsMapCanvas* canvas, QWidget* parent )
28+
: QgsPanelWidget( parent )
2929
, mLayer( layer )
3030
, mCanvas( canvas )
3131
, mRootRule( nullptr )
3232
, mModel( nullptr )
33-
, mRuleProps( nullptr )
34-
, mDockMode( dockMode )
3533
{
3634
setupUi( this );
3735

@@ -78,11 +76,6 @@ QgsRuleBasedLabelingWidget::~QgsRuleBasedLabelingWidget()
7876
delete mRootRule;
7977
}
8078

81-
void QgsRuleBasedLabelingWidget::setDockMode( bool enabled )
82-
{
83-
mDockMode = enabled;
84-
}
85-
8679
void QgsRuleBasedLabelingWidget::writeSettingsToLayer()
8780
{
8881
// also clear old-style labeling config
@@ -93,83 +86,46 @@ void QgsRuleBasedLabelingWidget::writeSettingsToLayer()
9386

9487
void QgsRuleBasedLabelingWidget::addRule()
9588
{
96-
if ( mRuleProps )
97-
mStackedWidget->removeWidget( mRuleProps );
9889

99-
delete mRuleProps;
100-
mRuleProps = nullptr;
101-
102-
// TODO Delete rule
10390
QgsRuleBasedLabeling::Rule* newrule = new QgsRuleBasedLabeling::Rule( new QgsPalLayerSettings );
104-
mRuleProps = new QgsLabelingRulePropsDialog( newrule, mLayer, this, mCanvas, mDockMode );
105-
mRuleProps->setCurrentMode( QgsLabelingRulePropsDialog::Adding );
106-
107-
mStackedWidget->addWidget( mRuleProps );
108-
mStackedWidget->setCurrentWidget( mRuleProps );
109-
110-
connect( mRuleProps, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
111-
connect( mRuleProps, SIGNAL( accepted() ), this, SLOT( saveRule() ) );
112-
connect( mRuleProps, SIGNAL( rejected() ), this, SLOT( rejectRule() ) );
113-
addNewRule( newrule );
114-
}
115-
116-
void QgsRuleBasedLabelingWidget::saveRuleEdit()
117-
{
118-
QModelIndex index = viewRules->selectionModel()->currentIndex();
119-
mModel->updateRule( index.parent(), index.row() );
120-
if ( mRuleProps )
121-
mStackedWidget->removeWidget( mRuleProps );
122-
123-
delete mRuleProps;
124-
mRuleProps = nullptr;
125-
mStackedWidget->setCurrentIndex( 0 );
126-
emit widgetChanged();
127-
}
128-
129-
void QgsRuleBasedLabelingWidget::saveRule()
130-
{
131-
if ( mRuleProps )
132-
mStackedWidget->removeWidget( mRuleProps );
13391

134-
delete mRuleProps;
135-
mRuleProps = nullptr;
136-
mStackedWidget->setCurrentIndex( 0 );
137-
emit widgetChanged();
138-
}
139-
140-
void QgsRuleBasedLabelingWidget::addNewRule( QgsRuleBasedLabeling::Rule* newrule )
141-
{
142-
if ( currentRule() )
92+
QgsRuleBasedLabeling::Rule* current = currentRule();
93+
if ( current )
14394
{
14495
// add after this rule
14596
QModelIndex currentIndex = viewRules->selectionModel()->currentIndex();
14697
mModel->insertRule( currentIndex.parent(), currentIndex.row() + 1, newrule );
147-
viewRules->selectionModel()->select( mModel->index( currentIndex.row() + 1, 0 ), QItemSelectionModel::ClearAndSelect );
98+
QModelIndex newindex = mModel->index( currentIndex.row() + 1, 0, currentIndex.parent() );
99+
viewRules->selectionModel()->setCurrentIndex( newindex, QItemSelectionModel::ClearAndSelect );
148100
}
149101
else
150102
{
151103
// append to root rule
152104
int rows = mModel->rowCount();
153105
mModel->insertRule( QModelIndex(), rows, newrule );
154-
viewRules->selectionModel()->select( mModel->index( rows, 0 ), QItemSelectionModel::ClearAndSelect );
106+
QModelIndex newindex = mModel->index( rows, 0 );
107+
viewRules->selectionModel()->setCurrentIndex( newindex, QItemSelectionModel::ClearAndSelect );
155108
}
109+
editRule();
156110
}
157111

158-
void QgsRuleBasedLabelingWidget::rejectRule()
112+
void QgsRuleBasedLabelingWidget::ruleWidgetPanelAccepted( QgsPanelWidget* panel )
159113
{
160-
if ( mRuleProps->currentMode() == QgsLabelingRulePropsDialog::Adding )
161-
removeRule();
114+
QgsLabelingRulePropsWidget* widget = qobject_cast<QgsLabelingRulePropsWidget*>( panel );
115+
widget->apply();
162116

163-
mStackedWidget->setCurrentIndex( 0 );
164-
165-
if ( mRuleProps )
166-
mStackedWidget->removeWidget( mRuleProps );
117+
QModelIndex index = viewRules->selectionModel()->currentIndex();
118+
mModel->updateRule( index.parent(), index.row() );
167119

168-
delete mRuleProps;
169-
mRuleProps = nullptr;
170120
emit widgetChanged();
171121
}
172122

123+
void QgsRuleBasedLabelingWidget::liveUpdateRuleFromPanel()
124+
{
125+
ruleWidgetPanelAccepted( qobject_cast<QgsPanelWidget*>( sender() ) );
126+
}
127+
128+
173129
void QgsRuleBasedLabelingWidget::editRule()
174130
{
175131
editRule( viewRules->selectionModel()->currentIndex() );
@@ -180,23 +136,14 @@ void QgsRuleBasedLabelingWidget::editRule( const QModelIndex& index )
180136
if ( !index.isValid() )
181137
return;
182138

183-
if ( mRuleProps )
184-
mStackedWidget->removeWidget( mRuleProps );
185-
186-
delete mRuleProps;
187-
mRuleProps = nullptr;
188-
189139
QgsRuleBasedLabeling::Rule* rule = mModel->ruleForIndex( index );
190-
mRuleProps = new QgsLabelingRulePropsDialog( rule, mLayer, this, mCanvas, mDockMode );
191-
mRuleProps->setCurrentMode( QgsLabelingRulePropsDialog::Editing );
192-
193-
connect( mRuleProps, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
194140

195-
mStackedWidget->addWidget( mRuleProps );
196-
mStackedWidget->setCurrentWidget( mRuleProps );
197-
198-
connect( mRuleProps, SIGNAL( accepted() ), this, SLOT( saveRuleEdit() ) );
199-
connect( mRuleProps, SIGNAL( rejected() ), this, SLOT( rejectRule() ) );
141+
QgsLabelingRulePropsWidget* widget = new QgsLabelingRulePropsWidget( rule, mLayer, this, mCanvas );
142+
widget->setDockMode( true );
143+
widget->setPanelTitle( tr( "Edit rule" ) );
144+
connect( widget, SIGNAL( panelAccepted( QgsPanelWidget* ) ), this, SLOT( ruleWidgetPanelAccepted( QgsPanelWidget* ) ) );
145+
connect( widget, SIGNAL( widgetChanged() ), this, SLOT( liveUpdateRuleFromPanel() ) );
146+
openPanel( widget );
200147
}
201148

202149
void QgsRuleBasedLabelingWidget::removeRule()
@@ -622,23 +569,15 @@ void QgsRuleBasedLabelingModel::updateRule( const QModelIndex& parent, int row )
622569

623570
/////////
624571

625-
QgsLabelingRulePropsDialog::QgsLabelingRulePropsDialog( QgsRuleBasedLabeling::Rule* rule, QgsVectorLayer* layer, QWidget* parent, QgsMapCanvas* mapCanvas, bool dockMode )
626-
: QDialog( parent )
572+
QgsLabelingRulePropsWidget::QgsLabelingRulePropsWidget( QgsRuleBasedLabeling::Rule* rule, QgsVectorLayer* layer, QWidget* parent, QgsMapCanvas* mapCanvas )
573+
: QgsPanelWidget( parent )
627574
, mRule( rule )
628575
, mLayer( layer )
629576
, mLabelingGui( nullptr )
630577
, mSettings( nullptr )
631578
, mMapCanvas( mapCanvas )
632-
, mDockMode( dockMode )
633-
, mCurrentMode( Adding )
634579
{
635580
setupUi( this );
636-
#ifdef Q_OS_MAC
637-
setWindowModality( Qt::WindowModal );
638-
#endif
639-
640-
connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
641-
connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
642581

643582
editFilter->setText( mRule->filterExpression() );
644583
editFilter->setToolTip( mRule->filterExpression() );
@@ -668,7 +607,6 @@ QgsLabelingRulePropsDialog::QgsLabelingRulePropsDialog( QgsRuleBasedLabeling::Ru
668607
}
669608

670609
mLabelingGui = new QgsLabelingGui( nullptr, mMapCanvas, mSettings, this );
671-
mLabelingGui->setDockMode( mDockMode );
672610
mLabelingGui->layout()->setContentsMargins( 0, 0, 0, 0 );
673611
QVBoxLayout* l = new QVBoxLayout;
674612
l->addWidget( mLabelingGui );
@@ -680,21 +618,25 @@ QgsLabelingRulePropsDialog::QgsLabelingRulePropsDialog( QgsRuleBasedLabeling::Ru
680618
connect( btnExpressionBuilder, SIGNAL( clicked() ), this, SLOT( buildExpression() ) );
681619
connect( btnTestFilter, SIGNAL( clicked() ), this, SLOT( testFilter() ) );
682620
connect( editFilter, SIGNAL( textEdited( QString ) ), this, SIGNAL( widgetChanged() ) );
621+
connect( editDescription, SIGNAL( textChanged( QString ) ), this, SIGNAL( widgetChanged() ) );
622+
connect( groupScale, SIGNAL( toggled( bool ) ), this, SIGNAL( widgetChanged() ) );
623+
connect( mScaleRangeWidget, SIGNAL( rangeChanged( double, double ) ), this, SIGNAL( widgetChanged() ) );
624+
connect( groupSettings, SIGNAL( toggled( bool ) ), this, SIGNAL( widgetChanged() ) );
683625
connect( mLabelingGui, SIGNAL( widgetChanged() ), this, SIGNAL( widgetChanged() ) );
684-
connect( this, SIGNAL( widgetChanged() ), this, SLOT( updateRule() ) );
685-
686-
QSettings settings;
687-
restoreGeometry( settings.value( "/Windows/QgsLabelingRulePropsDialog/geometry" ).toByteArray() );
688626
}
689627

690-
QgsLabelingRulePropsDialog::~QgsLabelingRulePropsDialog()
628+
QgsLabelingRulePropsWidget::~QgsLabelingRulePropsWidget()
691629
{
692630
delete mSettings;
693-
QSettings settings;
694-
settings.setValue( "/Windows/QgsLabelingRulePropsDialog/geometry", saveGeometry() );
695631
}
696632

697-
void QgsLabelingRulePropsDialog::testFilter()
633+
void QgsLabelingRulePropsWidget::setDockMode( bool dockMode )
634+
{
635+
QgsPanelWidget::setDockMode( dockMode );
636+
mLabelingGui->setDockMode( dockMode );
637+
}
638+
639+
void QgsLabelingRulePropsWidget::testFilter()
698640
{
699641
QgsExpression filter( editFilter->text() );
700642
if ( filter.hasParserError() )
@@ -746,7 +688,7 @@ void QgsLabelingRulePropsDialog::testFilter()
746688
QMessageBox::information( this, tr( "Filter" ), tr( "Filter returned %n feature(s)", "number of filtered features", count ) );
747689
}
748690

749-
void QgsLabelingRulePropsDialog::buildExpression()
691+
void QgsLabelingRulePropsWidget::buildExpression()
750692
{
751693
QgsExpressionContext context;
752694
context << QgsExpressionContextUtils::globalScope()
@@ -769,7 +711,7 @@ void QgsLabelingRulePropsDialog::buildExpression()
769711
editFilter->setText( dlg.expressionText() );
770712
}
771713

772-
void QgsLabelingRulePropsDialog::updateRule()
714+
void QgsLabelingRulePropsWidget::apply()
773715
{
774716
mRule->setFilterExpression( editFilter->text() );
775717
mRule->setDescription( editDescription->text() );
@@ -778,9 +720,3 @@ void QgsLabelingRulePropsDialog::updateRule()
778720
mRule->setScaleMaxDenom( groupScale->isChecked() ? mScaleRangeWidget->maximumScaleDenom() : 0 );
779721
mRule->setSettings( groupSettings->isChecked() ? new QgsPalLayerSettings( mLabelingGui->layerSettings() ) : nullptr );
780722
}
781-
782-
void QgsLabelingRulePropsDialog::accept()
783-
{
784-
updateRule();
785-
QDialog::accept();
786-
}

‎src/app/qgsrulebasedlabelingwidget.h

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
#include <QWidget>
1919

20+
#include "qgspanelwidget.h"
21+
2022
#include <ui_qgsrulebasedlabelingwidget.h>
2123

2224
#include "qgsrulebasedlabeling.h"
@@ -72,36 +74,33 @@ class APP_EXPORT QgsRuleBasedLabelingModel : public QAbstractItemModel
7274
};
7375

7476

75-
class QgsLabelingRulePropsDialog;
77+
class QgsLabelingRulePropsWidget;
7678

7779

78-
class QgsRuleBasedLabelingWidget : public QWidget, private Ui::QgsRuleBasedLabelingWidget
80+
class QgsRuleBasedLabelingWidget : public QgsPanelWidget, private Ui::QgsRuleBasedLabelingWidget
7981
{
8082
Q_OBJECT
8183
public:
82-
QgsRuleBasedLabelingWidget( QgsVectorLayer* layer, QgsMapCanvas* canvas, QWidget* parent = nullptr, bool dockMode = false );
84+
QgsRuleBasedLabelingWidget( QgsVectorLayer* layer, QgsMapCanvas* canvas, QWidget* parent = nullptr );
8385
~QgsRuleBasedLabelingWidget();
8486

8587
//! save config to layer
8688
void writeSettingsToLayer();
87-
void setDockMode( bool enabled );
8889

8990
signals:
9091
void widgetChanged();
9192

9293
protected slots:
93-
void saveRuleEdit();
9494
void addRule();
95-
void saveRule();
96-
void rejectRule();
9795
void editRule();
9896
void editRule( const QModelIndex& index );
9997
void removeRule();
10098
void copy();
10199
void paste();
102100

103-
private:
104-
void addNewRule( QgsRuleBasedLabeling::Rule* newrule );
101+
private slots:
102+
void ruleWidgetPanelAccepted( QgsPanelWidget* panel );
103+
void liveUpdateRuleFromPanel();
105104

106105
protected:
107106
QgsRuleBasedLabeling::Rule* currentRule();
@@ -112,22 +111,20 @@ class QgsRuleBasedLabelingWidget : public QWidget, private Ui::QgsRuleBasedLabel
112111

113112
QgsRuleBasedLabeling::Rule* mRootRule;
114113
QgsRuleBasedLabelingModel* mModel;
115-
QgsLabelingRulePropsDialog* mRuleProps;
116114

117115
QAction* mCopyAction;
118116
QAction* mPasteAction;
119117
QAction* mDeleteAction;
120-
bool mDockMode;
121118
};
122119

123120

124121
//////
125122

126123
class QgsLabelingGui;
127124

128-
#include "ui_qgslabelingrulepropsdialog.h"
125+
#include "ui_qgslabelingrulepropswidget.h"
129126

130-
class APP_EXPORT QgsLabelingRulePropsDialog : public QDialog, private Ui::QgsLabelingRulePropsDialog
127+
class APP_EXPORT QgsLabelingRulePropsWidget : public QgsPanelWidget, private Ui::QgsLabelingRulePropsWidget
131128
{
132129
Q_OBJECT
133130

@@ -138,24 +135,25 @@ class APP_EXPORT QgsLabelingRulePropsDialog : public QDialog, private Ui::QgsLab
138135
Editing
139136
};
140137

141-
QgsLabelingRulePropsDialog( QgsRuleBasedLabeling::Rule* rule, QgsVectorLayer* layer,
142-
QWidget* parent = nullptr, QgsMapCanvas* mapCanvas = nullptr,
143-
bool dockMode = false );
144-
~QgsLabelingRulePropsDialog();
138+
QgsLabelingRulePropsWidget( QgsRuleBasedLabeling::Rule* rule, QgsVectorLayer* layer,
139+
QWidget* parent = nullptr, QgsMapCanvas* mapCanvas = nullptr );
140+
~QgsLabelingRulePropsWidget();
145141

146142
QgsRuleBasedLabeling::Rule* rule() { return mRule; }
147143

148-
Mode currentMode() { return mCurrentMode; }
149-
void setCurrentMode( Mode currentMode ) { mCurrentMode = currentMode; }
144+
virtual void setDockMode( bool dockMode ) override;
150145

151146
signals:
152147
void widgetChanged();
153148

154149
public slots:
155150
void testFilter();
156151
void buildExpression();
157-
void updateRule();
158-
void accept() override;
152+
153+
/**
154+
* Apply any changes from the widget to the set rule.
155+
*/
156+
void apply();
159157

160158
protected:
161159
QgsRuleBasedLabeling::Rule* mRule; // borrowed
@@ -165,8 +163,6 @@ class APP_EXPORT QgsLabelingRulePropsDialog : public QDialog, private Ui::QgsLab
165163
QgsPalLayerSettings* mSettings; // a clone of original settings
166164

167165
QgsMapCanvas* mMapCanvas;
168-
bool mDockMode;
169-
Mode mCurrentMode;
170166
};
171167

172168

‎src/gui/qgspanelwidget.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@ QgsPanelWidgetStack::QgsPanelWidgetStack( QWidget *parent )
9696
void QgsPanelWidgetStack::addMainPanel( QgsPanelWidget *panel )
9797
{
9898
// TODO Don't allow adding another main widget or else that would be strange for the user.
99-
connect( panel, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( showPanel( QgsPanelWidget* ) ) );
99+
connect( panel, SIGNAL( showPanel( QgsPanelWidget* ) ), this, SLOT( showPanel( QgsPanelWidget* ) ),
100+
// using unique connection because addMainPanel() may be called multiple times
101+
// for a panel, so showPanel() slot could be invoked more times from one signal
102+
Qt::UniqueConnection );
100103
mStackedWidget->insertWidget( 0, panel );
101104
mStackedWidget->setCurrentIndex( 0 );
102105
}

‎src/gui/qgspanelwidget.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ class GUI_EXPORT QgsPanelWidget : public QWidget
100100
signals:
101101

102102
/**
103-
* Emiited when the panel is accpeted by the user.
103+
* Emitted when the panel is accepted by the user.
104104
* @param panel The panel widget that was accepted.
105-
* @note This argument is normally raised with emit panelAccpeted(this)
105+
* @note This argument is normally raised with emit panelAccepted(this)
106106
* so that callers can retrive the widget easier in calling code.
107107
*/
108108
void panelAccepted( QgsPanelWidget* panel );
@@ -116,7 +116,7 @@ class GUI_EXPORT QgsPanelWidget : public QWidget
116116
void showPanel( QgsPanelWidget* panel );
117117

118118
/**
119-
* Emiited when the widget state changes.
119+
* Emitted when the widget state changes.
120120
* Connect to this to pull any changes off the widget when needed.
121121
* As panels are non blocking "dialogs" you should listen to this signal
122122
* to give the user feedback when something changes.
@@ -137,7 +137,7 @@ class GUI_EXPORT QgsPanelWidget : public QWidget
137137
void openPanel( QgsPanelWidget* panel );
138138

139139
/**
140-
* Accept the panel. Causes panelAccepted to be emiited.
140+
* Accept the panel. Causes panelAccepted to be emitted.
141141
* Widgets are normally removed form the interface using the panel manager or the caller.
142142
*/
143143
void acceptPanel();

‎src/ui/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ FILE(GLOB STYLEDOCK_UIS "${CMAKE_CURRENT_SOURCE_DIR}/styledock/*.ui")
1111
QT4_WRAP_UI(QGIS_UIS_H ${QGIS_UIS} ${SYMBOLLAYER_UIS} ${EDITORWIDGET_UIS} ${PAINTEFFECT_UIS} ${COMPOSER_UIS} ${AUTH_UIS} ${RASTER_UIS} ${STYLEDOCK_UIS})
1212

1313
ADD_CUSTOM_TARGET(ui ALL DEPENDS ${QGIS_UIS_H})
14-

‎src/ui/qgslabelingrulepropsdialog.ui renamed to ‎src/ui/qgslabelingrulepropswidget.ui

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ui version="4.0">
3-
<class>QgsLabelingRulePropsDialog</class>
4-
<widget class="QDialog" name="QgsLabelingRulePropsDialog">
3+
<class>QgsLabelingRulePropsWidget</class>
4+
<widget class="QWidget" name="QgsLabelingRulePropsWidget">
55
<property name="geometry">
66
<rect>
77
<x>0</x>
@@ -14,7 +14,16 @@
1414
<string>Rule properties</string>
1515
</property>
1616
<layout class="QVBoxLayout" name="verticalLayout">
17-
<property name="margin">
17+
<property name="leftMargin">
18+
<number>0</number>
19+
</property>
20+
<property name="topMargin">
21+
<number>0</number>
22+
</property>
23+
<property name="rightMargin">
24+
<number>0</number>
25+
</property>
26+
<property name="bottomMargin">
1827
<number>0</number>
1928
</property>
2029
<item>
@@ -31,11 +40,20 @@
3140
<x>0</x>
3241
<y>0</y>
3342
<width>666</width>
34-
<height>540</height>
43+
<height>573</height>
3544
</rect>
3645
</property>
3746
<layout class="QVBoxLayout" name="verticalLayout_2">
38-
<property name="margin">
47+
<property name="leftMargin">
48+
<number>0</number>
49+
</property>
50+
<property name="topMargin">
51+
<number>0</number>
52+
</property>
53+
<property name="rightMargin">
54+
<number>0</number>
55+
</property>
56+
<property name="bottomMargin">
3957
<number>0</number>
4058
</property>
4159
<item>
@@ -102,7 +120,7 @@
102120
</property>
103121
<layout class="QHBoxLayout" name="horizontalLayout_2">
104122
<item>
105-
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget">
123+
<widget class="QgsScaleRangeWidget" name="mScaleRangeWidget" native="true">
106124
<property name="toolTip">
107125
<string/>
108126
</property>
@@ -134,16 +152,6 @@
134152
</widget>
135153
</widget>
136154
</item>
137-
<item>
138-
<widget class="QDialogButtonBox" name="buttonBox">
139-
<property name="orientation">
140-
<enum>Qt::Horizontal</enum>
141-
</property>
142-
<property name="standardButtons">
143-
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
144-
</property>
145-
</widget>
146-
</item>
147155
</layout>
148156
</widget>
149157
<customwidgets>
@@ -158,7 +166,6 @@
158166
<tabstop>editFilter</tabstop>
159167
<tabstop>btnExpressionBuilder</tabstop>
160168
<tabstop>btnTestFilter</tabstop>
161-
<tabstop>buttonBox</tabstop>
162169
</tabstops>
163170
<resources/>
164171
<connections/>

‎src/ui/qgsrulebasedlabelingwidget.ui

Lines changed: 83 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -15,106 +15,92 @@
1515
<number>0</number>
1616
</property>
1717
<item>
18-
<widget class="QStackedWidget" name="mStackedWidget">
19-
<property name="currentIndex">
20-
<number>0</number>
18+
<widget class="QTreeView" name="viewRules">
19+
<property name="contextMenuPolicy">
20+
<enum>Qt::ActionsContextMenu</enum>
2121
</property>
22-
<widget class="QWidget" name="rulesPage">
23-
<layout class="QVBoxLayout" name="verticalLayout_2">
24-
<property name="margin">
25-
<number>0</number>
26-
</property>
27-
<item>
28-
<widget class="QTreeView" name="viewRules">
29-
<property name="contextMenuPolicy">
30-
<enum>Qt::ActionsContextMenu</enum>
31-
</property>
32-
<property name="acceptDrops">
33-
<bool>true</bool>
34-
</property>
35-
<property name="editTriggers">
36-
<set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
37-
</property>
38-
<property name="dragEnabled">
39-
<bool>true</bool>
40-
</property>
41-
<property name="dragDropMode">
42-
<enum>QAbstractItemView::InternalMove</enum>
43-
</property>
44-
<property name="selectionMode">
45-
<enum>QAbstractItemView::ExtendedSelection</enum>
46-
</property>
47-
<property name="allColumnsShowFocus">
48-
<bool>true</bool>
49-
</property>
50-
<attribute name="headerMinimumSectionSize">
51-
<number>100</number>
52-
</attribute>
53-
</widget>
54-
</item>
55-
<item>
56-
<layout class="QHBoxLayout" name="horizontalLayout">
57-
<item>
58-
<widget class="QPushButton" name="btnAddRule">
59-
<property name="toolTip">
60-
<string>Add rule</string>
61-
</property>
62-
<property name="text">
63-
<string/>
64-
</property>
65-
<property name="icon">
66-
<iconset resource="../../images/images.qrc">
67-
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
68-
</property>
69-
</widget>
70-
</item>
71-
<item>
72-
<widget class="QPushButton" name="btnEditRule">
73-
<property name="toolTip">
74-
<string>Edit rule</string>
75-
</property>
76-
<property name="text">
77-
<string/>
78-
</property>
79-
<property name="icon">
80-
<iconset resource="../../images/images.qrc">
81-
<normaloff>:/images/themes/default/symbologyEdit.png</normaloff>:/images/themes/default/symbologyEdit.png</iconset>
82-
</property>
83-
</widget>
84-
</item>
85-
<item>
86-
<widget class="QPushButton" name="btnRemoveRule">
87-
<property name="toolTip">
88-
<string>Remove rule</string>
89-
</property>
90-
<property name="text">
91-
<string/>
92-
</property>
93-
<property name="icon">
94-
<iconset resource="../../images/images.qrc">
95-
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
96-
</property>
97-
</widget>
98-
</item>
99-
<item>
100-
<spacer name="horizontalSpacer">
101-
<property name="orientation">
102-
<enum>Qt::Horizontal</enum>
103-
</property>
104-
<property name="sizeHint" stdset="0">
105-
<size>
106-
<width>40</width>
107-
<height>20</height>
108-
</size>
109-
</property>
110-
</spacer>
111-
</item>
112-
</layout>
113-
</item>
114-
</layout>
115-
</widget>
22+
<property name="acceptDrops">
23+
<bool>true</bool>
24+
</property>
25+
<property name="editTriggers">
26+
<set>QAbstractItemView::EditKeyPressed|QAbstractItemView::SelectedClicked</set>
27+
</property>
28+
<property name="dragEnabled">
29+
<bool>true</bool>
30+
</property>
31+
<property name="dragDropMode">
32+
<enum>QAbstractItemView::InternalMove</enum>
33+
</property>
34+
<property name="selectionMode">
35+
<enum>QAbstractItemView::ExtendedSelection</enum>
36+
</property>
37+
<property name="allColumnsShowFocus">
38+
<bool>true</bool>
39+
</property>
40+
<attribute name="headerMinimumSectionSize">
41+
<number>100</number>
42+
</attribute>
11643
</widget>
11744
</item>
45+
<item>
46+
<layout class="QHBoxLayout" name="horizontalLayout">
47+
<item>
48+
<widget class="QPushButton" name="btnAddRule">
49+
<property name="toolTip">
50+
<string>Add rule</string>
51+
</property>
52+
<property name="text">
53+
<string/>
54+
</property>
55+
<property name="icon">
56+
<iconset resource="../../images/images.qrc">
57+
<normaloff>:/images/themes/default/symbologyAdd.svg</normaloff>:/images/themes/default/symbologyAdd.svg</iconset>
58+
</property>
59+
</widget>
60+
</item>
61+
<item>
62+
<widget class="QPushButton" name="btnEditRule">
63+
<property name="toolTip">
64+
<string>Edit rule</string>
65+
</property>
66+
<property name="text">
67+
<string/>
68+
</property>
69+
<property name="icon">
70+
<iconset resource="../../images/images.qrc">
71+
<normaloff>:/images/themes/default/symbologyEdit.png</normaloff>:/images/themes/default/symbologyEdit.png</iconset>
72+
</property>
73+
</widget>
74+
</item>
75+
<item>
76+
<widget class="QPushButton" name="btnRemoveRule">
77+
<property name="toolTip">
78+
<string>Remove rule</string>
79+
</property>
80+
<property name="text">
81+
<string/>
82+
</property>
83+
<property name="icon">
84+
<iconset resource="../../images/images.qrc">
85+
<normaloff>:/images/themes/default/symbologyRemove.svg</normaloff>:/images/themes/default/symbologyRemove.svg</iconset>
86+
</property>
87+
</widget>
88+
</item>
89+
<item>
90+
<spacer name="horizontalSpacer">
91+
<property name="orientation">
92+
<enum>Qt::Horizontal</enum>
93+
</property>
94+
<property name="sizeHint" stdset="0">
95+
<size>
96+
<width>40</width>
97+
<height>20</height>
98+
</size>
99+
</property>
100+
</spacer>
101+
</item>
102+
</layout>
103+
</item>
118104
</layout>
119105
</widget>
120106
<resources>

0 commit comments

Comments
 (0)
Please sign in to comment.