コード例 #1
0
class MainWindow(QMainWindow, Ui_MainWindow):
    browser = None
    meta = {}
    pdfcreator = PDFCreator()
    config = ConfigHandler()

    def __init__(self, *args, obj=None, **kwargs):
        super().__init__(*args, **kwargs)
        self.browser = Browser()
        self.setupUi(self)

        self.load_config()
        self.set_ui()
        self.set_signals()

    def load_config(self):
        if not self.config.has_section("main"):
            self.config.add_section("main")

        self.i_link.setText(self.config.get("main", "link", fallback=""))
        self.i_destination.setText(
            self.config.get("main", "destination", fallback=""))
        self.chk_create_pdf.setChecked(
            bool(self.config.get("main", "createPDF", fallback="False")))

        if not self.i_link.text() is "" and not self.i_destination.text() is "":
            self.update_info()

    def set_ui(self):
        self.pb_download.setValue(0)

    def set_signals(self):
        self.i_link.textChanged.connect(self.update_info)
        self.b_destination.clicked.connect(self.set_dest)
        self.b_download.clicked.connect(self.start_download)
        self.chk_create_pdf.clicked.connect(lambda x: self.config.set(
            "main", "createPDF", str(self.chk_create_pdf.isChecked())))

    def set_dest(self):
        dialog = QFileDialog()
        dialog.setDirectory(self.i_destination.text() or "/")
        destination = str(
            QFileDialog.getExistingDirectory(self, "Select Target Directory"))
        if destination:
            self.i_destination.setText(destination)
            self.config.set("main", "destination", destination)
            self.check_if_download_possible()

    def check_if_download_possible(self):
        if "http://rawmangaupdate.com" in self.i_link.text(
        ) and os.path.exists(self.i_destination.text()):
            self.b_download.setEnabled(True)

    def update_info(self):
        print("Info Updated")
        if "http://rawmangaupdate.com" in self.i_link.text():
            self.meta = self.browser.get_info(self.i_link.text())
            manga_chapter_names = self.meta["manga_chapter_names"]
            manga_chapter_links = self.meta["manga_chapter_links"]

            self.i_name.setText(self.meta["manga_title"])
            self.i_chapters.setText(f'{len(manga_chapter_links)}')

            self.cb_start.clear()
            self.cb_start.addItems(manga_chapter_names)
            self.cb_start.setCurrentIndex(0)

            self.cb_end.clear()
            self.cb_end.addItems(manga_chapter_names)
            self.cb_end.setCurrentIndex(len(manga_chapter_names) - 1)

            self.check_if_download_possible()

            self.config.set("main", "link", self.i_link.text())

    def start_download(self):
        self.browser.download_chapters(self.i_destination.text(), self.meta,
                                       self.cb_start.currentIndex(),
                                       self.cb_end.currentIndex())

        if self.chk_create_pdf.isChecked():
            self.pdfcreator.createPDF(
                os.path.join(self.i_destination.text(),
                             self.meta["manga_title"]))