https://github.com/minorua/Qgis2threejs
Tip revision: 744bd03195167190b0f1fc5229ad210aea432fc6 authored by Minoru Akagi on 31 October 2018, 07:34:05 UTC
version 2.2
version 2.2
Tip revision: 744bd03
qgis2threejs.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
Qgis2threejs
A QGIS plugin
export terrain data, map canvas image and vector data to web browser
-------------------
begin : 2013-12-21
copyright : (C) 2013 Minoru Akagi
email : akaginch@gmail.com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
# from PyQt5.QtCore import QSettings, QTranslator, qVersion
from PyQt5.QtWidgets import QAction
from PyQt5.QtGui import QIcon
from qgis.core import QgsProject
from .qgis2threejstools import logMessage, pluginDir, removeTemporaryOutputDir
from .q3dviewercontroller import Q3DViewerController
from .q3dwindow import Q3DWindow
class Qgis2threejs:
def __init__(self, iface):
# Save reference to the QGIS interface
self.iface = iface
# 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.currentProjectPath = None
# exporter
self.controller = None # Q3DController
def initGui(self):
# Create action that will start plugin configuration
icon = QIcon(pluginDir("Qgis2threejs.png"))
self.action = QAction(icon, "Qgis2threejs Exporter", self.iface.mainWindow())
self.action.setObjectName("Qgis2threejsExporter")
self.actionNP = QAction(icon, "Qgis2threejs Exporter with Preview Off", self.iface.mainWindow())
self.actionNP.setObjectName("Qgis2threejsExporterNoPreview")
# connect the action to the openExporter method
self.action.triggered.connect(self.openExporter)
self.actionNP.triggered.connect(self.openExporterWithPreviewDisabled)
# Add toolbar button and web menu items
name = "Qgis2threejs"
self.iface.addWebToolBarIcon(self.action)
self.iface.addPluginToWebMenu(name, self.action)
self.iface.addPluginToWebMenu(name, self.actionNP)
def unload(self):
# Remove the web menu items and icon
name = "Qgis2threejs"
self.iface.removeWebToolBarIcon(self.action)
self.iface.removePluginWebMenu(name, self.action)
self.iface.removePluginWebMenu(name, self.actionNP)
# remove temporary output directory
removeTemporaryOutputDir()
def openExporter(self, _, no_preview=False):
if self.controller is None:
self.controller = Q3DViewerController(self.iface)
if no_preview:
self.controller.previewEnabled = False
if self.controller.iface is None:
logMessage("Opening Qgis2threejs Exporter...")
proj_path = QgsProject.instance().fileName()
if proj_path != self.currentProjectPath:
self.controller.settings.loadSettingsFromFile() # load export settings from settings file for current project
self.currentProjectPath = proj_path
self.liveExporter = Q3DWindow(self.iface.mainWindow(),
self.iface,
self.controller,
isViewer=True,
preview=self.controller.previewEnabled)
self.liveExporter.show()
else:
logMessage("Qgis2threejs Exporter is already open.")
self.liveExporter.activateWindow()
def openExporterWithPreviewDisabled(self):
self.openExporter(False, True)