Commit 36cfe8bf authored by dmMaze's avatar dmMaze
Browse files

fix slider

parent 32d493d5
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ class InpaintPanel(Widget):
        super().__init__(*args, **kwargs)

        self.inpainter_panel = inpainter_panel
        self.thicknessSlider = PaintQSlider(self.tr('pen thickness ') + 'value px')
        self.thicknessSlider = PaintQSlider()
        self.thicknessSlider.setRange(MIN_PEN_SIZE, MAX_PEN_SIZE)
        self.thicknessSlider.valueChanged.connect(self.on_thickness_changed)
        
@@ -118,10 +118,10 @@ class PenConfigPanel(Widget):
    colorChanged = Signal(list)
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)
        self.thicknessSlider = PaintQSlider(self.tr('pen thickness ') + 'value px')
        self.thicknessSlider = PaintQSlider()
        self.thicknessSlider.setRange(MIN_PEN_SIZE, MAX_PEN_SIZE)
        self.thicknessSlider.valueChanged.connect(self.on_thickness_changed)
        self.alphaSlider = PaintQSlider(self.tr('alpha value') + ' value')
        self.alphaSlider = PaintQSlider()
        self.alphaSlider.setRange(0, 255)
        self.alphaSlider.setValue(255)
        self.alphaSlider.valueChanged.connect(self.on_alpha_changed)
@@ -193,7 +193,7 @@ class RectPanel(Widget):
        self.inpainter_panel = inpainter_panel
        self.dilate_label = ToolNameLabel()
        self.dilate_label.setText(self.tr('Dilate'))
        self.dilate_slider = PaintQSlider(self.tr('kernel size: ') + 'value px')
        self.dilate_slider = PaintQSlider()
        self.dilate_slider.setRange(0, 100)
        self.dilate_slider.valueChanged.connect(self.dilate_ksize_changed)
        self.methodComboBox = QComboBox()
@@ -337,7 +337,7 @@ class DrawingPanel(Widget):
        self.toolConfigStackwidget.addWidget(self.penConfigPanel)
        self.toolConfigStackwidget.addWidget(self.rectPanel)

        self.maskTransperancySlider = PaintQSlider(' value%')
        self.maskTransperancySlider = PaintQSlider()
        self.maskTransperancySlider.valueChanged.connect(self.canvas.setMaskTransparencyBySlider)
        masklayout = QHBoxLayout()
        masklayout.addWidget(ToolNameLabel(220, self.tr('Mask Transparency')))
+3 −1
Original line number Diff line number Diff line
@@ -3,11 +3,14 @@ import sys
from ctypes import cast
from ctypes.wintypes import LPRECT, MSG

from pkg_resources import parse_version
import win32con
import win32gui
from PyQt6.QtCore import Qt
from PyQt6.QtGui import QCloseEvent, QCursor
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtCore import PYQT_VERSION_STR
installed_version = PYQT_VERSION_STR

# from ..titlebar import TitleBar
from ..utils import win32_utils as win_utils
@@ -42,7 +45,6 @@ class WindowsFramelessWindow(QWidget):
        # solve issue #5
        self.windowHandle().screenChanged.connect(self.__onScreenChanged)

        self.resize(500, 500)
        # self.titleBar.raise_()

    # def setTitleBar(self, titleBar):
+0 −3
Original line number Diff line number Diff line
@@ -57,7 +57,6 @@ class MainWindow(FramelessWindow):
        
        super().__init__(*args, **kwargs)

        self.setWindowFlags(self.windowFlags() | Qt.WindowType.FramelessWindowHint)
        self.app = app
        self.setupThread()
        self.setupUi()
@@ -79,8 +78,6 @@ class MainWindow(FramelessWindow):
        self.imgtrans_progress_msgbox.setStyleSheet(styleSheet)
        self.export_doc_thread.progress_bar.setStyleSheet(styleSheet)
        self.import_doc_thread.progress_bar.setStyleSheet(styleSheet)
        # sel_menu_size = self.selectext_minimenu.sizeHint()
        # self.selectext_minimenu.setFixedWidth(sel_menu_size.width())
        return super().setStyleSheet(styleSheet)

    def setupThread(self):
+4 −6
Original line number Diff line number Diff line
@@ -442,10 +442,8 @@ class TitleBar(Widget):
    def onMaxBtnClicked(self):
        if self.mainwindow.isMaximized():
            self.mainwindow.showNormal()
            self.mainwindow.updateGeometry()
        else:
            self.mainwindow.showMaximized()
            self.mainwindow.updateGeometry()

    def onMinBtnClicked(self):
        self.mainwindow.showMinimized()
