Commit bb1bd8b3 authored by dmMaze's avatar dmMaze
Browse files

page_search: doc.find -> regexr

parent 9c15c234
Loading
Loading
Loading
Loading
+13 −9
Original line number Diff line number Diff line
@@ -276,13 +276,13 @@ class Canvas(QGraphicsScene):
    def keyPressEvent(self, event: QKeyEvent) -> None:
        if self.editing_textblkitem is not None:
            return super().keyPressEvent(event)
        if event == QKeySequence.Undo:
            self.undo()
            self.txtblkShapeControl.updateBoundingRect()
        elif event == QKeySequence.Redo:
            self.redo()
            self.txtblkShapeControl.updateBoundingRect()
        elif event.key() == Qt.Key.Key_Alt:
        # if event == QKeySequence.Undo:
        #     self.undo()
        #     self.txtblkShapeControl.updateBoundingRect()
        # elif event == QKeySequence.Redo:
        #     self.redo()
        #     self.txtblkShapeControl.updateBoundingRect()
        if event.key() == Qt.Key.Key_Alt:
            self.alt_pressed = True
        return super().keyPressEvent(event)

@@ -551,11 +551,15 @@ class Canvas(QGraphicsScene):
        undo_stack = self.get_active_undostack()
        if undo_stack is not None:
            undo_stack.redo()
            if undo_stack == self.text_undo_stack:
                self.txtblkShapeControl.updateBoundingRect()

    def undo(self):
        undo_stack = self.get_active_undostack()
        if undo_stack is not None:
            undo_stack.undo()
            if undo_stack == self.text_undo_stack:
                self.txtblkShapeControl.updateBoundingRect()

    def clear_undostack(self, update_saved_step=False):
        if update_saved_step:
@@ -575,10 +579,10 @@ class Canvas(QGraphicsScene):
        self.saved_textundo_step = self.text_undo_stack.index()

    def text_change_unsaved(self) -> bool:
        return self.saved_textundo_step == self.text_undo_stack.index()
        return self.saved_textundo_step != self.text_undo_stack.index()

    def draw_change_unsaved(self) -> bool:
        return self.saved_drawundo_step == self.draw_undo_stack.index()
        return self.saved_drawundo_step != self.draw_undo_stack.index()

    def prepareClose(self):
        self.blockSignals(True)
+2 −11
Original line number Diff line number Diff line
from qtpy.QtCore import Signal, Qt, QPointF, QSize, QLineF, QDateTime, QRectF, QPoint
from qtpy.QtWidgets import QGridLayout, QPushButton, QComboBox, QSizePolicy, QBoxLayout, QCheckBox, QHBoxLayout, QGraphicsView, QStackedWidget, QVBoxLayout, QLabel, QGraphicsPixmapItem, QGraphicsEllipseItem
from qtpy.QtGui import QPen, QColor, QCursor, QPainter, QPixmap, QBrush, QFontMetrics, QImage
try:
    from qtpy.QtWidgets import QUndoCommand, QUndoStack
    from qtpy.QtWidgets import QUndoCommand
except:
    from qtpy.QtGui import QUndoCommand, QUndoStack
    from qtpy.QtGui import QUndoCommand

from typing import Union, Tuple, List
import numpy as np
import cv2

from utils.imgproc_utils import enlarge_window
from utils.textblock_mask import canny_flood, connected_canny_flood
from utils.logger import logger

from .dl_manager import DLManager
from .image_edit import ImageEditMode, PixmapItem, DrawingLayer, StrokeImgItem
from .configpanel import InpaintConfigPanel
from .stylewidgets import Widget, SeparatorWidget, ColorPicker, PaintQSlider
from .canvas import Canvas



class StrokeItemUndoCommand(QUndoCommand):
    def __init__(self, target_layer: DrawingLayer, rect: Tuple[int], qimg: QImage, erasing=False):
        super().__init__()
+0 −1
Original line number Diff line number Diff line
@@ -572,7 +572,6 @@ class DrawingPanel(Widget):
            left = mask_x - rect_enlarged[0]
            right = rect_enlarged[2] - inpaint_rect[2]

            # print('inpaint_rect: ', inpaint_rect, 'enlarged: ', rect_enlarged, 'ltrb: ', left, top, right, bottom)
            mask = cv2.copyMakeBorder(mask, top, bottom, left, right, cv2.BORDER_CONSTANT, value=0)
            inpaint_rect = rect_enlarged
            img = img[inpaint_rect[1]: inpaint_rect[3], inpaint_rect[0]: inpaint_rect[2]]
