def getFileName(self, text, filter, filePath): """filter: [["Shapefile", "shp"], ["Keyhole Markup Language", "kml"]]""" filters = [] for item in filter: filters.append("%s (*.%s)" % (item[0], item[1])) fileDlg = QFileDialog(self.iface.mainWindow()) fileDlg.setNameFilters(filters) fileName, selectedFilter = fileDlg.getSaveFileName(self.iface.mainWindow(), text, filePath, ";;".join(filters) ) QgsMessageLog.logMessage("selectedFilter: {0}".format(selectedFilter), "VoGis", Qgis.Info) #QgsMessageLog.logMessage("{0}".format(fileName), "VoGis", Qgis.Info) if fileName is None or fileName == "": return "", "" QgsMessageLog.logMessage("fileDlg.filters(): {0}".format(fileDlg.nameFilters()), "VoGis", Qgis.Info) selectedFilter = fileDlg.nameFilters().index(selectedFilter) fileExt = filter[selectedFilter][1] QgsMessageLog.logMessage("selectedFilter: {0}".format(selectedFilter), "VoGis", Qgis.Info) QgsMessageLog.logMessage("fileExt: {0}".format(fileExt), "VoGis", Qgis.Info) if fileName.lower().endswith(fileExt) is False: fileName = fileName + "." + fileExt return fileName, fileExt
def spi_calc_get_comp_file(self): dlgx = QFileDialog() dlgx.setFileMode(QFileDialog.AnyFile) dlgx.setNameFilters(["CSV files (*.csv)"]) #dlgx.setFilter("CSV files (*.csv)") if dlgx.exec_(): filenames = dlgx.selectedFiles() self.ui.lineEdit_15.setText(str(filenames[0]))
def data_prep_get_input_ppt_file(self): dlgx = QFileDialog() dlgx.setFileMode(QFileDialog.AnyFile) dlgx.setNameFilters(["CSV files (*.csv)"]) #dlgx.setFilter("CSV files (*.csv)") if dlgx.exec_(): filenames = dlgx.selectedFiles() self.ui.lineEdit_10.setText(str(filenames[0]))
def uploadHeader(self): """Import header from ASCII or TXT file. This function open a QFileDialog() to select and open an ASC file. The beginning of this file (ie. the header) is parsed to get value and to fill corresponding widget parameter value. The goal is to automate the filling of the parameters to improve the user experience Example of file header: ``` ncols 144 nrows 138 xllcorner 312487.6891250734 yllcorner 2397321.4964859663 cellsize 10.0 NODATA_value -1 ``` """ # Select the file with a QFileDialog() dlg = QFileDialog() dlg.setFileMode(QFileDialog.AnyFile) #dlg.setFilter("ASC File (*.asc);; TXT File (*.txt);;All File (*.*)") dlg.setNameFilters( ["All File (*.*)", "ASC File (*.asc)", "TXT File (*.txt)"]) dlg.selectNameFilter("All File (*.*)") filenames = '' if dlg.exec_(): filenames = dlg.selectedFiles() if filenames != '': # Open the file and parse header data with open(str(filenames[0]), 'r') as infile: for line in infile: values = line.strip().split(' ') if values[0] == "ncols": ChloeUtils.wrapperSetValue(self.wrappers["N_COLS"], int(values[1])) elif values[0] == "nrows": ChloeUtils.wrapperSetValue(self.wrappers["N_ROWS"], float(values[1])) elif values[0] == "xllcorner": ChloeUtils.wrapperSetValue(self.wrappers["XLL_CORNER"], float(values[1])) elif values[0] == "yllcorner": ChloeUtils.wrapperSetValue(self.wrappers["YLL_CORNER"], float(values[1])) elif values[0] == "cellsize": ChloeUtils.wrapperSetValue(self.wrappers["CELL_SIZE"], float(values[1])) elif values[0] == "NODATA_value": ChloeUtils.wrapperSetValue( self.wrappers["NODATA_VALUE"], int(values[1])) else: break
def saveDataToFile(self, data: List[List[Any]]) -> None: """ Write data to a file. """ file_window = QFileDialog() file_window.setAcceptMode(1) file_window.setDefaultSuffix('csv') file_window.setNameFilters(['CSV Files (*.csv)', 'All Files (*)']) if file_window.exec_() == 0: return file_name = file_window.selectedFiles()[0] csv_file = open(file_name, 'wt') csv_writer = csv.writer(csv_file, delimiter=',') for i in data: csv_writer.writerow([x for x in i]) csv_file.close()
def GetOutputFileName(clss, box_name, file_types, default_type, start_path): dlg = QFileDialog(clss) dlg.setDirectory(start_path) dlg.setWindowTitle(box_name) dlg.setViewMode(QFileDialog.Detail) a = [] for i in file_types: a.append(clss.tr(i)) dlg.setNameFilters(a) dlg.setDefaultSuffix(default_type) new_name = None extension = None if dlg.exec_(): new_name = dlg.selectedFiles()[0] new_name = new_name.replace("..", ".") if new_name[-4] == ".": extension = new_name[-3:] else: extension = new_name[-4:] return new_name, extension