Commit 74b5acf8 authored by John's avatar John
Browse files

change SourceDownload into a thread and add progress bar

parent 024b43d8
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ from .drawingpanel import DrawingPanel
from .scenetext_manager import SceneTextManager
from .mainwindowbars import TitleBar, LeftBar, BottomBar
from .io_thread import ImgSaveThread, ImportDocThread, ExportDocThread
from .stylewidgets import FrameLessMessageBox, ImgtransProgressMessageBox
from .stylewidgets import FrameLessMessageBox, ImgtransProgressMessageBox, SourceDownloadProgressMessageBox
from .preset_widget import PresetPanel
from .constants import CONFIG_PATH
from .global_search_widget import GlobalSearchWidget
@@ -70,6 +70,7 @@ class MainWindow(FramelessWindow):

    def setStyleSheet(self, styleSheet: str) -> None:
        self.imgtrans_progress_msgbox.setStyleSheet(styleSheet)
        self.source_download_msgbox.setStyleSheet(styleSheet)
        self.export_doc_thread.progress_bar.setStyleSheet(styleSheet)
        self.import_doc_thread.progress_bar.setStyleSheet(styleSheet)
        # sel_menu_size = self.selectext_minimenu.sizeHint()
@@ -208,6 +209,7 @@ class MainWindow(FramelessWindow):
        self.mainvlayout = mainVBoxLayout
        self.comicTransSplitter.setStretchFactor(1, 10)
        self.imgtrans_progress_msgbox = ImgtransProgressMessageBox()
        self.source_download_msgbox = SourceDownloadProgressMessageBox()
        self.resetStyleSheet()

    def setupConfig(self):
@@ -265,8 +267,10 @@ class MainWindow(FramelessWindow):
        self.configPanel.setupConfig()
        self.configPanel.save_config.connect(self.save_config)

        self.source_download = SourceDownload(config, self.imgtrans_proj)
        self.source_download = SourceDownload(config, self.imgtrans_proj, self.source_download_msgbox)
        self.source_download.open_downloaded_proj.connect(self.openDir)
        self.source_download.update_progress_bar.connect(self.source_download_msgbox.updateDownloadBar)
        self.source_download.finished_downloading.connect(self.on_finished_sync_source)

        textblock_mode = config.imgtrans_textblock
        if config.imgtrans_textedit:
@@ -914,6 +918,13 @@ class MainWindow(FramelessWindow):
                                    size.height() - msg_size.height()))
        self.dl_manager.progress_msgbox.move(p)

    def on_source_download_progressbox_showed(self):
        msg_size = self.source_download_msgbox.size()
        size = self.size()
        p = self.mapToGlobal(QPoint(size.width() - msg_size.width(),
                                    size.height() - msg_size.height()))
        self.source_download_msgbox.move(p)

    def on_closebtn_clicked(self):
        if self.imsave_thread.isRunning():
            self.imsave_thread.finished.connect(self.close)
@@ -931,7 +942,16 @@ class MainWindow(FramelessWindow):
        self.dl_manager.runImgtransPipeline()

    def on_run_sync_source(self):
        self.source_download.SyncSourceDownload()
        self.source_download_msgbox.show_all_bars()
        self.source_download_msgbox.zero_progress()
        self.source_download_msgbox.show()
        self.on_source_download_progressbox_showed()
        self.source_download.start()

    def on_finished_sync_source(self):
        self.source_download_msgbox.hide_all_bars()
        self.source_download_msgbox.hide()


    def on_transpanel_changed(self):
        self.canvas.editor_index = self.rightComicTransStackPanel.currentIndex()
+17 −3
Original line number Diff line number Diff line
from gallery_dl.job import DownloadJob
from gallery_dl import config
from qtpy.QtCore import QObject, Signal
from qtpy.QtCore import QObject, Signal, QThread
from utils.logger import logger as LOGGER
from ui.misc import ProgramConfig
from ui.imgtrans_proj import ProjImgTrans

class SourceDownload(QObject):
class SourceDownload(QThread):
    open_downloaded_proj = Signal(str)
    update_progress_bar = Signal(int)
    finished_downloading = Signal()

    def __init__(self, config: ProgramConfig, imgtrans_proj: ProjImgTrans, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.job = None
        self.config_pnl = config
        self.imgtrans_proj = imgtrans_proj
        self.path = ''
@@ -34,7 +37,14 @@ class SourceDownload(QObject):
    def openDownloadedProj(self, proj_path):
        self.open_downloaded_proj.emit(proj_path)

    def SyncSourceDownload(self):
    def _SyncSourceDownload(self):
        #  TODO keep track of downloaded page
        #  TODO edit DownloadJob to always include url
        import time
        for i in range(100):
            self.update_progress_bar.emit(i)
            LOGGER.info(i)
            time.sleep(0.05)
        self.url = self.config_pnl.src_link_flag
        if self.url:
            LOGGER.info(f'Url set to {self.url}')
@@ -49,3 +59,7 @@ class SourceDownload(QObject):
            if proj_path:
                self.openDownloadedProj(proj_path)

            self.finished_downloading.emit()

    def run(self):
        self._SyncSourceDownload()
 No newline at end of file
+22 −0
Original line number Diff line number Diff line
@@ -158,6 +158,28 @@ class ImgtransProgressMessageBox(ProgressMessageBox):
        self.translate_bar.hide()
        self.inpaint_bar.hide()

class SourceDownloadProgressMessageBox(ProgressMessageBox):
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(None, *args, **kwargs)

        self.download_bar = TaskProgressBar(self.tr('Downloading: '), self)

        layout = self.layout()
        layout.addWidget(self.download_bar)

    def updateDownloadBar(self, value: int, msg: str = ''):
        self.download_bar.updateProgress(value, msg)

    def zero_progress(self):
        self.updateDownloadBar(0)

    def show_all_bars(self):
        self.download_bar.show()

    def hide_all_bars(self):
        self.download_bar.hide()


class ColorPicker(QLabel):
    colorChanged = Signal(bool)
    changingColor = Signal()