+11 −11
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ from qtpy.QtCore import Qt, QItemSelection, QSize, Signal, QUrl, QThread
from qtpy.QtGui import QKeyEvent, QTextCursor, QStandardItemModel, QStandardItem, QFontMetrics, QColor, QShowEvent, QSyntaxHighlighter, QTextCharFormat

from typing import List, Union, Tuple, Dict
import re

from utils.logger import logger as LOGGER
from .page_search_widget import SearchEditor, HighlightMatched
@@ -13,7 +14,8 @@ from .textedit_area import TransPairWidget, SourceTextEdit, TransTextEdit
from .imgtrans_proj import ProjImgTrans
from .io_thread import ThreadBase

import re

SEARCH_RESULT_FONTSIZE = 12

class PageSearchThead(ThreadBase):

@@ -32,13 +34,11 @@ class PageSearchThead(ThreadBase):
        pass


SEARCH_RESULT_FONTSIZE = 12


class SearchResultItem(QStandardItem):
    def __init__(self, text: str, span: Tuple[int, int], blk_idx: int, pagename: str, is_src: bool):
        super().__init__()
        self.text = text
        self.show_text = text.replace('\n', ' ')
        self.start = span[0]
        self.end = span[1]
        self.is_src = is_src
@@ -49,7 +49,7 @@ class SearchResultItem(QStandardItem):
        font.setPointSizeF(SEARCH_RESULT_FONTSIZE)
        self.setFont(font)

        self.setText(text)
        self.setText(self.show_text)
        self.setEditable(False)

    def setBold(self, bold: bool):
@@ -69,6 +69,7 @@ class PageSeachResultItem(QStandardItem):
        font = self.font()
        font.setPointSizeF(SEARCH_RESULT_FONTSIZE)
        self.setFont(font)
        self.setEditable(False)

    def addResult(self, matched_span: Tuple[int, int], text: str, blk_idx: int, is_src: bool) -> SearchResultItem:
        self.matched_span_list.append(matched_span)
@@ -79,7 +80,6 @@ class PageSeachResultItem(QStandardItem):
        return rstitem



def gen_searchitem_list(span_list: List[int], text: str, blk_idx: int, pagename: str, is_src: bool) -> List[SearchResultItem]:
    sr_list = []
    for span in span_list:
@@ -277,7 +277,10 @@ class GlobalSearchWidget(Widget):
        if self.whole_word_toggle.isChecked():
            regexr = r'\b' + target_text + r'\b'
        
        try: 
            return re.compile(regexr, flag)
        except re.error:
            return None

    def commit_search(self):
        self.search_tree.clearPages()
@@ -313,9 +316,6 @@ class GlobalSearchWidget(Widget):

        self.search_tree.expandAll()


    

    def on_replaceall_btn_clicked(self):
        pass

+4 −3
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ from .misc import ImgnameNotInProjectException, ProjectLoadFailureException, Pro


def write_jpg_metadata(imgpath: str, metadata="a metadata"):
    exif_dict = {"Exif":{piexif.ExifIFD.UserComment: piexif.helper.UserComment.dump(metadata)}}
    exif_dict = {"Exif":{piexif.ExifIFD.UserComment: piexif.helper.UserComment.dump(metadata, encoding='unicode')}}
    exif_bytes = piexif.dump(exif_dict)
    piexif.insert(exif_bytes, imgpath)

@@ -309,11 +309,12 @@ class ProjImgTrans:
            for index, (cut_path, width) in enumerate(zip(cuts_path_list, cut_width_list)):
                run = table.cell(index, 0).paragraphs[0].add_run()
                run.style.font.name = target_font
                blk = blklist[index]
                blk: TextBlock = blklist[index]
                bubdict = vars(blk).copy()
                bubdict["imgkey"] = pagename
                bubdict["rich_text"] = ''
                write_jpg_metadata(cut_path, metadata=json.dumps(bubdict, ensure_ascii=False, cls=NumpyEncoder))
                bubdict["text"] = blk.get_text()
                write_jpg_metadata(cut_path, metadata=json.dumps(bubdict, ensure_ascii=False, cls=TextBlkEncoder))
                run.add_picture(cut_path, width=Inches(width/96 * 0.85))
                table.cell(index, 1).text = bubdict["translation"]

Loading