Loading ui/scenetext_manager.py +1 −1 Original line number Diff line number Diff line Loading @@ -1008,7 +1008,7 @@ class SceneTextManager(QObject): def on_push_textitem_undostack(self, num_steps: int, is_formatting: bool): blkitem: TextBlkItem = self.sender() e_trans = self.pairwidget_list[blkitem.idx].e_trans if not is_formatting else None self.canvas.push_undo_command(TextItemEditCommand(blkitem, e_trans, num_steps), update_pushed_step=is_formatting) self.canvas.push_undo_command(TextItemEditCommand(blkitem, e_trans, num_steps, self.textpanel.formatpanel), update_pushed_step=is_formatting) def on_push_edit_stack(self, num_steps: int): edit: Union[TransTextEdit, SourceTextEdit] = self.sender() Loading ui/text_panel.py +2 −4 Original line number Diff line number Diff line Loading @@ -599,9 +599,7 @@ class FontFormatPanel(Widget): if not self.restoring_textblk: blk_fmt = textblk_item.get_fontformat() self.textblk_item = textblk_item multi_size = False if not textblk_item.isEditing(): multi_size = textblk_item.isMultiFontSize() multi_size = not textblk_item.isEditing() and textblk_item.isMultiFontSize() self.set_active_format(blk_fmt, multi_size) self.textstyle_panel.setTitle(f'TextBlock #{textblk_item.idx}') Loading ui/textedit_commands.py +11 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ except: from .textitem import TextBlkItem, TextBlock from .textedit_area import TransTextEdit, SourceTextEdit from utils.fontformat import FontFormat import utils.config as C from .misc import doc_replace, doc_replace_no_shift from .texteditshapecontrol import TextBlkShapeControl from .page_search_widget import PageSearchWidget, Matched Loading Loading @@ -261,13 +262,14 @@ class ResetAngleCommand(QUndoCommand): self.ctrl.setAngle(angle) class TextItemEditCommand(QUndoCommand): def __init__(self, blkitem: TextBlkItem, trans_edit: TransTextEdit, num_steps: int): def __init__(self, blkitem: TextBlkItem, trans_edit: TransTextEdit, num_steps: int, formatpanel=None): super(TextItemEditCommand, self).__init__() self.op_counter = 0 self.edit = trans_edit self.blkitem = blkitem self.num_steps = num_steps self.is_formatting = blkitem.is_formatting self.formatpanel = formatpanel def redo(self): if self.op_counter == 0: Loading @@ -281,6 +283,10 @@ class TextItemEditCommand(QUndoCommand): if self.num_steps > 0: self.blkitem.repaint_background() if self.is_formatting and self.blkitem == self.formatpanel.textblk_item: multi_size = not self.blkitem.isEditing() and self.blkitem.isMultiFontSize() self.formatpanel.set_active_format(self.blkitem.get_fontformat(), multi_size) if self.edit is not None and not self.is_formatting: self.edit.redo() Loading @@ -292,6 +298,10 @@ class TextItemEditCommand(QUndoCommand): if self.num_steps > 0: self.blkitem.repaint_background() if self.is_formatting and self.blkitem == self.formatpanel.textblk_item: multi_size = not self.blkitem.isEditing() and self.blkitem.isMultiFontSize() self.formatpanel.set_active_format(self.blkitem.get_fontformat(), multi_size) if self.edit is not None: self.edit.undo() Loading ui/textitem.py +20 −1 Original line number Diff line number Diff line Loading @@ -516,6 +516,22 @@ class TextBlkItem(QGraphicsTextItem): block = block.next() return False def minFontSize(self, to_px=True): doc = self.document() block = doc.firstBlock() min_font_size = self.textCursor().charFormat().fontPointSize() while block.isValid(): it = block.begin() while not it.atEnd(): fragment = it.fragment() font_size = fragment.charFormat().fontPointSize() min_font_size = min(min_font_size, font_size) it += 1 block = block.next() if to_px: min_font_size = pt2px(min_font_size) return min_font_size def mouseDoubleClickEvent(self, event: QGraphicsSceneMouseEvent) -> None: if not self.isEditing(): self.startEdit(pos=event.pos()) Loading Loading @@ -577,7 +593,10 @@ class TextBlkItem(QGraphicsTextItem): fontformat.frgb = [color.red(), color.green(), color.blue()] fontformat.font_weight = font.weight() fontformat.font_family = font.family() if self.isEditing(): fontformat.font_size = pt2px(font.pointSizeF()) else: fontformat.font_size = self.minFontSize() fontformat.bold = font.bold() fontformat.underline = font.underline() fontformat.italic = font.italic() Loading Loading
ui/scenetext_manager.py +1 −1 Original line number Diff line number Diff line Loading @@ -1008,7 +1008,7 @@ class SceneTextManager(QObject): def on_push_textitem_undostack(self, num_steps: int, is_formatting: bool): blkitem: TextBlkItem = self.sender() e_trans = self.pairwidget_list[blkitem.idx].e_trans if not is_formatting else None self.canvas.push_undo_command(TextItemEditCommand(blkitem, e_trans, num_steps), update_pushed_step=is_formatting) self.canvas.push_undo_command(TextItemEditCommand(blkitem, e_trans, num_steps, self.textpanel.formatpanel), update_pushed_step=is_formatting) def on_push_edit_stack(self, num_steps: int): edit: Union[TransTextEdit, SourceTextEdit] = self.sender() Loading
ui/text_panel.py +2 −4 Original line number Diff line number Diff line Loading @@ -599,9 +599,7 @@ class FontFormatPanel(Widget): if not self.restoring_textblk: blk_fmt = textblk_item.get_fontformat() self.textblk_item = textblk_item multi_size = False if not textblk_item.isEditing(): multi_size = textblk_item.isMultiFontSize() multi_size = not textblk_item.isEditing() and textblk_item.isMultiFontSize() self.set_active_format(blk_fmt, multi_size) self.textstyle_panel.setTitle(f'TextBlock #{textblk_item.idx}') Loading
ui/textedit_commands.py +11 −1 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ except: from .textitem import TextBlkItem, TextBlock from .textedit_area import TransTextEdit, SourceTextEdit from utils.fontformat import FontFormat import utils.config as C from .misc import doc_replace, doc_replace_no_shift from .texteditshapecontrol import TextBlkShapeControl from .page_search_widget import PageSearchWidget, Matched Loading Loading @@ -261,13 +262,14 @@ class ResetAngleCommand(QUndoCommand): self.ctrl.setAngle(angle) class TextItemEditCommand(QUndoCommand): def __init__(self, blkitem: TextBlkItem, trans_edit: TransTextEdit, num_steps: int): def __init__(self, blkitem: TextBlkItem, trans_edit: TransTextEdit, num_steps: int, formatpanel=None): super(TextItemEditCommand, self).__init__() self.op_counter = 0 self.edit = trans_edit self.blkitem = blkitem self.num_steps = num_steps self.is_formatting = blkitem.is_formatting self.formatpanel = formatpanel def redo(self): if self.op_counter == 0: Loading @@ -281,6 +283,10 @@ class TextItemEditCommand(QUndoCommand): if self.num_steps > 0: self.blkitem.repaint_background() if self.is_formatting and self.blkitem == self.formatpanel.textblk_item: multi_size = not self.blkitem.isEditing() and self.blkitem.isMultiFontSize() self.formatpanel.set_active_format(self.blkitem.get_fontformat(), multi_size) if self.edit is not None and not self.is_formatting: self.edit.redo() Loading @@ -292,6 +298,10 @@ class TextItemEditCommand(QUndoCommand): if self.num_steps > 0: self.blkitem.repaint_background() if self.is_formatting and self.blkitem == self.formatpanel.textblk_item: multi_size = not self.blkitem.isEditing() and self.blkitem.isMultiFontSize() self.formatpanel.set_active_format(self.blkitem.get_fontformat(), multi_size) if self.edit is not None: self.edit.undo() Loading
ui/textitem.py +20 −1 Original line number Diff line number Diff line Loading @@ -516,6 +516,22 @@ class TextBlkItem(QGraphicsTextItem): block = block.next() return False def minFontSize(self, to_px=True): doc = self.document() block = doc.firstBlock() min_font_size = self.textCursor().charFormat().fontPointSize() while block.isValid(): it = block.begin() while not it.atEnd(): fragment = it.fragment() font_size = fragment.charFormat().fontPointSize() min_font_size = min(min_font_size, font_size) it += 1 block = block.next() if to_px: min_font_size = pt2px(min_font_size) return min_font_size def mouseDoubleClickEvent(self, event: QGraphicsSceneMouseEvent) -> None: if not self.isEditing(): self.startEdit(pos=event.pos()) Loading Loading @@ -577,7 +593,10 @@ class TextBlkItem(QGraphicsTextItem): fontformat.frgb = [color.red(), color.green(), color.blue()] fontformat.font_weight = font.weight() fontformat.font_family = font.family() if self.isEditing(): fontformat.font_size = pt2px(font.pointSizeF()) else: fontformat.font_size = self.minFontSize() fontformat.bold = font.bold() fontformat.underline = font.underline() fontformat.italic = font.italic() Loading