Пример #1
0
    def setup_form(self):
        super(FileFormWidget, self).setup_form()

        self.openButton = QLineEditToolButton(self)
        self.openButton.setIcon(QtGui.QIcon("assets/file-open.png"))

        self.openButton.clicked.connect(self._open_file)

        if "format" in self.info:
            self.setValidator(FileFormatValidator(self))
    def setup_form(self):
        super(FileFormWidget, self).setup_form()

        self.openButton = QLineEditToolButton(self)
        self.openButton.setIcon(QtGui.QIcon("assets/file-open.png"))

        self.openButton.clicked.connect(self._open_file)

        if "format" in self.info:
            self.setValidator(FileFormatValidator(self))
class FileFormWidget(TextFormWidget):
    def setup_form(self):
        super(FileFormWidget, self).setup_form()

        self.openButton = QLineEditToolButton(self)
        self.openButton.setIcon(QtGui.QIcon("assets/file-open.png"))

        self.openButton.clicked.connect(self._open_file)

        if "format" in self.info:
            self.setValidator(FileFormatValidator(self))

    def format_value(self, value):
        if value is None or value == "":
            return ""

        if "format" in self.info:
            # Change the value to a short or formatted value. Always prefer the 
            # short value for display unless there is no short version.
            short, full = self.settings.format_file(self.info["format"], value)
            value = short if short is not None else full

        return value

    def get_value(self):
        text = super(FileFormWidget, self).get_value()
        if text == "":
            return None

        # Final format conversion step. We convert back any short formated file 
        # name to the actual file name, if necessary.
        try:
            return self.settings.check_format(self.key, self.info, text)
        except ValueError:
            return self.info["value"]

    def _open_file(self):
        if "format" in self.info:
            directory, file_format = os.path.split(self.info["format"])
            file_type = os.path.splitext(file_format)[1]
            file_filter = "{} files (*{})".format(file_type[1:].upper(), file_type)
        else:
            directory = ""
            file_filter = ""

        work_dir = os.getcwd() + "/"

        color = self.get_background_color()
        self.set_background_color("")
        file_name = QtGui.QFileDialog.getOpenFileName(self, "Select file",
                                                      work_dir + directory,
                                                      file_filter)

        if file_name == "":
            self.set_background_color(color)
            return

        file_name = os.path.relpath(str(file_name), work_dir)

        self.setText(self.format_value(file_name))

    def resizeEvent(self, event):
        self.openButton.resizeEvent(event)
        self.form.resize_widget(self.key)
Пример #4
0
class FileFormWidget(TextFormWidget):
    def setup_form(self):
        super(FileFormWidget, self).setup_form()

        self.openButton = QLineEditToolButton(self)
        self.openButton.setIcon(QtGui.QIcon("assets/file-open.png"))

        self.openButton.clicked.connect(self._open_file)

        if "format" in self.info:
            self.setValidator(FileFormatValidator(self))

    def format_value(self, value):
        if value is None or value == "":
            return ""

        if "format" in self.info:
            # Change the value to a short or formatted value. Always prefer the
            # short value for display unless there is no short version.
            short, full = self.settings.format_file(self.info["format"], value)
            value = short if short is not None else full

        return value

    def get_value(self):
        text = super(FileFormWidget, self).get_value()
        if text == "":
            return None

        # Final format conversion step. We convert back any short formated file
        # name to the actual file name, if necessary.
        try:
            return self.settings.check_format(self.key, self.info, text)
        except ValueError:
            return self.info["value"]

    def _open_file(self):
        if "format" in self.info:
            directory, file_format = os.path.split(self.info["format"])
            file_type = os.path.splitext(file_format)[1]
            file_filter = "{} files (*{})".format(file_type[1:].upper(),
                                                  file_type)
        else:
            directory = ""
            file_filter = ""

        work_dir = os.getcwd() + "/"

        color = self.get_background_color()
        self.set_background_color("")
        file_name = QtGui.QFileDialog.getOpenFileName(self, "Select file",
                                                      work_dir + directory,
                                                      file_filter)

        if file_name == "":
            self.set_background_color(color)
            return

        file_name = os.path.relpath(str(file_name), work_dir)

        self.setText(self.format_value(file_name))

    def resizeEvent(self, event):
        self.openButton.resizeEvent(event)
        self.form.resize_widget(self.key)