Commit 5ac0d044 authored by dmMaze's avatar dmMaze
Browse files

support export source/translation as TEXT file, close #572

parent cd4d5e2f
Loading
Loading
Loading
Loading
+22 −2
Original line number Diff line number Diff line
@@ -41,13 +41,13 @@ class ProjImgTrans:
    def __init__(self, directory: str = None):
        self.type = 'imgtrans'
        self.directory: str = None
        self.pages: Dict[List[TextBlock]] = {}
        self.pages: Dict[str, List[TextBlock]] = {}
        self._pagename2idx = {}
        self._idx2pagename = {}

        self._fuzzy_inpainted_list = None

        self.not_found_pages: Dict[List[TextBlock]] = {}
        self.not_found_pages: Dict[str, List[TextBlock]] = {}
        self.new_pages: List[str] = []
        self.proj_path: str = None

@@ -384,6 +384,26 @@ class ProjImgTrans:
        if delete_tmp_folder:
            shutil.rmtree(cuts_dir)

    def dump_txt_path(self, dump_target, suffix):
        save_path = osp.join(self.directory, self.proj_name() + f'_{dump_target}{suffix}')
        return save_path

    def dump_txt(self, dump_target: str, suffix='.txt'):
        save_path = self.dump_txt_path(dump_target, suffix=suffix)
        text_all = []
        assert dump_target in {'source', 'translation'}
        assert suffix in {'.txt', '.md'}
        for page_name, blk_list in self.pages.items():
            text_in_page = ['### ' + page_name]
            for ii, blk in enumerate(blk_list):
                if dump_target == 'translation':
                    text = blk.translation.strip()
                elif dump_target == 'source':
                    text = blk.get_text().strip()
                text_in_page.append(f'{ii + 1}. {text}')
            text_all.append('\n\n'.join(text_in_page))
        with open(save_path, 'w', encoding='utf8') as f:
            f.write('\n\n\n'.join(text_all))

    def load_doc(self, doc_path, delete_tmp_folder=True, fin_page_signal=None):
        tmp_bubble_folder = osp.join(self.directory, 'img_folder')
+13 −0
Original line number Diff line number Diff line
@@ -135,6 +135,10 @@ class MainWindow(mainwindow_cls):
        self.leftBar.save_proj.connect(self.save_proj)
        self.leftBar.export_doc.connect(self.on_export_doc)
        self.leftBar.import_doc.connect(self.on_import_doc)
        self.leftBar.export_src_txt.connect(lambda : self.on_export_txt(dump_target='source'))
        self.leftBar.export_trans_txt.connect(lambda : self.on_export_txt(dump_target='translation'))
        self.leftBar.export_src_md.connect(lambda : self.on_export_txt(dump_target='source', suffix='.md'))
        self.leftBar.export_trans_md.connect(lambda : self.on_export_txt(dump_target='translation', suffix='.md'))

        self.pageList = PageListView()
        self.pageList.reveal_file.connect(self.on_reveal_file)
@@ -1166,6 +1170,15 @@ class MainWindow(mainwindow_cls):
    def on_import_doc(self):
        self.import_doc_thread.importDoc(self.imgtrans_proj)

    def on_export_txt(self, dump_target, suffix='.txt'):
        try:
            self.imgtrans_proj.dump_txt(dump_target=dump_target, suffix=suffix)
            msg = QMessageBox()
            msg.setText(self.tr('Text file exported to ') + self.imgtrans_proj.dump_txt_path(dump_target, suffix))
            msg.exec_()
        except Exception as e:
            create_error_dialog(e, self.tr('failed to export as TEXT file'))

    def on_reveal_file(self):
        current_img_path = self.imgtrans_proj.current_img_path()
        if sys.platform == 'win32':
+18 −8
Original line number Diff line number Diff line
@@ -107,9 +107,6 @@ class LeftBar(Widget):
    open_json_proj = Signal(str)
    save_proj = Signal()
    save_config = Signal()
    run_imgtrans = Signal()
    export_doc = Signal()
    import_doc = Signal()
    def __init__(self, mainwindow, *args, **kwargs) -> None:
        super().__init__(mainwindow, *args, **kwargs)
        self.mainwindow: QMainWindow = mainwindow
@@ -143,9 +140,19 @@ class LeftBar(Widget):
        actionSaveProj.setShortcut(QKeySequence.StandardKey.Save)

        actionExportAsDoc = QAction(self.tr("Export as Doc"), self)
        actionExportAsDoc.triggered.connect(self.export_doc)
        self.export_doc = actionExportAsDoc.triggered
        actionImportFromDoc = QAction(self.tr("Import from Doc"), self)
        actionImportFromDoc.triggered.connect(self.import_doc)
        self.import_doc = actionImportFromDoc.triggered

        actionExportSrcTxt = QAction(self.tr("Export soure text as TXT"), self)
        self.export_src_txt = actionExportSrcTxt.triggered
        actionExportTranslationTxt = QAction(self.tr("Export translation as TXT"), self)
        self.export_trans_txt = actionExportTranslationTxt.triggered

        actionExportSrcMD = QAction(self.tr("Export soure text as markdown"), self)
        self.export_src_md = actionExportSrcMD.triggered
        actionExportTranslationMD = QAction(self.tr("Export translation as markdown"), self)
        self.export_trans_md = actionExportTranslationMD.triggered

        self.recentMenu = QMenu(self.tr("Open Recent"), self)
        
@@ -156,7 +163,11 @@ class LeftBar(Widget):
        openMenu.addActions([
            actionSaveProj,
            actionExportAsDoc,
            actionImportFromDoc
            actionImportFromDoc,
            actionExportSrcTxt,
            actionExportTranslationTxt,
            actionExportSrcMD,
            actionExportTranslationMD,
        ])
        self.openBtn = OpenBtn()
        self.openBtn.setFixedSize(LEFTBTN_WIDTH, LEFTBTN_WIDTH)
@@ -170,8 +181,7 @@ class LeftBar(Widget):
        self.runImgtransBtn = QPushButton()
        self.runImgtransBtn.setText('RUN')
        self.runImgtransBtn.setFixedSize(LEFTBTN_WIDTH, LEFTBTN_WIDTH)
        self.runImgtransBtn.clicked.connect(self.run_imgtrans)

        self.run_imgtrans = self.runImgtransBtn.clicked
        self.runImgtransBtn.setFixedSize(LEFTBTN_WIDTH, LEFTBTN_WIDTH)

        vlayout = QVBoxLayout(self)