def __init__(self, iface=None, settingsPath=None): """ Constructor. :param iface: If specified, mapSettings attribute is initialized with the map settings of the map canvas. The iface.legendInterface() is used to export vector layers in the same order as the legend. :type iface: QgisInterface :param settingsPath: Path to an existing settings file (.qto3settings). :type settingsPath: unicode """ self.iface = iface self.mapSettings = None # create an export settings object self.settings = ExportSettings() if settingsPath: self.settings.loadSettingsFromFile(settingsPath) if iface: self.setMapSettings(iface.mapCanvas().mapSettings())
def run(self): self.endPointSelection() ui = self.ui filename = ui.lineEdit_OutputFilename.text() # ""=Temporary file if filename and os.path.exists(filename): if QMessageBox.question( self, "Qgis2threejs", "Output file already exists. Overwrite it?", QMessageBox.Ok | QMessageBox.Cancel) != QMessageBox.Ok: return # export to web (three.js) export_settings = ExportSettings(self.pluginManager, self.localBrowsingMode) export_settings.loadSettings(self.settings()) export_settings.setMapCanvas(self.iface.mapCanvas()) err_msg = export_settings.checkValidity() if err_msg is not None: QMessageBox.warning(self, "Qgis2threejs", err_msg or "Invalid settings") return ui.pushButton_Run.setEnabled(False) ui.toolButton_Settings.setVisible(False) self.clearMessageBar() self.progress(0) if export_settings.exportMode == ExportSettings.PLAIN_MULTI_RES: # update quads and point on map canvas self.createRubberBands(export_settings.baseExtent, export_settings.quadtree()) # export ret = exportToThreeJS(export_settings, self.iface.legendInterface(), self.objectTypeManager, self.progress) self.progress(100) ui.pushButton_Run.setEnabled(True) if not ret: ui.toolButton_Settings.setVisible(True) return self.clearRubberBands() # store last selections settings = QSettings() settings.setValue("/Qgis2threejs/lastTemplate", export_settings.templatePath) settings.setValue("/Qgis2threejs/lastControls", export_settings.controls) # open web browser if not tools.openHTMLFile(export_settings.htmlfilename): ui.toolButton_Settings.setVisible(True) return # close dialog QDialog.accept(self)