def __init__(self, pds=None, debug=False, forceCache=False): self.iconSizes = (128, 64, 48, 32, 22, 16) if not pds: pds = Pds(debug=debug) self.pds = pds self._forceCache = forceCache # Get possible Data Directories dataDirs = QFile.decodeName(getenv('XDG_DATA_DIRS')) if not dataDirs.isalnum(): dataDirs = u'/usr/local/share/:/usr/share/' dataDirs = QDir.homePath() + ":" + dataDirs dataDirs = str(self.pds.config_path) + 'share:' + dataDirs if self.pds.session.ExtraDirs: dirs = QFile.decodeName(getenv( self.pds.session.ExtraDirs)).split(':') for dirName in dirs: dataDirs.append(':' + dirName + '/share') self.themeName = self.pds.settings(self.pds.session.IconKey, \ self.pds.session.DefaultIconTheme) self.iconDirs = filter( lambda x: path.exists(x), map(lambda x: path.join(unicode(x), 'icons'), dataDirs.split(':'))) self.iconDirs = list(set(self.iconDirs)) logging.debug('Icon Dirs : %s' % ','.join(self.iconDirs)) self.themeIndex = self.readThemeIndex(self.themeName) self.extraIcons = ['/usr/share/pixmaps'] self.updateAvailableIcons()
def __init__(self, iface): # Save reference to the QGIS interface self.iface = iface # initialize plugin directory self.plugin_dir = os.path.dirname(QFile.decodeName(__file__)) # initialize locale #locale = QSettings().value("locale/userLocale")[0:2] #localePath = os.path.join(self.plugin_dir, 'i18n', 'qgis2threejs_{0}.qm'.format(locale)) #if os.path.exists(localePath): # self.translator = QTranslator() # self.translator.load(localePath) # if qVersion() > '4.3.3': # QCoreApplication.installTranslator(self.translator) self.objectTypeManager = None self.pluginManager = None self.exportSettings = {} self.lastTreeItemData = None self.settingsFilePath = None # live exporter self.controller = None # Q3DController # plugin layer self.layers = {} self.pluginLayerType = None self.lastLayerIndex = 0
def reloadPlugins(self): self.modules = [] self.plugins = [] if self.allPlugins: plugin_dir = QDir( os.path.join(os.path.dirname(QFile.decodeName(__file__)), "plugins")) plugins = plugin_dir.entryList(QDir.Dirs | QDir.NoSymLinks | QDir.NoDotAndDotDot) else: p = QSettings().value("/Qgis2threejs/plugins", "", type=str) plugins = p.split(",") if p else [] for name in plugins: try: modname = "Qgis2threejs.plugins." + str(name) module = importlib.reload( sys.modules[modname] ) if modname in sys.modules else importlib.import_module( modname) self.modules.append(module) self.plugins.append(getattr(module, "plugin_class")) except ImportError: logMessage("Failed to load plugin: " + str(name))
def __init__(self, pds = None, debug = False, forceCache = False): self.iconSizes = (128, 64, 48, 32, 22, 16) if not pds: pds = Pds(debug = debug) self.pds = pds self._forceCache = forceCache # Get possible Data Directories dataDirs = QFile.decodeName(getenv('XDG_DATA_DIRS')) if not dataDirs.isalnum(): dataDirs = u'/usr/local/share/:/usr/share/' dataDirs = QDir.homePath() + ":"+dataDirs #dataDirs = str(self.pds.config_path) + 'share:'+ dataDirs if self.pds.session.ExtraDirs: dirs = QFile.decodeName( getenv(self.pds.session.ExtraDirs)).split(':') for dirName in dirs: dataDirs.append(':' + dirName + '/share') self.themeName = self.pds.settings(self.pds.session.IconKey, \ self.pds.session.DefaultIconTheme) self.iconDirs = filter(lambda x: path.exists(x), map(lambda x: path.join(unicode(x), 'icons'), dataDirs.split(':'))) self.iconDirs = list(set(self.iconDirs)) logging.debug('Icon Dirs : %s' % ','.join(self.iconDirs)) self.themeIndex = self.readThemeIndex(self.themeName) self.extraIcons = ['/usr/share/pixmaps'] self.updateAvailableIcons()
def __init__(self, parent): QDialog.__init__(self, parent) # Set up the user interface from Designer. self.ui = ui = Ui_SettingsDialog() ui.setupUi(self) ui.lineEdit_BrowserPath.setPlaceholderText("Leave this empty to use your default browser") ui.toolButton_Browse.clicked.connect(self.browseClicked) # load settings settings = QSettings() ui.lineEdit_BrowserPath.setText(settings.value("/Qgis2threejs/browser", "", type=str)) enabled_plugins = QSettings().value("/Qgis2threejs/plugins", "", type=str).split(",") # initialize plugin table widget plugin_dir = QDir(os.path.join(os.path.dirname(QFile.decodeName(__file__)), "plugins")) plugins = plugin_dir.entryList(QDir.Dirs | QDir.NoSymLinks | QDir.NoDotAndDotDot) tableWidget = ui.tableWidget_Plugins tableWidget.setColumnCount(1) tableWidget.setHorizontalHeaderLabels(["Name"]) tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) headerView = tableWidget.horizontalHeader() headerView.setSectionResizeMode(QHeaderView.Stretch) self.plugin_metadata = [] for i, name in enumerate(plugins): if name[0] == "_": # skip __pycache__ dir. continue parser = configparser.SafeConfigParser() try: with open(os.path.join(plugin_dir.absoluteFilePath(name), "metadata.txt"), "r", encoding="UTF-8") as f: parser.readfp(f) metadata = dict(parser.items("general")) self.plugin_metadata.append(metadata) except Exception as e: logMessage("Unable to read metadata of plugin: {} ({})".format(name, e)) tableWidget.setRowCount(len(self.plugin_metadata)) for i, metadata in enumerate(self.plugin_metadata): item = QTableWidgetItem(metadata.get("name", name)) item.setCheckState(Qt.Checked if name in enabled_plugins else Qt.Unchecked) tableWidget.setItem(i, 0, item) tableWidget.selectionModel().currentRowChanged.connect(self.pluginSelectionChanged)
def __init__(self, plugin, serverName="Qgis2threejs", perspective=False): layer = plugin.iface.activeLayer() title = "[2.5D] " + layer.name() if layer else "" QgsPluginLayer.__init__(self, Qgis2threejsLayer.LAYER_TYPE, title) if layer is None: return self.setValid(True) self.plugin = plugin self.iface = plugin.iface self.objectTypeManager = plugin.objectTypeManager self.pluginManager = plugin.pluginManager self.renderer = Qgis2threejs25DRenderer() #self.id()) self.renderer.setup(self, serverName, perspective) self.renderer.setLayers([self.iface.activeLayer()]) # set custom properties #self.setCustomProperty("title", title) # set extent #self.setExtent(QgsRectangle(-layerDef.TSIZE1, -layerDef.TSIZE1, layerDef.TSIZE1, layerDef.TSIZE1)) # set styles self.setTransparency(0) self.setBlendModeByName(self.DEFAULT_BLEND_MODE) self.setSmoothRender(self.DEFAULT_SMOOTH_RENDER) # multi-thread if self.iface: self.statusSignal.connect(self.showStatusMessageSlot) self.messageBarSignal.connect(self.showMessageBarSlot) logMessage("Launching Qgis2threejs Renderer...") this_dir = os.path.dirname(QFile.decodeName(__file__)) parent = self.iface.mainWindow() p = QProcess(parent) if os.name == "nt": os.system("start cmd.exe /c {0} -r -n {1}".format(os.path.join(this_dir, "q3drenderer.bat"), serverName)) return cmd = r"C:\Python34\python.exe" else: cmd = "python3" p.start(cmd, [os.path.join(this_dir, "q3dapplication.py"), "-r", "-n", serverName]) if not p.waitForStarted(): logMessage("Cannot launch Qgis2threejs Renderer (code: {0}).".format(p.error()))
def pluginDir(): return os.path.dirname(QFile.decodeName(__file__))
def pluginDir(*subdirs): p = os.path.dirname(QFile.decodeName(__file__)) if subdirs: return os.path.join(p, *subdirs) return p