From f816bce9f116bd9d11f54d48c06a4941a510fa8f Mon Sep 17 00:00:00 2001 From: Nathan Woodrow Date: Sun, 30 Mar 2014 15:47:08 +1000 Subject: [PATCH] Tweak UI for symbol builder and selector. - Move blend options to below symbol builder - Move Save symbol to under symbol stack - Move open Symbol manager to next to group dropdown --- python/core/symbology-ng/qgsstylev2.sip | 2 +- .../gui/symbology-ng/qgssymbolslistwidget.sip | 2 +- src/core/CMakeLists.txt | 1 + src/core/symbology-ng/qgsstylev2.cpp | 4 +- src/core/symbology-ng/qgsstylev2.h | 11 +- src/gui/symbology-ng/qgssymbolslistwidget.cpp | 45 +----- src/gui/symbology-ng/qgssymbolslistwidget.h | 2 +- .../qgssymbolv2selectordialog.cpp | 29 ++++ .../symbology-ng/qgssymbolv2selectordialog.h | 1 + src/ui/qgsrendererv2propsdialogbase.ui | 136 +++++++++--------- src/ui/qgssymbolv2selectordialogbase.ui | 48 +++++-- src/ui/symbollayer/widget_symbolslist.ui | 44 +++--- 12 files changed, 175 insertions(+), 150 deletions(-) diff --git a/python/core/symbology-ng/qgsstylev2.sip b/python/core/symbology-ng/qgsstylev2.sip index 6ee325b697f..9a50281cc33 100644 --- a/python/core/symbology-ng/qgsstylev2.sip +++ b/python/core/symbology-ng/qgsstylev2.sip @@ -1,4 +1,4 @@ -class QgsStyleV2 +class QgsStyleV2 : QObject { %TypeHeaderCode #include diff --git a/python/gui/symbology-ng/qgssymbolslistwidget.sip b/python/gui/symbology-ng/qgssymbolslistwidget.sip index c86dc2d8a00..82603769668 100644 --- a/python/gui/symbology-ng/qgssymbolslistwidget.sip +++ b/python/gui/symbology-ng/qgssymbolslistwidget.sip @@ -12,7 +12,7 @@ class QgsSymbolsListWidget : QWidget void setMarkerAngle( double angle ); void setMarkerSize( double size ); void setLineWidth( double width ); - void addSymbolToStyle(); + void symbolAddedToStyle( QString name, QgsSymbolV2* symbol ); void on_mSymbolUnitComboBox_currentIndexChanged( const QString & text ); void on_mTransparencySlider_valueChanged( int value ); diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index f1ce501bf3e..4ffb2b098b1 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -370,6 +370,7 @@ SET(QGIS_CORE_MOC_HDRS symbology-ng/qgscptcityarchive.h symbology-ng/qgssvgcache.h + symbology-ng/qgsstylev2.h ) IF (WITH_INTERNAL_QEXTSERIALPORT) diff --git a/src/core/symbology-ng/qgsstylev2.cpp b/src/core/symbology-ng/qgsstylev2.cpp index b4970dc40dd..529363ebae4 100644 --- a/src/core/symbology-ng/qgsstylev2.cpp +++ b/src/core/symbology-ng/qgsstylev2.cpp @@ -38,7 +38,7 @@ QgsStyleV2 *QgsStyleV2::mDefaultStyle = 0; -QgsStyleV2::QgsStyleV2() +QgsStyleV2::QgsStyleV2() : QObject() { mCurrentDB = 0; } @@ -130,6 +130,8 @@ bool QgsStyleV2::saveSymbol( QString name, QgsSymbolV2* symbol, int groupid, QSt return false; } + emit symbolSaved( name, symbol ); + return true; } diff --git a/src/core/symbology-ng/qgsstylev2.h b/src/core/symbology-ng/qgsstylev2.h index 5f30634b68a..a7ad7e18e13 100644 --- a/src/core/symbology-ng/qgsstylev2.h +++ b/src/core/symbology-ng/qgsstylev2.h @@ -63,8 +63,10 @@ enum TagmapTable { TagmapTagId, TagmapSymbolId }; enum ColorrampTable { ColorrampId, ColorrampName, ColorrampXML, ColorrampGroupId }; enum SmartgroupTable { SmartgroupId, SmartgroupName, SmartgroupXML }; -class CORE_EXPORT QgsStyleV2 +class CORE_EXPORT QgsStyleV2 : public QObject { + Q_OBJECT + public: QgsStyleV2(); ~QgsStyleV2(); @@ -315,6 +317,10 @@ class CORE_EXPORT QgsStyleV2 //! Imports the symbols and colorramps into the default style database from the given XML file bool importXML( QString filename ); + signals: + + void symbolSaved( QString name, QgsSymbolV2* symbol ); + protected: QgsSymbolV2Map mSymbols; @@ -350,6 +356,9 @@ class CORE_EXPORT QgsStyleV2 * \return Success state of the update operation */ bool updateSymbol( StyleEntity type, QString name ); + + private: + Q_DISABLE_COPY( QgsStyleV2 ) }; diff --git a/src/gui/symbology-ng/qgssymbolslistwidget.cpp b/src/gui/symbology-ng/qgssymbolslistwidget.cpp index a84aa43e3ab..83ad4825f92 100644 --- a/src/gui/symbology-ng/qgssymbolslistwidget.cpp +++ b/src/gui/symbology-ng/qgssymbolslistwidget.cpp @@ -62,22 +62,8 @@ QgsSymbolsListWidget::QgsSymbolsListWidget( QgsSymbolV2* symbol, QgsStyleV2* sty viewSymbols->setModel( model ); connect( viewSymbols->selectionModel(), SIGNAL( currentChanged( const QModelIndex &, const QModelIndex & ) ), this, SLOT( setSymbolFromStyle( const QModelIndex & ) ) ); - if ( parent ) - { - if ( dynamic_cast( parent->parentWidget() ) ) - { - btnStyle->setVisible( false ); - } - } - // Set the Style Menu under btnStyle - QMenu *styleMenu = new QMenu( btnStyle ); - QAction *styleMgrAction = new QAction( tr( "Style Manager" ), styleMenu ); - styleMenu->addAction( styleMgrAction ); - QAction *saveStyle = new QAction( tr( "Save in symbol library..." ), styleMenu ); - styleMenu->addAction( saveStyle ); - connect( styleMgrAction, SIGNAL( triggered() ), this, SLOT( openStyleManager() ) ); - connect( saveStyle, SIGNAL( triggered() ), this, SLOT( addSymbolToStyle() ) ); - btnStyle->setMenu( styleMenu ); + connect( mStyle, SIGNAL( symbolSaved( QString, QgsSymbolV2* ) ), this, SLOT( symbolAddedToStyle( QString, QgsSymbolV2* ) ) ); + connect( openStyleManagerButton, SIGNAL( pressed() ), this, SLOT( openStyleManager() ) ); lblSymbolName->setText( "" ); populateSymbolView(); @@ -217,33 +203,8 @@ void QgsSymbolsListWidget::setLineWidth( double width ) emit changed(); } -void QgsSymbolsListWidget::addSymbolToStyle() +void QgsSymbolsListWidget::symbolAddedToStyle( QString name, QgsSymbolV2* symbol) { - bool ok; - QString name = QInputDialog::getText( this, tr( "Symbol name" ), - tr( "Please enter name for the symbol:" ) , QLineEdit::Normal, tr( "New symbol" ), &ok ); - if ( !ok || name.isEmpty() ) - return; - - // check if there is no symbol with same name - if ( mStyle->symbolNames().contains( name ) ) - { - int res = QMessageBox::warning( this, tr( "Save symbol" ), - tr( "Symbol with name '%1' already exists. Overwrite?" ) - .arg( name ), - QMessageBox::Yes | QMessageBox::No ); - if ( res != QMessageBox::Yes ) - { - return; - } - } - - // add new symbol to style and re-populate the list - mStyle->addSymbol( name, mSymbol->clone() ); - - // make sure the symbol is stored - mStyle->saveSymbol( name, mSymbol->clone(), 0, QStringList() ); - populateSymbolView(); } diff --git a/src/gui/symbology-ng/qgssymbolslistwidget.h b/src/gui/symbology-ng/qgssymbolslistwidget.h index 0116e78985d..8c91eb45090 100644 --- a/src/gui/symbology-ng/qgssymbolslistwidget.h +++ b/src/gui/symbology-ng/qgssymbolslistwidget.h @@ -38,7 +38,7 @@ class GUI_EXPORT QgsSymbolsListWidget : public QWidget, private Ui::SymbolsListW void setMarkerAngle( double angle ); void setMarkerSize( double size ); void setLineWidth( double width ); - void addSymbolToStyle(); + void symbolAddedToStyle( QString name, QgsSymbolV2* symbol ); void on_mSymbolUnitComboBox_currentIndexChanged( const QString & text ); void on_mTransparencySlider_valueChanged( int value ); diff --git a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp index 8625a567379..e83f2a0928a 100644 --- a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp +++ b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp @@ -182,6 +182,7 @@ QgsSymbolV2SelectorDialog::QgsSymbolV2SelectorDialog( QgsSymbolV2* symbol, QgsSt connect( btnAddLayer, SIGNAL( clicked() ), this, SLOT( addLayer() ) ); connect( btnRemoveLayer, SIGNAL( clicked() ), this, SLOT( removeLayer() ) ); connect( btnLock, SIGNAL( clicked() ), this, SLOT( lockLayer() ) ); + connect( btnSaveSymbol, SIGNAL( clicked() ), this, SLOT( saveSymbol() ) ); updateUi(); @@ -485,6 +486,34 @@ void QgsSymbolV2SelectorDialog::lockLayer() layer->setLocked( btnLock->isChecked() ); } +void QgsSymbolV2SelectorDialog::saveSymbol() +{ + bool ok; + QString name = QInputDialog::getText( this, tr( "Symbol name" ), + tr( "Please enter name for the symbol:" ) , QLineEdit::Normal, tr( "New symbol" ), &ok ); + if ( !ok || name.isEmpty() ) + return; + + // check if there is no symbol with same name + if ( mStyle->symbolNames().contains( name ) ) + { + int res = QMessageBox::warning( this, tr( "Save symbol" ), + tr( "Symbol with name '%1' already exists. Overwrite?" ) + .arg( name ), + QMessageBox::Yes | QMessageBox::No ); + if ( res != QMessageBox::Yes ) + { + return; + } + } + + // add new symbol to style and re-populate the list + mStyle->addSymbol( name, mSymbol->clone() ); + + // make sure the symbol is stored + mStyle->saveSymbol( name, mSymbol->clone(), 0, QStringList() ); +} + void QgsSymbolV2SelectorDialog::changeLayer( QgsSymbolLayerV2* newLayer ) { SymbolLayerItem *item = currentLayerItem(); diff --git a/src/gui/symbology-ng/qgssymbolv2selectordialog.h b/src/gui/symbology-ng/qgssymbolv2selectordialog.h index 718362d15f3..82c2f2ff005 100644 --- a/src/gui/symbology-ng/qgssymbolv2selectordialog.h +++ b/src/gui/symbology-ng/qgssymbolv2selectordialog.h @@ -72,6 +72,7 @@ class GUI_EXPORT QgsSymbolV2SelectorDialog : public QDialog, private Ui::QgsSymb void addLayer(); void removeLayer(); + void saveSymbol(); void lockLayer(); void layerChanged(); diff --git a/src/ui/qgsrendererv2propsdialogbase.ui b/src/ui/qgsrendererv2propsdialogbase.ui index 761ab242481..da884497908 100644 --- a/src/ui/qgsrendererv2propsdialogbase.ui +++ b/src/ui/qgsrendererv2propsdialogbase.ui @@ -14,69 +14,6 @@ Renderer settings - - - - Layer rendering - - - false - - - true - - - - - - - - 100 - - - Qt::Horizontal - - - - - - - 100 - - - - - - - - - Layer transparency - - - - - - - - - - Feature blending mode - - - - - - - Layer blending mode - - - - - - - - - @@ -127,6 +64,69 @@ + + + + Layer rendering + + + false + + + true + + + + + + + + 100 + + + Qt::Horizontal + + + + + + + 100 + + + + + + + + + Layer transparency + + + + + + + + + + Feature blending mode + + + + + + + Layer blending mode + + + + + + + + + @@ -137,17 +137,17 @@ - - QgsBlendModeComboBox - QComboBox -
qgsblendmodecombobox.h
-
QgsCollapsibleGroupBox QGroupBox
qgscollapsiblegroupbox.h
1
+ + QgsBlendModeComboBox + QComboBox +
qgsblendmodecombobox.h
+
cboRenderers diff --git a/src/ui/qgssymbolv2selectordialogbase.ui b/src/ui/qgssymbolv2selectordialogbase.ui index 9dabf8826fa..8b4ca3fffcc 100644 --- a/src/ui/qgssymbolv2selectordialogbase.ui +++ b/src/ui/qgssymbolv2selectordialogbase.ui @@ -6,8 +6,8 @@ 0 0 - 444 - 383 + 436 + 359 @@ -44,13 +44,6 @@
- - - - Symbol layers - - - @@ -137,6 +130,35 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 50 + 16777215 + + + + Move down + + + Save + + +
@@ -160,12 +182,18 @@ - QFrame::StyledPanel + QFrame::NoFrame QFrame::Sunken + + 0 + + + 0 + diff --git a/src/ui/symbollayer/widget_symbolslist.ui b/src/ui/symbollayer/widget_symbolslist.ui index 4ed72dcaef8..96fbcd2583c 100644 --- a/src/ui/symbollayer/widget_symbolslist.ui +++ b/src/ui/symbollayer/widget_symbolslist.ui @@ -114,7 +114,7 @@ - 2 + 0 @@ -204,7 +204,7 @@ - + 3 @@ -212,23 +212,10 @@ - Saved styles + Symbols in library - - - - Qt::Horizontal - - - - 0 - 20 - - - - @@ -248,9 +235,16 @@ + + + + Open Library + + + - + @@ -287,7 +281,7 @@ - + 2 @@ -312,13 +306,6 @@ - - - - Symbol - - - @@ -328,6 +315,13 @@ + + + + Qt::Horizontal + + +