Esempio n. 1
0
    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()
Esempio n. 2
0
  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
Esempio n. 3
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))
Esempio n. 4
0
    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()
Esempio n. 5
0
  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)
Esempio n. 6
0
  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