https://github.com/minorua/Qgis2threejs
Raw File
Tip revision: 906d3eba9e7cb53961b4c2b9f28d29942a187e39 authored by Minoru Akagi on 20 February 2019, 03:30:35 UTC
version 2.3.1
Tip revision: 906d3eb
q3dinterface.py
# -*- coding: utf-8 -*-
"""
/***************************************************************************
 Q3DInterface

                              -------------------
        begin                : 2018-11-09
        copyright            : (C) 2018 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 .conf import DEBUG_MODE
from .qgis2threejstools import logMessage


class Q3DInterface:

  def __init__(self, webPage, controller=None):
    self.webPage = webPage

    if controller:
      self.connectToController(controller)

  def connectToController(self, controller):
    self.controller = controller
    self.controller.connectToIface(self)

  def disconnectFromController(self):
    if self.controller:
      self.controller.disconnectFromIface()
    self.controller = None

  def startApplication(self, offScreen=False, exportMode=False):
    # configuration
    if exportMode:
      self.runScript("Q3D.Config.exportMode = true;")

    p = self.controller.settings.northArrow()
    if p.get("visible"):
      self.runScript("Q3D.Config.northArrow.visible = true;")
      self.runScript("Q3D.Config.northArrow.color = {};".format(p.get("color", 0)))

    header = self.controller.settings.headerLabel()
    footer = self.controller.settings.footerLabel()
    if header or footer:
      self.runScript('setHFLabel("{}", "{}");'.format(header.replace('"', '\\"'), footer.replace('"', '\\"')))

    # initialize app
    self.runScript("init({});".format("true" if offScreen else ""))

  def loadJSONObject(self, obj):
    # display the content of the object in the debug element
    if DEBUG_MODE == 2:
      self.runScript("document.getElementById('debug').innerHTML = '{}';".format(str(obj)[:500].replace("'", "\\'")))

    self.webPage.sendData(obj)

  def runScript(self, string, message=""):
    self.webPage.runScript(string, message, sourceID="q3dwindow.py")

  def loadScriptFile(self, filepath):
    self.webPage.loadScriptFile(filepath)

  def loadModelLoaders(self):
    self.webPage.loadModelLoaders()

  def abort(self):
    self.controller.abort()

  def settings(self):
    return self.controller.settings

  def buildScene(self, update_scene_all=True, build_layers=True, build_scene=True, update_extent=True, base64=False):
    self.controller.buildScene(update_scene_all=update_scene_all,
                               build_layers=build_layers,
                               build_scene=build_scene,
                               update_extent=update_extent,
                               base64=base64)

  def buildLayer(self, layer):
    self.controller.buildLayer(layer)

  def showMessage(self, msg):
    logMessage(msg)

  def clearMessage(self):
    pass

  def progress(self, percentage=100, text=None):
    pass
back to top