From 1a5cc6c0f460f85c1b206d9c1a96149f4f1cca5e Mon Sep 17 00:00:00 2001 From: wonder Date: Tue, 17 Nov 2009 11:23:36 +0000 Subject: [PATCH] Save style file name inside the style. Fixed saving of symbols added in symbol selector git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@12161 c8812cc2-4d05-0410-92ff-de0c093fc19c --- python/core/symbology-ng-core.sip | 8 ++++++-- python/gui/symbology-ng-gui.sip | 2 +- src/app/qgisapp.cpp | 2 +- src/core/symbology-ng/qgsstylev2.cpp | 6 ++++-- src/core/symbology-ng/qgsstylev2.h | 8 ++++++-- src/gui/symbology-ng/qgsstylev2managerdialog.cpp | 7 +++---- src/gui/symbology-ng/qgsstylev2managerdialog.h | 2 +- src/gui/symbology-ng/qgssymbolv2selectordialog.cpp | 3 +++ 8 files changed, 25 insertions(+), 13 deletions(-) diff --git a/python/core/symbology-ng-core.sip b/python/core/symbology-ng-core.sip index 7a041a2068e5..98eebcfe400d 100644 --- a/python/core/symbology-ng-core.sip +++ b/python/core/symbology-ng-core.sip @@ -670,11 +670,15 @@ public: //! load a file into the style bool load(QString filename); - //! save style into a file - bool save(QString filename); + //! save style into a file (will use current filename if empty string is passed) + bool save(QString filename = QString()); //! return last error from load/save operation QString errorString(); + + //! return current file name of the style + QString fileName(); + }; ////////// diff --git a/python/gui/symbology-ng-gui.sip b/python/gui/symbology-ng-gui.sip index 1b8fb9841bb4..ea1baf276ddc 100644 --- a/python/gui/symbology-ng-gui.sip +++ b/python/gui/symbology-ng-gui.sip @@ -59,7 +59,7 @@ class QgsStyleV2ManagerDialog : QDialog //, private Ui::QgsStyleV2ManagerDialogB %End public: - QgsStyleV2ManagerDialog(QgsStyleV2* style, QString styleFilename, QWidget* parent = NULL); + QgsStyleV2ManagerDialog(QgsStyleV2* style, QWidget* parent = NULL); public slots: void addItem(); diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 979942ca4551..0620b6d4e610 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -1068,7 +1068,7 @@ void QgisApp::createActions() void QgisApp::showStyleManagerV2() { - QgsStyleV2ManagerDialog dlg( QgsStyleV2::defaultStyle(), QgsApplication::userStyleV2Path(), this ); + QgsStyleV2ManagerDialog dlg( QgsStyleV2::defaultStyle(), this ); dlg.exec(); } diff --git a/src/core/symbology-ng/qgsstylev2.cpp b/src/core/symbology-ng/qgsstylev2.cpp index cbda2731afbb..6a6223a733bc 100644 --- a/src/core/symbology-ng/qgsstylev2.cpp +++ b/src/core/symbology-ng/qgsstylev2.cpp @@ -216,6 +216,7 @@ bool QgsStyleV2::load(QString filename) e = e.nextSiblingElement(); } + mFileName = filename; return true; } @@ -224,8 +225,8 @@ bool QgsStyleV2::load(QString filename) bool QgsStyleV2::save(QString filename) { mErrorString = QString(); - //if (filename.isEmpty()) - // filename = mFilename; + if (filename.isEmpty()) + filename = mFileName; QDomDocument doc("qgis_style"); QDomElement root = doc.createElement("qgis_style"); @@ -257,5 +258,6 @@ bool QgsStyleV2::save(QString filename) doc.save(ts, 2); f.close(); + mFileName = filename; return true; } diff --git a/src/core/symbology-ng/qgsstylev2.h b/src/core/symbology-ng/qgsstylev2.h index a1a289875559..d4b83cf07265 100644 --- a/src/core/symbology-ng/qgsstylev2.h +++ b/src/core/symbology-ng/qgsstylev2.h @@ -70,18 +70,22 @@ class CORE_EXPORT QgsStyleV2 //! load a file into the style bool load( QString filename ); - //! save style into a file - bool save( QString filename ); + //! save style into a file (will use current filename if empty string is passed) + bool save( QString filename = QString() ); //! return last error from load/save operation QString errorString() { return mErrorString; } + //! return current file name of the style + QString fileName() { return mFileName; } + protected: QgsSymbolV2Map mSymbols; QgsVectorColorRampV2Map mColorRamps; QString mErrorString; + QString mFileName; static QgsStyleV2* mDefaultStyle; }; diff --git a/src/gui/symbology-ng/qgsstylev2managerdialog.cpp b/src/gui/symbology-ng/qgsstylev2managerdialog.cpp index 30c55d7d7dc0..12506c9fc74a 100644 --- a/src/gui/symbology-ng/qgsstylev2managerdialog.cpp +++ b/src/gui/symbology-ng/qgsstylev2managerdialog.cpp @@ -32,8 +32,8 @@ static QString iconPath( QString iconFile ) /////// -QgsStyleV2ManagerDialog::QgsStyleV2ManagerDialog( QgsStyleV2* style, QString styleFilename, QWidget* parent ) - : QDialog( parent ), mStyle( style ), mStyleFilename( styleFilename ) +QgsStyleV2ManagerDialog::QgsStyleV2ManagerDialog( QgsStyleV2* style, QWidget* parent ) + : QDialog( parent ), mStyle( style ) { setupUi( this ); @@ -65,8 +65,7 @@ QgsStyleV2ManagerDialog::QgsStyleV2ManagerDialog( QgsStyleV2* style, QString sty void QgsStyleV2ManagerDialog::onFinished() { // TODO: save only when modified - if ( !mStyleFilename.isEmpty() ) - mStyle->save( mStyleFilename ); + mStyle->save(); } void QgsStyleV2ManagerDialog::populateTypes() diff --git a/src/gui/symbology-ng/qgsstylev2managerdialog.h b/src/gui/symbology-ng/qgsstylev2managerdialog.h index 25b3c17e1ff2..9b24a2108f29 100644 --- a/src/gui/symbology-ng/qgsstylev2managerdialog.h +++ b/src/gui/symbology-ng/qgsstylev2managerdialog.h @@ -13,7 +13,7 @@ class GUI_EXPORT QgsStyleV2ManagerDialog : public QDialog, private Ui::QgsStyleV Q_OBJECT public: - QgsStyleV2ManagerDialog( QgsStyleV2* style, QString styleFilename, QWidget* parent = NULL ); + QgsStyleV2ManagerDialog( QgsStyleV2* style, QWidget* parent = NULL ); public slots: void addItem(); diff --git a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp index 092bf75db848..f43a1568247f 100644 --- a/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp +++ b/src/gui/symbology-ng/qgssymbolv2selectordialog.cpp @@ -206,6 +206,9 @@ void QgsSymbolV2SelectorDialog::addSymbolToStyle() // add new symbol to style and re-populate the list mStyle->addSymbol(name, mSymbol->clone()); + // make sure the symbol is stored + mStyle->save(); + populateSymbolView(); }