class LoadQSS: def __init__(self, iface): self.iface = iface self.plugin_dir = os.path.dirname(__file__) locale = QSettings().value("locale/userLocale")[0:2] localePath = os.path.join(self.plugin_dir, "i18n", "LoadQSS_{}.qm".format(locale)) if os.path.exists(localePath): self.translator = QTranslator() self.translator.load(localePath) if qVersion() > "4.3.3": QCoreApplication.installTranslator(self.translator) # Activate last style try: activateStyle(getActivated(), self.iface) except: None def initGui(self): self.action = QAction(QIcon(":/imgQss/images/icon.png"), u"Load QSS - UI themes", self.iface.mainWindow()) self.action.triggered.connect(self.run) self.iface.addToolBarIcon(self.action) self.iface.addPluginToMenu(u"&Load QSS - UI themes", self.action) self.actionAbout = QAction(QIcon(":/imgQss/images/info.png"), u"About", self.iface.mainWindow()) self.iface.addPluginToMenu(u"&Load QSS - UI themes", self.actionAbout) self.actionAbout.triggered.connect(self.About) def unload(self): self.iface.removePluginMenu(u"&Load QSS - UI themes", self.action) self.iface.removePluginMenu(u"&Load QSS - UI themes", self.actionAbout) self.iface.removeToolBarIcon(self.action) def About(self): self.About = AboutQSSDialog(self.iface) self.About.setWindowFlags(Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.About.exec_() return def run(self): self.dlg = LoadQSSDialog(self.iface) self.dlg.setWindowFlags(Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.dlg.exec_()
def about(self): self.About = AboutQSSDialog(self.iface) self.About.setWindowFlags(Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.About.exec_() return
class LoadQSSDialog(QtGui.QDialog, Ui_LoadQSSDialog): def __init__(self, iface): QtGui.QDialog.__init__(self) self.setupUi(self) self.iface = iface self.lastOpenedFile = None self.app = QApplication.instance() self.plugin_dir = os.path.dirname(os.path.abspath(__file__)) ExampleStyles = dict() ExampleStyles = { "Dark" : "darkstyle.qss", "machinery" : "machinery.qss", "DarkOrange" : "DarkOrange.qss", "light" : "light.qss", "Minimalist" : "Minimalist.qss", "Wombat" : "stylesheet.qss", "Dark Blue (FreeCAD)" : "stylesheet.qss", "Dark Green (FreeCAD)" : "stylesheet.qss", "Dark Orange (FreeCAD)" : "stylesheet.qss", "Light Blue (FreeCAD)" : "stylesheet.qss", "Light Green (FreeCAD)" : "stylesheet.qss", "Light Orange (FreeCAD)" : "stylesheet.qss", "Blue Glass" : "blueglass.qss" } for k,v in ExampleStyles.items(): setStyle(k, self.to_exmples_folder(k, v)) self.listStyles.addItems(getStyleList()) self.currentItem = None self.AddAboutButton() #Copy styles in examples plugin folder def to_exmples_folder(self, folder, stylesheet): return os.path.join(self.plugin_dir, "examples", folder, stylesheet) # About def about(self): self.About = AboutQSSDialog(self.iface) self.About.setWindowFlags(Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.About.exec_() return def AddAboutButton(self): layout = QVBoxLayout() toolBar = QToolBar(self) toolBar.addAction(u"About", self.about) toolBar.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) toolBar.setStyleSheet("QToolBar {border-bottom: 0px solid grey }") toolBar.setInputMethodHints(QtCore.Qt.ImhNone) toolBar.setMovable(False) toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) toolBar.setFloatable(False) layout.addWidget(toolBar) layout.setMargin(0) layout.setSpacing(0) layout.addStretch(0) self.setLayout(layout) return # Selected row def SelectRow(self, checked): if checked: self.Delete_btn.setEnabled(True) self.Activate_btn.setEnabled(True) self.currentItem = checked self.ApplyStyle(preview = True)#Preview style. else: self.Delete_btn.setEnabled(False) self.Activate_btn.setEnabled(False) self.currentItem = None # Add new qss def AddStyle(self): self.filename = QtGui.QFileDialog.getOpenFileName(self, "Open qss", self.lastOpenedFile, "*.qss") if len(self.filename) != 0: flags = Qt.WindowSystemMenuHint | Qt.WindowTitleHint text, ok = QInputDialog.getText(self, 'Style Name', 'Enter name for Style:', flags=flags) if ok: if text == "": self.iface.messageBar().pushMessage("Error: ", "Enter theme name.", level=QgsMessageBar.CRITICAL, duration=3) return # Se anade al listado self.listStyles.addItem(text) setStyle(text, self.filename) return # Remove style in list def DeleteStyle(self): try: if(self.currentItem.text()== getPreview()): if (self.currentItem.text()==getActivated()): ret = QtGui.QMessageBox.question(self, self.tr('Delete Style : '+self.currentItem.text()), self.tr('The style you are about to remove is your active style.\nThe default Qgis style will be set.\nAre you sure you want to remove it?'), QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No) if ret == QMessageBox.Yes: self.ResetStyle() if ret == QMessageBox.No: return else: activateStyle(getActivated(), self.iface) except Exception as e: None self.listStyles.takeItem(self.listStyles.currentRow()) delStyle(self.currentItem.text()) StyleList = getStyleList() self.Delete_btn.setEnabled(False) self.Activate_btn.setEnabled(False) self.currentItem = None return # Apply style def ApplyStyle(self,preview=False): try: activateStyle(self.currentItem.text(), self.iface,preview) except: None return # Restores style def ResetStyle(self): self.app.setStyleSheet("") setActivated("") return # Close dialog def closeEvent(self, evt): activateStyle(getActivated(), self.iface) return
class LoadQSSDialog(QtGui.QDialog, Ui_LoadQSSDialog): def __init__(self, iface): QtGui.QDialog.__init__(self) self.setupUi(self) self.iface = iface self.lastOpenedFile = None self.app = QApplication.instance() self.plugin_dir = os.path.dirname(os.path.abspath(__file__)) setStyle("Wombat", self.to_exmples_folder("Dark", "darkstyle.qss")) setStyle("Wombat", self.to_exmples_folder("machinery", "machinery.qss")) setStyle("Wombat", self.to_exmples_folder("DarkOrange", "DarkOrange.qss")) setStyle("Wombat", self.to_exmples_folder("light", "light.qss")) setStyle("Wombat", self.to_exmples_folder("Wombat", "stylesheet.qss")) self.listStyles.addItems(getStyleList()) self.currentItem = None self.AddAboutButton() def to_exmples_folder(self, folder, stylesheet): return os.path.join(self.plugin_dir, "examples", folder, stylesheet) # About def about(self): self.About = AboutQSSDialog(self.iface) self.About.setWindowFlags(Qt.WindowSystemMenuHint | Qt.WindowTitleHint) self.About.exec_() return def AddAboutButton(self): layout = QVBoxLayout() toolBar = QToolBar(self) toolBar.addAction(u"About", self.about) toolBar.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) toolBar.setStyleSheet("QToolBar {border-bottom: 0px solid grey }") toolBar.setInputMethodHints(QtCore.Qt.ImhNone) toolBar.setMovable(False) toolBar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) toolBar.setFloatable(False) layout.addWidget(toolBar) layout.setMargin(0) layout.setSpacing(0) layout.addStretch(0) self.setLayout(layout) return # Selected row def SelectRow(self, checked): if checked: self.Delete_btn.setEnabled(True) self.Activate_btn.setEnabled(True) self.currentItem = checked else: self.Delete_btn.setEnabled(False) self.Activate_btn.setEnabled(False) self.currentItem = None # Add new qss def AddStyle(self): self.filename = QtGui.QFileDialog.getOpenFileName(self, "Open qss", self.lastOpenedFile, "*.qss") if len(self.filename) != 0: flags = Qt.WindowSystemMenuHint | Qt.WindowTitleHint text, ok = QInputDialog.getText(self, 'Style Name', 'Enter name for Style:', flags=flags) if ok: if text == "": self.iface.messageBar().pushMessage("Error: ", "Enter theme name.", level=QgsMessageBar.CRITICAL, duration=3) return # Se anade al listado self.listStyles.addItem(text) setStyle(text, self.filename) return # Remove style in list def DeleteStyle(self): self.listStyles.takeItem(self.listStyles.currentRow()) delStyle(self.currentItem.text()) StyleList = getStyleList() self.Delete_btn.setEnabled(False) self.Activate_btn.setEnabled(False) self.currentItem = None return # Apply style def ApplyStyle(self): try: activateStyle(self.currentItem.text(), self.iface) except: None return # Restores style def ResetStyle(self): self.app.setStyleSheet("") setActivated("") return