def exportToPDF(self): if self.slotsExportedDisabled_: return util = FLUtil() fileName = QFileDialog.getSaveFileName( self, util.translate("app", "Exportar a PDF"), "", util.translate("app", "Fichero PDF (*.pdf)")) if fileName[0] == '': return if fileName[0].upper().find(".PDF") == -1: fileName = fileName[0] + ".pdf" if QtCore.QFile.exists(fileName): q = QMessageBox.question( self, util.translate("app", "Sobreescribir {}").format(fileName), util.translate( "app", "Ya existe un fichero llamado {}. ¿Desea sobreescribirlo?" ).format(fileName), util.translate("app", "&Sí"), util.translate("app", "&No"), "", 0, 1) if q: return self.slotPrintReportToPdf(fileName)
def file_save(self): name, _ = QFileDialog.getSaveFileName( self, 'Save File', options=QFileDialog.DontUseNativeDialog) file = open(name, 'w') text = self.textEdit.toPlainText() file.write(text) file.close()
def action_Slot(self, name): if name == "default": self.camCtr.update(reset=True) elif name == "update": self.camCtr.update() elif name == "save" or name == "load": conf_dir = os.path.join(Path.home(), ".config", "cam_control") Path(conf_dir).mkdir(parents=True, exist_ok=True) if name == "save": file_name, _ = QFileDialog.getSaveFileName( self, "Save Cam Control configuration", conf_dir, "Cam Control Conf (*.ccconf)") if file_name: if not file_name.endswith(".ccconf"): file_name += ".ccconf" with open(file_name, "w") as fd: json.dump(self.camCtr.ctrls, fd) else: file_name, _ = QFileDialog.getOpenFileName( self, "Load Cam Control configuration", conf_dir, "Cam Control Conf (*.ccconf)") if file_name: with open(file_name, "r") as fd: self.camCtr.ctrls = json.load(fd) self.camCtr.update() self.sync()
def _saveImage(self): filename = QFileDialog.getSaveFileName( self, "Save FITS file", self._save_dir, "FITS files(*.fits *.FITS *fts *FTS)", options=QFileDialog.DontUseNativeDialog) filename = str(filename[0]) if not filename: return busy = BusyIndicator() self._imgman.signalShowMessage.emit( """Writing FITS image %s""" % filename, 3000) QApplication.flush() try: self.image.save(filename) except Exception as exc: busy.reset_cursor() traceback.print_exc() self._imgman.signalShowErrorMessage.emit( """Error writing FITS image %s: %s""" % (filename, str(sys.exc_info()[1]))) return None self.renderControl().startSavingConfig(filename) self.setName(self.image.name) self._qa_save.setVisible(False) self._wsave.hide() busy.reset_cursor()
def linked(self): filter = "CSV (*.csv)" fileName = QFileDialog.getSaveFileName(self, "Save Image", filter=filter) if fileName[0]: self.save(fileName[0])
def getSaveFileName(self, name, parent=None, caption='', dir_='', filter_='', selectedFilter='', options=QFileDialog.Options()): ''' @param: name QString @param: parent QWidget @param: caption QString @param: dir_ QString @param: filter_ QString @param: selectedFilter QString TODO: this is an output parameter @param: options QFileDialog::Options @return: QString ''' settings = Settings() settings.beginGroup('FileDialogPaths') lastDir = settings.value(name, '') fileName = self.getFileName(dir_) if not lastDir: lastDir = dir_ else: lastDir = pathjoin(lastDir, fileName) path, selectedFilter = QFileDialog.getSaveFileName(parent, caption, lastDir, filter_, selectedFilter, options) if path: settings.setValue(name, QFileInfo(path).absolutePath()) settings.endGroup() return path
def save_packets(self): file_path,type = QFileDialog.getSaveFileName(self, "save file", "","Text Files (*.txt)") saved_file = open(file_path+".txt", 'a') for packet in self.pac_list: if packet.tcp: saved_file.write(toAscii(bytes.hex(packet.tcp.actual_data))) saved_file.close()
def saveXML(self): if len(self.tools.framemenu.getAllFrames()) > 1: result = QFileDialog.getSaveFileName(self, 'Choose the destination for the animation file!', '.', 'Animation File (*.armo)') if result[0] != "": XML().toXML(self.tools.framemenu.getAllFrames(), result[0]) else: QMessageBox.information(self, "Stickman Message", "You need at least 2 frames to save the animation!")
def saveActivity(self): self.updateCurrentActivity() if len(self.activities) > 0: direc = self.cache.get('LASTSUCCESSFULWORKSPACE',default='.') filename = QFileDialog.getSaveFileName(None, 'Save file',direc,"JSON (*.json)") if not filename is None and len(filename[0].strip()) > 0: #Update filenames to be relative to this file bdir = os.path.dirname(filename[0]) for aid in self.activities: activity = self.activities[aid] if isinstance(activity,dict): cf = activity['clothingFile'] cp = os.path.abspath(cf) activity['clothingFile'] = str(os.path.relpath(cp, bdir)) rf = activity['radiationFluxFile'] if len(rf.strip())>0: rp = os.path.abspath(rf) activity['radiationFluxFile'] = str(os.path.relpath(rp, bdir)) with open(filename[0],'w') as ser: self.activities['activityname']=self.activityName.text() if self.activities['activityname']=='Unnamed': self.activities['activityname']=os.path.splitext(os.path.basename(filename[0]))[0] self.activityName.setText(self.activities['activityname']) json.dump(self.activities,ser) self.cache.set('LASTSUCCESSFULWORKSPACE',os.path.dirname(filename[0])) self.dataSaved.emit(filename[0]) else: QMessageBox.information(self, tr("In correct usage"), tr("No activities defined. Did you forget to click add!"))
def save_game(self): path = QFileDialog.getSaveFileName(self, 'Create save file', QDir.currentPath() + '/sav')[0] if path != '': save(path, self.play_widget.game, self.play_widget.export_log(), self.play_widget.move_count) self.statusbar.showMessage('Game saved', 5000)
def getFilePath(self): self.FilePath = QFileDialog.getSaveFileName( filter="Text Files (*.txt)") self.ui.FilePath.setText(self.FilePath[0]) if self.FilePath[0] == "": self.ui.StartBtn.setEnabled(False) else: self.ui.StartBtn.setEnabled(True)
def fileSaveAs(self): fn, _ = QFileDialog.getSaveFileName(self, "Save as...", None, "text files (*.txt);;All Files (*)") if not fn: return False self.setCurrentFileName(fn) return self.fileSave()
def save(self): path, t = QFileDialog.getSaveFileName() cur = self.document.begin() last = self.document.end() with open(path, 'w') as f: while cur != last: f.write(cur.text()+'\n\n') cur = cur.next()
def exportFileCSVData(self): if self.slotsExportedDisabled_: return util = FLUtil() fileName = QFileDialog.getSaveFileName( self, util.translate("app", "Exportar a CSV"), "", util.translate("app", "Fichero CSV (*.csv *.txt)") ) if not fileName or fileName == "": return if not fileName.upper().contains(".CSV"): fileName = fileName + ".csv" q = QtCore.QMessageBox.question( self, util.translate("app", "Sobreescribir {}").format(fileName), util.translate( self, "app", "Ya existe un fichero llamado {}. ¿Desea sobreescribirlo?" ).format(fileName), util.translate("app", "&Sí"), util.translate("app", "&No"), "", 0, 1 ) if QtCore.QFile.exists(fileName) and q: return file = QtCore.QFile(fileName) if file.open(Qt.IO_WriteOnly): stream = QtCore.QTextStream(file) stream << self.csvData() << "\n" file.close() else: QtCore.QMessageBox.critical( self, util.translate("app", "Error abriendo fichero"), util.translate( "app", "No se pudo abrir el fichero {} para escribir: {}" ).format( fileName, QtWidgets.QApplication.translate( "QFile", file.errorString() ) ) )
def saveFile(self): tab = self.tabWidget.widget(self.tabWidget.currentIndex()) items = tab.children() dialog = QFileDialog.Options() dialog = QFileDialog.DontUseNativeDialog file = QFileDialog.getSaveFileName(items[3], "Save file windows title", "default.txt", " All Files (*)", options=dialog)
def save_file_dialog(parent, filters): dlg = QFileDialog() options = dlg.Options() options |= dlg.DontUseNativeDialog filename, _ = dlg.getSaveFileName(parent, None, "Save model", filter=filters, options=options) if filename == "": return None return filename
def save_dialog(self): widget = self.window.focusWidget() if widget: if not self.openmv_ui.textEdit.filename: fname = QFileDialog.getSaveFileName(self.window, 'Save File', '') if fname and fname[0]: self.openmv_ui.textEdit.filename = fname[0] if self.openmv_ui.textEdit.filename: data = widget.toPlainText() with open(self.openmv_ui.textEdit.filename, "w") as f: f.write(data)
def ExportCSV(self): '''Export Data in a CSV file.''' if self.__target_pos is None : self.statusBar().showMessage("pas de données à exporter.") return # Lance un sélecteur de fichier pour choisir le fichier à écrire.''' video_name = self.imageTab.dico_video['videoname'].replace(".mp4","") cvs_name = os.path.join(VideoTracker.csv_dir, video_name) fname = QFileDialog.getSaveFileName(self, 'Choisir un nom de fichier CSV à écrire', cvs_name, 'Fichier CSV (*.csv *.txt)') if fname[0] == "": return nbImages = len(self.__target_pos[0]) if self.imageTab.video_FPS is not None: deltaT = 1./self.imageTab.video_FPS time = np.arange(nbImages)*deltaT tlabel, tformat = "T [seconde]", "%10.6e" else: time = range(1, nbImages+1) tlabel, tformat = "image #", "%10d" # building headers: xlabel, ylabel = "X [pixels]", "Y [pixels]" xformat, yformat = "%10d", "%10d" unit_dict = {"pixels": "?", "mm":"?"} if self.imageTab.valid_scale: xlabel, ylabel = "X [mm]", "Y [mm]" xformat, yformat = "%10.6e", "%10.6e" unit_dict["pixels"] = float(self.imageTab.scale_pixel.text()) unit_dict["mm"] = float(self.imageTab.scale_mm.text()) header = "VIDEOTRACKER MADE THIS FILE!\n" header += str(self.imageTab.dico_video)+"\n" header += str(unit_dict)+"\n" header += self.imageTab.btn_algo.currentText()+"\n" header += repr(self.target_RGB)+"\n" header += "{};{};{}; num image".format(tlabel, xlabel, ylabel) fmt = (tformat, xformat, yformat, "%d") data = [] data.append(time) data.append(self.__target_pos[0].tolist()) data.append(self.__target_pos[1].tolist()) data.append(self.__target_pos[2].tolist()) data = np.array(data) fileName = fname[0] if not fileName.endswith(".csv"): fileName += ".csv" np.savetxt(fileName, data.transpose(), delimiter=";", header=header, fmt=fmt, encoding="utf8")
def save_map(self): stroka = '' for j in range(self._row): for i in range(self._col): stroka += str(self._sp_map[j][i]) stroka += '\n' file_save_map = QFileDialog.getSaveFileName(self, filter='*.map')[0] if file_save_map != '': f = open(file_save_map, 'w', encoding="utf8") with f: f.write(stroka[:-1]) self._flag_2 = False f.close()
def save_img_path(self): """ Open the dialog and take the path. :return: True/False, path_string/empty_string """ file_dialog = QFileDialog() f_path = file_dialog.getSaveFileName(parent=None, caption="Save Image as", directory=QDir.homePath(), filter=self.IMG_FILTER, initialFilter="", options=self.DIALOG_FLAG)[0] if f_path: return True, f_path return False, ""
def saveas_command(self): text_widget = self.editor_pane.currentWidget() filename = QFileDialog.getSaveFileName(self, "Save As..", str(os.curdir), "Common Logic Files (*.clif);; All files (*)") path = filename[0] if path == "": return None f = open(path, 'w') with f: f.write(text_widget.toPlainText()) self.editor_pane.setTabText(self.editor_pane.currentIndex(), os.path.basename(path)) self.editor_pane.file_helper.add_path(text_widget, path) self.editor_pane.file_helper.update_clean_hash(text_widget, text_widget.toPlainText()) return path
def translateLrcSave(self): try: translate = self.textEdit_2.toPlainText() if (len(translate) > 0): filename = QFileDialog.getSaveFileName( self, '保存', '.', "Lrc Files (*.lrc);;Text Files (*.txt);;All Files (*)") with open(filename[0], 'w', encoding='utf-8') as f: f.write(translate) f.close() else: QMessageBox.information(self, '提示', '无法导出,内容为空', QMessageBox.Cancel) except FileNotFoundError: pass
def exporter(self): print('ok') #Affichage de la boite dialogue pour la selection du chemin d'export self.cheminExportTemp = QFileDialog.getSaveFileName( self, 'Choisire Destination', '', '*.html') self.cheminExport = self.cheminExportTemp[0] #Ecriture du text html a l'interieur du document selectionner print(self.cheminExport) with open(self.cheminExport, "w") as self.Export: print("ok") for row in self.rowListe: self.Export.write(row) self.Export.close()
def export_media_subs_list(): import_dir = mw.pm.profile.get("importDirectory", "") myfilter = "Text (*.txt);;All Files (*.*)" save_file_dialog = QFileDialog() save_file_path = save_file_dialog.getSaveFileName(mw, "Select Filename to Save", import_dir + os.sep + "DB with-Sub Media Path List", myfilter)[0] if save_file_path: data_str = "" conn = sqlite3.connect(get_path("user_files", "doc.db")) for row in conn.execute("select media_path_no_ext||media_ext from subs order by media_path_no_ext"): data_str += row[0] + '\n' conn.close() with open(save_file_path, "w", encoding="utf-8") as f: f.write(data_str) show_text("Export Completed!")
def output2mixlrc(self): try: origin = self.textEdit.toPlainText() translate = self.textEdit_2.toPlainText() if (len(origin) > 0 and len(translate) > 0): newdata = lrcs2mlrc(origin, translate) filename = QFileDialog.getSaveFileName( self, '保存', '.', "Lrc Files (*.lrc);;Text Files (*.txt);;All Files (*)") with open(filename[0], 'w', encoding='utf-8') as f: f.write(newdata) f.close() else: QMessageBox.information(self, '提示', '无法导出,内容为空', QMessageBox.Cancel) except FileNotFoundError: pass
def exportFileCSVData(self): if self.slotsExportedDisabled_: return util = FLUtil() fileName = QFileDialog.getSaveFileName( self, util.translate("app", "Exportar a CSV"), "", util.translate("app", "Fichero CSV (*.csv *.txt)")) if not fileName or fileName == "": return if not fileName.upper().contains(".CSV"): fileName = fileName + ".csv" q = QtCore.QMessageBox.question( self, util.translate("app", "Sobreescribir {}").format(fileName), util.translate( self, "app", "Ya existe un fichero llamado {}. ¿Desea sobreescribirlo?"). format(fileName), util.translate("app", "&Sí"), util.translate("app", "&No"), "", 0, 1) if QtCore.QFile.exists(fileName) and q: return file = QtCore.QFile(fileName) if file.open(Qt.IO_WriteOnly): stream = QtCore.QTextStream(file) stream << self.csvData() << "\n" file.close() else: QtCore.QMessageBox.critical( self, util.translate("app", "Error abriendo fichero"), util.translate( "app", "No se pudo abrir el fichero {} para escribir: {}").format( fileName, QtWidgets.QApplication.translate( "QFile", file.errorString())))
def onSaveFile(self): '''Save in a file the text description of the graph.''' # Export dialog result = QFileDialog.getSaveFileName(None, "Export", None, MainWindowController.dotFilter) # Check if Save button has been pressed if len(result[0]) > 0: filePath = result[0] # Create file dotFile = QFile(filePath) if (not dotFile.open(QIODevice.WriteOnly | QIODevice.Text)): QMessageBox.warning(None, "Export", "Export failed.") else: # Write the text from the TextGraphView into the file dotFile.write(QByteArray(self.textGraphController.view .getText().encode("utf_8"))) dotFile.close()
def vrcSave(self): try: if (len(self.textEdit.toPlainText()) < 1): QMessageBox.information(self, '提示', '无法导出,内容为空', QMessageBox.Cancel) else: filename = QFileDialog.getSaveFileName( self, '保存', '.', "Vrc Files (*.vrc);;All Files (*)") origin = self.textEdit.toPlainText() translate = self.textEdit_2.toPlainText() vrc_obj = { 'karaoke': False, 'scrollDisabled': False, } with open(filename[0], 'w', encoding='utf-8') as f: if (len(translate) < 1): vrc_obj["translated"] = False vrc_obj["origin"] = {} vrc_obj["origin"]["version"] = 2 vrc_obj["origin"]["text"] = origin else: vrc_obj["translated"] = True vrc_obj["origin"] = {} vrc_obj["origin"]["version"] = 2 vrc_obj["origin"]["text"] = origin vrc_obj["translate"] = {} vrc_obj["translate"]["version"] = 2 vrc_obj["translate"]["text"] = translate state = json.dump(vrc_obj, f, ensure_ascii=False, indent=2) if (state == None): QMessageBox.information(self, '提示', '导出成功', QMessageBox.Cancel) else: QMessageBox.warning(self, '提示', '导出失败', QMessageBox.Cancel) except FileNotFoundError: pass
def save_tikz(sel, *args): dialog = QFileDialog() dialog.setDefaultSuffix(".tex") result = dialog.getSaveFileName(self, QCoreApplication.translate( "side_widget", "Save TikZ Output"), filter="LaTex (*.tex)") if result[0]: try: self.__io_controller.generate_tikz(result[0]) except Exception: logger.exception("Exception while saving tikz") box = QMessageBox() box.critical( self, QCoreApplication.translate("side_widget", "Error"), QCoreApplication.translate( "side_widget", "Error while writing " "tikz file. " "See log for details."))
def onSaveFile(self): '''Save in a file the text description of the graph.''' # Export dialog result = QFileDialog.getSaveFileName(None, "Export", None, MainWindowController.dotFilter) # Check if Save button has been pressed if len(result[0]) > 0: filePath = result[0] # Create file dotFile = QFile(filePath) if (not dotFile.open(QIODevice.WriteOnly | QIODevice.Text)): QMessageBox.warning(None, "Export", "Export failed.") else: # Write the text from the TextGraphView into the file dotFile.write( QByteArray(self.textGraphController.view.getText().encode( "utf_8"))) dotFile.close()
def __save_as(self): dialog = QFileDialog() dialog.setDefaultSuffix(".json") result = dialog.getSaveFileName( self, QCoreApplication.translate("main_window", "Save Signal-flow Graph"), filter="JSON (*.json)") if result[0]: try: self.__io_controller.save_graph(result[0]) self.__file_path = result[0] self.__set_title() except Exception: logger.exception("Exception while saving to path: %s", self.__file_path) self.__show_error( QCoreApplication.translate("main_window", "Error while saving file." " See log for details"))
def save_project(self): """ Saves a pyIMD project file as .xml using the IntertialMassDetermination.save_pyimd_project method Returns: Null (`void`): Saves pyIMD project as xml file to disk """ file_dialog = QFileDialog() project_file_dir = file_dialog.getSaveFileName(self) if len(project_file_dir[0]) > 0: try: # Make sure all ui settings are in sync with imd settings. self.sync_settings() self.imd.save_pyimd_project(project_file_dir[0]) self.print_to_console("Project saved successfully") except Exception as e: self.print_to_console("Error during saving project: " + str(e)) else: self.print_to_console("Project saving aborted by user")
def ExportCSV(self): '''Export Data in a CSV file.''' if self.__Z1 is None : self.mw.statusBar().showMessage("No data to export") return # Lance un sélecteur de fichier pour choisir le fichier à écrire.''' fname = QFileDialog.getSaveFileName(self, 'Choose a name for the CSV file to write', self.mw.cur_dir, 'CSV file (*.csv *.txt)') if fname[0] == "": return nbData = len(self.__time) if self.mw.imageTab.video_FPS is not None: deltaT = 1./self.mw.imageTab.video_FPS time = np.arange(nbData)*deltaT tlabel, tformat = "T [seconde]", "%10.6e" else: time = range(1, nbImages+1) tlabel, tformat = "image #", "%10d" # building headers: zlabel = self.__lineZlabel.text() zformat = "%10.6e" header = "{};{}".format(tlabel, zlabel) fmt = (tformat, zformat) data = [] data.append(time) data.append(self.__Z1.tolist()) data = np.array(data) fileName = fname[0] if not fileName.endswith(".csv"): fileName += ".csv" np.savetxt(fileName, data.transpose(), delimiter=";", header=header, fmt=fmt)
def exportToPDF(self): if self.slotsExportedDisabled_: return util = FLUtil() fileName = QFileDialog.getSaveFileName( self, util.translate("app", "Exportar a PDF"), "", util.translate("app", "Fichero PDF (*.pdf)") ) if fileName[0] == '': return if fileName[0].upper().find(".PDF") == -1: fileName = fileName[0] + ".pdf" if QtCore.QFile.exists(fileName): q = QMessageBox.question( self, util.translate("app", "Sobreescribir {}").format(fileName), util.translate( "app", "Ya existe un fichero llamado {}. ¿Desea sobreescribirlo?" ).format(fileName), util.translate("app", "&Sí"), util.translate("app", "&No"), "", 0, 1 ) if q: return self.slotPrintReportToPdf(fileName)
def sig_export(self): path = QFileDialog.getSaveFileName(caption="Save", filter="Markdown (*.md);;Text (*.txt);;HTML (*.html *.htm);;All (*)") print(path)
def __init__(self, title=_('Choose Files'), filters=[], add_all_files_filter=True, parent=None, modal=True, name='', mode=QFileDialog.ExistingFiles, default_dir=u'~', no_save_dir=False, combine_file_and_saved_dir=False ): QObject.__init__(self) ftext = '' if filters: for filter in filters: text, extensions = filter extensions = ['*'+(i if i.startswith('.') else '.'+i) for i in extensions] ftext += '%s (%s);;'%(text, ' '.join(extensions)) if add_all_files_filter or not ftext: ftext += 'All files (*)' if ftext.endswith(';;'): ftext = ftext[:-2] self.dialog_name = name if name else 'dialog_' + title self.selected_files = None self.fd = None if combine_file_and_saved_dir: bn = os.path.basename(default_dir) prev = dynamic.get(self.dialog_name, expanduser(u'~')) if os.path.exists(prev): if os.path.isfile(prev): prev = os.path.dirname(prev) else: prev = expanduser(u'~') initial_dir = os.path.join(prev, bn) elif no_save_dir: initial_dir = expanduser(default_dir) else: initial_dir = dynamic.get(self.dialog_name, expanduser(default_dir)) if not isinstance(initial_dir, basestring): initial_dir = expanduser(default_dir) if not initial_dir or (not os.path.exists(initial_dir) and not ( mode == QFileDialog.AnyFile and (no_save_dir or combine_file_and_saved_dir))): initial_dir = select_initial_dir(initial_dir) self.selected_files = [] use_native_dialog = 'CALIBRE_NO_NATIVE_FILEDIALOGS' not in os.environ with sanitize_env_vars(): opts = QFileDialog.Option() if not use_native_dialog: opts |= QFileDialog.DontUseNativeDialog if mode == QFileDialog.AnyFile: f = QFileDialog.getSaveFileName(parent, title, initial_dir, ftext, "", opts) if f and f[0]: self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFile: f = QFileDialog.getOpenFileName(parent, title, initial_dir, ftext, "", opts) if f and f[0] and os.path.exists(f[0]): self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFiles: fs = QFileDialog.getOpenFileNames(parent, title, initial_dir, ftext, "", opts) if fs and fs[0]: for f in fs[0]: f = unicode(f) if not f: continue if not os.path.exists(f): # QFileDialog for some reason quotes spaces # on linux if there is more than one space in a row f = unquote(f) if f and os.path.exists(f): self.selected_files.append(f) else: if mode == QFileDialog.Directory: opts |= QFileDialog.ShowDirsOnly f = unicode(QFileDialog.getExistingDirectory(parent, title, initial_dir, opts)) if os.path.exists(f): self.selected_files.append(f) if self.selected_files: self.selected_files = [unicode(q) for q in self.selected_files] saved_loc = self.selected_files[0] if os.path.isfile(saved_loc): saved_loc = os.path.dirname(saved_loc) if not no_save_dir: dynamic[self.dialog_name] = saved_loc self.accepted = bool(self.selected_files)
def __init__( self, title=_('Choose Files'), filters=[], add_all_files_filter=True, parent=None, modal=True, name='', mode=QFileDialog.ExistingFiles, default_dir=u'~', no_save_dir=False, combine_file_and_saved_dir=False ): from calibre.gui2 import dynamic, sanitize_env_vars from calibre.gui2.ui import get_gui gui = get_gui() adapt_menubar = gui.bars_manager.adapt_menu_bar_for_dialog if gui is not None else Dummy() QObject.__init__(self) ftext = '' if filters: for filter in filters: text, extensions = filter extensions = ['*'+(i if i.startswith('.') else '.'+i) for i in extensions] ftext += '%s (%s);;'%(text, ' '.join(extensions)) if add_all_files_filter or not ftext: ftext += 'All files (*)' if ftext.endswith(';;'): ftext = ftext[:-2] self.dialog_name = dialog_name(name, title) self.selected_files = None self.fd = None if combine_file_and_saved_dir: bn = os.path.basename(default_dir) prev = dynamic.get(self.dialog_name, os.path.expanduser(u'~')) if os.path.exists(prev): if os.path.isfile(prev): prev = os.path.dirname(prev) else: prev = os.path.expanduser(u'~') initial_dir = os.path.join(prev, bn) elif no_save_dir: initial_dir = os.path.expanduser(default_dir) else: initial_dir = dynamic.get(self.dialog_name, os.path.expanduser(default_dir)) if not isinstance(initial_dir, string_or_bytes): initial_dir = os.path.expanduser(default_dir) if not initial_dir or (not os.path.exists(initial_dir) and not ( mode == QFileDialog.AnyFile and (no_save_dir or combine_file_and_saved_dir))): initial_dir = select_initial_dir(initial_dir) self.selected_files = [] use_native_dialog = 'CALIBRE_NO_NATIVE_FILEDIALOGS' not in os.environ with sanitize_env_vars(): opts = QFileDialog.Option() if not use_native_dialog: opts |= QFileDialog.DontUseNativeDialog if mode == QFileDialog.AnyFile: with adapt_menubar: f = QFileDialog.getSaveFileName(parent, title, initial_dir, ftext, "", opts) if f and f[0]: self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFile: with adapt_menubar: f = QFileDialog.getOpenFileName(parent, title, initial_dir, ftext, "", opts) if f and f[0] and os.path.exists(f[0]): self.selected_files.append(f[0]) elif mode == QFileDialog.ExistingFiles: with adapt_menubar: fs = QFileDialog.getOpenFileNames(parent, title, initial_dir, ftext, "", opts) if fs and fs[0]: for f in fs[0]: f = unicode_type(f) if not f: continue if not os.path.exists(f): # QFileDialog for some reason quotes spaces # on linux if there is more than one space in a row f = unquote(f) if f and os.path.exists(f): self.selected_files.append(f) else: if mode == QFileDialog.Directory: opts |= QFileDialog.ShowDirsOnly with adapt_menubar: f = unicode_type(QFileDialog.getExistingDirectory(parent, title, initial_dir, opts)) if os.path.exists(f): self.selected_files.append(f) if self.selected_files: self.selected_files = [unicode_type(q) for q in self.selected_files] saved_loc = self.selected_files[0] if os.path.isfile(saved_loc): saved_loc = os.path.dirname(saved_loc) if not no_save_dir: dynamic[self.dialog_name] = saved_loc self.accepted = bool(self.selected_files)
def save_setup(self): fname = QFileDialog.getSaveFileName(self, caption='Save Setup File', filter='*.set') if fname: self.window.save_setup(str(fname[0]) + '.set')