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) canvas = self.iface.mapCanvas() export_settings = ExportSettings(self.settings(), canvas, self.pluginManager, self.localBrowsingMode) valid, err_msg = export_settings.checkValidity() if not valid: 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.templateName) 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)
def run(self): ui = self.ui filename = ui.lineEdit_OutputFilename.text() # ""=Temporary file if filename != "" and QFileInfo(filename).exists() and QMessageBox.question(None, "Qgis2threejs", "Output file already exists. Overwrite it?", QMessageBox.Ok | QMessageBox.Cancel) != QMessageBox.Ok: return self.endPointSelection() # save properties of current object item = self.ui.treeWidget.currentItem() if item and self.currentPage: self.saveProperties(item, self.currentPage) ui.pushButton_Run.setEnabled(False) self.clearMessageBar() self.progress(0) canvas = self.iface.mapCanvas() cbox = self.ui.comboBox_Template templateName = cbox.currentText() templateType = cbox.itemData(cbox.currentIndex(), Qt.UserRole) htmlfilename = ui.lineEdit_OutputFilename.text() # world properties world = self.properties[ObjectTreeItem.ITEM_WORLD] or {} verticalExaggeration = world.get("lineEdit_zFactor", 1.5) verticalShift = world.get("lineEdit_zShift", 0) # export to javascript (three.js) mapTo3d = MapTo3D(canvas, verticalExaggeration=float(verticalExaggeration), verticalShift=float(verticalShift)) context = OutputContext(templateName, templateType, mapTo3d, canvas, self.properties, self, self.objectTypeManager, self.localBrowsingMode) htmlfilename = exportToThreeJS(htmlfilename, context, self.progress) self.progress(100) ui.pushButton_Run.setEnabled(True) if htmlfilename is None: return self.clearRubberBands() # store last selections settings = QSettings() settings.setValue("/Qgis2threejs/lastTemplate", templateName) settings.setValue("/Qgis2threejs/lastControls", context.controls) # open browser if not tools.openHTMLFile(htmlfilename): return QDialog.accept(self)