def on_file_browse(self): settings = QSettings() # look for directory path = QgsProject.instance().homePath() if path == '': path = settings.value("mask/file_dir", '') if path == '': path = QDir.homePath() drivers = QgsVectorFileWriter.ogrDriverList() filterList = [] filterMap = {} for ln, n in drivers.items(): # grrr, driverMetadata is not really consistent if n == "ESRI Shapefile": ext = "shp" glob = "*.shp" else: md = QgsVectorFileWriter.MetaData() if QgsVectorFileWriter.driverMetadata(n, md): ext = md.ext glob = md.glob else: continue fn = "%s (%s)" % (ln, glob) filterMap[fn] = (n, ext, glob) filterList += [fn] fileFilters = ';;'.join(filterList) fd = QFileDialog(None, self.tr("Select a filename to save the mask layer to"), path, fileFilters) save_format_name = self.parameters.file_format self.save_format = None for k, v in filterMap.items(): if v[0] == save_format_name: self.save_format = v fd.selectNameFilter(k) break def on_filter_selected(ff): self.save_format = filterMap[ff] fd.filterSelected.connect(on_filter_selected) fd.setAcceptMode(QFileDialog.AcceptSave) r = fd.exec_() if r == 1: fn = fd.selectedFiles()[0] driver, ext, glob = self.save_format if not fn.endswith("." + ext): fn += "." + ext self.ui.filePath.setText(fn) self.ui.formatLbl.setText(self.save_format[0]) self.parameters.file_format = self.save_format[0] self.parameters.file_path = fn
def on_file_browse(self): settings = QSettings() # look for directory path = QgsProject.instance().homePath() if path == "": path = settings.value("mask/file_dir", "") if path == "": path = QDir.homePath() drivers = QgsVectorFileWriter.ogrDriverList() filterList = [] filterMap = {} for driver in drivers: # grrr, driverMetadata is not really consistent if driver.driverName == "ESRI Shapefile": ext = "shp" glob = "*.shp" else: md = QgsVectorFileWriter.MetaData() if QgsVectorFileWriter.driverMetadata(driver.driverName, md): ext = md.ext glob = md.glob else: continue fn = "%s (%s)" % (driver.longName, glob) filterMap[fn] = (driver.driverName, ext, glob) filterList += [fn] fileFilters = ";;".join(filterList) fd = QFileDialog( None, self.tr("Select a filename to save the mask layer to"), path, fileFilters, ) save_format_name = self.parameters.file_format self.save_format = None for k, v in filterMap.items(): if v[0] == save_format_name: self.save_format = v fd.selectNameFilter(k) break def on_filter_selected(ff): self.save_format = filterMap[ff] fd.filterSelected.connect(on_filter_selected) fd.setAcceptMode(QFileDialog.AcceptSave) r = fd.exec_() if r == 1: fn = fd.selectedFiles()[0] driver, ext, glob = self.save_format if not fn.endswith("." + ext): fn += "." + ext self.ui.filePath.setText(fn) self.ui.formatLbl.setText(self.save_format[0]) self.parameters.file_format = self.save_format[0] self.parameters.file_path = fn