Loading ballontranslator/ui/canvas.py +23 −5 Original line number Diff line number Diff line import numpy as np from PyQt5.QtWidgets import QMenu, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsItem, QScrollBar, QGraphicsPixmapItem, QGraphicsSceneMouseEvent, QGraphicsSceneContextMenuEvent, QUndoStack from PyQt5.QtWidgets import QMenu, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsItem, QScrollBar, QGraphicsPixmapItem, QGraphicsSceneMouseEvent, QGraphicsSceneContextMenuEvent, QUndoStack, QRubberBand from PyQt5.QtCore import Qt, QRect, QRectF, QPointF, QPoint, pyqtSignal, QSizeF, QObject, QEvent from PyQt5.QtGui import QPixmap, QHideEvent, QKeyEvent, QWheelEvent, QResizeEvent, QKeySequence, QPainter, QPen from PyQt5.QtGui import QPixmap, QHideEvent, QKeyEvent, QWheelEvent, QResizeEvent, QKeySequence, QPainter, QPen, QPainterPath from typing import List, Union, Tuple from .misc import ndarray2pixmap, pixmap2ndarray, qrgb2bgr, ProjImgTrans Loading Loading @@ -100,7 +100,7 @@ class Canvas(QGraphicsScene): self.gv = CustomGV(self) self.gv.setAlignment(Qt.AlignCenter) self.gv.setDragMode(QGraphicsView.ScrollHandDrag) self.gv.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) self.gv.scale_down_signal.connect(self.scaleDown) self.gv.scale_up_signal.connect(self.scaleUp) self.gv.view_resized.connect(self.onViewResized) Loading @@ -109,6 +109,9 @@ class Canvas(QGraphicsScene): self.ctrl_relesed = self.gv.ctrl_released self.default_cursor = self.gv.cursor() self.rubber_band = self.addWidget(QRubberBand(QRubberBand.Shape.Rectangle)) self.rubber_band.hide() self.rubber_band_origin = None self.undoStack = QUndoStack(self) self.undoStack.indexChanged.connect(self.on_undostack_changed) Loading Loading @@ -280,17 +283,23 @@ class Canvas(QGraphicsScene): self.stroke_path_item.addNewPoint(self.imgLayer.mapFromScene(event.scenePos())) elif self.scale_tool_mode: self.scale_tool.emit(event.scenePos()) elif self.rubber_band.isVisible() and self.rubber_band_origin is not None: self.rubber_band.setGeometry(QRectF(self.rubber_band_origin, event.scenePos()).normalized()) sel_path = QPainterPath(self.rubber_band_origin) sel_path.addRect(self.rubber_band.geometry()) self.setSelectionArea(sel_path, Qt.ItemSelectionMode.IntersectsItemBoundingRect, self.gv.viewportTransform()) return super().mouseMoveEvent(event) def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None: if self.textblock_mode: if event.button() == Qt.RightButton: if event.button() == Qt.MouseButton.RightButton: if self.hovering_textblkitem is None: return self.startCreateTextblock(event.scenePos()) elif self.creating_normal_rect: return self.startCreateTextblock(event.scenePos(), hide_control=True) elif event.button() == Qt.MouseButton.LeftButton: # user is drawing using the pen/inpainting tool if self.alt_pressed: self.scale_tool_mode = True self.begin_scale_tool.emit(event.scenePos()) Loading @@ -299,9 +308,15 @@ class Canvas(QGraphicsScene): self.addStrokeItem(self.stroke_path_item) elif event.button() == Qt.MouseButton.RightButton: # user is drawing using eraser if self.painting and self.stroke_path_item is None: self.stroke_path_item = PenStrokeItem(self.imgLayer.mapFromScene(event.scenePos())) self.addStrokeItem(self.stroke_path_item) else: # rubber band selection self.rubber_band_origin = event.scenePos() self.rubber_band.setGeometry(QRectF(self.rubber_band_origin, self.rubber_band_origin).normalized()) self.rubber_band.show() self.rubber_band.setZValue(1) return super().mousePressEvent(event) Loading @@ -316,6 +331,9 @@ class Canvas(QGraphicsScene): elif event.button() == Qt.RightButton: if self.stroke_path_item is not None: self.finish_erasing.emit(self.stroke_path_item) if self.rubber_band.isVisible(): self.rubber_band.hide() self.rubber_band_origin = None elif event.button() == Qt.MouseButton.LeftButton: if self.stroke_path_item is not None: self.finish_painting.emit(self.stroke_path_item) Loading Loading @@ -363,7 +381,7 @@ class Canvas(QGraphicsScene): else: self.maskLayer.setVisible(False) self.gv.setCursor(self.default_cursor) self.gv.setDragMode(QGraphicsView.ScrollHandDrag) self.gv.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) self.image_edit_mode = ImageEditMode.NONE @property Loading ballontranslator/ui/fontformatpanel.py +0 −3 Original line number Diff line number Diff line Loading @@ -489,7 +489,6 @@ class FontFormatPanel(Widget): def set_textblk_item(self, textblk_item: TextBlkItem = None): if textblk_item is None: # if self.textblk_item: focus_w = self.app.focusWidget() focus_p = None if focus_w is None else focus_w.parentWidget() focus_on_fmtoptions = False Loading @@ -504,8 +503,6 @@ class FontFormatPanel(Widget): self.textblk_item = None self.text_cursor = None self.set_active_format(self.global_format) return else: if not self.restoring_textblk: blk_fmt = textblk_item.get_fontformat() Loading Loading
ballontranslator/ui/canvas.py +23 −5 Original line number Diff line number Diff line import numpy as np from PyQt5.QtWidgets import QMenu, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsItem, QScrollBar, QGraphicsPixmapItem, QGraphicsSceneMouseEvent, QGraphicsSceneContextMenuEvent, QUndoStack from PyQt5.QtWidgets import QMenu, QGraphicsScene, QGraphicsView, QGraphicsRectItem, QGraphicsItem, QScrollBar, QGraphicsPixmapItem, QGraphicsSceneMouseEvent, QGraphicsSceneContextMenuEvent, QUndoStack, QRubberBand from PyQt5.QtCore import Qt, QRect, QRectF, QPointF, QPoint, pyqtSignal, QSizeF, QObject, QEvent from PyQt5.QtGui import QPixmap, QHideEvent, QKeyEvent, QWheelEvent, QResizeEvent, QKeySequence, QPainter, QPen from PyQt5.QtGui import QPixmap, QHideEvent, QKeyEvent, QWheelEvent, QResizeEvent, QKeySequence, QPainter, QPen, QPainterPath from typing import List, Union, Tuple from .misc import ndarray2pixmap, pixmap2ndarray, qrgb2bgr, ProjImgTrans Loading Loading @@ -100,7 +100,7 @@ class Canvas(QGraphicsScene): self.gv = CustomGV(self) self.gv.setAlignment(Qt.AlignCenter) self.gv.setDragMode(QGraphicsView.ScrollHandDrag) self.gv.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) self.gv.scale_down_signal.connect(self.scaleDown) self.gv.scale_up_signal.connect(self.scaleUp) self.gv.view_resized.connect(self.onViewResized) Loading @@ -109,6 +109,9 @@ class Canvas(QGraphicsScene): self.ctrl_relesed = self.gv.ctrl_released self.default_cursor = self.gv.cursor() self.rubber_band = self.addWidget(QRubberBand(QRubberBand.Shape.Rectangle)) self.rubber_band.hide() self.rubber_band_origin = None self.undoStack = QUndoStack(self) self.undoStack.indexChanged.connect(self.on_undostack_changed) Loading Loading @@ -280,17 +283,23 @@ class Canvas(QGraphicsScene): self.stroke_path_item.addNewPoint(self.imgLayer.mapFromScene(event.scenePos())) elif self.scale_tool_mode: self.scale_tool.emit(event.scenePos()) elif self.rubber_band.isVisible() and self.rubber_band_origin is not None: self.rubber_band.setGeometry(QRectF(self.rubber_band_origin, event.scenePos()).normalized()) sel_path = QPainterPath(self.rubber_band_origin) sel_path.addRect(self.rubber_band.geometry()) self.setSelectionArea(sel_path, Qt.ItemSelectionMode.IntersectsItemBoundingRect, self.gv.viewportTransform()) return super().mouseMoveEvent(event) def mousePressEvent(self, event: QGraphicsSceneMouseEvent) -> None: if self.textblock_mode: if event.button() == Qt.RightButton: if event.button() == Qt.MouseButton.RightButton: if self.hovering_textblkitem is None: return self.startCreateTextblock(event.scenePos()) elif self.creating_normal_rect: return self.startCreateTextblock(event.scenePos(), hide_control=True) elif event.button() == Qt.MouseButton.LeftButton: # user is drawing using the pen/inpainting tool if self.alt_pressed: self.scale_tool_mode = True self.begin_scale_tool.emit(event.scenePos()) Loading @@ -299,9 +308,15 @@ class Canvas(QGraphicsScene): self.addStrokeItem(self.stroke_path_item) elif event.button() == Qt.MouseButton.RightButton: # user is drawing using eraser if self.painting and self.stroke_path_item is None: self.stroke_path_item = PenStrokeItem(self.imgLayer.mapFromScene(event.scenePos())) self.addStrokeItem(self.stroke_path_item) else: # rubber band selection self.rubber_band_origin = event.scenePos() self.rubber_band.setGeometry(QRectF(self.rubber_band_origin, self.rubber_band_origin).normalized()) self.rubber_band.show() self.rubber_band.setZValue(1) return super().mousePressEvent(event) Loading @@ -316,6 +331,9 @@ class Canvas(QGraphicsScene): elif event.button() == Qt.RightButton: if self.stroke_path_item is not None: self.finish_erasing.emit(self.stroke_path_item) if self.rubber_band.isVisible(): self.rubber_band.hide() self.rubber_band_origin = None elif event.button() == Qt.MouseButton.LeftButton: if self.stroke_path_item is not None: self.finish_painting.emit(self.stroke_path_item) Loading Loading @@ -363,7 +381,7 @@ class Canvas(QGraphicsScene): else: self.maskLayer.setVisible(False) self.gv.setCursor(self.default_cursor) self.gv.setDragMode(QGraphicsView.ScrollHandDrag) self.gv.setDragMode(QGraphicsView.DragMode.ScrollHandDrag) self.image_edit_mode = ImageEditMode.NONE @property Loading
ballontranslator/ui/fontformatpanel.py +0 −3 Original line number Diff line number Diff line Loading @@ -489,7 +489,6 @@ class FontFormatPanel(Widget): def set_textblk_item(self, textblk_item: TextBlkItem = None): if textblk_item is None: # if self.textblk_item: focus_w = self.app.focusWidget() focus_p = None if focus_w is None else focus_w.parentWidget() focus_on_fmtoptions = False Loading @@ -504,8 +503,6 @@ class FontFormatPanel(Widget): self.textblk_item = None self.text_cursor = None self.set_active_format(self.global_format) return else: if not self.restoring_textblk: blk_fmt = textblk_item.get_fontformat() Loading