Esempio n. 1
0
    def _handle_multiple_files(self, info, files):
        """Handle uploading of multiple files.

        Loosely based on Helpviewer/HelpBrowserWV.py from eric5.

        Args:
            info: The ChooseMultipleFilesExtensionOption instance.
            files: The ChooseMultipleFilesExtensionReturn instance to write
                   return values to.

        Return:
            True on success, the superclass return value on failure.
        """
        handler = config.val.fileselect.handler
        if handler == "default":
            suggested_file = ""
            if info.suggestedFileNames:
                suggested_file = info.suggestedFileNames[0]

            files.fileNames, _ = QFileDialog.getOpenFileNames(
                None, None, suggested_file)  # type: ignore[arg-type]
            return True

        assert handler == "external", handler
        files.fileNames = shared.choose_file(shared.FileSelectionMode.multiple_files)
        return True
Esempio n. 2
0
    def chooseFile(self, parent_frame: QWebFrame, suggested_file: str) -> str:
        """Override chooseFile to (optionally) invoke custom file uploader."""
        handler = config.val.fileselect.handler
        if handler == "default":
            return super().chooseFile(parent_frame, suggested_file)

        assert handler == "external", handler
        selected = shared.choose_file(qb_mode=shared.FileSelectionMode.single_file)
        if not selected:
            return ''
        else:
            return selected[0]
Esempio n. 3
0
    def chooseFiles(
        self,
        mode: QWebEnginePage.FileSelectionMode,
        old_files: Iterable[str],
        accepted_mimetypes: Iterable[str],
    ) -> List[str]:
        """Override chooseFiles to (optionally) invoke custom file uploader."""
        handler = config.val.fileselect.handler
        if handler == "default":
            return super().chooseFiles(mode, old_files, accepted_mimetypes)

        assert handler == "external", handler
        return shared.choose_file(
            multiple=(mode == QWebEnginePage.FileSelectOpenMultiple))
Esempio n. 4
0
    def chooseFiles(
        self,
        mode: QWebEnginePage.FileSelectionMode,
        old_files: Iterable[str],
        accepted_mimetypes: Iterable[str],
    ) -> List[str]:
        """Override chooseFiles to (optionally) invoke custom file uploader."""
        handler = config.val.fileselect.handler
        if handler == "default":
            return super().chooseFiles(mode, old_files, accepted_mimetypes)
        assert handler == "external", handler
        try:
            qb_mode = _QB_FILESELECTION_MODES[mode]
        except KeyError:
            log.webview.warning(
                f"Got file selection mode {mode}, but we don't support that!")
            return super().chooseFiles(mode, old_files, accepted_mimetypes)

        return shared.choose_file(qb_mode=qb_mode)
Esempio n. 5
0
    def prompt_fileselect_external(self):
        """Choose a location using a configured external picker.

        This spawns the external fileselector configured via
        `fileselect.folder.command`.
        """
        assert self._prompt is not None
        if not isinstance(self._prompt, FilenamePrompt):
            raise cmdutils.CommandError(
                "Can only launch external fileselect for FilenamePrompt, "
                f"not {self._prompt.__class__.__name__}")
        # XXX to avoid current cyclic import
        from qutebrowser.browser import shared
        folders = shared.choose_file(shared.FileSelectionMode.folder)
        if not folders:
            message.info("No folder chosen.")
            return
        # choose_file already checks that this is max one folder
        assert len(folders) == 1
        self.prompt_accept(folders[0])