/
styleLoadWgt.py
94 lines (78 loc) · 3.59 KB
/
styleLoadWgt.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# -*- coding: utf-8 -*-
"""
/***************************************************************************
styleLoadDockWidget
A QGIS plugin
Laad een gepredefineerde stijl.
-------------------
begin : 2015-10-27
git sha : $Format:%H$
copyright : (C) 2015 by Kay Warrie
email : kaywarrie@gmail.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
import os, glob
from PyQt4 import QtGui, QtCore
from qgis.core import *
from settings import settings
from ui_styleLoadWgt import Ui_styleLoadWgt
class styleLoadDockWidget(QtGui.QDockWidget):
closingPlugin = QtCore.pyqtSignal()
def __init__(self, iface, parent=None):
super(styleLoadDockWidget, self).__init__(parent)
self.setWindowFlags( self.windowFlags() & ~QtCore.Qt.WindowContextHelpButtonHint )
# initialize locale
locale = QtCore.QSettings().value("locale/userLocale", "ln")[0:2]
localePath = os.path.join(os.path.dirname(__file__), 'i18n', '{}.qm'.format(locale))
if os.path.exists(localePath):
self.translator = QtCore.QTranslator()
self.translator.load(localePath)
QtCore.QCoreApplication.installTranslator(self.translator)
self.iface = iface
self._initGui()
def _initGui(self):
self.ui = Ui_styleLoadWgt()
self.ui.setupUi(self)
self.refreshContent()
self.ui.commitBtn.clicked.connect( self.commitBtnClicked )
self.ui.setSourceBtn.clicked.connect(self.saveSource)
self.iface.mapCanvas().layersChanged.connect(self.refreshContent)
def commitBtnClicked(self):
lyrIdx = self.ui.layerCbx.currentIndex()
mapLayer = self.mapLayers.values()[lyrIdx]
if len( self.ui.qmlList.selectedItems() ):
qmlItem = self.ui.qmlList.selectedItems()[0]
qmlPath = os.path.join( self.s.qmlDir , qmlItem.text() )
else:
return
mapLayer.loadNamedStyle( qmlPath )
self.refreshContent()
def refreshContent(self):
self.s = settings()
self.ui.qmlFolderLbl.setText( self.s.qmlDir )
self.styles = glob.glob( os.path.join( self.s.qmlDir, "*.qml" ))
self.mapLayers = QgsMapLayerRegistry.instance().mapLayers()
self.ui.layerCbx.clear()
self.ui.layerCbx.insertItems(0, [ l.name() for l in self.mapLayers.values()])
self.ui.qmlList.clear()
self.ui.qmlList.insertItems(0, [os.path.split(n)[1] for n in self.styles])
self.iface.mapCanvas().refresh()
def closeEvent(self, event):
self.closingPlugin.emit()
event.accept()
def saveSource( self ):
Fdlg = QtGui.QFileDialog()
home = os.path.expanduser("~")
fName = Fdlg.getExistingDirectory( self, "Open Folder", directory=home )
if fName:
self.s.qmlDir = fName
self.s.saveSettings()
self.refreshContent()