From 171b9ee7e5b1bda7a5a50eb60d71e469604f4a6c Mon Sep 17 00:00:00 2001 From: Harrissou Sant-anna Date: Fri, 26 Jan 2018 23:51:22 +0100 Subject: [PATCH 1/3] Enable rule-based dialog instead of widget all time --- .../symbology/qgsrulebasedrendererwidget.cpp | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/gui/symbology/qgsrulebasedrendererwidget.cpp b/src/gui/symbology/qgsrulebasedrendererwidget.cpp index 597ae4cfb321..3cdb5dc9beaf 100644 --- a/src/gui/symbology/qgsrulebasedrendererwidget.cpp +++ b/src/gui/symbology/qgsrulebasedrendererwidget.cpp @@ -181,12 +181,25 @@ void QgsRuleBasedRendererWidget::editRule( const QModelIndex &index ) return; QgsRuleBasedRenderer::Rule *rule = mModel->ruleForIndex( index ); + QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ); + + if ( panel && panel->dockMode() ) + { + QgsRendererRulePropsWidget *widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mContext );//panel? + widget->setPanelTitle( tr( "Edit Rule" ) ); + connect( widget, &QgsPanelWidget::panelAccepted, this, &QgsRuleBasedRendererWidget::ruleWidgetPanelAccepted ); + connect( widget, &QgsPanelWidget::widgetChanged, this, &QgsRuleBasedRendererWidget::liveUpdateRuleFromPanel ); + openPanel( widget ); + return; + } - QgsRendererRulePropsWidget *widget = new QgsRendererRulePropsWidget( rule, mLayer, mStyle, this, mContext ); - widget->setPanelTitle( tr( "Edit Rule" ) ); - connect( widget, &QgsPanelWidget::panelAccepted, this, &QgsRuleBasedRendererWidget::ruleWidgetPanelAccepted ); - connect( widget, &QgsPanelWidget::widgetChanged, this, &QgsRuleBasedRendererWidget::liveUpdateRuleFromPanel ); - openPanel( widget ); + QgsRendererRulePropsDialog dlg( rule, mLayer, mStyle, this, mContext ); + if ( dlg.exec() ) + { + mModel->updateRule( index.parent(), index.row() ); + mModel->clearFeatureCounts(); + emit widgetChanged(); + } } void QgsRuleBasedRendererWidget::removeRule() @@ -680,6 +693,7 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Ru this->layout()->addWidget( mPropsWidget ); this->layout()->addWidget( buttonBox ); + this->setWindowTitle( "Edit Rule" ); connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsRendererRulePropsDialog::accept ); connect( buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject ); From 1b1be55f7f7810aa80ad3760857a7929a176ed15 Mon Sep 17 00:00:00 2001 From: Harrissou Sant-anna Date: Sat, 27 Jan 2018 00:49:47 +0100 Subject: [PATCH 2/3] Add scrollbar to only dialog-display mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit and not in widget mode Sur la branche rulebaseDialog modifié : src/app/nodetool/qgsnodetool.h aucune modification n'a été ajoutée à la validation (utilisez "git add" ou --- .../symbology/qgsrulebasedrendererwidget.cpp | 11 +- src/ui/qgsrendererrulepropsdialogbase.ui | 195 ++++++++---------- 2 files changed, 96 insertions(+), 110 deletions(-) diff --git a/src/gui/symbology/qgsrulebasedrendererwidget.cpp b/src/gui/symbology/qgsrulebasedrendererwidget.cpp index 3cdb5dc9beaf..c30001634096 100644 --- a/src/gui/symbology/qgsrulebasedrendererwidget.cpp +++ b/src/gui/symbology/qgsrulebasedrendererwidget.cpp @@ -679,6 +679,8 @@ QgsRendererRulePropsWidget::QgsRendererRulePropsWidget( QgsRuleBasedRenderer::Ru connect( mScaleRangeWidget, &QgsScaleRangeWidget::rangeChanged, this, &QgsPanelWidget::widgetChanged ); } +#include "qgsvscrollarea.h" + QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Rule *rule, QgsVectorLayer *layer, QgsStyle *style, QWidget *parent, const QgsSymbolWidgetContext &context ) : QDialog( parent ) { @@ -686,13 +688,16 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Ru #ifdef Q_OS_MAC setWindowModality( Qt::WindowModal ); #endif - this->setLayout( new QVBoxLayout() ); + + QVBoxLayout *layout = new QVBoxLayout( this ); + QgsVScrollArea *scrollArea = new QgsVScrollArea( this ); + layout->addWidget( scrollArea ); buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel ); mPropsWidget = new QgsRendererRulePropsWidget( rule, layer, style, this, context ); - this->layout()->addWidget( mPropsWidget ); - this->layout()->addWidget( buttonBox ); + scrollArea->setWidget( mPropsWidget ); + layout->addWidget( buttonBox ); this->setWindowTitle( "Edit Rule" ); connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsRendererRulePropsDialog::accept ); diff --git a/src/ui/qgsrendererrulepropsdialogbase.ui b/src/ui/qgsrendererrulepropsdialogbase.ui index fa15ed8bbd52..960450a85138 100644 --- a/src/ui/qgsrendererrulepropsdialogbase.ui +++ b/src/ui/qgsrendererrulepropsdialogbase.ui @@ -6,133 +6,114 @@ 0 0 - 427 - 274 + 376 + 155 Form - + - - - true + + + QFormLayout::ExpandingFieldsGrow - - - - 0 - 0 - 407 - 254 - - - - - - - QFormLayout::ExpandingFieldsGrow - - - - - Label - - - - - - - - - - Filter - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - Test - - - - - - - - - Description - - - - - - - - + + + + Label + + + + + + + + + + Filter + + + + + - - - Scale range - - - true - - - false - - - - - - - - - - - - - - + - + - + 0 0 - - Symbol + + - - true + + + + + + Test - + + + + + Description + + + + + + + + + + + + Scale range + + + true + + + false + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + Symbol + + + true + From 9fff5f0ca7b8c871fd80d9e8a554e7df4b1654df Mon Sep 17 00:00:00 2001 From: Harrissou Sant-anna Date: Sat, 27 Jan 2018 00:27:19 +0100 Subject: [PATCH 3/3] Add help button and connect to user manual --- src/gui/symbology/qgsrulebasedrendererwidget.cpp | 8 +++++++- src/gui/symbology/qgsrulebasedrendererwidget.h | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gui/symbology/qgsrulebasedrendererwidget.cpp b/src/gui/symbology/qgsrulebasedrendererwidget.cpp index c30001634096..0e01492567b1 100644 --- a/src/gui/symbology/qgsrulebasedrendererwidget.cpp +++ b/src/gui/symbology/qgsrulebasedrendererwidget.cpp @@ -693,7 +693,7 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Ru QgsVScrollArea *scrollArea = new QgsVScrollArea( this ); layout->addWidget( scrollArea ); - buttonBox = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel ); + buttonBox = new QDialogButtonBox( QDialogButtonBox::Cancel | QDialogButtonBox::Help | QDialogButtonBox::Ok ); mPropsWidget = new QgsRendererRulePropsWidget( rule, layer, style, this, context ); scrollArea->setWidget( mPropsWidget ); @@ -702,6 +702,7 @@ QgsRendererRulePropsDialog::QgsRendererRulePropsDialog( QgsRuleBasedRenderer::Ru connect( buttonBox, &QDialogButtonBox::accepted, this, &QgsRendererRulePropsDialog::accept ); connect( buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject ); + connect( buttonBox, &QDialogButtonBox::helpRequested, this, &QgsRendererRulePropsDialog::showHelp ); QgsSettings settings; restoreGeometry( settings.value( QStringLiteral( "Windows/QgsRendererRulePropsDialog/geometry" ) ).toByteArray() ); @@ -729,6 +730,11 @@ void QgsRendererRulePropsDialog::accept() QDialog::accept(); } +void QgsRendererRulePropsDialog::showHelp() +{ + QgsHelp::openHelp( QStringLiteral( "working_with_vector/vector_properties.html#rule-based-rendering" ) ); +} + void QgsRendererRulePropsWidget::buildExpression() { diff --git a/src/gui/symbology/qgsrulebasedrendererwidget.h b/src/gui/symbology/qgsrulebasedrendererwidget.h index 38d65201613c..011966bfd838 100644 --- a/src/gui/symbology/qgsrulebasedrendererwidget.h +++ b/src/gui/symbology/qgsrulebasedrendererwidget.h @@ -273,6 +273,9 @@ class GUI_EXPORT QgsRendererRulePropsDialog : public QDialog void buildExpression(); void accept() override; + private slots: + void showHelp(); + private: QgsRendererRulePropsWidget *mPropsWidget = nullptr; QDialogButtonBox *buttonBox = nullptr;