@@ -543,12 +541,12 @@ class BottomBar(Widget):
        self.textblockChecker.setObjectName('TextblockChecker')
        self.textblockChecker.clicked.connect(self.onTextblockCheckerClicked)
        
        self.originalSlider = PaintQSlider(self.tr("Original image transparency: ") + "value%", Qt.Orientation.Horizontal, self, minimumWidth=90)
        self.originalSlider.setFixedWidth(130)
        self.originalSlider = PaintQSlider(self.tr("Original image transparency"), Qt.Orientation.Horizontal, self, minimumWidth=90)
        self.originalSlider.setFixedWidth(150)
        self.originalSlider.setRange(0, 100)

        self.textlayerSlider = PaintQSlider(self.tr("Lettering layer transparency: ") + "value%", Qt.Orientation.Horizontal, self, minimumWidth=90)
        self.textlayerSlider.setFixedWidth(130)
        self.textlayerSlider = PaintQSlider(self.tr("Lettering layer transparency"), Qt.Orientation.Horizontal, self, minimumWidth=90)
        self.textlayerSlider.setFixedWidth(150)
        self.textlayerSlider.setValue(100)
        self.textlayerSlider.setRange(0, 100)
        
+38 −23
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ class PaintQSlider(QSlider):

    mouse_released = Signal()

    def __init__(self, draw_content, orientation=Qt.Orientation.Horizontal, *args, **kwargs):
    def __init__(self, draw_content = None, orientation=Qt.Orientation.Horizontal, *args, **kwargs):
        super(PaintQSlider, self).__init__(orientation, *args, **kwargs)
        self.draw_content = draw_content
        self.pressed: bool = False
@@ -246,50 +246,65 @@ class PaintQSlider(QSlider):
        rect = self.style().subControlRect(
            QStyle.CC_Slider, option, QStyle.SC_SliderHandle, self)
        
        value = self.value()
        
        # 画中间白色线条
        painter.setPen(QColor(85,85,96))
        painter.setBrush(QColor(85,85,96))
        if self.orientation() == Qt.Orientation.Horizontal:
            y = self.height() / 2
            painter.drawLine(QPointF(0, y), QPointF(self.width(), y))
            painter.drawLine(QPointF(4, y), QPointF(self.width() - 8, y))
        else:
            x = self.width() / 2
            painter.drawLine(QPointF(x, 0), QPointF(x, self.height()))
        # 画圆
        painter.setPen(Qt.NoPen)

        r = rect.height() // 2
        vr = int((value - self.minimum()) / (self.maximum() - self.minimum()) * r)
        rect = QRect(rect.x() - vr, rect.y(), rect.width(), rect.width())

        if option.state & QStyle.State_MouseOver:  # 双重圆
            # 半透明大圆
            
            r = rect.height() / 2
            painter.setBrush(QColor(*C.SLIDERHANDLE_COLOR,100))
            painter.drawRoundedRect(rect, r, r)
            # 实心小圆(上下左右偏移4)
            rect = rect.adjusted(4, 4, -4, -4)
            r = rect.height() / 2
            rect_inner = rect.adjusted(4, 4, -4, -4)
            r = rect_inner.height() // 2
            painter.setBrush(QColor(*C.SLIDERHANDLE_COLOR,255))
            painter.drawRoundedRect(rect, r, r)
            if self.draw_content is not None:
            painter.drawRoundedRect(rect_inner, r, r)

            painter.setPen(QColor(*C.SLIDERHANDLE_COLOR,255))
            font = painter.font()
            font.setPointSize(8)
            fm = QFontMetrics(font)
            painter.setFont(font)
                draw_content = self.draw_content.replace("value", str(self.value()))
                textw = fm.width(draw_content)

                if self.orientation() == Qt.Orientation.Horizontal:  # 在上方绘制文字
                    x, y = rect.x() - textw/2 + rect.width()/2, rect.y() - rect.height()
                    x = min(max(0, x), self.width()-textw)
                    # x = rect.x()
            is_hor = self.orientation() == Qt.Orientation.Horizontal
            if is_hor:  # 在上方绘制文字
                x, y = rect.x(), rect.y()
                dx, dy = x, y
                if value < (self.maximum() + self.minimum()) / 2:
                    dx += rect.width()
                else:
                    dx -= rect.width()
            else:  # 在左侧绘制文字
                x, y = rect.x() - rect.width(), rect.y()


            painter.drawText(
                dx, self.height() - fm.height(), str(value), 
            )

            if self.draw_content is not None:
                painter.drawText(
                    int(x), int(y)-10, textw, rect.height()+20,
                    Qt.AlignmentFlag.AlignCenter, self.draw_content.replace("value", str(self.value()))
                    0, dy, self.draw_content, 
                )

        else:  # 实心圆
            rect = rect.adjusted(4, 4, -4, -4)
            r = rect.height() / 2
            r = rect.height() // 2
            painter.setBrush(QColor(*C.SLIDERHANDLE_COLOR,200))
            painter.drawRoundedRect(rect, r, r)

Loading