Commit 3eb1e360 authored by dmMaze's avatar dmMaze
Browse files

fix startup crashes

parent bb8ab911
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@ from typing import Union
import numpy as np
import traceback


from PyQt5.QtCore import QThread, pyqtSignal, QObject, QLocale
from PyQt5.QtWidgets import QMessageBox

@@ -403,23 +402,23 @@ class DLManager(QObject):
        self.textdetect_thread = TextDetectThread(self.dl_config)
        self.textdetect_thread.finish_set_module.connect(self.on_finish_setdetector)
        # self.textdetect_thread.finish_detect_page.connect(self.on_finish_detect_page)
        self.textdetect_thread.exception_occurred.connect(self.handleRunningException)
        self.textdetect_thread.exception_occurred.connect(self.handleRunTimeException)

        self.ocr_thread = OCRThread(self.dl_config)
        self.ocr_thread.finish_set_module.connect(self.on_finish_setocr)
        # self.ocr_thread.finish_ocr_page.connect(self.on_finish_ocr_page)
        self.ocr_thread.exception_occurred.connect(self.handleRunningException)
        self.ocr_thread.exception_occurred.connect(self.handleRunTimeException)

        self.translate_thread = TranslateThread(dl_config)
        self.translate_thread.progress_changed.connect(self.on_update_translate_progress)
        self.translate_thread.finish_set_module.connect(self.on_finish_settranslator)
        self.translate_thread.finish_translate_page.connect(self.on_finish_translate_page)
        self.translate_thread.exception_occurred.connect(self.handleRunningException)        
        self.translate_thread.exception_occurred.connect(self.handleRunTimeException)        

        self.inpaint_thread = InpaintThread(dl_config)
        self.inpaint_thread.finish_set_module.connect(self.on_finish_setinpainter)
        self.inpaint_thread.finish_inpaint.connect(self.on_finish_inpaint)
        self.inpaint_thread.exception_occurred.connect(self.handleRunningException)        
        self.inpaint_thread.exception_occurred.connect(self.handleRunTimeException)        

        self.progress_msgbox = ProgressMessageBox()

@@ -428,7 +427,7 @@ class DLManager(QObject):
        self.imgtrans_thread.update_ocr_progress.connect(self.on_update_ocr_progress)
        self.imgtrans_thread.update_translate_progress.connect(self.on_update_translate_progress)
        self.imgtrans_thread.update_inpaint_progress.connect(self.on_update_inpaint_progress)
        self.imgtrans_thread.exception_occurred.connect(self.handleRunningException)
        self.imgtrans_thread.exception_occurred.connect(self.handleRunTimeException)

        self.translator_panel = translator_panel = config_panel.trans_config_panel        
        translator_setup_params = self.dl_config.translator_setup_params
@@ -661,10 +660,10 @@ class DLManager(QObject):
        self.inpaint(**inpaint_dict)

    def on_settranslator_failed(self, translator: str, msg: str):
        self.handleRunningException(f'Failed to set translator {translator}', msg)
        self.handleRunTimeException(f'Failed to set translator {translator}', msg)

    def on_setinpainter_failed(self, inpainter: str, msg: str):
        self.handleRunningException(f'Failed to set inpainter {inpainter}', msg)
        self.handleRunTimeException(f'Failed to set inpainter {inpainter}', msg)

    def on_translatorsource_changed(self):
        text = self.translator_panel.source_combobox.currentText()
@@ -719,12 +718,14 @@ class DLManager(QObject):
                               param_key: str, param_content: str):
            module.updateParam(param_key, param_content)
        
    def handleRunningException(self, msg: str, detail: str = None):
        LOGGER.error(msg + '\n' + detail)
    def handleRunTimeException(self, msg: str, detail: str = None):
        if detail is not None:
            msg += ': ' + detail
        verbose = traceback.format_exc()
        LOGGER.error(msg + '\n' + verbose)
        err = QMessageBox()
        err.setText(msg)
        if detail is not None:
            err.setDetailedText(detail)
        err.setDetailedText(verbose)
        err.exec()

    def on_inpainter_checker_changed(self, is_checked: bool):
+8 −8
Original line number Diff line number Diff line
@@ -2,12 +2,11 @@ import os.path as osp
import os
import json

from PyQt5.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QApplication, QStackedWidget, QWidget, QSizePolicy, QComboBox, QListView, QToolBar, QMenu, QSpacerItem, QPushButton, QGraphicsDropShadowEffect, QCheckBox, QToolButton, QSplitter, QListWidget, QShortcut, QListWidgetItem
from PyQt5.QtCore import Qt, pyqtSignal, QPoint, QSize, QThread
from PyQt5.QtGui import QGuiApplication, QIcon, QCloseEvent, QKeySequence, QImage, QPainter, QMouseEvent
from PyQt5.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QApplication, QStackedWidget, QWidget, QSplitter, QListWidget, QShortcut, QListWidgetItem
from PyQt5.QtCore import Qt, QPoint, QSize
from PyQt5.QtGui import QGuiApplication, QIcon, QCloseEvent, QKeySequence, QImage, QPainter

