Loading ui/canvas.py +6 −5 Original line number Diff line number Diff line Loading @@ -77,8 +77,6 @@ class CustomGV(QGraphicsView): self.setAlignment(Qt.AlignmentFlag.AlignCenter) self.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) # self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) # self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) def wheelEvent(self, event : QWheelEvent) -> None: # qgraphicsview always scroll content according to wheelevent Loading Loading @@ -921,6 +919,7 @@ class Canvas(QGraphicsScene): self.text_undo_stack.redo() def undo_textedit(self): if self.num_pushed_textstep > 0: self.num_pushed_textstep -= 1 self.text_undo_stack.undo() Loading @@ -943,10 +942,12 @@ class Canvas(QGraphicsScene): def undo(self): if self.textEditMode(): undo_stack = self.text_undo_stack if self.num_pushed_textstep > 0: self.num_pushed_textstep -= 1 self.on_textstack_changed() elif self.drawMode(): undo_stack = self.draw_undo_stack if self.num_pushed_drawstep > 0: self.num_pushed_drawstep -= 1 self.on_drawstack_changed() else: Loading ui/text_effect.py +0 −6 Original line number Diff line number Diff line Loading @@ -9,12 +9,6 @@ class TextEffectPanel(PanelArea): def __init__(self, panel_name: str, config_name: str, config_expand_name: str): super().__init__(panel_name, config_name, config_expand_name) # self.flayout = FlowLayout(self.scrollContent) # # margin = 7 # # self.flayout.setVerticalSpacing(7) # # self.flayout.setHorizontalSpacing(7) # # self.flayout.setContentsMargins(margin, margin, margin, margin) gradient_group = PanelGroupBox(title=self.tr('Gradient')) gradient_group.setAutoFillBackground(True) glayout = QVBoxLayout(gradient_group) Loading ui/textedit_area.py +5 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,11 @@ class SourceTextEdit(QTextEdit): elif e.key() == Qt.Key.Key_V: self.paste_flag = True return super().keyPressEvent(e) elif e.modifiers() == Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier: if e.key() == Qt.Key.Key_Z: e.accept() self.redo_signal.emit() return elif e.key() == Qt.Key.Key_Return: e.accept() self.textCursor().insertText('\n') Loading ui/textedit_commands.py +4 −2 Original line number Diff line number Diff line Loading @@ -267,9 +267,11 @@ class TextItemEditCommand(QUndoCommand): self.blkitem = blkitem self.num_steps = min(num_steps, 2) if blkitem.input_method_from == -1: if not blkitem.is_formatting: self.num_steps = 1 else: blkitem.input_method_from = -1 self.is_formatting = blkitem.is_formatting def redo(self): if self.op_counter == 0: Loading @@ -277,7 +279,7 @@ class TextItemEditCommand(QUndoCommand): return for _ in range(self.num_steps): self.blkitem.redo() if self.edit is not None: if self.edit is not None and not self.is_formatting: self.edit.redo() def undo(self): Loading ui/textitem.py +18 −25 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ class TextBlkItem(QGraphicsTextItem): self.input_method_from = -1 self.input_method_text = '' self.block_all_input = False self.block_change_signal = False self.layout: Union[VerticalTextDocumentLayout, HorizontalTextDocumentLayout] = None self.document().setDocumentMargin(0) Loading @@ -85,7 +86,7 @@ class TextBlkItem(QGraphicsTextItem): return self.textInteractionFlags() == Qt.TextInteractionFlag.TextEditorInteraction def on_content_changed(self): if (self.hasFocus() or self.is_formatting) and not self.pre_editing: if (self.hasFocus() or self.is_formatting) and not self.pre_editing and not self.block_change_signal: # self.content_changed.emit(self) if not self.in_redo_undo: Loading Loading @@ -229,8 +230,7 @@ class TextBlkItem(QGraphicsTextItem): bx1, by1, bx2, by2 = xyxy xywh = np.array([[bx1, by1, bx2-bx1, by2-by1]]) blk.lines = xywh2xyxypoly(xywh).reshape(-1, 4, 2).tolist() init_html = blk.rich_text if blk.rich_text else blk.get_text() self.setVertical(blk.vertical, init_html) self.setVertical(blk.vertical) self.setRect(blk.bounding_rect()) if blk.angle != 0: Loading Loading @@ -366,56 +366,41 @@ class TextBlkItem(QGraphicsTextItem): self.setRotation(angle) self.blk.angle = angle def setVertical(self, vertical: bool, init_html: str = None): def setVertical(self, vertical: bool): if self.fontformat is not None: self.fontformat.vertical = vertical valid_layout = True doc = self.document() if self.layout is not None: if isinstance(self.layout, VerticalTextDocumentLayout) == vertical: return self.layout.size_enlarged.disconnect(self.on_document_enlarged) self.layout.documentSizeChanged.disconnect(self.docSizeChanged) else: valid_layout = False doc.contentsChanged.connect(self.on_content_changed) doc.contentsChange.connect(self.on_content_changing) if valid_layout: rect = self.rect() if self.layout is not None else None self.setTextInteractionFlags(Qt.TextInteractionFlag.NoTextInteraction) doc = self.document() html = doc.toHtml() doc_margin = doc.documentMargin() doc.blockSignals(True) doc.documentLayout().blockSignals(True) default_font = doc.defaultFont() doc = QTextDocument() doc.setDocumentMargin(doc_margin) if not valid_layout and init_html is not None: doc.setHtml(html) if vertical: layout = VerticalTextDocumentLayout(doc, self.fontformat) else: layout = HorizontalTextDocumentLayout(doc, self.fontformat) self.layout = layout self.setDocument(doc) doc.setDocumentLayout(layout) doc.setDefaultFont(default_font) doc.contentsChanged.connect(self.on_content_changed) doc.contentsChange.connect(self.on_content_changing) layout.size_enlarged.connect(self.on_document_enlarged) layout.documentSizeChanged.connect(self.docSizeChanged) if valid_layout: layout.setMaxSize(rect.width(), rect.height()) doc.setHtml(html) self.setCenterTransform() self.repaint_background() if self.fontformat.letter_spacing != 1: self.setLetterSpacing(self.fontformat.letter_spacing, force=True) self.doc_size_changed.emit(self.idx) def updateUndoSteps(self): Loading Loading @@ -447,6 +432,11 @@ class TextBlkItem(QGraphicsTextItem): e.accept() self.pasted.emit(self.idx) return elif e.modifiers() == Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier: if e.key() == Qt.Key.Key_Z: e.accept() self.redo_signal.emit() return elif e.key() == Qt.Key.Key_Return: e.accept() self.textCursor().insertText('\n') Loading Loading @@ -649,12 +639,15 @@ class TextBlkItem(QGraphicsTextItem): self.blk.fontformat.merge(fmt) def set_cursor_cfmt(self, cursor: QTextCursor, cfmt: QTextCharFormat, merge_char: bool = False): doc_is_empty = self.document().isEmpty() if merge_char: self.block_change_signal = True cursor.mergeCharFormat(cfmt) self.block_change_signal = False cursor.mergeBlockCharFormat(cfmt) cursor.clearSelection() self.setTextCursor(cursor) if self.document().isEmpty(): if doc_is_empty: self.document().setDefaultFont(cursor.blockCharFormat().font()) def _before_set_ffmt(self, set_selected: bool, restore_cursor: bool): Loading Loading
ui/canvas.py +6 −5 Original line number Diff line number Diff line Loading @@ -77,8 +77,6 @@ class CustomGV(QGraphicsView): self.setAlignment(Qt.AlignmentFlag.AlignCenter) self.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) # self.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) # self.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff) def wheelEvent(self, event : QWheelEvent) -> None: # qgraphicsview always scroll content according to wheelevent Loading Loading @@ -921,6 +919,7 @@ class Canvas(QGraphicsScene): self.text_undo_stack.redo() def undo_textedit(self): if self.num_pushed_textstep > 0: self.num_pushed_textstep -= 1 self.text_undo_stack.undo() Loading @@ -943,10 +942,12 @@ class Canvas(QGraphicsScene): def undo(self): if self.textEditMode(): undo_stack = self.text_undo_stack if self.num_pushed_textstep > 0: self.num_pushed_textstep -= 1 self.on_textstack_changed() elif self.drawMode(): undo_stack = self.draw_undo_stack if self.num_pushed_drawstep > 0: self.num_pushed_drawstep -= 1 self.on_drawstack_changed() else: Loading
ui/text_effect.py +0 −6 Original line number Diff line number Diff line Loading @@ -9,12 +9,6 @@ class TextEffectPanel(PanelArea): def __init__(self, panel_name: str, config_name: str, config_expand_name: str): super().__init__(panel_name, config_name, config_expand_name) # self.flayout = FlowLayout(self.scrollContent) # # margin = 7 # # self.flayout.setVerticalSpacing(7) # # self.flayout.setHorizontalSpacing(7) # # self.flayout.setContentsMargins(margin, margin, margin, margin) gradient_group = PanelGroupBox(title=self.tr('Gradient')) gradient_group.setAutoFillBackground(True) glayout = QVBoxLayout(gradient_group) Loading
ui/textedit_area.py +5 −0 Original line number Diff line number Diff line Loading @@ -277,6 +277,11 @@ class SourceTextEdit(QTextEdit): elif e.key() == Qt.Key.Key_V: self.paste_flag = True return super().keyPressEvent(e) elif e.modifiers() == Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier: if e.key() == Qt.Key.Key_Z: e.accept() self.redo_signal.emit() return elif e.key() == Qt.Key.Key_Return: e.accept() self.textCursor().insertText('\n') Loading
ui/textedit_commands.py +4 −2 Original line number Diff line number Diff line Loading @@ -267,9 +267,11 @@ class TextItemEditCommand(QUndoCommand): self.blkitem = blkitem self.num_steps = min(num_steps, 2) if blkitem.input_method_from == -1: if not blkitem.is_formatting: self.num_steps = 1 else: blkitem.input_method_from = -1 self.is_formatting = blkitem.is_formatting def redo(self): if self.op_counter == 0: Loading @@ -277,7 +279,7 @@ class TextItemEditCommand(QUndoCommand): return for _ in range(self.num_steps): self.blkitem.redo() if self.edit is not None: if self.edit is not None and not self.is_formatting: self.edit.redo() def undo(self): Loading
ui/textitem.py +18 −25 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ class TextBlkItem(QGraphicsTextItem): self.input_method_from = -1 self.input_method_text = '' self.block_all_input = False self.block_change_signal = False self.layout: Union[VerticalTextDocumentLayout, HorizontalTextDocumentLayout] = None self.document().setDocumentMargin(0) Loading @@ -85,7 +86,7 @@ class TextBlkItem(QGraphicsTextItem): return self.textInteractionFlags() == Qt.TextInteractionFlag.TextEditorInteraction def on_content_changed(self): if (self.hasFocus() or self.is_formatting) and not self.pre_editing: if (self.hasFocus() or self.is_formatting) and not self.pre_editing and not self.block_change_signal: # self.content_changed.emit(self) if not self.in_redo_undo: Loading Loading @@ -229,8 +230,7 @@ class TextBlkItem(QGraphicsTextItem): bx1, by1, bx2, by2 = xyxy xywh = np.array([[bx1, by1, bx2-bx1, by2-by1]]) blk.lines = xywh2xyxypoly(xywh).reshape(-1, 4, 2).tolist() init_html = blk.rich_text if blk.rich_text else blk.get_text() self.setVertical(blk.vertical, init_html) self.setVertical(blk.vertical) self.setRect(blk.bounding_rect()) if blk.angle != 0: Loading Loading @@ -366,56 +366,41 @@ class TextBlkItem(QGraphicsTextItem): self.setRotation(angle) self.blk.angle = angle def setVertical(self, vertical: bool, init_html: str = None): def setVertical(self, vertical: bool): if self.fontformat is not None: self.fontformat.vertical = vertical valid_layout = True doc = self.document() if self.layout is not None: if isinstance(self.layout, VerticalTextDocumentLayout) == vertical: return self.layout.size_enlarged.disconnect(self.on_document_enlarged) self.layout.documentSizeChanged.disconnect(self.docSizeChanged) else: valid_layout = False doc.contentsChanged.connect(self.on_content_changed) doc.contentsChange.connect(self.on_content_changing) if valid_layout: rect = self.rect() if self.layout is not None else None self.setTextInteractionFlags(Qt.TextInteractionFlag.NoTextInteraction) doc = self.document() html = doc.toHtml() doc_margin = doc.documentMargin() doc.blockSignals(True) doc.documentLayout().blockSignals(True) default_font = doc.defaultFont() doc = QTextDocument() doc.setDocumentMargin(doc_margin) if not valid_layout and init_html is not None: doc.setHtml(html) if vertical: layout = VerticalTextDocumentLayout(doc, self.fontformat) else: layout = HorizontalTextDocumentLayout(doc, self.fontformat) self.layout = layout self.setDocument(doc) doc.setDocumentLayout(layout) doc.setDefaultFont(default_font) doc.contentsChanged.connect(self.on_content_changed) doc.contentsChange.connect(self.on_content_changing) layout.size_enlarged.connect(self.on_document_enlarged) layout.documentSizeChanged.connect(self.docSizeChanged) if valid_layout: layout.setMaxSize(rect.width(), rect.height()) doc.setHtml(html) self.setCenterTransform() self.repaint_background() if self.fontformat.letter_spacing != 1: self.setLetterSpacing(self.fontformat.letter_spacing, force=True) self.doc_size_changed.emit(self.idx) def updateUndoSteps(self): Loading Loading @@ -447,6 +432,11 @@ class TextBlkItem(QGraphicsTextItem): e.accept() self.pasted.emit(self.idx) return elif e.modifiers() == Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier: if e.key() == Qt.Key.Key_Z: e.accept() self.redo_signal.emit() return elif e.key() == Qt.Key.Key_Return: e.accept() self.textCursor().insertText('\n') Loading Loading @@ -649,12 +639,15 @@ class TextBlkItem(QGraphicsTextItem): self.blk.fontformat.merge(fmt) def set_cursor_cfmt(self, cursor: QTextCursor, cfmt: QTextCharFormat, merge_char: bool = False): doc_is_empty = self.document().isEmpty() if merge_char: self.block_change_signal = True cursor.mergeCharFormat(cfmt) self.block_change_signal = False cursor.mergeBlockCharFormat(cfmt) cursor.clearSelection() self.setTextCursor(cursor) if self.document().isEmpty(): if doc_is_empty: self.document().setDefaultFont(cursor.blockCharFormat().font()) def _before_set_ffmt(self, set_selected: bool, restore_cursor: bool): Loading