Loading ballontranslator/__main__.py +7 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,18 @@ def main(): else: os.environ['QT_API'] = args.qt_api import qtpy from qtpy.QtWidgets import QApplication from qtpy.QtCore import QTranslator, QLocale from ui.mainwindow import MainWindow from ui.constants import PROGRAM_PATH from ui import constants os.chdir(PROGRAM_PATH) if qtpy.API_NAME[-1] == '6': constants.FLAG_QT6 = True os.chdir(constants.PROGRAM_PATH) app = QApplication(sys.argv) translator = QTranslator() translator.load( Loading ballontranslator/ui/constants.py +2 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,5 @@ DRAG_DIR_FDIAG = 2 DRAG_DIR_BDIAG = 3 DRAWPANEL_WIDTH = 500 FLAG_QT6 = False ballontranslator/ui/dlconfig_parse_widgets.py +11 −5 Original line number Diff line number Diff line from typing import List from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget, QLabel, QComboBox, QListView, QToolBar, QMenu, QSpacerItem, QPushButton, QAction, QCheckBox, QToolButton, QSplitter, QStylePainter, QStyleOption, QStyle, QScrollArea, QLineEdit, QGroupBox, QGraphicsSimpleTextItem from qtpy.QtCore import Qt, Signal from qtpy.QtGui import QFontMetricsF from dl import VALID_INPAINTERS, VALID_TEXTDETECTORS, VALID_TRANSLATORS, VALID_OCR, \ TranslatorBase, DEFAULT_DEVICE from utils.logger import logger as LOGGER from .stylewidgets import ConfigComboBox from .constants import CONFIG_FONTSIZE_CONTENT, CONFIG_COMBOBOX_MIDEAN, CONFIG_COMBOBOX_SHORT from . import constants as c from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget, QLabel, QComboBox, QListView, QToolBar, QMenu, QSpacerItem, QPushButton, QCheckBox, QToolButton, QSplitter, QStylePainter, QStyleOption, QStyle, QScrollArea, QLineEdit, QGroupBox, QGraphicsSimpleTextItem from qtpy.QtCore import Qt, Signal from qtpy.QtGui import QFontMetricsF if c.FLAG_QT6: from qtpy.QtGui import QAction else: from qtpy.QtWidgets import QAction class ParamNameLabel(QLabel): Loading ballontranslator/ui/mainwindowbars.py +63 −28 Original line number Diff line number Diff line import os.path as osp from collections import OrderedDict from qtpy.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QFileDialog, QLabel, QSizePolicy, QToolBar, QMenu, QSpacerItem, QPushButton, QAction, QCheckBox, QToolButton from qtpy.QtCore import Qt, Signal, QPoint from qtpy.QtGui import QMouseEvent, QKeySequence from typing import List from .stylewidgets import Widget, PaintQSlider from .constants import WINDOW_BORDER_WIDTH, BOTTOMBAR_HEIGHT, DRAG_DIR_NONE, DRAG_DIR_VER, DRAG_DIR_BDIAG, DRAG_DIR_FDIAG from . import constants as c from qtpy.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QFileDialog, QLabel, QSizePolicy, QToolBar, QMenu, QSpacerItem, QPushButton, QCheckBox, QToolButton from qtpy.QtCore import Qt, Signal, QPoint from qtpy.QtGui import QMouseEvent, QKeySequence if c.FLAG_QT6: from qtpy.QtGui import QAction else: from qtpy.QtWidgets import QAction class ShowPageListChecker(QCheckBox): def __init__(self, *args, **kwargs) -> None: Loading Loading @@ -283,7 +286,11 @@ class LeftBar(Widget): def mouseMoveEvent(self, e: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.left() < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeHorCursor) Loading @@ -293,16 +300,20 @@ class LeftBar(Widget): if self.drag_resize_pos is not None: self.setCursor(Qt.CursorShape.SizeHorCursor) delta_x = ex - self.drag_resize_pos.x() self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos geow.setLeft(geow.left() + delta_x) self.mainwindow.setGeometry(geow) return super().mouseMoveEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.left() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading @@ -324,7 +335,11 @@ class RightBar(Widget): def mouseMoveEvent(self, e: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.right() < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeHorCursor) Loading @@ -334,16 +349,20 @@ class RightBar(Widget): if self.drag_resize_pos is not None: self.setCursor(Qt.CursorShape.SizeHorCursor) delta_x = ex - self.drag_resize_pos.x() self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos geow.setRight(geow.right() + delta_x) self.mainwindow.setGeometry(geow) return super().mouseMoveEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.right() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading Loading @@ -406,10 +425,14 @@ class TitleBar(Widget): self.mainwindow.showMinimized() def mousePressEvent(self, event: QMouseEvent) -> None: if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() if event.button() == Qt.MouseButton.LeftButton: if not self.mainwindow.isMaximized() and \ event.pos().y() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos x = event.pos().x() if x < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeFDiagCursor) Loading @@ -422,7 +445,7 @@ class TitleBar(Widget): self.drag_dir = DRAG_DIR_VER else: self.mPos = event.pos() self.mPosGlobal = event.globalPos() self.mPosGlobal = g_pos return super().mousePressEvent(event) def mouseReleaseEvent(self, event: QMouseEvent) -> None: Loading @@ -432,6 +455,10 @@ class TitleBar(Widget): return super().mouseReleaseEvent(event) def mouseMoveEvent(self, event: QMouseEvent) -> None: if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() if self.mPos is not None: self.mainwindow.show() if self.mainwindow.isMaximized(): Loading @@ -442,16 +469,16 @@ class TitleBar(Widget): if self.mPos.x() > newgeo.width(): self.mPos = QPoint(newgeo.width()-oldw+self.mPos.x(), self.mPos.y()) else: self.mainwindow.move(event.globalPos() - self.mPos) self.mainwindow.move(g_pos - self.mPos) else: self.mainwindow.move(event.globalPos()-self.mPos) self.mainwindow.move(g_pos-self.mPos) elif not self.mainwindow.isMaximized(): y = event.pos().y() x = event.pos().x() if self.drag_dir != DRAG_DIR_NONE: geo = self.mainwindow.geometry() delta_y = event.globalPos().y() - self.drag_resize_pos.y() delta_x = event.globalPos().x() - self.drag_resize_pos.x() delta_y = g_pos.y() - self.drag_resize_pos.y() delta_x = g_pos.x() - self.drag_resize_pos.x() geo.setTop(geo.top() + delta_y) if self.drag_dir == DRAG_DIR_BDIAG: self.setCursor(Qt.CursorShape.SizeBDiagCursor) Loading @@ -462,7 +489,7 @@ class TitleBar(Widget): elif self.drag_dir == DRAG_DIR_VER: self.setCursor(Qt.CursorShape.SizeVerCursor) self.mainwindow.setGeometry(geo) self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos elif y < WINDOW_BORDER_WIDTH: if x < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeFDiagCursor) Loading Loading @@ -586,14 +613,18 @@ class BottomBar(Widget): def mouseMoveEvent(self, event: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ey = event.globalPos().y() ex = event.globalPos().x() if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() ey = g_pos.y() ex = g_pos.x() geow = self.mainwindow.geometry() if self.drag_dir != DRAG_DIR_NONE: delta_y = event.globalPos().y() - self.drag_resize_pos.y() delta_x = event.globalPos().x() - self.drag_resize_pos.x() delta_y = g_pos.y() - self.drag_resize_pos.y() delta_x = g_pos.x() - self.drag_resize_pos.x() geow.setBottom(geow.bottom() + delta_y) if self.drag_dir == DRAG_DIR_BDIAG: self.setCursor(Qt.CursorShape.SizeBDiagCursor) Loading @@ -604,7 +635,7 @@ class BottomBar(Widget): elif self.drag_dir == DRAG_DIR_VER: self.setCursor(Qt.CursorShape.SizeVerCursor) self.mainwindow.setGeometry(geow) self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos elif geow.bottom() - ey < WINDOW_BORDER_WIDTH: if geow.right() - ex < WINDOW_BORDER_WIDTH: Loading @@ -619,8 +650,12 @@ class BottomBar(Widget): return super().mouseMoveEvent(event) def mousePressEvent(self, e: QMouseEvent) -> None: ey = e.globalPos().y() ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ey = g_pos.y() ex = g_pos.x() geow = self.mainwindow.geometry() if geow.bottom() - ey < WINDOW_BORDER_WIDTH: if geow.right() - ex < WINDOW_BORDER_WIDTH: Loading @@ -629,7 +664,7 @@ class BottomBar(Widget): self.drag_dir = DRAG_DIR_BDIAG else: self.drag_dir = DRAG_DIR_VER self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading Loading
ballontranslator/__main__.py +7 −2 Original line number Diff line number Diff line Loading @@ -16,13 +16,18 @@ def main(): else: os.environ['QT_API'] = args.qt_api import qtpy from qtpy.QtWidgets import QApplication from qtpy.QtCore import QTranslator, QLocale from ui.mainwindow import MainWindow from ui.constants import PROGRAM_PATH from ui import constants os.chdir(PROGRAM_PATH) if qtpy.API_NAME[-1] == '6': constants.FLAG_QT6 = True os.chdir(constants.PROGRAM_PATH) app = QApplication(sys.argv) translator = QTranslator() translator.load( Loading
ballontranslator/ui/constants.py +2 −0 Original line number Diff line number Diff line Loading @@ -40,3 +40,5 @@ DRAG_DIR_FDIAG = 2 DRAG_DIR_BDIAG = 3 DRAWPANEL_WIDTH = 500 FLAG_QT6 = False
ballontranslator/ui/dlconfig_parse_widgets.py +11 −5 Original line number Diff line number Diff line from typing import List from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget, QLabel, QComboBox, QListView, QToolBar, QMenu, QSpacerItem, QPushButton, QAction, QCheckBox, QToolButton, QSplitter, QStylePainter, QStyleOption, QStyle, QScrollArea, QLineEdit, QGroupBox, QGraphicsSimpleTextItem from qtpy.QtCore import Qt, Signal from qtpy.QtGui import QFontMetricsF from dl import VALID_INPAINTERS, VALID_TEXTDETECTORS, VALID_TRANSLATORS, VALID_OCR, \ TranslatorBase, DEFAULT_DEVICE from utils.logger import logger as LOGGER from .stylewidgets import ConfigComboBox from .constants import CONFIG_FONTSIZE_CONTENT, CONFIG_COMBOBOX_MIDEAN, CONFIG_COMBOBOX_SHORT from . import constants as c from qtpy.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget, QLabel, QComboBox, QListView, QToolBar, QMenu, QSpacerItem, QPushButton, QCheckBox, QToolButton, QSplitter, QStylePainter, QStyleOption, QStyle, QScrollArea, QLineEdit, QGroupBox, QGraphicsSimpleTextItem from qtpy.QtCore import Qt, Signal from qtpy.QtGui import QFontMetricsF if c.FLAG_QT6: from qtpy.QtGui import QAction else: from qtpy.QtWidgets import QAction class ParamNameLabel(QLabel): Loading
ballontranslator/ui/mainwindowbars.py +63 −28 Original line number Diff line number Diff line import os.path as osp from collections import OrderedDict from qtpy.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QFileDialog, QLabel, QSizePolicy, QToolBar, QMenu, QSpacerItem, QPushButton, QAction, QCheckBox, QToolButton from qtpy.QtCore import Qt, Signal, QPoint from qtpy.QtGui import QMouseEvent, QKeySequence from typing import List from .stylewidgets import Widget, PaintQSlider from .constants import WINDOW_BORDER_WIDTH, BOTTOMBAR_HEIGHT, DRAG_DIR_NONE, DRAG_DIR_VER, DRAG_DIR_BDIAG, DRAG_DIR_FDIAG from . import constants as c from qtpy.QtWidgets import QMainWindow, QHBoxLayout, QVBoxLayout, QFileDialog, QLabel, QSizePolicy, QToolBar, QMenu, QSpacerItem, QPushButton, QCheckBox, QToolButton from qtpy.QtCore import Qt, Signal, QPoint from qtpy.QtGui import QMouseEvent, QKeySequence if c.FLAG_QT6: from qtpy.QtGui import QAction else: from qtpy.QtWidgets import QAction class ShowPageListChecker(QCheckBox): def __init__(self, *args, **kwargs) -> None: Loading Loading @@ -283,7 +286,11 @@ class LeftBar(Widget): def mouseMoveEvent(self, e: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.left() < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeHorCursor) Loading @@ -293,16 +300,20 @@ class LeftBar(Widget): if self.drag_resize_pos is not None: self.setCursor(Qt.CursorShape.SizeHorCursor) delta_x = ex - self.drag_resize_pos.x() self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos geow.setLeft(geow.left() + delta_x) self.mainwindow.setGeometry(geow) return super().mouseMoveEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.left() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading @@ -324,7 +335,11 @@ class RightBar(Widget): def mouseMoveEvent(self, e: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.right() < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeHorCursor) Loading @@ -334,16 +349,20 @@ class RightBar(Widget): if self.drag_resize_pos is not None: self.setCursor(Qt.CursorShape.SizeHorCursor) delta_x = ex - self.drag_resize_pos.x() self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos geow.setRight(geow.right() + delta_x) self.mainwindow.setGeometry(geow) return super().mouseMoveEvent(e) def mousePressEvent(self, e: QMouseEvent) -> None: ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ex = g_pos.x() geow = self.mainwindow.geometry() if ex - geow.right() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading Loading @@ -406,10 +425,14 @@ class TitleBar(Widget): self.mainwindow.showMinimized() def mousePressEvent(self, event: QMouseEvent) -> None: if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() if event.button() == Qt.MouseButton.LeftButton: if not self.mainwindow.isMaximized() and \ event.pos().y() < WINDOW_BORDER_WIDTH: self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos x = event.pos().x() if x < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeFDiagCursor) Loading @@ -422,7 +445,7 @@ class TitleBar(Widget): self.drag_dir = DRAG_DIR_VER else: self.mPos = event.pos() self.mPosGlobal = event.globalPos() self.mPosGlobal = g_pos return super().mousePressEvent(event) def mouseReleaseEvent(self, event: QMouseEvent) -> None: Loading @@ -432,6 +455,10 @@ class TitleBar(Widget): return super().mouseReleaseEvent(event) def mouseMoveEvent(self, event: QMouseEvent) -> None: if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() if self.mPos is not None: self.mainwindow.show() if self.mainwindow.isMaximized(): Loading @@ -442,16 +469,16 @@ class TitleBar(Widget): if self.mPos.x() > newgeo.width(): self.mPos = QPoint(newgeo.width()-oldw+self.mPos.x(), self.mPos.y()) else: self.mainwindow.move(event.globalPos() - self.mPos) self.mainwindow.move(g_pos - self.mPos) else: self.mainwindow.move(event.globalPos()-self.mPos) self.mainwindow.move(g_pos-self.mPos) elif not self.mainwindow.isMaximized(): y = event.pos().y() x = event.pos().x() if self.drag_dir != DRAG_DIR_NONE: geo = self.mainwindow.geometry() delta_y = event.globalPos().y() - self.drag_resize_pos.y() delta_x = event.globalPos().x() - self.drag_resize_pos.x() delta_y = g_pos.y() - self.drag_resize_pos.y() delta_x = g_pos.x() - self.drag_resize_pos.x() geo.setTop(geo.top() + delta_y) if self.drag_dir == DRAG_DIR_BDIAG: self.setCursor(Qt.CursorShape.SizeBDiagCursor) Loading @@ -462,7 +489,7 @@ class TitleBar(Widget): elif self.drag_dir == DRAG_DIR_VER: self.setCursor(Qt.CursorShape.SizeVerCursor) self.mainwindow.setGeometry(geo) self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos elif y < WINDOW_BORDER_WIDTH: if x < WINDOW_BORDER_WIDTH: self.setCursor(Qt.CursorShape.SizeFDiagCursor) Loading Loading @@ -586,14 +613,18 @@ class BottomBar(Widget): def mouseMoveEvent(self, event: QMouseEvent) -> None: if not self.mainwindow.isMaximized(): ey = event.globalPos().y() ex = event.globalPos().x() if c.FLAG_QT6: g_pos = event.globalPosition().toPoint() else: g_pos = event.globalPos() ey = g_pos.y() ex = g_pos.x() geow = self.mainwindow.geometry() if self.drag_dir != DRAG_DIR_NONE: delta_y = event.globalPos().y() - self.drag_resize_pos.y() delta_x = event.globalPos().x() - self.drag_resize_pos.x() delta_y = g_pos.y() - self.drag_resize_pos.y() delta_x = g_pos.x() - self.drag_resize_pos.x() geow.setBottom(geow.bottom() + delta_y) if self.drag_dir == DRAG_DIR_BDIAG: self.setCursor(Qt.CursorShape.SizeBDiagCursor) Loading @@ -604,7 +635,7 @@ class BottomBar(Widget): elif self.drag_dir == DRAG_DIR_VER: self.setCursor(Qt.CursorShape.SizeVerCursor) self.mainwindow.setGeometry(geow) self.drag_resize_pos = event.globalPos() self.drag_resize_pos = g_pos elif geow.bottom() - ey < WINDOW_BORDER_WIDTH: if geow.right() - ex < WINDOW_BORDER_WIDTH: Loading @@ -619,8 +650,12 @@ class BottomBar(Widget): return super().mouseMoveEvent(event) def mousePressEvent(self, e: QMouseEvent) -> None: ey = e.globalPos().y() ex = e.globalPos().x() if c.FLAG_QT6: g_pos = e.globalPosition().toPoint() else: g_pos = e.globalPos() ey = g_pos.y() ex = g_pos.x() geow = self.mainwindow.geometry() if geow.bottom() - ey < WINDOW_BORDER_WIDTH: if geow.right() - ex < WINDOW_BORDER_WIDTH: Loading @@ -629,7 +664,7 @@ class BottomBar(Widget): self.drag_dir = DRAG_DIR_BDIAG else: self.drag_dir = DRAG_DIR_VER self.drag_resize_pos = e.globalPos() self.drag_resize_pos = g_pos return super().mousePressEvent(e) def mouseReleaseEvent(self, e: QMouseEvent) -> None: Loading