Esempio n. 1
0
class PDFMerger(QtWidgets.QMainWindow, Ui_PDFMergerUI):
    def __init__(self, app):
        super().__init__()
        self.app = app
        self.setupUi(self)
        self.show()

        self.current_dir = os.path.dirname(__file__)
        self.current_mode = "Merge"
        self.event_handler = EventHandler(self)
        self.current_tool = Merger(self)
        self.current_files = []
        self.setupProgramm()

    def setupProgramm(self):
        self.event_handler.connectButtons()
        self.setupConverterWidgets()
        self._setFixedWindowSize()
        self._setupStyling()
        self._setupIcon()

    def _setFixedWindowSize(self):
        self.setFixedSize(self.size())

    def _hideRadioButtons(self):
        self.radioButton_merge.hide()
        self.radioButton_split.hide()

    def _showRadioButtons(self):
        self.radioButton_merge.show()
        self.radioButton_split.show()

    def setupConverterWidgets(self):
        self._createConvertModeWidgets()
        self._addConvertWidgetsToModeLayout()
        self._addItemsToComboBoxes()
        self._hideConverterWidgets()

    def _hideConverterWidgets(self):
        [widget.hide() for widget in self.convertWidgets]

    def _showConverterWidgets(self):
        [widget.show() for widget in self.convertWidgets]

    def _createConvertModeWidgets(self):
        self.label_convert_as = QtWidgets.QLabel("Conversion Mode:")
        self.comboBox_convert_to = QtWidgets.QComboBox()
        self.label_convert_to = QtWidgets.QLabel("saving files to")
        self.comboBox_convert_from = QtWidgets.QComboBox()
        self.label_file = QtWidgets.QLabel("File")

        self.convertWidgets = [
            self.label_convert_as, self.comboBox_convert_from,
            self.label_convert_to, self.comboBox_convert_to, self.label_file
        ]

        self.comboBox_convert_from.currentText()

    def _addConvertWidgetsToModeLayout(self):
        [
            self.horizontalLayout_mode.addWidget(widget)
            for widget in self.convertWidgets
        ]

    def _addItemsToComboBoxes(self):
        self.comboBox_convert_to.addItem(".pdf")
        self._addItemsFromSupportedFormats()

    def _addItemsFromSupportedFormats(self):
        for item in supportedImageFormats:
            for format in supportedImageFormats[item]:
                self.comboBox_convert_to.addItem(format)

        for item in conversion:
            self.comboBox_convert_from.addItem(item)

    def _setupStyling(self):
        style_sheet_path = os.path.join(self.current_dir,
                                        "UIs/QDarkOrangeTheme.css")
        self.setStyleSheet(open(style_sheet_path).read())
        self.process_label.setText("Operating in Merge Mode")

    def _setupIcon(self):
        window_icon_path = os.path.join(self.current_dir, "UIs/Icon_PDF.png")
        icon = QtGui.QIcon(QtGui.QPixmap(window_icon_path))
        self.setWindowIcon(icon)

    # Delete Files
    def clearFiles(self):
        self.item_list.clear()
        self.current_files = []
        self.process_label.setText("All Files have been deleted")

    def clearSelectedFile(self):
        for item in self.item_list.selectedItems():
            self._takeItemFromList(item)
        self.process_label.setText("Selected Files have been removed")

    def _takeItemFromList(self, item):
        row = self.item_list.row(item)
        self.item_list.takeItem(row)
        self.current_files.remove(item.text())

    # Mode Setter

    def _setupModeChange(self):
        self._showRadioButtons()
        self._hideConverterWidgets()
        self.action_button.clicked.disconnect()

        self.process_label.setText(f"Operating in {self.current_mode} Mode")
        self.action_button.setText(self.current_mode)

    def setSplitMode(self):
        self.current_mode = "Split"
        self._setupModeChange()
        self.radioButton_split.setChecked(True)
        self.save_button.setDisabled(True)

        self.current_tool = Splitter(self)

    def setMergeMode(self):
        self._setupModeChange()
        self.radioButton_merge.setChecked(True)
        self.save_button.setDisabled(False)

        self.current_tool = Merger(self)

    def setImageConvertMode(self):
        self.current_mode = "Convert"
        self._setupModeChange()
        self._hideRadioButtons()
        self._showConverterWidgets()
        self.save_button.setDisabled(False)

        self.current_tool = Converter(self)