Krita Source Code Documentation
Loading...
Searching...
No Matches
slider_line.py
Go to the documentation of this file.
1'''
2 SPDX-FileCopyrightText: 2019 Tusooa Zhu <tusooa@vista.aero>
3
4 This file is part of Krita-docker-color-slider.
5
6 SPDX-License-Identifier: GPL-3.0-or-later
7'''
8try:
9 from PyQt6.QtWidgets import QHBoxLayout, QWidget
10 from PyQt6.QtGui import QPixmap, QPainter
11 from PyQt6.QtCore import pyqtSlot, pyqtSignal
12except:
13 from PyQt5.QtWidgets import QHBoxLayout, QWidget
14 from PyQt5.QtGui import QPixmap, QPainter
15 from PyQt5.Qt import pyqtSlot, pyqtSignal
16
17from .color_slider import ColorSlider
18
19
20class SliderBtn(QWidget):
21 clicked = pyqtSignal()
22
23 def __init__(self, parent=None):
24 super(SliderBtn, self).__init__(parent)
25
26 def set_color(self, qcolor):
27 self.color = qcolor
28 self.update()
29
30 def update_color(self):
31 color_sq = QPixmap(self.width(), self.height())
32 color_sq.fill(self.color)
33 image = color_sq.toImage()
34
35 painter = QPainter(self)
36 painter.drawImage(0, 0, image)
37
38 def paintEvent(self, event):
39 self.update_color()
40
41 def mouseReleaseEvent(self, event):
42 self.clicked.emit()
43
44
45class SliderLine(QWidget):
46 def __init__(self, left_color, right_color, docker, parent=None):
47 super(SliderLine, self).__init__(parent)
50 self.docker = docker
52 self.layout = QHBoxLayout()
53 self.layout.setContentsMargins(2, 2, 2, 2)
54 self.setLayout(self.layout)
55 self.layout.addWidget(self.left_button)
56 self.layout.addWidget(self.color_slider)
57 self.layout.addWidget(self.right_button)
60 self.set_color('left', left_color)
61 self.set_color('right', right_color)
62 self.left_button.setMinimumSize(30, 30)
63 self.left_button.setMaximumSize(30, 30)
64 self.right_button.setMinimumSize(30, 30)
65 self.right_button.setMaximumSize(30, 30)
66 self.color_slider.setMaximumHeight(30)
67
68 def set_color(self, pos, color):
69 button_to_set = None
70 if pos == 'left':
71 self.left = color
72 button_to_set = self.left_button
73 else:
74 self.right = color
75 button_to_set = self.right_button
76
77 self.color_slider.set_color(pos, color)
78
79 button_to_set.set_color(self.docker.managedcolor_to_qcolor(color))
80
81 @pyqtSlot()
83 if self.docker.canvas() is not None:
84 if self.docker.canvas().view() is not None:
85 self.set_color('left', self.docker.canvas().view().foregroundColor())
86 self.color_slider.value_x = 0 # set the cursor to the left-most
87 self.color_slider.update()
88 self.docker.write_settings()
89
90 @pyqtSlot()
92 if self.docker.canvas() is not None:
93 if self.docker.canvas().view() is not None:
94 self.set_color('right', self.docker.canvas().view().foregroundColor())
95 self.color_slider.value_x = self.color_slider.width() - 1
96 self.color_slider.update()
97 self.docker.write_settings()
__init__(self, left_color, right_color, docker, parent=None)