Commit 1f707ebe authored by dmMaze's avatar dmMaze
Browse files

improved selected text rendering for vertical text & split stylewidgets.py...

improved selected text rendering for vertical text & split stylewidgets.py into custom_widgets folder
parent 9067b1f6
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -157,7 +157,7 @@ QLabel#letterSpacingLabel {
    min-height: 28px;
}

ColorPicker {
ColorPickerLabel {
    max-height: 25px;
    min-height: 25px;
    min-width: 25px;
@@ -165,7 +165,7 @@ ColorPicker {
    border: 2px solid @borderColor;
}

ColorPicker::hover {
ColorPickerLabel::hover {
    border: 2px solid rgb(30, 147, 229);
}

@@ -413,11 +413,11 @@ QPushButton#closeBtn::hover {
    image: url(icons/titlebar_close_activate.svg);
}

TextChecker::hover {
TextCheckerLabel::hover {
    background-color: rgba(30, 147, 229, 20%);
}

TextChecker#OCRChecker {
TextCheckerLabel#OCRChecker {
    height: 34px;
    width: 66;
    padding-left: 7px;
@@ -726,12 +726,6 @@ QLabel#angleLabel {
    background-color: rgba(30, 147, 229, 20%);
}

.ExpandLabel {
    border-bottom: 1px;
    border-color: @borderColor;
    border-style: solid;
}

DrawToolCheckBox::indicator {
    height: 34px;
    width: 34px;
@@ -968,20 +962,38 @@ HidePanelButton::hover {
    background-color: #FF605C;
}

Widget#TextStyleAreaContent {
PanelAreaContent {
    background-color : @emptyContentBackgroundColor;
    border-radius: 7px;
    border: none;
    border-width: 0px;
}

TextStyleArea {
PanelArea {
    background-color : @emptyContentBackgroundColor;
    border-radius: 7px;
    border: none;
    border-width: 0px;
}


PanelGroupBox {
    border: 1px solid @borderColor;
    margin-top: 6px;
    background-color : @emptyContentBackgroundColor;
    border-left: none;
    border-right: none;
    border-bottom: none;
    border-radius: 7px;
}

PanelGroupBox::title {
    subcontrol-origin: margin;
    /* left: 12px; */
    padding: 0px 5px 0px 10px;
}


TextStyleLabel {
    border-radius: 7px;
}
+1 −1
Original line number Diff line number Diff line
@@ -15,7 +15,7 @@ from .misc import ndarray2pixmap, QKEY, QNUMERIC_KEYS, ARROWKEY2DIRECTION
from .config_proj import ProjImgTrans
from .textitem import TextBlkItem, TextBlock
from .texteditshapecontrol import TextBlkShapeControl
from .stylewidgets import FadeLabel, ScrollBar
from .custom_widget import ScrollBar, FadeLabel
from .image_edit import ImageEditMode, DrawingLayer, StrokeImgItem
from .page_search_widget import PageSearchWidget
from utils import shared as C
+21 −30
Original line number Diff line number Diff line
from typing import List, Union, Tuple

from qtpy.QtWidgets import QPushButton, QKeySequenceEdit, QLayout, QGridLayout, QHBoxLayout, QVBoxLayout, QTreeView, QWidget, QLabel, QSizePolicy, QSpacerItem, QCheckBox, QSplitter, QScrollArea, QGroupBox, QLineEdit
from qtpy.QtWidgets import QPushButton, QKeySequenceEdit, QLayout, QGridLayout, QHBoxLayout, QVBoxLayout, QTreeView, QWidget, QLabel, QSizePolicy, QSpacerItem, QCheckBox, QSplitter, QScrollArea, QLineEdit
from qtpy.QtCore import Qt, Signal, QSize, QEvent, QItemSelection
from qtpy.QtGui import QStandardItem, QStandardItemModel, QMouseEvent, QFont, QColor, QPalette, QIntValidator, QValidator, QFocusEvent
from qtpy import API
from qtpy.QtGui import QStandardItem, QStandardItemModel, QMouseEvent, QFont, QIntValidator, QValidator, QFocusEvent

from utils import shared as C

# nuitka seems to require import QtCore explicitly 
if C.FLAG_QT6:
    if API == 'pyside6':
        from PySide6 import QtCore
    else:
        from PyQt6 import QtCore
else:
    from PyQt5 import QtCore

from .stylewidgets import Widget, ConfigComboBox
from .custom_widget import ConfigComboBox, Widget
from utils.config import pcfg
from utils import shared as C
from utils.shared import CONFIG_FONTSIZE_CONTENT, CONFIG_FONTSIZE_HEADER, CONFIG_FONTSIZE_TABLE, CONFIG_COMBOBOX_SHORT, CONFIG_COMBOBOX_LONG, CONFIG_COMBOBOX_MIDEAN
from .module_parse_widgets import InpaintConfigPanel, TextDetectConfigPanel, TranslatorConfigPanel, OCRConfigPanel

@@ -430,30 +419,30 @@ class ConfigPanel(Widget):
        self.let_fntsize_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Font Size'), parent=self, insert_stretch=True)
        global_fntfmt_layout.addWidget(sublock, 0, 0)

        self.let_fntsize_combox.currentIndexChanged.connect(self.on_fntsize_flag_changed)
        self.let_fntsize_combox.index_changed.connect(self.on_fntsize_flag_changed)
        self.let_fntstroke_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Stroke Size'), parent=self, insert_stretch=True)
        self.let_fntstroke_combox.currentIndexChanged.connect(self.on_fntstroke_flag_changed)
        self.let_fntstroke_combox.index_changed.connect(self.on_fntstroke_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 0, 1)
        
        self.let_fntcolor_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Font Color'), parent=self, insert_stretch=True)
        self.let_fntcolor_combox.currentIndexChanged.connect(self.on_fontcolor_flag_changed)
        self.let_fntcolor_combox.index_changed.connect(self.on_fontcolor_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 1, 0)
        self.let_fnt_scolor_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Stroke Color'), parent=self, insert_stretch=True)
        self.let_fnt_scolor_combox.currentIndexChanged.connect(self.on_font_scolor_flag_changed)
        self.let_fnt_scolor_combox.index_changed.connect(self.on_font_scolor_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 1, 1)

        self.let_effect_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Effect'), parent=self, insert_stretch=True)
        self.let_effect_combox.currentIndexChanged.connect(self.on_effect_flag_changed)
        self.let_effect_combox.index_changed.connect(self.on_effect_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 2, 0)
        self.let_alignment_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Alignment'), parent=self, insert_stretch=True)
        self.let_alignment_combox.currentIndexChanged.connect(self.on_alignment_flag_changed)
        self.let_alignment_combox.index_changed.connect(self.on_alignment_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 2, 1)

        self.let_writing_mode_combox, sublock = combobox_with_label([dec_program_str, use_global_str], self.tr('Writing-mode'), parent=self, insert_stretch=True)
        self.let_writing_mode_combox.currentIndexChanged.connect(self.on_writing_mode_flag_changed)
        self.let_writing_mode_combox.index_changed.connect(self.on_writing_mode_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 3, 0)
        self.let_family_combox, sublock = combobox_with_label([self.tr('Keep existing'), self.tr('Always use global setting')], self.tr('Font Family'), parent=self, insert_stretch=True)
        self.let_family_combox.currentIndexChanged.connect(self.on_family_flag_changed)
        self.let_family_combox.index_changed.connect(self.on_family_flag_changed)
        global_fntfmt_layout.addWidget(sublock, 3, 1)

        global_fntfmt_layout.addItem(QSpacerItem(0, 0, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding), 0, 2)
@@ -472,7 +461,7 @@ class ConfigPanel(Widget):

        generalConfigPanel.addTextLabel(label_save)
        self.rst_imgformat_combobox, imsave_sublock = generalConfigPanel.addCombobox(['PNG', 'JPG', 'WEBP'], self.tr('Result image format'))
        self.rst_imgformat_combobox.currentIndexChanged.connect(self.on_rst_imgformat_changed)
        self.rst_imgformat_combobox.index_changed.connect(self.on_rst_imgformat_changed)
        self.rst_imgquality_edit = PercentageLineEdit('100')
        self.rst_imgquality_edit.setFixedWidth(CONFIG_COMBOBOX_SHORT)
        self.rst_imgquality_edit.finish_edited.connect(self.on_edit_quality_changed)
@@ -613,12 +602,14 @@ class ConfigPanel(Widget):
        if pcfg.open_recent_on_startup:
            self.open_on_startup_checker.setChecked(True)

        self.let_effect_combox.setCurrentIndex(pcfg.let_fnteffect_flag)
        self.let_fntsize_combox.setCurrentIndex(pcfg.let_fntsize_flag)
        self.let_fntstroke_combox.setCurrentIndex(pcfg.let_fntstroke_flag)
        self.let_fntcolor_combox.setCurrentIndex(pcfg.let_fntcolor_flag)
        self.let_fnt_scolor_combox.setCurrentIndex(pcfg.let_fnt_scolor_flag)
        self.let_alignment_combox.setCurrentIndex(pcfg.let_alignment_flag)
        self.let_effect_combox.set_current_index(pcfg.let_fnteffect_flag, user_input=False)
        self.let_fntsize_combox.set_current_index(pcfg.let_fntsize_flag, user_input=False)
        self.let_fntstroke_combox.set_current_index(pcfg.let_fntstroke_flag, user_input=False)
        self.let_fntcolor_combox.set_current_index(pcfg.let_fntcolor_flag, user_input=False)
        self.let_fnt_scolor_combox.set_current_index(pcfg.let_fnt_scolor_flag, user_input=False)
        self.let_alignment_combox.set_current_index(pcfg.let_alignment_flag, user_input=False)
        self.let_family_combox.set_current_index(pcfg.let_family_flag, user_input=False)
        self.let_writing_mode_combox.set_current_index(pcfg.let_writing_mode_flag, user_input=False)
        self.let_autolayout_checker.setChecked(pcfg.let_autolayout_flag)
        self.let_autolayout_adaptive_fntsize_checker.setChecked(pcfg.let_autolayout_adaptive_fntsz)
        self.selectext_minimenu_checker.setChecked(pcfg.textselect_mini_menu)
+10 −0
Original line number Diff line number Diff line
from .scrollbar import ScrollBar
from .combobox import ComboBox, ConfigComboBox, ParamComboBox
from .widget import Widget, SeparatorWidget
from .view_panel import PanelGroupBox, PanelArea, PanelAreaContent, ViewWidget, ExpandLabel
from .message import MessageBox, TaskProgressBar, FrameLessMessageBox, ProgressMessageBox, ImgtransProgressMessageBox
from .flow_layout import FlowLayout
from .label import FadeLabel, ColorPickerLabel, ClickableLabel, CheckableLabel, TextCheckerLabel
from .slider import PaintQSlider
from .helper import isDarkTheme, themeColor
from .push_button import NoBorderPushBtn
 No newline at end of file
+87 −0
Original line number Diff line number Diff line
from typing import List

from qtpy.QtWidgets import QComboBox, QWidget
from qtpy.QtCore import Signal, Qt

from utils.shared import CONFIG_COMBOBOX_LONG, CONFIG_COMBOBOX_MIDEAN, CONFIG_COMBOBOX_SHORT, CONFIG_COMBOBOX_HEIGHT



class ComboBox(QComboBox):

    index_changed = Signal()

    # https://stackoverflow.com/questions/3241830/qt-how-to-disable-mouse-scrolling-of-qcombobox
    def __init__(self, parent: QWidget = None, scrollWidget: QWidget = None, options: List[str] = None) -> None:
        super().__init__(parent)
        self.scrollWidget = scrollWidget
        if options is not None:
            self.addItems(options)
        self.currentIndexChanged.connect(self.on_current_index_changed)
        self._program_set_flag = False

    def setScrollWidget(self, scrollWidget: QWidget):
        self.scrollWidget = scrollWidget

    def on_current_index_changed(self):
        if self._program_set_flag:
            return
        self.index_changed.emit()

    def set_current_index(self, index: int, user_input: bool = True):
        '''
        emit index_changed only if user_input is True
        '''
        
        self._program_set_flag = not user_input
        self.setCurrentIndex(index)
        self._program_set_flag = False

    def wheelEvent(self, *args, **kwargs):
        if self.scrollWidget is None or self.hasFocus():
            return super().wheelEvent(*args, **kwargs)
        else:
            return self.scrollWidget.wheelEvent(*args, **kwargs)


class ConfigComboBox(ComboBox):

    def __init__(self, fix_size=True, scrollWidget: QWidget = None, *args, **kwargs) -> None:
        super().__init__(scrollWidget, *args, **kwargs)
        self.fix_size = fix_size
        self.adjustSize()
        self.setFocusPolicy(Qt.FocusPolicy.StrongFocus)

    def addItems(self, texts: List[str]) -> None:
        super().addItems(texts)
        self.adjustSize()

    def adjustSize(self) -> None:
        super().adjustSize()
        width = self.minimumSizeHint().width()
        if width < CONFIG_COMBOBOX_SHORT:
            width = CONFIG_COMBOBOX_SHORT
        elif width < CONFIG_COMBOBOX_MIDEAN:
            width = CONFIG_COMBOBOX_MIDEAN
        else:
            width = CONFIG_COMBOBOX_LONG
        if self.fix_size:
            self.setFixedWidth(width)
        else:
            self.setMaximumWidth(width)


class ParamComboBox(ComboBox):
    paramwidget_edited = Signal(str, str)
    def __init__(self, param_key: str, options: List[str], size=CONFIG_COMBOBOX_SHORT, scrollWidget: QWidget = None, *args, **kwargs) -> None:
        super().__init__(scrollWidget=scrollWidget, *args, **kwargs)
        self.param_key = param_key
        self.setFixedWidth(size)
        self.setFixedHeight(CONFIG_COMBOBOX_HEIGHT)
        options = [str(opt) for opt in options]
        self.addItems(options)
        self.currentTextChanged.connect(self.on_select_changed)

    def on_select_changed(self):
        self.paramwidget_edited.emit(self.param_key, self.currentText())
Loading