from utils.logger import logger as LOGGER

from .misc import ProjImgTrans
from .canvas import Canvas
from .configpanel import ConfigPanel
@@ -18,7 +17,7 @@ from .scenetext_manager import SceneTextManager
from .mainwindowbars import TitleBar, LeftBar, RightBar, BottomBar
from .io_thread import ImgSaveThread
from .stylewidgets import FrameLessMessageBox
from .constants import STYLESHEET_PATH, CONFIG_PATH, DPI, LDPI, LANG_SUPPORT_VERTICAL, DRAWPANEL_WIDTH
from .constants import STYLESHEET_PATH, CONFIG_PATH, LANG_SUPPORT_VERTICAL
from . import constants

class PageListView(QListWidget):    
@@ -38,7 +37,6 @@ class MainWindow(QMainWindow):
        super().__init__(*args, **kwargs)
        self.setWindowFlags(Qt.WindowType.FramelessWindowHint)

        constants.DPI = QGuiApplication.primaryScreen().physicalDotsPerInch()
        constants.LDPI = QGuiApplication.primaryScreen().logicalDotsPerInch()

        self.app = app
@@ -201,7 +199,7 @@ class MainWindow(QMainWindow):
        except Exception as e:
            LOGGER.exception(e)
            LOGGER.warning("Failed to load project from " + directory)
            self.dl_manager.handleRunningException(self.tr('Failed to load project ') + directory, '')
            self.dl_manager.handleRunTimeException(self.tr('Failed to load project ') + directory, '')
            return
        self.proj_directory = directory
        self.titleBar.setTitleContent(osp.basename(directory))
@@ -427,8 +425,10 @@ class MainWindow(QMainWindow):
        self.bottomBar.inpainterStatBtn.updateStatus(inpainter)

    def on_transpagebtn_pressed(self, run_target: bool):
        
        page_key = self.imgtrans_proj.current_img
        if page_key is None:
            self.bottomBar.transTranspageBtn.setRunText()
            return
        if run_target:
            self.st_manager.updateTextBlkList()
        self.dl_manager.translatePage(run_target, page_key)
+2 −3
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ from PyQt5.QtGui import QMouseEvent, QKeySequence
from typing import List

from .stylewidgets import Widget, PaintQSlider
from .constants import WINDOW_BORDER_WIDTH, BOTTOMBAR_HEIGHT, DRAG_DIR_NONE, DRAG_DIR_HOR, DRAG_DIR_VER, DRAG_DIR_BDIAG, DRAG_DIR_FDIAG
from .constants import WINDOW_BORDER_WIDTH, BOTTOMBAR_HEIGHT, DRAG_DIR_NONE, DRAG_DIR_VER, DRAG_DIR_BDIAG, DRAG_DIR_FDIAG


class ShowPageListChecker(QCheckBox):
@@ -45,11 +45,11 @@ class RunStopTextBtn(StatusButton):

    def on_pressed(self):
        self.running = not self.running
        self.run_target.emit(self.running)
        if self.running:
            self.setStopText()
        else:
            self.setRunText()
        self.run_target.emit(self.running)

    def setRunText(self):
        self.setText(self.run_text)
@@ -266,7 +266,6 @@ class LeftBar(Widget):

    def onSaveProj(self):
        self.save_proj.emit()
        pass

    def onExportAsDoc(self):
        raise NotImplementedError
+9 −2
Original line number Diff line number Diff line
@@ -8,11 +8,13 @@ from collections import OrderedDict
from typing import Tuple, Union, List, Dict
from PyQt5.QtGui import QPixmap,  QColor, QImage

from . import constants
from .constants import DEFAULT_FONT_FAMILY
from utils.logger import logger as LOGGER
from utils.io_utils import find_all_imgs, NumpyEncoder, imread, imwrite
from dl.textdetector.textblock import TextBlock

from . import constants

# return bgr tuple
def qrgb2bgr(color: Union[QColor, Tuple, List] = None) -> Tuple[int, int, int]:
    if color is not None:
@@ -101,6 +103,7 @@ class Proj:
        proj.load_from_dict(proj_dict)
        return proj


class ProjImgTrans:

    def __init__(self, directory: str = None):
@@ -166,7 +169,11 @@ class ProjImgTrans:
        except Exception as e:
            raise ProjectNotSupportedException(e)
        if 'current_img' in proj_dict:
            self.set_current_img(proj_dict['current_img'])
            current_img = proj_dict['current_img']
            try:
                self.set_current_img(current_img)
            except ImgnameNotInProjectException:
                LOGGER.warning(f'{current_img} not found.')
        else:
            self.set_current_img_byidx(0)

+2 −0
Original line number Diff line number Diff line
@@ -417,6 +417,8 @@ class SceneTextManager(QObject):

    def updateTextBlkList(self):
        cbl = self.imgtrans_proj.current_block_list()
        if cbl is None:
            return
        cbl.clear()
        for blk_item, trans_pair in zip(self.textblk_item_list, self.pairwidget_list):
            if not blk_item.document().isEmpty():