def test03_SaveRestoreBasemapsFromProject(self): """Test saving and restoring enabled basemaps from project""" self.assertEqual(WRITER_REGISTRY.getBasemapsFromProject(), []) WRITER_REGISTRY.saveBasemapsToProject(['a', 'b c d']) self.assertEqual(WRITER_REGISTRY.getBasemapsFromProject(), ['a', 'b c d']) # no existing settings QgsProject.instance().removeEntry("qgis2web", "/") self.assertEqual(WRITER_REGISTRY.getBasemapsFromProject(), [])
def processAlgorithm(self, progress): """Here is where the processing itself takes place.""" # The first thing to do is retrieve the values of the parameters # entered by the user inputFilename = self.getParameterValue(self.INPUT_LAYER) inputLayer = dataobjects.getObjectFromUri(inputFilename) inputVisible = self.getParameterValue("VISIBLE") inputParams = self.getInputs() inputMapFormat = self.getParameterValue("MAP_FORMAT") writer = self.getWriter(inputMapFormat) writer.params = defaultParams self.writerParams(writer, inputParams) writer.params["Appearance"][ "Base layer"] = WRITER_REGISTRY.getBasemapsFromProject() writer.layers = [inputLayer] writer.groups = {} writer.popup = [False] writer.visible = [inputVisible] writer.json = [False] writer.cluster = [False] exporter = EXPORTER_REGISTRY.createFromProject() write_folder = exporter.exportDirectory() writer.write(iface, write_folder)
def test06_SaveRestoreWriterFromProject(self): """Test saving and restoring writer state to project""" writer = LeafletWriter() writer.params = getDefaultParams() # change some parameters writer.params['Appearance']['Add layers list'] = 'Collapsed' writer.params['Data export']['Minify GeoJSON files'] = False writer.params['Data export']['Precision'] = '4' writer.params['Data export']['Mapping library location'] = 'CDN' writer.params['Appearance']['Base layer'] = ['a', 'b', 'c'] WRITER_REGISTRY.saveWriterToProject(writer) new_writer = WRITER_REGISTRY.createWriterFromProject() self.assertTrue(isinstance(new_writer, LeafletWriter)) self.assertEqual(new_writer.params, writer.params)
def processAlgorithm(self, progress): """Here is where the processing itself takes place.""" writer = WRITER_REGISTRY.createWriterFromProject() (writer.layers, writer.groups, writer.popup, writer.visible, writer.json, writer.cluster) = self.getLayersAndGroups() exporter = EXPORTER_REGISTRY.createFromProject() write_folder = exporter.exportDirectory() writer.write(iface, write_folder)
def test02_SaveRestoreWriterTypeFromProject(self): """Test saving and restoring writer type from project""" WRITER_REGISTRY.saveTypeToProject(OpenLayersWriter.type()) self.assertEqual(WRITER_REGISTRY.getWriterFactoryFromProject(), OpenLayersWriter) WRITER_REGISTRY.saveTypeToProject(LeafletWriter.type()) self.assertEqual(WRITER_REGISTRY.getWriterFactoryFromProject(), LeafletWriter) # no existing settings QgsProject.instance().removeEntry("qgis2web", "/") self.assertEqual(WRITER_REGISTRY.getWriterFactoryFromProject(), OpenLayersWriter)
def test05_SaveRestoreParamsFromProject(self): """Test saving and restoring parameters from project""" # no settings in project, should match defaults QgsProject.instance().removeEntry("qgis2web", "/") params = WRITER_REGISTRY.readParamsFromProject() self.maxDiff = 1000000000 self.assertEqual(params, getDefaultParams()) # change some parameters (one of each type) params['Appearance']['Add layers list'] = 'Collapsed' params['Data export']['Minify GeoJSON files'] = False # no ints in config yet! # params['Test']['test int'] = 5 params['Data export']['Precision'] = '4' params['Data export']['Mapping library location'] = 'CDN' # no strings in config yet! # params['Test']['test string'] ='test' WRITER_REGISTRY.saveParamsToProject(params) restored_params = WRITER_REGISTRY.readParamsFromProject() self.assertEqual(restored_params, params)
def processAlgorithm(self, progress): """Here is where the processing itself takes place.""" # The first thing to do is retrieve the values of the parameters # entered by the user inputFilename = self.getParameterValue(self.INPUT_LAYER) inputLayer = dataobjects.getObjectFromUri(inputFilename) inputVisible = self.getParameterValue("VISIBLE") inputCluster = self.getParameterValue("CLUSTER") inputPopup = self.getParameterValue("POPUP") popupList = [] fields = inputPopup.split(",") for field in fields: fieldList = [] print field k, v = field.split(":") fieldList.append(k.strip()) fieldList.append(v.strip()) popupList.append(tuple(fieldList)) inputParams = self.getInputs() inputMapFormat = self.getParameterValue("MAP_FORMAT") writer = self.getWriter(inputMapFormat) # Input layers vales are always a string with its location. # That string can be converted into a QGIS object (a # QgsVectorLayer in this case) using the # processing.getObjectFromUri() method. writer.params = defaultParams self.writerParams(writer, inputParams) writer.params["Appearance"][ "Base layer"] = WRITER_REGISTRY.getBasemapsFromProject() writer.layers = [inputLayer] writer.groups = {} writer.popup = [OrderedDict(popupList)] writer.visible = [inputVisible] writer.json = [True] writer.cluster = [inputCluster] exporter = EXPORTER_REGISTRY.createFromProject() write_folder = exporter.exportDirectory() writer.write(iface, write_folder)
def __init__(self, iface): QDialog.__init__(self) self.setupUi(self) self.iface = iface self.previewUrl = None self.layer_search_combo = None self.exporter_combo = None stgs = QSettings() self.restoreGeometry( stgs.value("qgis2web/MainDialogGeometry", QByteArray(), type=QByteArray)) if stgs.value("qgis2web/previewOnStartup", Qt.Checked) == Qt.Checked: self.previewOnStartup.setCheckState(Qt.Checked) else: self.previewOnStartup.setCheckState(Qt.Unchecked) self.paramsTreeOL.setSelectionMode(QAbstractItemView.SingleSelection) self.preview = None if webkit_available: widget = QWebView() self.preview = widget webview = self.preview.page() webview.setNetworkAccessManager(QgsNetworkAccessManager.instance()) self.preview.settings().setAttribute( QWebSettings.DeveloperExtrasEnabled, True) else: widget = QTextBrowser() widget.setText( self.tr('Preview is not available since QtWebKit ' 'dependency is missing on your system')) self.right_layout.insertWidget(0, widget) self.populateConfigParams(self) self.populate_layers_and_groups(self) self.populateLayerSearch() self.populateBasemaps() writer = WRITER_REGISTRY.createWriterFromProject() self.setStateToWriter(writer) self.exporter = EXPORTER_REGISTRY.createFromProject() self.exporter_combo.setCurrentIndex( self.exporter_combo.findText(self.exporter.name())) self.exporter_combo.currentIndexChanged.connect( self.exporterTypeChanged) self.toggleOptions() if webkit_available: if self.previewOnStartup.checkState() == Qt.Checked: self.previewMap() self.buttonPreview.clicked.connect(self.previewMap) else: self.buttonPreview.setDisabled(True) self.layersTree.model().dataChanged.connect(self.populateLayerSearch) self.ol3.clicked.connect(self.changeFormat) self.leaflet.clicked.connect(self.changeFormat) self.buttonExport.clicked.connect(self.saveMap) readme = os.path.join(os.path.dirname(os.path.realpath(__file__)), "README.md") helpText = os.path.join(os.path.dirname(os.path.realpath(__file__)), "helpFile.md") lines = open(readme, 'r').readlines() with open(helpText, 'w') as helpFile: for ct, line in enumerate(lines): if ct > 4: helpFile.write(line) helpFile.close() self.helpField.setSource(QUrl.fromLocalFile(helpText)) if webkit_available: self.devConsole = QWebInspector(self.verticalLayoutWidget_2) self.devConsole.setFixedHeight(0) self.devConsole.setObjectName("devConsole") self.devConsole.setPage(self.preview.page()) self.right_layout.insertWidget(1, self.devConsole) self.filter = devToggleFilter() self.installEventFilter(self.filter) self.setModal(False)
def saveParameters(self): """ Saves current dialog state to project """ WRITER_REGISTRY.saveWriterToProject(self.createWriter()) EXPORTER_REGISTRY.writeToProject(self.exporter)
def test04_SanitiseKey(self): """Test sanitising param key for storage""" self.assertEqual(WRITER_REGISTRY.sanitiseKey('a'), 'a') self.assertEqual(WRITER_REGISTRY.sanitiseKey('a b'), 'ab')
def test01_RegistryHasExporters(self): """test that writer registry is populated with writers""" self.assertTrue(OpenLayersWriter in WRITER_REGISTRY.getWriters())