Skip to content

Commit 4c28661

Browse files
committed
[styledock] Add load from file
1 parent 3d941e3 commit 4c28661

File tree

2 files changed

+57
-1
lines changed

2 files changed

+57
-1
lines changed

src/gui/qgsmaplayerstylemanagerwidget.cpp

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
#include <QToolBar>
1818
#include <QInputDialog>
1919
#include <QMessageBox>
20+
#include <QSettings>
21+
#include <QFileDialog>
2022

2123
#include "qgsmaplayerstylemanagerwidget.h"
2224
#include "qgslogger.h"
@@ -46,9 +48,15 @@ QgsMapLayerStyleManagerWidget::QgsMapLayerStyleManagerWidget( QgsMapLayer* layer
4648
connect( removeAction, SIGNAL( triggered() ), this, SLOT( removeStyle() ) );
4749
QAction* saveAsDefaultAction = toolbar->addAction( tr( "Save as default" ) );
4850
connect( saveAsDefaultAction, SIGNAL( triggered() ), this, SLOT( saveAsDefault() ) );
49-
QAction* loadDefaultAction = toolbar->addAction( tr( "Load default" ) );
51+
QAction* loadDefaultAction = toolbar->addAction( tr( "Restore default" ) );
5052
connect( loadDefaultAction, SIGNAL( triggered() ), this, SLOT( loadDefault() ) );
5153

54+
QAction* loadFromFileAction = toolbar->addAction( tr( "Load Style" ) );
55+
connect( loadFromFileAction, SIGNAL( triggered() ), this, SLOT( loadStyle() ) );
56+
57+
QAction* saveToFileAction = toolbar->addAction( tr( "Save Style" ) );
58+
connect( saveToFileAction, SIGNAL( triggered() ), this, SLOT( saveStyle() ) );
59+
5260
connect( canvas, SIGNAL( mapCanvasRefreshed() ), this, SLOT( updateCurrent() ) );
5361

5462
connect( mStyleList, SIGNAL( clicked( QModelIndex ) ), this, SLOT( styleClicked( QModelIndex ) ) );
@@ -272,3 +280,49 @@ void QgsMapLayerStyleManagerWidget::loadDefault()
272280
}
273281

274282
}
283+
284+
void QgsMapLayerStyleManagerWidget::saveStyle()
285+
{
286+
287+
}
288+
289+
void QgsMapLayerStyleManagerWidget::loadStyle()
290+
{
291+
QSettings myQSettings; // where we keep last used filter in persistent state
292+
QString myLastUsedDir = myQSettings.value( "style/lastStyleDir", QDir::homePath() ).toString();
293+
294+
QString myFileName = QFileDialog::getOpenFileName( this, tr( "Load layer properties from style file" ), myLastUsedDir,
295+
tr( "QGIS Layer Style File" ) + " (*.qml);;" + tr( "SLD File" ) + " (*.sld)" );
296+
if ( myFileName.isNull() )
297+
{
298+
return;
299+
}
300+
301+
QString myMessage;
302+
bool defaultLoadedFlag = false;
303+
304+
if ( myFileName.endsWith( ".sld", Qt::CaseInsensitive ) )
305+
{
306+
// load from SLD
307+
myMessage = mLayer->loadSldStyle( myFileName, defaultLoadedFlag );
308+
}
309+
else
310+
{
311+
myMessage = mLayer->loadNamedStyle( myFileName, defaultLoadedFlag );
312+
}
313+
//reset if the default style was loaded ok only
314+
if ( defaultLoadedFlag )
315+
{
316+
emit widgetChanged();
317+
}
318+
else
319+
{
320+
//let the user know what went wrong
321+
QMessageBox::warning( this, tr( "Load Style" ), myMessage );
322+
}
323+
324+
QFileInfo myFI( myFileName );
325+
QString myPath = myFI.path();
326+
myQSettings.setValue( "style/lastStyleDir", myPath );
327+
328+
}

src/gui/qgsmaplayerstylemanagerwidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ class GUI_EXPORT QgsMapLayerStyleManagerWidget : public QgsMapStylePanel
5555
void removeStyle();
5656
void saveAsDefault();
5757
void loadDefault();
58+
void saveStyle();
59+
void loadStyle();
5860

5961
private:
6062
QStandardItemModel* mModel;

0 commit comments

Comments
 (0)