def getFileName(mode, context, caption, directory, tfilter): if not isLinux: if mode == 'save': file_path, file_type = QFileDialog.getSaveFileName( context, caption, directory, tfilter) return file_path elif mode == 'open': file_path, file_type = QFileDialog.getOpenFileName( context, caption, directory, tfilter) return file_path else: raise ValueError dlg = QFileDialog(context, caption, directory, tfilter) if mode == 'save': mode = QFileDialog.AcceptSave elif mode == 'open': mode = QFileDialog.AcceptOpen else: raise ValueError dlg.setAcceptMode(mode) dlg.setViewMode(QFileDialog.List) dlg.setOption(QFileDialog.DontUseNativeDialog) if dlg.exec() == QDialog.Accepted: filt = dlg.selectedNameFilter() ext = get_ext(filt) ret = dlg.selectedFiles()[0] if not ret.endswith(ext): ret += ext return ret return ''
def dst_FileDialog(): # 1 часть функции (прогресс, работа иконки указателя, доступ к след. кнопке) if process_label.text( ) == "Ожидание старта..." or process_label.text() != "Повторный выбор...": process_label.setText("Ожидание старта...") process_label.setToolTip("Сейчас происходит: %s" % process_label.text()) else: process_label.setText("Повторное ожидание..") process_label.setToolTip("Сейчас происходит: %s" % process_label.text()) transform = QTransform().rotate(220) arrow_label.setPixmap(arrow.transformed(transform, mode=1)) arrow_label.setGeometry(QRect(55, 54, 80, 80)) active_button.setEnabled(True) # 2 часть функции (диалоговое окно) dialog_dst = QFileDialog( parent=window, filter="", caption="Сюда будут сгенерированы случайные композиции") dialog_dst.setFileMode(QFileDialog.Directory) dialog_dst.setOption(QFileDialog.DontUseNativeDialog, True) result_dst = dialog_dst.exec() if result_dst == QDialog.Accepted: for dst in dialog_dst.selectedFiles(): dst_button.setToolTip(dst) else: # Если не выбрана папка msg_event(4) dst_FileDialog()
def src_FileDialog(): # 1 часть функции (прогресс, работа иконки указателя, доступ к след. кнопке) if process_label.text() != "Ожидание старта..." and process_label.text( ) != "Выбор папок...": process_label.setText("Повторный выбор...") process_label.setToolTip("Сейчас происходит: %s" % process_label.text()) transform = QTransform().rotate(130) arrow_label.setPixmap(arrow.transformed(transform, mode=1)) arrow_label.setGeometry(QRect(64, 62, 80, 80)) dst_button.setEnabled(True) # 2 часть функции (диалоговое окно) dialog_src = QFileDialog( parent=window, filter="", caption="Отсюда будут собраны музыкальные композиции") dialog_src.setFileMode(QFileDialog.Directory) dialog_src.setOption(QFileDialog.DontUseNativeDialog, True) result_src = dialog_src.exec() if result_src == QDialog.Accepted: for src in dialog_src.selectedFiles(): src_button.setToolTip(src) else: # Если не выбрана папка msg_event(4) src_FileDialog()
def saver(self): dlg = QFileDialog() dlg.setWindowIcon(self.window.windowIcon()) options = QFileDialog.options(dlg) options |= QFileDialog.DontUseNativeDialog dlg.setOption(dlg.DontConfirmOverwrite, False) filename = QFileDialog.getSaveFileName( dlg, '', '', 'Text Documents (*.txt);;XML Documents (*.xml)', ".txt", options=options) # type: tuple if filename[ 0]: # if a file name has been supplied (i.e. user entered a name) try: if '.xml' in filename[1]: res = self.write_xml(filename[0]) else: res = self.write_txt(filename[0]) # writes txt files return res except Exception as e: return str(e) else: return 'canceled'
def load_obs(self): load = QFileDialog() load.setDefaultSuffix(".json") load.setNameFilter("JSON files (*.json)") load.setAcceptMode(QFileDialog.AcceptOpen) load.setOption(QFileDialog.DontUseNativeDialog) if load.exec_() == QFileDialog.Accepted: filename = load.selectedFiles()[0] with open(filename) as json_file: obs_dict = json.load(json_file) self.observationList.clear() for key in obs_dict: if key in self.targetsDict: targetName = key ra = self.targetsDict[targetName]["ra"] dec = self.targetsDict[targetName]["dec"] coord = SkyCoord(frame='icrs', ra=ra, dec=dec, obstime="J2000") target = FixedTarget(coord=coord, name=targetName) for date in obs_dict[key]['times']: print(date) # TODO Te pielikt date parbaudes, vai atkekset ja ir vai iznemt ja nav data = PlannedObs(target, int(obs_dict[key]['priority']), int(obs_dict[key]['obs_per_week']), int(obs_dict[key]['scans_per_obs']), obs_dict[key]['times'], obs_dict[key]['global_time']) item = QListWidgetItem(str(data), self.observationList) item.setData(Qt.UserRole, data) self.observationList.addItem(item) self.plannedTargets.append(target.name) else: self.show_error("Target error", key + " not in targets, skipping it") else: print("Something went wrong")
def download(self, reply): filepath = reply.url().toString() #dl = self.showBox('Iniciar download de', filepath) #if dl == QMessageBox.Yes: split = urllib.parse.urlsplit(filepath) filename = split.path.split("/")[-1] ofd = QFileDialog() ofd.setFileMode(QFileDialog.Directory) ofd.setOption(QFileDialog.ShowDirsOnly) ofd.setWindowTitle(filename) if ofd.exec_(): res = ofd.selectedFiles()[0] path = os.path.join(res, filename) self.start_download.emit(str(filepath), str(path)) #elif dl == QMessageBox.No: # pass #elif dl == QMessageBox.Cancel: # pass rep = self.showBox('Tentar reproduzir o arquivo?', filepath) if rep == QMessageBox.Yes: self.open_video.emit(filepath, False) self.close() main.hide() elif rep == QMessageBox.No: pass elif rep == QMessageBox.Cancel: pass
def open_folder(self): # диалоговое окно открытия папки dialog = QFileDialog() dialog.setFileMode(QFileDialog.DirectoryOnly) dialog.setOption(QFileDialog.ShowDirsOnly) if dialog.exec(): self.folderName_Edit.setText(dialog.selectedFiles()[0])
def getDirBrowser(): dialog = QFileDialog() dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly) directory = dialog.getExistingDirectory(None, 'Choose Directory', os.path.curdir) return str(directory)
def make_file_dialog(name_filters, file_mode, directory, parent, native): dialog = QFileDialog(parent) dialog.setOption(QFileDialog.DontUseNativeDialog, not native) dialog.setDirectory(directory) dialog.setFileMode(file_mode) dialog.setNameFilter(dialog.tr(name_filters)) return dialog
def getModelFileNameToOpen(cls, parent_window, defaultDirectory): """ opens a QFileDialog for importing files """ extensions = ["pytorch"] filter_strs = ["*." + x for x in extensions] filters = ["{filt} ({filt})".format(filt=x) for x in filter_strs] filt_all_str = "Neural nets (" + " ".join(filter_strs) + ")" fileName = None if ilastik_config.getboolean("ilastik", "debug"): # use Qt dialog in debug mode (more portable?) file_dialog = QFileDialog(parent_window, "Select Model") file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) # do not display file types associated with a filter # the line for "Image files" is too long otherwise file_dialog.setNameFilters([filt_all_str] + filters) # file_dialog.setNameFilterDetailsVisible(False) file_dialog.setFileMode(QFileDialog.ExistingFile) file_dialog.setDirectory(defaultDirectory) if file_dialog.exec_(): fileName = file_dialog.selectedFiles()[0] else: # otherwise, use native dialog of the present platform fileName, _ = QFileDialog.getOpenFileName(parent_window, "Select Model", defaultDirectory, filt_all_str) return fileName
def getImageFileNamesToOpen(cls, parent_window, defaultDirectory): """ opens a QFileDialog for importing files """ extensions = ['nn'] filter_strs = ["*." + x for x in extensions] filters = ["{filt} ({filt})".format(filt=x) for x in filter_strs] filt_all_str = "Image files (" + ' '.join(filter_strs) + ')' fileNames = [] if ilastik_config.getboolean("ilastik", "debug"): # use Qt dialog in debug mode (more portable?) file_dialog = QFileDialog(parent_window, "Select Model") file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) # do not display file types associated with a filter # the line for "Image files" is too long otherwise file_dialog.setNameFilters([filt_all_str] + filters) #file_dialog.setNameFilterDetailsVisible(False) # select multiple files file_dialog.setFileMode(QFileDialog.ExistingFiles) file_dialog.setDirectory(defaultDirectory) if file_dialog.exec_(): fileNames = file_dialog.selectedFiles() else: # otherwise, use native dialog of the present platform fileNames, _ = QFileDialog.getOpenFileNames(parent_window, "Select Model", defaultDirectory, filt_all_str) return fileNames
def getImageFileNamesToOpen(cls, parent_window, defaultDirectory): """ Launch an "Open File" dialog to ask the user for one or more image files. """ extensions = OpDataSelection.SupportedExtensions filter_strs = ["*." + x for x in extensions] filters = ["{filt} ({filt})".format(filt=x) for x in filter_strs] filt_all_str = "Image files (" + ' '.join(filter_strs) + ')' fileNames = [] if ilastik_config.getboolean("ilastik", "debug"): # use Qt dialog in debug mode (more portable?) file_dialog = QFileDialog(parent_window, "Select Images") file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) # do not display file types associated with a filter # the line for "Image files" is too long otherwise file_dialog.setNameFilters([filt_all_str] + filters) #file_dialog.setNameFilterDetailsVisible(False) # select multiple files file_dialog.setFileMode(QFileDialog.ExistingFiles) file_dialog.setDirectory( defaultDirectory ) if file_dialog.exec_(): fileNames = file_dialog.selectedFiles() else: # otherwise, use native dialog of the present platform fileNames, _filter = QFileDialog.getOpenFileNames(parent_window, "Select Images", defaultDirectory, filt_all_str) return fileNames
def openDialog(self): od = QFileDialog(self, 'Open MaLPi drive data directory') od.setAcceptMode(QFileDialog.AcceptOpen) od.setFileMode(QFileDialog.Directory) od.setOption(QFileDialog.DontUseNativeDialog, True) # Try to select multiple files and directories at the same time in QFileDialog if False: l = od.findChild(QListView, "listView") if l is not None: l.setSelectionMode(QAbstractItemView.MultiSelection) t = od.findChild(QTreeView) if t is not None: t.setSelectionMode(QAbstractItemView.MultiSelection) nMode = od.exec() if nMode == QDialog.Accepted: _fnames = od.selectedFiles() # QStringList try: if 1 == len(_fnames) and os.path.isdir(_fnames[0]): self.loadData(_fnames[0]) elif 0 != len(_fnames): self.statusBar().showMessage( "Formats other than MaLPi and Tub are not yet supported" ) except Exception as ex: msg = "Error loading data: {}".format(str(ex)) self.statusBar().showMessage(msg) print(msg)
def seek(self): fileName = "" dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter("Images (*.png *.gif *.jpg)All (*)") dialog.setWindowTitle("Load Image") dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec(): fileName = dialog.selectedFiles()[0] if not fileName: return # copy file to assets dir info = QFileInfo(fileName) name = info.fileName().replace(" ", "_") path = os.path.join(self.site.source_path, "assets", "images", name) self.source.setText(path) try: shutil.copy2(fileName, path) except shutil.SameFileError: pass # just ignore # also copy file to deploy dir for previews dpath = os.path.join(self.site.source_path, self.site.output, "docs", "assets", "images", name) shutil.copy2(fileName, dpath) self.image.setImage(QImage(path)) self.contentChanged()
def seek(self): fileName = "" dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter("Images (*.png *.gif *.jpg);;All (*)") dialog.setWindowTitle(QCoreApplication.translate("SiteSettingsEditor", "Load Image")) dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec(): fileName = dialog.selectedFiles()[0] del dialog if not fileName: return # copy file to assets dir name = os.path.basename(fileName).replace(" ", "_") path = os.path.join(self.site.source_path, "assets", "images", name) self.logo.setText(os.path.basename(path)) shutil.copy(fileName, path) # also copy file to deploy dir for previews dpath = os.path.join(self.site.source_path, self.site.output, "assets", "images", name) shutil.copy(fileName, dpath) self.image.setImage(QImage(path)) self.contentChanged("logo changed")
def get_dir_(dlgtype='native', path='path'): if path is None: path = '' # print(f'get_dir processed in {int(QThread.currentThreadId())}') dialog = QFileDialog(None) dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly, True) if dlgtype == 'qt': # default to native unless qt is explicitly requested dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setViewMode(QFileDialog.Detail) if len(path) > 0 and QDir(path).exists(): dialog.setDirectory(path) directory = '' absolutepath = False if dialog.exec() == QFileDialog.Accepted: dlg_out = dialog.selectedFiles() directory = dlg_out[0] absolutepath = dialog.directory().absolutePath() output = { 'directory': directory, 'absolutePath': absolutepath, } return output
def new_campaign(self): dialog = QFileDialog(self) dialog.setDirectory(helper.one_up(self.current_dir)) dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setFileMode(QFileDialog.AnyFile) dialog.setOption(QFileDialog.ShowDirsOnly) dialog.setWindowTitle('Select folder name') if dialog.exec_(): directory = dialog.selectedFiles()[0] qdir = QDir(directory) if not qdir.exists(): self.current_dir = qdir.path() for folder_name in resource.folders: qdir.mkpath('./' + folder_name) helper.save_json_data( '{}/{}/health{}'.format(self.current_dir, resource.health_stat.folder, resource.health_stat.ext), resource.health_stat.default) qdir.mkpath('./.settings/std') qdir.mkpath('./.settings/debug') resource.create_config_files(self.current_dir, qdir.dirName()) self.refresh_tree_view() else: helper.display_error('Directory for campaign already exists.' ) # This shouldn't happen
class _widget_select_directory(object): """Use the QT5 widget to select a directory """ def __init__(self, output_dict, key, help_text, callback=None): self.dialog = QFileDialog(None) self.dialog.setFileMode(QFileDialog.Directory) self.dialog.setOption(self.dialog.ShowDirsOnly, True) self.output_dict = output_dict self.key = key self.help_text = help_text self.callback = callback def _select_dir(self): fname = self.dialog.getExistingDirectory( None, self.help_text, # '/', ) return fname def _button_click(self, x): directory = self._select_dir() self.label.value = directory self.output_dict[self.key] = directory if self.callback is not None: self.callback() def get_widget(self): button = widgets.Button(description=self.help_text) self.label = widgets.Label() button.on_click(self._button_click) return widgets.HBox([button, self.label])
def __select_Dir(self): dialog = QFileDialog() dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly, True) if dialog.exec_(): self.__ui.edt_Path.setText(dialog.selectedFiles()[0])
def open_file_browser_directory(parent_window): """Opens a file browser to select a directory. A bug has being detected in KDE Plasma native installatiom. When a native file browser is opened to select a directory, then the application crashes. This doesn't happen in GNOME for example. So a fallback has had to be implemented for this case, suing TKinter. Arguments: parent_window: Parent window Returns: str: Path of the directory selected """ # Creating a QFileDialog or Tkinter file browser to select the directory # Only directories will be allowed selected_path = "" if settings.desktop_environment == 'kde' and settings.installation_type == 'native': Tk().withdraw() filename = askdirectory() if filename: selected_path = filename else: file_dialog = QFileDialog(parent_window) file_dialog.setFileMode(QFileDialog.Directory) file_dialog.setOption(QFileDialog.ShowDirsOnly, True) file_dialog.setOption(QFileDialog.DontUseNativeDialog) if file_dialog.exec_(): selected_path = file_dialog.selectedFiles()[0] return selected_path
def showOpenFile(self): dlg = QFileDialog(self) dlg.setWindowTitle(self.tr("Open Video Files")) dlg.setWindowModality(Qt.WindowModal) mimeFilters = [ "video/mp4", "video/quicktime", "video/x-msvideo", "video/x-ms-wmv" ] globPatterns = [] db = QMimeDatabase() for m in mimeFilters: mimeType = db.mimeTypeForName(m) if not mimeType.isValid(): logger.warn("Invalid MIME type: {}".format(m)) continue globPatterns.extend(mimeType.globPatterns()) globText = ' '.join(globPatterns) logger.debug("Video glob patterns: {}".format(globText)) dlg.setNameFilters([ self.tr("Video Files ({})").format(globText), self.tr("All Files (*)") ]) dlg.setAcceptMode(QFileDialog.AcceptOpen) dlg.setOption(QFileDialog.ReadOnly, True) dlg.setOption(QFileDialog.DontUseCustomDirectoryIcons, True) dlg.setLabelText(QFileDialog.Accept, self.tr("Open Movie")) dlg.setFileMode(QFileDialog.ExistingFiles) if dlg.exec_(): filenames = dlg.selectedFiles() self.processVideoFiles(filenames)
def getLoadSaveFileName(self, title, filter=None, settingname=None, savesuffix=None, multiple=False, settingdefault=None): "Show a file dialog and select one or more files" setting = self.settings.value( settingname, settingdefault) if settingname is not None else None directory = setting if type(setting) is str else None dialog = QFileDialog(parent=self, caption=title, directory=directory, filter=filter) # if setting and type(setting) is not str: # dialog.restoreState(setting) dialog.setOption(QFileDialog.DontUseNativeDialog, True) if savesuffix is not None: dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setDefaultSuffix(savesuffix) elif multiple: dialog.setFileMode(QFileDialog.ExistingFiles) else: dialog.setFileMode(QFileDialog.ExistingFile) dialog.exec() files = dialog.selectedFiles() if not dialog.result() or not files: return None self.settings.setValue(settingname, os.path.dirname(files[0])) return files if multiple else files[0]
def addImage(self): fileName = "" dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter("Image Files(*.png *.jpg *.bmp *.gif);;All (*)") dialog.setWindowTitle("Load Image") dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec_(): fileName = dialog.selectedFiles()[0] del dialog if not fileName: return base = os.path.basename(fileName) if not os.path.exists( os.path.join(self.book.source_path, "images", base)): copy(fileName, os.path.join(self.book.source_path, "images")) item = QListWidgetItem() item.setText(Path(fileName).name) item.setData( 1, os.path.join(self.book.source_path, "images", Path(fileName).name)) self.image_list.addItem(item)
def select_folder(self): dialog = QFileDialog(self, "Please select a folder") dialog.setDirectory(os.path.expanduser('~')) dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly) if dialog.exec_(): self.add_folders(dialog.selectedFiles())
def open_folder_dialogue() -> str: file_dialogue = QFileDialog() file_dialogue.setOption(QFileDialog.ShowDirsOnly, True) file_name = file_dialogue.getExistingDirectory(file_dialogue, 'Choose an export folder', os.path.expanduser('~'), QFileDialog.ShowDirsOnly) return file_name
def openFileNameDialog(self): fileDialog = QFileDialog(self) fileDialog.setOption(QFileDialog.ShowDirsOnly, True) name = fileDialog.getExistingDirectory(self, "Choose Recording Directory") (self.ppath, self.name) = os.path.split(name) print("Setting base folder %s and recording %s" % (self.ppath, self.name))
def browseTurbLite(self): msg = QFileDialog() msg.setFileMode(QFileDialog.Directory) msg.setOption(QFileDialog.ShowDirsOnly) if msg.exec_(): dirs = msg.selectedFiles() dirs = os.path.normpath(dirs[0]) self.turbLiteHomeEdit.setText(dirs)
def openBtnClicked(): dialog = QFileDialog() dialog.setFileMode(QFileDialog.ExistingFiles) dialog.setOption(QFileDialog.ShowDirsOnly, False) if dialog.exec(): window.fileNames = dialog.selectedFiles() + window.fileNames window.fileNames = list(dict.fromkeys(window.fileNames)) updateFileList()
def choose_file_dialog(parent, title, want_folder=True): dialog = QFileDialog(parent, title, os.path.expanduser('~')) dialog.setFileMode( QFileDialog.Directory if want_folder else QFileDialog.ExistingFiles) dialog.setParent(parent, QtCore.Qt.Sheet) if want_folder: dialog.setOption(QFileDialog.ShowDirsOnly) return dialog
def mousePressEvent(self, mouseEvent): self.oldPos = QPointF(0, 0) self.movingItem = None if mouseEvent.button() != Qt.LeftButton: return if self.edit_mode == DesignerScene.SELECT: handle = None mousePos = QPointF( mouseEvent.buttonDownScenePos(Qt.LeftButton).x(), mouseEvent.buttonDownScenePos(Qt.LeftButton).y()) itemList = self.items(mousePos) for item in itemList: if isinstance(item, ItemHandle): handle = item break elif isinstance(item, DesignItem): if not item.isSceneRect(): self.movingItem = item self.oldPos = item.pos() break if not self.movingItem and not handle: self.blackSelectionRect = self.addRect(0, 0, 1, 1, QPen(QColor("#000000"))) self.blackSelectionRect.setPos(mousePos) self.whiteSelectionRect = self.addRect(1, 1, 1, 1, QPen(QColor("#ffffff"))) self.whiteSelectionRect.setPos(mousePos) super().mousePressEvent(mouseEvent) else: filter = "" fileName = "" if self.edit_mode == DesignerScene.BITMAP: filter = "Image Files (*.png *.jpeg *.jpg *.gif *.bmp)All Files (*)" title = "Open Bitmap" elif self.edit_mode == DesignerScene.SVG: filter = "SVG Files (*.svg)All Files (*)" title = "Open SVG" if filter: dialog = QFileDialog() dialog.setFileMode(QFileDialog.AnyFile) dialog.setNameFilter(filter) dialog.setWindowTitle(title) dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptOpen) if dialog.exec(): fileName = dialog.selectedFiles()[0] del dialog if not fileName: return addCommand = AddItemCommand(mouseEvent.scenePos().x(), mouseEvent.scenePos().y(), self.edit_mode, fileName, self) self.undostack.push(addCommand)
def open_selector(self): dialog = QFileDialog(self) dialog.fileSelected.connect(self.handle_selected) dialog.setDirectory(self.initial_file_path) if not self.show_files: dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly, True) dialog.exec_()
async def get_save_filename(parent, title, url, filtr): dialog = QFileDialog(parent, title, url, filtr) dialog.setOption(QFileDialog.DontUseNativeDialog, True) dialog.setAcceptMode(QFileDialog.AcceptSave) result = await dialog_async_exec(dialog) if result == QFileDialog.AcceptSave: return dialog.selectedFiles() else: return []
def export_account(self): # Testable way of using a QFileDialog export_dialog = QFileDialog(self) export_dialog.setObjectName('ExportFileDialog') export_dialog.setWindowTitle(self.tr("Export an account")) export_dialog.setNameFilter(self.tr("All account files (*.acc)")) export_dialog.setLabelText(QFileDialog.Accept, self.tr('Export')) export_dialog.setOption(QFileDialog.DontUseNativeDialog, True) export_dialog.accepted.connect(self.export_account_accepted) export_dialog.show()
def save_as_gpvdm(parent): dialog = QFileDialog(parent) dialog.setWindowTitle(_("Save a the simulation as")) dialog.setNameFilter(_("Directory")) dialog.setAcceptMode(QFileDialog.AcceptSave) dialog.setOption(QFileDialog.ShowDirsOnly, True) if dialog.exec_() == QDialog.Accepted: filename = dialog.selectedFiles()[0] return filename else: return None
def navigate_directory(self): dialog = QFileDialog() dialog.setDirectory(self._root_dir) dialog.setFileMode(QFileDialog.Directory) dialog.setOption(QFileDialog.ShowDirsOnly) dialog.exec() path = dialog.selectedFiles() if path and path[0]: self._root_dir = path[0] self.localPathEdit.setText(self._root_dir) self.update_file_tree()
def from_folder(self): file_dialog = QFileDialog() file_dialog.setFileMode(QFileDialog.DirectoryOnly) file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) file_view = file_dialog.findChild(QListView, 'listView') if file_view: file_view.setSelectionMode(QAbstractItemView.MultiSelection) f_tree_view = file_dialog.findChild(QTreeView) if f_tree_view: f_tree_view.setSelectionMode(QAbstractItemView.MultiSelection) if file_dialog.exec(): for path in file_dialog.selectedFiles(): self.add_gallery(path, os.path.split(path)[1])
def slotAddMount(self): fileDialog = QFileDialog(self, Qt.Dialog) fileDialog.setFileMode(QFileDialog.Directory) fileDialog.setOption(QFileDialog.ShowDirsOnly, True) fileDialog.setViewMode(QFileDialog.List) fileDialog.setDirectory(os.environ["HOME"]) if fileDialog.exec(): selected = fileDialog.selectedFiles()[0] if selected in self.newMounts: return row = self.table_mounts.rowCount() self.table_mounts.insertRow(row) self.table_mounts.setItem(row, 0, QTableWidgetItem(selected)) self.table_mounts.setItem(row, 1, QTableWidgetItem("新近添加")) self.table_mounts.setItem(row, 2, QTableWidgetItem("新近添加"))
def slotAddMount(self): fileDialog = QFileDialog(self, Qt.Dialog) fileDialog.setFileMode(QFileDialog.Directory) fileDialog.setOption(QFileDialog.ShowDirsOnly, True) fileDialog.setViewMode(QFileDialog.List) fileDialog.setDirectory(os.environ["HOME"]) if fileDialog.exec(): selected = fileDialog.selectedFiles()[0] if selected in self.newMounts: return row = self.table_mounts.rowCount() self.table_mounts.insertRow(row) self.table_mounts.setItem( row, 0, QTableWidgetItem(app.adapterManager[0].mountsFaker.driveIndexToLetter(row) + "\\TDDOWNLOAD")) self.table_mounts.setItem(row, 1, QTableWidgetItem(selected)) self.table_mounts.setItem(row, 2, QTableWidgetItem("新近添加"))
def directories_dialog(path=None,name='Select Directories'): ok = True def _pressed_cancel(): nonlocal ok Fi.close() app.quit() ok &= False path = path or CURDIR app = QCoreApplication.instance() or QApplication([]) Fi = QFileDialog() Fi.setWindowTitle(name) Fi.setOption(Fi.DontUseNativeDialog, True) qr = Fi.frameGeometry() cp = QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) Fi.move(qr.topLeft()) Fi.setFileMode(Fi.DirectoryOnly) Fi.setDirectory(path) for view in Fi.findChildren((QListView,QTreeView)): if isinstance(view.model(), QFileSystemModel): view.setSelectionMode(QAbstractItemView.MultiSelection) for view in Fi.findChildren(QPushButton): if view.text().lower().startswith('&cancel'): view.clicked.connect(_pressed_cancel) Fi.show() app.exec_() # The folder selection is also selecting its parent: sel_files = Fi.selectedFiles() sel_files2 = set(sel_files) for fi1 in sel_files: for fi2 in sel_files: if fi2 != fi1 and fi1 in fi2: sel_files2 -= {fi1} break return ok, list(sel_files2)
class MenuUI(QMenuBar): addDirectory = pyqtSignal(list) def __init__(self, parent): super().__init__() self.parent = parent self.file_menu = QMenu("&File") self.edit_menu = QMenu() self.help_menu = QMenu() self._init_menus() def _init_menus(self): self._file_menu() def _file_menu(self): self.add_library = QAction("&Add Library...", self) self.exit_player = QAction("E&xit", self) self.file_menu.addAction(self.add_library) self.file_menu.addAction(self.exit_player) self._connect_widgets() self.addMenu(self.file_menu) def _connect_widgets(self): self.add_library.triggered.connect(self._add_library) self.exit_player.triggered.connect(self.parent.close) def _add_library(self): self.dialog = QFileDialog() self.dialog.setFileMode(QFileDialog.DirectoryOnly) self.dialog.setOption(QFileDialog.DontUseNativeDialog, True) for view in self.dialog.findChildren((QListView, QTreeView)): if isinstance(view.model(), QFileSystemModel): view.setSelectionMode(QAbstractItemView.MultiSelection) if self.dialog.exec(): dirs = self.dialog.selectedFiles() self.addDirectory.emit(dirs)
def getImageFileNamesToOpen(cls, parent_window, defaultDirectory): """ Launch an "Open File" dialog to ask the user for one or more image files. """ extensions = OpDataSelection.SupportedExtensions filter_strs = ["*." + x for x in extensions] filters = ["{filt} ({filt})".format(filt=x) for x in filter_strs] filt_all_str = "Image files (" + ' '.join(filter_strs) + ')' fileNames = [] file_dialog = QFileDialog( parent_window, caption="Select Images", directory=defaultDirectory, filter=filt_all_str) if ilastik_config.getboolean("ilastik", "debug"): # use Qt dialog in debug mode (more portable?) file_dialog.setOption(QFileDialog.DontUseNativeDialog, True) #file_dialog.setNameFilterDetailsVisible(False) # select multiple files file_dialog.setFileMode(QFileDialog.ExistingFiles) if not file_dialog.exec_(): return [] return cls.cleanFileList(file_dialog.selectedFiles())
def requestWrite(self, node, file_name = None, limit_mimetypes = None): if self._writing: raise OutputDeviceError.DeviceBusyError() dialog = QFileDialog() dialog.setWindowTitle(catalog.i18nc("@title:window", "Save to File")) dialog.setFileMode(QFileDialog.AnyFile) dialog.setAcceptMode(QFileDialog.AcceptSave) # Ensure platform never ask for overwrite confirmation since we do this ourselves dialog.setOption(QFileDialog.DontConfirmOverwrite) if sys.platform == "linux" and "KDE_FULL_SESSION" in os.environ: dialog.setOption(QFileDialog.DontUseNativeDialog) filters = [] mime_types = [] selected_filter = None last_used_type = Preferences.getInstance().getValue("local_file/last_used_type") file_types = Application.getInstance().getMeshFileHandler().getSupportedFileTypesWrite() file_types.sort(key = lambda k: k["description"]) if limit_mimetypes: file_types = list(filter(lambda i: i["mime_type"] in limit_mimetypes, file_types)) if len(file_types) == 0: Logger.log("e", "There are no file types available to write with!") raise OutputDeviceError.WriteRequestFailedError() for item in file_types: type_filter = "{0} (*.{1})".format(item["description"], item["extension"]) filters.append(type_filter) mime_types.append(item["mime_type"]) if last_used_type == item["mime_type"]: selected_filter = type_filter if file_name: file_name += "." + item["extension"] dialog.setNameFilters(filters) if selected_filter != None: dialog.selectNameFilter(selected_filter) if file_name != None: dialog.selectFile(file_name) dialog.restoreState(Preferences.getInstance().getValue("local_file/dialog_state").encode()) if not dialog.exec_(): raise OutputDeviceError.UserCanceledError() Preferences.getInstance().setValue("local_file/dialog_state", str(dialog.saveState())) selected_type = file_types[filters.index(dialog.selectedNameFilter())] Preferences.getInstance().setValue("local_file/last_used_type", selected_type["mime_type"]) file_name = dialog.selectedFiles()[0] if os.path.exists(file_name): result = QMessageBox.question(None, catalog.i18nc("@title:window", "File Already Exists"), catalog.i18nc("@label", "The file <filename>{0}</filename> already exists. Are you sure you want to overwrite it?").format(file_name)) if result == QMessageBox.No: raise OutputDeviceError.UserCanceledError() self.writeStarted.emit(self) mesh_writer = Application.getInstance().getMeshFileHandler().getWriter(selected_type["id"]) try: mode = selected_type["mode"] if mode == MeshWriter.OutputMode.TextMode: Logger.log("d", "Writing to Local File %s in text mode", file_name) stream = open(file_name, "wt") elif mode == MeshWriter.OutputMode.BinaryMode: Logger.log("d", "Writing to Local File %s in binary mode", file_name) stream = open(file_name, "wb") job = WriteMeshJob(mesh_writer, stream, node, mode) job.setFileName(file_name) job.progress.connect(self._onJobProgress) job.finished.connect(self._onWriteJobFinished) message = Message(catalog.i18nc("@info:progress", "Saving to <filename>{0}</filename>").format(file_name), 0, False, -1) message.show() job._message = message self._writing = True job.start() except PermissionError as e: Logger.log("e", "Permission denied when trying to write to %s: %s", file_name, str(e)) raise OutputDeviceError.PermissionDeniedError(catalog.i18nc("@info:status", "Permission denied when trying to save <filename>{0}</filename>").format(file_name)) from e except OSError as e: Logger.log("e", "Operating system would not let us write to %s: %s", file_name, str(e)) raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status", "Could not save to <filename>{0}</filename>: <message>{1}</message>").format()) from e
def requestWrite(self, nodes, file_name = None, limit_mimetypes = None, file_handler = None, **kwargs): if self._writing: raise OutputDeviceError.DeviceBusyError() # Set up and display file dialog dialog = QFileDialog() dialog.setWindowTitle(catalog.i18nc("@title:window", "Save to File")) dialog.setFileMode(QFileDialog.AnyFile) dialog.setAcceptMode(QFileDialog.AcceptSave) # Ensure platform never ask for overwrite confirmation since we do this ourselves dialog.setOption(QFileDialog.DontConfirmOverwrite) if sys.platform == "linux" and "KDE_FULL_SESSION" in os.environ: dialog.setOption(QFileDialog.DontUseNativeDialog) filters = [] mime_types = [] selected_filter = None if "preferred_mimetypes" in kwargs and kwargs["preferred_mimetypes"] is not None: preferred_mimetypes = kwargs["preferred_mimetypes"] else: preferred_mimetypes = Application.getInstance().getPreferences().getValue("local_file/last_used_type") preferred_mimetype_list = preferred_mimetypes.split(";") if not file_handler: file_handler = Application.getInstance().getMeshFileHandler() file_types = file_handler.getSupportedFileTypesWrite() file_types.sort(key = lambda k: k["description"]) if limit_mimetypes: file_types = list(filter(lambda i: i["mime_type"] in limit_mimetypes, file_types)) file_types = [ft for ft in file_types if not ft["hide_in_file_dialog"]] if len(file_types) == 0: Logger.log("e", "There are no file types available to write with!") raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:warning", "There are no file types available to write with!")) # Find the first available preferred mime type preferred_mimetype = None for mime_type in preferred_mimetype_list: if any(ft["mime_type"] == mime_type for ft in file_types): preferred_mimetype = mime_type break for item in file_types: type_filter = "{0} (*.{1})".format(item["description"], item["extension"]) filters.append(type_filter) mime_types.append(item["mime_type"]) if preferred_mimetype == item["mime_type"]: selected_filter = type_filter if file_name: file_name += "." + item["extension"] # CURA-6411: This code needs to be before dialog.selectFile and the filters, because otherwise in macOS (for some reason) the setDirectory call doesn't work. stored_directory = Application.getInstance().getPreferences().getValue("local_file/dialog_save_path") dialog.setDirectory(stored_directory) # Add the file name before adding the extension to the dialog if file_name is not None: dialog.selectFile(file_name) dialog.setNameFilters(filters) if selected_filter is not None: dialog.selectNameFilter(selected_filter) if not dialog.exec_(): raise OutputDeviceError.UserCanceledError() save_path = dialog.directory().absolutePath() Application.getInstance().getPreferences().setValue("local_file/dialog_save_path", save_path) selected_type = file_types[filters.index(dialog.selectedNameFilter())] Application.getInstance().getPreferences().setValue("local_file/last_used_type", selected_type["mime_type"]) # Get file name from file dialog file_name = dialog.selectedFiles()[0] Logger.log("d", "Writing to [%s]..." % file_name) if os.path.exists(file_name): result = QMessageBox.question(None, catalog.i18nc("@title:window", "File Already Exists"), catalog.i18nc("@label Don't translate the XML tag <filename>!", "The file <filename>{0}</filename> already exists. Are you sure you want to overwrite it?").format(file_name)) if result == QMessageBox.No: raise OutputDeviceError.UserCanceledError() self.writeStarted.emit(self) # Actually writing file if file_handler: file_writer = file_handler.getWriter(selected_type["id"]) else: file_writer = Application.getInstance().getMeshFileHandler().getWriter(selected_type["id"]) try: mode = selected_type["mode"] if mode == MeshWriter.OutputMode.TextMode: Logger.log("d", "Writing to Local File %s in text mode", file_name) stream = open(file_name, "wt", encoding = "utf-8") elif mode == MeshWriter.OutputMode.BinaryMode: Logger.log("d", "Writing to Local File %s in binary mode", file_name) stream = open(file_name, "wb") else: Logger.log("e", "Unrecognised OutputMode.") return None job = WriteFileJob(file_writer, stream, nodes, mode) job.setFileName(file_name) job.setAddToRecentFiles(True) # The file will be added into the "recent files" list upon success job.progress.connect(self._onJobProgress) job.finished.connect(self._onWriteJobFinished) message = Message(catalog.i18nc("@info:progress Don't translate the XML tags <filename>!", "Saving to <filename>{0}</filename>").format(file_name), 0, False, -1 , catalog.i18nc("@info:title", "Saving")) message.show() job.setMessage(message) self._writing = True job.start() except PermissionError as e: Logger.log("e", "Permission denied when trying to write to %s: %s", file_name, str(e)) raise OutputDeviceError.PermissionDeniedError(catalog.i18nc("@info:status Don't translate the XML tags <filename>!", "Permission denied when trying to save <filename>{0}</filename>").format(file_name)) from e except OSError as e: Logger.log("e", "Operating system would not let us write to %s: %s", file_name, str(e)) raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status Don't translate the XML tags <filename> or <message>!", "Could not save to <filename>{0}</filename>: <message>{1}</message>").format()) from e