def setLexers(self): self.lexer = QsciLexerPython() loadFont = self.settings.value("pythonConsole/fontfamilytext", "Monospace").toString() fontSize = self.settings.value("pythonConsole/fontsize", 10).toInt()[0] font = QFont(loadFont) font.setFixedPitch(True) font.setPointSize(fontSize) font.setStyleHint(QFont.TypeWriter) font.setStretch(QFont.SemiCondensed) font.setLetterSpacing(QFont.PercentageSpacing, 87.0) font.setBold(False) self.lexer.setDefaultFont(font) self.lexer.setColor(Qt.red, 1) self.lexer.setColor(Qt.darkGreen, 5) self.lexer.setColor(Qt.darkBlue, 15) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.api = QsciAPIs(self.lexer) chekBoxAPI = self.settings.value("pythonConsole/preloadAPI", True).toBool() if chekBoxAPI: self.api.loadPrepared(QgsApplication.pkgDataPath() + "/python/qsci_apis/pyqgis_master.pap") else: apiPath = self.settings.value("pythonConsole/userAPI").toStringList() for i in range(0, len(apiPath)): self.api.load(QString(unicode(apiPath[i]))) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def setLexers(self, lexer): from qgis.core import QgsApplication if lexer: font = QFont() font.setFamily('Mono') ## Courier New font.setFixedPitch(True) ## check platform for font size if sys.platform.startswith('darwin'): font.setPointSize(13) else: font.setPointSize(10) self.setFont(font) self.setMarginsFont(font) self.lexer = QsciLexerPython() self.lexer.setDefaultFont(font) self.lexer.setColor(Qt.red, 1) self.lexer.setColor(Qt.darkGreen, 5) self.lexer.setColor(Qt.darkBlue, 15) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.api = QsciAPIs(self.lexer) self.api.loadPrepared( QgsApplication.pkgDataPath() + "/python/qsci_apis/pyqgis_master.pap" ) self.setLexer(self.lexer)
def setupUi(self): self.setMaximumSize(500, 300) self.webView = QtWebKit.QWebView() self.setWindowTitle(QCoreApplication.translate("PythonConsole","Help Python Console")) self.verticalLayout= QtGui.QVBoxLayout() self.verticalLayout.setSpacing(2) self.verticalLayout.setMargin(0) self.verticalLayout.addWidget(self.webView) self.closeButton = QtGui.QPushButton() self.closeButton.setText("Close") self.closeButton.setMaximumWidth(150) self.horizontalLayout= QtGui.QHBoxLayout() self.horizontalLayout.setSpacing(2) self.horizontalLayout.setMargin(0) self.horizontalLayout.addStretch(1000) self.horizontalLayout.addWidget(self.closeButton) QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self.closeWindow) self.verticalLayout.addLayout(self.horizontalLayout) self.setLayout(self.verticalLayout) qgisDataDir = QgsApplication.pkgDataPath() listFile = os.listdir(qgisDataDir + "/python/console_help/i18n") localeFullName = QSettings().value( "locale/userLocale", QVariant( "" ) ).toString() locale = "en_US" for i in listFile: lang = i[0:5] if localeFullName in (lang[0:2], lang): locale = lang filename = qgisDataDir + "/python/console_help/help.htm? \ lang=" + locale \ + "&pkgDir=" + qgisDataDir url = QtCore.QUrl(filename) self.webView.load(url)
def initLexer(self): settings = QgsSettings() self.lexer = QsciLexerPython() font = QFontDatabase.systemFont(QFontDatabase.FixedFont) loadFont = settings.value("pythonConsole/fontfamilytextEditor") if loadFont: font.setFamily(loadFont) fontSize = settings.value("pythonConsole/fontsizeEditor", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor(QColor(settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR)))) self.lexer.setColor(QColor(settings.value("pythonConsole/commentFontColorEditor", QColor(self.COMMENT_COLOR))), 1) self.lexer.setColor(QColor(settings.value("pythonConsole/numberFontColorEditor", QColor(self.NUMBER_COLOR))), 2) self.lexer.setColor(QColor(settings.value("pythonConsole/keywordFontColorEditor", QColor(self.KEYWORD_COLOR))), 5) self.lexer.setColor(QColor(settings.value("pythonConsole/classFontColorEditor", QColor(self.CLASS_COLOR))), 8) self.lexer.setColor(QColor(settings.value("pythonConsole/methodFontColorEditor", QColor(self.METHOD_COLOR))), 9) self.lexer.setColor(QColor(settings.value("pythonConsole/decorFontColorEditor", QColor(self.DECORATION_COLOR))), 15) self.lexer.setColor(QColor(settings.value("pythonConsole/commentBlockFontColorEditor", QColor(self.COMMENT_BLOCK_COLOR))), 12) self.lexer.setColor(QColor(settings.value("pythonConsole/singleQuoteFontColorEditor", QColor(self.SINGLE_QUOTE_COLOR))), 4) self.lexer.setColor(QColor(settings.value("pythonConsole/doubleQuoteFontColorEditor", QColor(self.DOUBLE_QUOTE_COLOR))), 3) self.lexer.setColor(QColor(settings.value("pythonConsole/tripleSingleQuoteFontColorEditor", QColor(self.TRIPLE_SINGLE_QUOTE_COLOR))), 6) self.lexer.setColor(QColor(settings.value("pythonConsole/tripleDoubleQuoteFontColorEditor", QColor(self.TRIPLE_DOUBLE_QUOTE_COLOR))), 7) self.lexer.setColor(QColor(settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR))), 13) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.lexer.setFont(font, QsciLexerPython.UnclosedString) for style in range(0, 33): paperColor = QColor(settings.value("pythonConsole/paperBackgroundColorEditor", QColor(self.BACKGROUND_COLOR))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) useDefaultAPI = bool(settings.value('pythonConsole/preloadAPI', True)) if useDefaultAPI: # Load QGIS API shipped with Python console self.api.loadPrepared( os.path.join(QgsApplication.pkgDataPath(), 'python', 'qsci_apis', 'pyqgis.pap')) else: # Load user-defined API files apiPaths = settings.value('pythonConsole/userAPI', []) for path in apiPaths: self.api.load(path) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def initLexer(self): if self.lexerType == self.LEXER_PYTHON: self.lexer = QsciLexerPython() colorDefault = QColor('#2e3436') colorComment = QColor('#c00') colorCommentBlock = QColor('#3465a4') colorNumber = QColor('#4e9a06') colorType = QColor('#4e9a06') colorKeyword = QColor('#204a87') colorString = QColor('#ce5c00') self.lexer.setDefaultFont(self.defaultFont) self.lexer.setDefaultColor(colorDefault) self.lexer.setColor(colorComment, 1) self.lexer.setColor(colorNumber, 2) self.lexer.setColor(colorString, 3) self.lexer.setColor(colorString, 4) self.lexer.setColor(colorKeyword, 5) self.lexer.setColor(colorString, 6) self.lexer.setColor(colorString, 7) self.lexer.setColor(colorType, 8) self.lexer.setColor(colorCommentBlock, 12) self.lexer.setColor(colorString, 15) self.lexer.setFont(self.italicFont, 1) self.lexer.setFont(self.boldFont, 5) self.lexer.setFont(self.boldFont, 8) self.lexer.setFont(self.italicFont, 12) self.api = QsciAPIs(self.lexer) settings = QSettings() useDefaultAPI = bool(settings.value('pythonConsole/preloadAPI', True)) if useDefaultAPI: # Load QGIS API shipped with Python console self.api.loadPrepared( os.path.join(QgsApplication.pkgDataPath(), 'python', 'qsci_apis', 'pyqgis.pap')) else: # Load user-defined API files apiPaths = settings.value('pythonConsole/userAPI', []) for path in apiPaths: self.api.load(path) self.api.prepare() self.lexer.setAPIs(self.api) elif self.lexerType == self.LEXER_R: # R lexer self.lexer = LexerR() self.setLexer(self.lexer)
def _downgradePlugin(pluginName, corePlugin=True): if corePlugin: metadataPath = os.path.join(QgsApplication.pkgDataPath(), 'python', 'plugins', pluginName, 'metadata.txt') else: metadataPath = os.path.join(QgsApplication.qgisSettingsDirPath()(), 'python', 'plugins', pluginName, 'metadata.txt') cfg = ConfigParser() cfg.read(metadataPath) global originalVersion originalVersion = cfg.get('general', 'version') cfg.set('general', 'version', '0.0.1') with open(metadataPath, 'wb') as f: cfg.write(f)
def setLexers(self): self.lexer = QsciLexerPython() font = QFontDatabase.systemFont(QFontDatabase.FixedFont) loadFont = self.settings.value("pythonConsole/fontfamilytext") if loadFont: font.setFamily(loadFont) fontSize = self.settings.value("pythonConsole/fontsize", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor(QColor(self.settings.value("pythonConsole/defaultFontColor", QColor(self.DEFAULT_COLOR)))) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentFontColor", QColor(self.COMMENT_COLOR))), 1) self.lexer.setColor(QColor(self.settings.value("pythonConsole/numberFontColor", QColor(self.NUMBER_COLOR))), 2) self.lexer.setColor(QColor(self.settings.value("pythonConsole/keywordFontColor", QColor(self.KEYWORD_COLOR))), 5) self.lexer.setColor(QColor(self.settings.value("pythonConsole/classFontColor", QColor(self.CLASS_COLOR))), 8) self.lexer.setColor(QColor(self.settings.value("pythonConsole/methodFontColor", QColor(self.METHOD_COLOR))), 9) self.lexer.setColor(QColor(self.settings.value("pythonConsole/decorFontColor", QColor(self.DECORATION_COLOR))), 15) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentBlockFontColor", QColor(self.COMMENT_BLOCK_COLOR))), 12) self.lexer.setColor(QColor(self.settings.value("pythonConsole/singleQuoteFontColor", QColor(self.SINGLE_QUOTE_COLOR))), 4) self.lexer.setColor(QColor(self.settings.value("pythonConsole/doubleQuoteFontColor", QColor(self.DOUBLE_QUOTE_COLOR))), 3) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleSingleQuoteFontColor", QColor(self.TRIPLE_SINGLE_QUOTE_COLOR))), 6) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleDoubleQuoteFontColor", QColor(self.TRIPLE_DOUBLE_QUOTE_COLOR))), 7) self.lexer.setColor(QColor(self.settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR))), 13) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.lexer.setFont(font, QsciLexerPython.UnclosedString) for style in range(0, 33): paperColor = QColor(self.settings.value("pythonConsole/paperBackgroundColor", QColor(self.BACKGROUND_COLOR))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) checkBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) checkBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if checkBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif checkBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(apiPath[i]) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def setLexers(self): self.lexer = QsciLexerPython() loadFont = self.settings.value("pythonConsole/fontfamilytext", "Monospace") fontSize = self.settings.value("pythonConsole/fontsize", 10, type=int) font = QFont(loadFont) font.setFixedPitch(True) font.setPointSize(fontSize) font.setStyleHint(QFont.TypeWriter) font.setStretch(QFont.SemiCondensed) font.setLetterSpacing(QFont.PercentageSpacing, 87.0) font.setBold(False) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor(QColor(self.settings.value("pythonConsole/defaultFontColor", QColor(Qt.black)))) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentFontColor", QColor(Qt.gray))), 1) self.lexer.setColor(QColor(self.settings.value("pythonConsole/keywordFontColor", QColor(Qt.darkGreen))), 5) self.lexer.setColor(QColor(self.settings.value("pythonConsole/classFontColor", QColor(Qt.blue))), 8) self.lexer.setColor(QColor(self.settings.value("pythonConsole/methodFontColor", QColor(Qt.darkGray))), 9) self.lexer.setColor(QColor(self.settings.value("pythonConsole/decorFontColor", QColor(Qt.darkBlue))), 15) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentBlockFontColor", QColor(Qt.gray))), 12) self.lexer.setColor(QColor(self.settings.value("pythonConsole/singleQuoteFontColor", QColor(Qt.blue))), 4) self.lexer.setColor(QColor(self.settings.value("pythonConsole/doubleQuoteFontColor", QColor(Qt.blue))), 3) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleSingleQuoteFontColor", QColor(Qt.blue))), 6) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleDoubleQuoteFontColor", QColor(Qt.blue))), 7) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) for style in range(0, 33): paperColor = QColor(self.settings.value("pythonConsole/paperBackgroundColor", QColor(Qt.white))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) chekBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) chekBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if chekBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif chekBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(unicode(apiPath[i])) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def get_absolute_path(path): path = "/python/plugins/veriso/%s" % path filename = QDir.toNativeSeparators(QDir.cleanPath( QgsApplication.qgisSettingsDirPath() + path)) if not os.path.isfile(filename): filename = QDir.toNativeSeparators(QDir.cleanPath( QgsApplication.pkgDataPath() + path)) # the plugin is not in the .qgis2 folder # lets try in the qgis installation folder (for central installation # on servers) if not os.path.isfile(filename): raise VerisoError('File not found at %s' % filename) return filename
def initLexer(self): if self.lexerType == self.LEXER_PYTHON: self.lexer = QsciLexerPython() colorDefault = QColor('#2e3436') colorComment = QColor('#c00') colorCommentBlock = QColor('#3465a4') colorNumber = QColor('#4e9a06') colorType = QColor('#4e9a06') colorKeyword = QColor('#204a87') colorString = QColor('#ce5c00') self.lexer.setDefaultFont(self.defaultFont) self.lexer.setDefaultColor(colorDefault) self.lexer.setColor(colorComment, 1) self.lexer.setColor(colorNumber, 2) self.lexer.setColor(colorString, 3) self.lexer.setColor(colorString, 4) self.lexer.setColor(colorKeyword, 5) self.lexer.setColor(colorString, 6) self.lexer.setColor(colorString, 7) self.lexer.setColor(colorType, 8) self.lexer.setColor(colorCommentBlock, 12) self.lexer.setColor(colorString, 15) self.lexer.setFont(self.italicFont, 1) self.lexer.setFont(self.boldFont, 5) self.lexer.setFont(self.boldFont, 8) self.lexer.setFont(self.italicFont, 12) self.api = QsciAPIs(self.lexer) settings = QgsSettings() useDefaultAPI = bool( settings.value('pythonConsole/preloadAPI', True)) if useDefaultAPI: # Load QGIS API shipped with Python console self.api.loadPrepared( os.path.join(QgsApplication.pkgDataPath(), 'python', 'qsci_apis', 'pyqgis.pap')) else: # Load user-defined API files apiPaths = settings.value('pythonConsole/userAPI', []) for path in apiPaths: self.api.load(path) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def setLexers(self): self.lexer = QsciLexerPython() font = QFontDatabase.systemFont(QFontDatabase.FixedFont) loadFont = self.settings.value("pythonConsole/fontfamilytext") if loadFont: font.setFamily(loadFont) fontSize = self.settings.value("pythonConsole/fontsize", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor(QColor(self.settings.value("pythonConsole/defaultFontColor", QColor(Qt.black)))) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentFontColor", QColor(Qt.gray))), 1) self.lexer.setColor(QColor(self.settings.value("pythonConsole/keywordFontColor", QColor(Qt.darkGreen))), 5) self.lexer.setColor(QColor(self.settings.value("pythonConsole/classFontColor", QColor(Qt.blue))), 8) self.lexer.setColor(QColor(self.settings.value("pythonConsole/methodFontColor", QColor(Qt.darkGray))), 9) self.lexer.setColor(QColor(self.settings.value("pythonConsole/decorFontColor", QColor(Qt.darkBlue))), 15) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentBlockFontColor", QColor(Qt.gray))), 12) self.lexer.setColor(QColor(self.settings.value("pythonConsole/singleQuoteFontColor", QColor(Qt.blue))), 4) self.lexer.setColor(QColor(self.settings.value("pythonConsole/doubleQuoteFontColor", QColor(Qt.blue))), 3) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleSingleQuoteFontColor", QColor(Qt.blue))), 6) self.lexer.setColor(QColor(self.settings.value("pythonConsole/tripleDoubleQuoteFontColor", QColor(Qt.blue))), 7) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) for style in range(0, 33): paperColor = QColor(self.settings.value("pythonConsole/paperBackgroundColor", QColor(Qt.white))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) checkBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) checkBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if checkBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif checkBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(apiPath[i]) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def setLexers(self): self.lexer = QsciLexerPython() loadFont = self.settings.value("pythonConsole/fontfamilytext", "Monospace") fontSize = self.settings.value("pythonConsole/fontsize", 10, type=int) font = QFont(loadFont) font.setFixedPitch(True) font.setPointSize(fontSize) font.setStyleHint(QFont.TypeWriter) font.setStretch(QFont.SemiCondensed) font.setLetterSpacing(QFont.PercentageSpacing, 87.0) font.setBold(False) self.lexer.setDefaultFont(font) self.lexer.setColor(Qt.red, 1) self.lexer.setColor(Qt.darkGreen, 5) self.lexer.setColor(Qt.darkBlue, 15) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.api = QsciAPIs(self.lexer) chekBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) chekBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if chekBoxAPI: apisdir = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis") pap = os.path.join(apisdir, "pyqgis.pap") mpap = os.path.join(apisdir, "pyqgis-master.pap") if os.path.exists(mpap): # override installed with master .pap build pap = mpap if QgsApplication.isRunningFromBuildDir(): bdir = os.path.dirname(QgsApplication.buildOutputPath()) bpap = os.path.join(bdir, "python", "qsci_apis", "pyqgis-master.pap") if os.path.exists(bpap): # if not generated .pap exists, else fall back to preprepared one pap = bpap self.api.loadPrepared(pap) elif chekBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(unicode(apiPath[i])) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def setLexers(self): self.lexer = QsciLexerPython() loadFont = self.settings.value("pythonConsole/fontfamilytext", "Monospace") fontSize = self.settings.value("pythonConsole/fontsize", 10, type=int) font = QFont(loadFont) font.setFixedPitch(True) font.setPointSize(fontSize) font.setStyleHint(QFont.TypeWriter) font.setStretch(QFont.SemiCondensed) font.setLetterSpacing(QFont.PercentageSpacing, 87.0) font.setBold(False) self.lexer.setDefaultFont(font) self.lexer.setColor(Qt.red, 1) self.lexer.setColor(Qt.darkGreen, 5) self.lexer.setColor(Qt.darkBlue, 15) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.api = QsciAPIs(self.lexer) chekBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) chekBoxPreparedAPI = self.settings.value( "pythonConsole/usePreparedAPIFile", False, type=bool) if chekBoxAPI: self.api.loadPrepared(QgsApplication.pkgDataPath() + "/python/qsci_apis/pyqgis_master.pap") elif chekBoxPreparedAPI: self.api.loadPrepared( self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(unicode(apiPath[i])) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def start_qgis(self): """Start a QgsApplication without any arguments and with *GUI mode turned off*. Also call its initialization method. The initialization will only happen once, so it is safe to call this method repeatedly. """ if isinstance(self.app, QgsApplication): return self.profile_folder = tempfile.TemporaryDirectory( prefix='QGIS-PythonTestConfigPath') os.environ['QGIS_CUSTOM_CONFIG_PATH'] = self.profile_folder.name self.app = QgsApplication([b''], False) _init_qgis_app() print(QgsApplication.showSettings()) _init_processing() sys_plugin_path = pathlib.Path( QgsApplication.pkgDataPath()) / 'python' / 'plugins' home_plugin_path = pathlib.Path( QgsApplication.qgisSettingsDirPath()) / 'python' / 'plugins' _add_plugin_paths_to_qgis(sys_plugin_path, home_plugin_path) _deploy_plugin_to_qgis(home_plugin_path) qgis.utils.updateAvailablePlugins()
def __init__(self, parent): QDialog.__init__(self, parent) self.setupUi(self) self.setWindowTitle(QCoreApplication.translate("PythonConsole","Help Python Console")) self.setMaximumSize(530, 300) qgisDataDir = QgsApplication.pkgDataPath() listFile = os.listdir(qgisDataDir + "/python/console/console_help/i18n") localeFullName = QSettings().value( "locale/userLocale", QVariant( "" ) ).toString() locale = "en_US" for i in listFile: lang = i[0:5] if localeFullName in (lang[0:2], lang): locale = lang filename = qgisDataDir + "/python/console/console_help/help.htm? \ lang=" + locale \ + "&pkgDir=" + qgisDataDir url = QUrl(filename) self.webView.load(url)
def __init__(self, parent): QDialog.__init__(self, parent) self.setupUi(self) self.setWindowTitle(QCoreApplication.translate("PythonConsole","Help Python Console")) self.setMaximumSize(530, 300) qgisDataDir = QgsApplication.pkgDataPath() listFile = os.listdir(qgisDataDir + "/python/console/help/i18n") localeFullName = QSettings().value( "locale/userLocale", QVariant( "" ) ).toString() locale = "en_US" for i in listFile: lang = i[0:5] if localeFullName in (lang[0:2], lang): locale = lang filename = qgisDataDir + "/python/console/help/help.htm? \ lang=" + locale \ + "&pkgDir=" + qgisDataDir url = QUrl(filename) self.webView.load(url)
def setLexers(self): self.lexer = QsciLexerPython() loadFont = self.settings.value("pythonConsole/fontfamilytext", "Monospace") fontSize = self.settings.value("pythonConsole/fontsize", 10, type=int) font = QFont(loadFont) font.setFixedPitch(True) font.setPointSize(fontSize) font.setStyleHint(QFont.TypeWriter) font.setStretch(QFont.SemiCondensed) font.setLetterSpacing(QFont.PercentageSpacing, 87.0) font.setBold(False) self.lexer.setDefaultFont(font) self.lexer.setColor(Qt.red, 1) self.lexer.setColor(Qt.darkGreen, 5) self.lexer.setColor(Qt.darkBlue, 15) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.api = QsciAPIs(self.lexer) chekBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) chekBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if chekBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif chekBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(unicode(apiPath[i])) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def createLayout(self): print(u'createLayout()') templateFile = self.createLayoutDialog.comboBoxTemplate.currentText() templateQpt = os.path.join(self.dataPath, templateFile) layoutName = self.createLayoutDialog.lineEditName.text() project = QgsProject.instance() layoutManager = project.layoutManager() oldLayout = layoutManager.layoutByName(layoutName) if oldLayout is not None: print(u'removing: {}'.format(oldLayout)) layoutManager.removeLayout(oldLayout) # create new layout layout = QgsPrintLayout(project) # load layout template fl = QFile(templateQpt) doc = QDomDocument() doc.setContent(fl) layout.loadFromTemplate(doc, QgsReadWriteContext()) # set name layout.setName(layoutName) # set map properties map = self.getItemById(layout, u'RC_map') if map is not None: #print(map.crs().description()) map.zoomToExtent(self.iface.mapCanvas().extent()) # set default label values for configurationItem in simsLayoutConfiguration: label = self.getItemById(layout, configurationItem['code']) if label is not None and isinstance(label, QgsLayoutItemLabel): if configurationItem['default'] is not None: label.setText(configurationItem['default']) # set overview map map = self.getItemById(layout, u'RC_overview') if map is not None: worldLayer = self.addWorldLayer() map.setFollowVisibilityPreset(False) map.setKeepLayerSet(True) map.setLayers([worldLayer]) overviewCrs = QgsCoordinateReferenceSystem("EPSG:54030") map.setCrs(overviewCrs) extent = worldLayer.extent() layerCrs = worldLayer.sourceCrs() if not layerCrs == overviewCrs: transform = QgsCoordinateTransform(layerCrs, overviewCrs, QgsProject.instance()) extent = transform.transformBoundingBox(extent) map.zoomToExtent(extent) root = QgsProject.instance().layerTreeRoot() rl = root.findLayer(worldLayer.id()) rl.setItemVisibilityChecked(False) # set disclamer languageChoice = self.createLayoutDialog.comboBoxLanguage.currentText() label = self.getItemById(layout, u'RC_disclaimer') if label is not None: label.setText(simsDisclamers[languageChoice]) label = self.getItemById(layout, u'RC_logotext') if label is not None: label.setText(simsLogoTexts[languageChoice]) # set title label = self.getItemById(layout, u'RC_title') if label is not None: label.setText(self.createLayoutDialog.lineEditName.text()) # set Copyright # possibly dynamically: [%'© SIMS ' || year(now())%] ''' label = self.getItemById(layout, u'COPYRIGHT') if label is not None: print(label) label.setText(u'© SIMS {0}'.format(datetime.now().year)) # set filename label = self.getItemById(layout, u'FILENAME') if label is not None: print(label) filename = QgsProject.instance().fileName() if filename == u'': filename = u'filename unknown, project not saved' label.setText(filename) ''' # set NS logo picture = self.getItemById(layout, u'RC_logo1') if picture is not None: logoChoice = self.createLayoutDialog.comboBoxNsLogo.currentText() logoSvg = os.path.join(self.dataPath, u'logos', logoChoice) picture.setPicturePath(logoSvg) # set IFRC logo picture = self.getItemById(layout, u'RC_logo2') if picture is not None: logo = simsIfrcLogos[languageChoice] logoSvg = os.path.join(self.dataPath, u'img', logo) picture.setPicturePath(logoSvg) # set date label = self.getItemById(layout, u'RC_date') if label is not None: now = datetime.now() month = simsMonths[languageChoice][now.month] label.setText(now.strftime('%d {} %Y').format(month)) # set North Arrow picture = self.getItemById(layout, u'RC_northarrow') if picture is not None: logoSvg = os.path.join(QgsApplication.pkgDataPath(), u'svg', u'arrows', u'NorthArrow_02.svg') picture.setPicturePath(logoSvg) # clear default label values # add to project and open designer window layoutManager.addLayout(layout) designer = self.iface.openLayoutDesigner(layout)
def setLexers(self): self.lexer = QsciLexerPython() self.lexer.setIndentationWarning(QsciLexerPython.Inconsistent) self.lexer.setFoldComments(True) self.lexer.setFoldQuotes(True) font = QFontDatabase.systemFont(QFontDatabase.FixedFont) # output and console loadFont = self.settings.value("pythonConsole/fontfamilytext") if loadFont: font.setFamily(loadFont) fontSize = self.settings.value("pythonConsole/fontsize", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor(self.color(QgsCodeEditor.ColorRole.Default)) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Comment), 1) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Number), 2) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Keyword), 5) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Class), 8) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Method), 9) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Decoration), 15) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.CommentBlock), 12) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.SingleQuote), 4) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.DoubleQuote), 3) self.lexer.setColor( self.color(QgsCodeEditor.ColorRole.TripleSingleQuote), 6) self.lexer.setColor( self.color(QgsCodeEditor.ColorRole.TripleDoubleQuote), 7) self.lexer.setColor(self.color(QgsCodeEditor.ColorRole.Default), 13) self.lexer.setColor(QColor(Qt.red), 14) self.lexer.setFont(font, 1) self.lexer.setFont(font, 2) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.lexer.setFont(font, QsciLexerPython.UnclosedString) # ? only for editor and console ? paperColor = self.color(QgsCodeEditor.ColorRole.Background) for style in range(0, 33): self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) checkBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) checkBoxPreparedAPI = self.settings.value( "pythonConsole/usePreparedAPIFile", False, type=bool) if checkBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif checkBoxPreparedAPI: self.api.loadPrepared( self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(apiPath[i]) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
# You should have received a copy of the GNU General Public License # along with Chloe - landscape metrics. If not, see <http://www.gnu.org/licenses/>. ##################################################################################################### import os from qgis.PyQt import uic from qgis.PyQt.QtCore import pyqtSignal from qgis.core import QgsApplication from processing.gui.MultipleInputDialog import MultipleInputDialog from processing.gui.MultipleFileInputDialog import MultipleFileInputDialog from .OrderedMultipleInputDialog import OrderedMultipleInputDialog #pluginPath = os.path.split(os.path.dirname(__file__))[0] pluginPath = str(QgsApplication.pkgDataPath()) WIDGET, BASE = uic.loadUiType( os.path.join(pluginPath, 'python', 'plugins', 'processing', 'ui', 'widgetBaseSelector.ui')) class OrderedMultipleInputPanel(BASE, WIDGET): selectionChanged = pyqtSignal() def __init__(self, options=None, datatype=None): super(OrderedMultipleInputPanel, self).__init__(None) self.setupUi(self) self.leText.setEnabled(False) self.leText.setText(self.tr('0 elements selected'))
def setLexers(self): self.lexer = QsciLexerPython() font = QFontDatabase.systemFont(QFontDatabase.FixedFont) loadFont = self.settings.value("pythonConsole/fontfamilytext") if loadFont: font.setFamily(loadFont) fontSize = self.settings.value("pythonConsole/fontsize", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor( QColor(self.settings.value("pythonConsole/defaultFontColor", QColor(self.DEFAULT_COLOR)))) self.lexer.setColor(QColor(self.settings.value("pythonConsole/commentFontColor", QColor(self.COMMENT_COLOR))), 1) self.lexer.setColor(QColor(self.settings.value("pythonConsole/numberFontColor", QColor(self.NUMBER_COLOR))), 2) self.lexer.setColor(QColor(self.settings.value("pythonConsole/keywordFontColor", QColor(self.KEYWORD_COLOR))), 5) self.lexer.setColor(QColor(self.settings.value("pythonConsole/classFontColor", QColor(self.CLASS_COLOR))), 8) self.lexer.setColor(QColor(self.settings.value("pythonConsole/methodFontColor", QColor(self.METHOD_COLOR))), 9) self.lexer.setColor(QColor(self.settings.value("pythonConsole/decorFontColor", QColor(self.DECORATION_COLOR))), 15) self.lexer.setColor( QColor(self.settings.value("pythonConsole/commentBlockFontColor", QColor(self.COMMENT_BLOCK_COLOR))), 12) self.lexer.setColor( QColor(self.settings.value("pythonConsole/singleQuoteFontColor", QColor(self.SINGLE_QUOTE_COLOR))), 4) self.lexer.setColor( QColor(self.settings.value("pythonConsole/doubleQuoteFontColor", QColor(self.DOUBLE_QUOTE_COLOR))), 3) self.lexer.setColor(QColor( self.settings.value("pythonConsole/tripleSingleQuoteFontColor", QColor(self.TRIPLE_SINGLE_QUOTE_COLOR))), 6) self.lexer.setColor(QColor( self.settings.value("pythonConsole/tripleDoubleQuoteFontColor", QColor(self.TRIPLE_DOUBLE_QUOTE_COLOR))), 7) self.lexer.setColor( QColor(self.settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR))), 13) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.lexer.setFont(font, QsciLexerPython.UnclosedString) for style in range(0, 33): paperColor = QColor( self.settings.value("pythonConsole/paperBackgroundColor", QColor(self.BACKGROUND_COLOR))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) checkBoxAPI = self.settings.value("pythonConsole/preloadAPI", True, type=bool) checkBoxPreparedAPI = self.settings.value("pythonConsole/usePreparedAPIFile", False, type=bool) if checkBoxAPI: pap = os.path.join(QgsApplication.pkgDataPath(), "python", "qsci_apis", "pyqgis.pap") self.api.loadPrepared(pap) elif checkBoxPreparedAPI: self.api.loadPrepared(self.settings.value("pythonConsole/preparedAPIFile")) else: apiPath = self.settings.value("pythonConsole/userAPI", []) for i in range(0, len(apiPath)): self.api.load(apiPath[i]) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
import qgis # NOQA from tempfile import NamedTemporaryFile import tempfile from pathlib import Path import os import shutil from qgis.core import (QgsApplication, QgsPathResolver, QgsProject, QgsVectorLayer) from qgis.PyQt.QtCore import QDir from qgis.testing import start_app, unittest start_app() MAP_PATH = "data/world_map.gpkg" BASE_PATH = QgsApplication.pkgDataPath() + '/resources' ABSOLUTE_PATH = '{}/{}'.format(BASE_PATH, MAP_PATH) class TestQgsLocalizedDataPathRegistry(unittest.TestCase): """ Test resolving and saving localized data paths """ @classmethod def setUpClass(cls): cls.temp_path = tempfile.mkdtemp() @classmethod def tearDownClass(cls): shutil.rmtree(cls.temp_path)
def initLexer(self): settings = QgsSettings() self.lexer = QsciLexerPython() font = QFontDatabase.systemFont(QFontDatabase.FixedFont) loadFont = settings.value("pythonConsole/fontfamilytextEditor") if loadFont: font.setFamily(loadFont) fontSize = settings.value("pythonConsole/fontsizeEditor", type=int) if fontSize: font.setPointSize(fontSize) self.lexer.setDefaultFont(font) self.lexer.setDefaultColor( QColor( settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR)))) self.lexer.setColor( QColor( settings.value("pythonConsole/commentFontColorEditor", QColor(self.COMMENT_COLOR))), 1) self.lexer.setColor( QColor( settings.value("pythonConsole/numberFontColorEditor", QColor(self.NUMBER_COLOR))), 2) self.lexer.setColor( QColor( settings.value("pythonConsole/keywordFontColorEditor", QColor(self.KEYWORD_COLOR))), 5) self.lexer.setColor( QColor( settings.value("pythonConsole/classFontColorEditor", QColor(self.CLASS_COLOR))), 8) self.lexer.setColor( QColor( settings.value("pythonConsole/methodFontColorEditor", QColor(self.METHOD_COLOR))), 9) self.lexer.setColor( QColor( settings.value("pythonConsole/decorFontColorEditor", QColor(self.DECORATION_COLOR))), 15) self.lexer.setColor( QColor( settings.value("pythonConsole/commentBlockFontColorEditor", QColor(self.COMMENT_BLOCK_COLOR))), 12) self.lexer.setColor( QColor( settings.value("pythonConsole/singleQuoteFontColorEditor", QColor(self.SINGLE_QUOTE_COLOR))), 4) self.lexer.setColor( QColor( settings.value("pythonConsole/doubleQuoteFontColorEditor", QColor(self.DOUBLE_QUOTE_COLOR))), 3) self.lexer.setColor( QColor( settings.value( "pythonConsole/tripleSingleQuoteFontColorEditor", QColor(self.TRIPLE_SINGLE_QUOTE_COLOR))), 6) self.lexer.setColor( QColor( settings.value( "pythonConsole/tripleDoubleQuoteFontColorEditor", QColor(self.TRIPLE_DOUBLE_QUOTE_COLOR))), 7) self.lexer.setColor( QColor( settings.value("pythonConsole/defaultFontColorEditor", QColor(self.DEFAULT_COLOR))), 13) self.lexer.setFont(font, 1) self.lexer.setFont(font, 3) self.lexer.setFont(font, 4) self.lexer.setFont(font, QsciLexerPython.UnclosedString) for style in range(0, 33): paperColor = QColor( settings.value("pythonConsole/paperBackgroundColorEditor", QColor(self.BACKGROUND_COLOR))) self.lexer.setPaper(paperColor, style) self.api = QsciAPIs(self.lexer) useDefaultAPI = bool(settings.value('pythonConsole/preloadAPI', True)) if useDefaultAPI: # Load QGIS API shipped with Python console self.api.loadPrepared( os.path.join(QgsApplication.pkgDataPath(), 'python', 'qsci_apis', 'pyqgis.pap')) else: # Load user-defined API files apiPaths = settings.value('pythonConsole/userAPI', []) for path in apiPaths: self.api.load(path) self.api.prepare() self.lexer.setAPIs(self.api) self.setLexer(self.lexer)
def qgisPluginsInfo(): """Returns installed Python plugins, their versions and locations. Also returns list of active plugins (both core and Python). """ cfg = configparser.SafeConfigParser() pluginPaths = [] if iface is None: try: app = QgsApplication(sys.argv, False) app.initQgis() pluginPaths.append(app.pkgDataPath()) except: pass for profile in _allProfiles(): pluginPaths.append(_profilePath(profile)) else: pluginPaths.append(QgsApplication.pkgDataPath()) for profile in _allProfiles(): pluginPaths.append(_profilePath(profile)) pluginPaths = [ os.path.join(str(p), "python", "plugins") for p in pluginPaths ] availablePythonPlugins = [] availablePythonPluginNames = [] for p in pluginPaths: for (root, dirs, files) in os.walk(p): for d in dirs: pluginPath = os.path.join(root, d) cfg.read(os.path.join(pluginPath, 'metadata.txt')) version = cfg.get('general', 'version') availablePythonPlugins.append("{} ({}) in {}".format( d, version, pluginPath)) availablePythonPluginNames.append(d) break pluginsInfo = {} for profile in _allProfiles(): activePythonPlugins = [] settings = _settings(profile) settings.beginGroup("PythonPlugins") for p in settings.childKeys(): if settings.value(p, True, type=bool) and p in availablePythonPluginNames: activePythonPlugins.append(p) settings.endGroup() if len(activePythonPlugins) == 0: activePythonPlugins = ["There are no active Python plugins"] activeCppPlugins = [] settings = _settings(profile) settings.beginGroup("Plugins") for p in settings.childKeys(): if settings.value(p, True, type=bool): activeCppPlugins.append(p) settings.endGroup() if len(activeCppPlugins) == 0: activeCppPlugins = ["There are no active C++ plugins"] pluginsInfo[profile] = { "Active Python plugins": activePythonPlugins, "Active C++ plugins": activeCppPlugins } return { "QGIS plugins": { "Available Python plugins": availablePythonPlugins, "Active Python plugins by profile": pluginsInfo } }
from processing.gui.wrappers import WidgetWrapper, DIALOG_MODELER, DIALOG_BATCH, DIALOG_STANDARD from .gui.csv_field_selection_panel import CSVFieldSelectionPanel from .gui.values_selection_panel import ValuesSelectionPanel from .gui.classification_table_panel import ClassificationTablePanel from .gui.components.DialListCheckBox import DialListCheckBox from .gui.table_replace_input_panel import TableReplaceInputPanel from .gui.double_cmb_box_selection_panel import DoubleCmbBoxSelectionPanel from .gui.list_selection_panel import ListSelectionPanel from .gui.int_list_selection_panel import IntListSelectionPanel from .gui.factor_table_panel import FactorTablePanel from .gui.odd_even_number_spinbox import IntSpinbox pluginPath = os.path.join( QgsApplication.pkgDataPath(), 'python', 'plugins', 'processing') class ChloeAlgorithmDialog(AlgorithmDialog): def __init__(self, alg): super().__init__(alg) self.mainWidget().parametersHaveChanged() def getParametersPanel(self, alg, parent): return ChloeParametersPanel(parent, alg) def accept(self):