Exemple #1
0
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 ''
Exemple #2
0
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()
Exemple #3
0
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()
Exemple #4
0
 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
Exemple #7
0
 def open_folder(self):
     # диалоговое окно открытия папки
     dialog = QFileDialog()
     dialog.setFileMode(QFileDialog.DirectoryOnly)
     dialog.setOption(QFileDialog.ShowDirsOnly)
     if dialog.exec():
         self.folderName_Edit.setText(dialog.selectedFiles()[0])
Exemple #8
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)
Exemple #9
0
    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
Exemple #10
0
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
Exemple #11
0
    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
Exemple #12
0
    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
Exemple #14
0
    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")
Exemple #17
0
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
Exemple #19
0
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])
Exemple #21
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
Exemple #22
0
    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)
Exemple #23
0
 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]
Exemple #24
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)
Exemple #25
0
 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())
Exemple #26
0
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
Exemple #27
0
 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))
Exemple #28
0
 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)
Exemple #29
0
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()
Exemple #30
0
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
Exemple #31
0
    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)
Exemple #32
0
    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_()
Exemple #33
0
 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 []
Exemple #34
0
 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()
Exemple #35
0
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
Exemple #36
0
 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()
Exemple #37
0
	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])
Exemple #38
0
 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("新近添加"))
Exemple #39
0
 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("新近添加"))
Exemple #40
0
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)
Exemple #41
0
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)
Exemple #42
0
    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