|
17 | 17 | #include <QToolBar>
|
18 | 18 | #include <QInputDialog>
|
19 | 19 | #include <QMessageBox>
|
| 20 | +#include <QSettings> |
| 21 | +#include <QFileDialog> |
20 | 22 |
|
21 | 23 | #include "qgsmaplayerstylemanagerwidget.h"
|
22 | 24 | #include "qgslogger.h"
|
@@ -46,9 +48,15 @@ QgsMapLayerStyleManagerWidget::QgsMapLayerStyleManagerWidget( QgsMapLayer* layer
|
46 | 48 | connect( removeAction, SIGNAL( triggered() ), this, SLOT( removeStyle() ) );
|
47 | 49 | QAction* saveAsDefaultAction = toolbar->addAction( tr( "Save as default" ) );
|
48 | 50 | connect( saveAsDefaultAction, SIGNAL( triggered() ), this, SLOT( saveAsDefault() ) );
|
49 |
| - QAction* loadDefaultAction = toolbar->addAction( tr( "Load default" ) ); |
| 51 | + QAction* loadDefaultAction = toolbar->addAction( tr( "Restore default" ) ); |
50 | 52 | connect( loadDefaultAction, SIGNAL( triggered() ), this, SLOT( loadDefault() ) );
|
51 | 53 |
|
| 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 | + |
52 | 60 | connect( canvas, SIGNAL( mapCanvasRefreshed() ), this, SLOT( updateCurrent() ) );
|
53 | 61 |
|
54 | 62 | connect( mStyleList, SIGNAL( clicked( QModelIndex ) ), this, SLOT( styleClicked( QModelIndex ) ) );
|
@@ -272,3 +280,49 @@ void QgsMapLayerStyleManagerWidget::loadDefault()
|
272 | 280 | }
|
273 | 281 |
|
274 | 282 | }
|
| 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 | +} |
0 commit comments