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()