2 SPDX-FileCopyrightText: 2019 Tusooa Zhu <tusooa@vista.aero>
4 This file is part of Krita-docker-color-slider.
6 SPDX-License-Identifier: GPL-3.0-or-later
10 from PyQt6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton
13 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton
15from krita
import Krita, DockWidget, ManagedColor, DockWidgetFactory, DockWidgetFactoryBase
16from builtins
import i18n, Application
18from .slider_line
import SliderLine
19from .ui_mixer_slider_docker
import UIMixerSliderDocker
26 super(MixerSliderDocker, self).
__init__()
29 settings = main_program.readSetting(
"",
"MixerSliderColors",
30 "RGBA,U8,sRGB-elle-V2-srgbtrc.icc,1,0.8,0.4,1|" +
31 "RGBA,U8,sRGB-elle-V2-srgbtrc.icc,0,0,0,1")
44 icon = main_program.icon(
"configure")
52 for line
in settings.split(
";"):
53 colors = line.split(
'|')
57 right_color = self.
parse_color(colors[1].split(
','))
58 widget =
SliderLine(left_color, right_color, self)
60 self.
layout.addWidget(widget)
63 self.setWindowTitle(i18n(
"Mixer Slider Docker"))
64 self.setWidget(self.
widget)
65 [x.show()
for x
in self.
sliders]
70 if self.
ui.line_edit
is not None:
71 num_sliders = int(self.
ui.line_edit.text())
72 if len(self.
sliders) > num_sliders:
73 for extra_line
in self.
sliders[num_sliders:]:
74 self.
layout.removeWidget(extra_line)
75 extra_line.setParent(
None)
78 elif len(self.
sliders) < num_sliders:
79 for i
in range(num_sliders - len(self.
sliders)):
82 self.
layout.addWidget(widget)
86 if self.canvas()
is not None:
87 if self.canvas().view()
is not None:
88 canvas_color = self.canvas().view().foregroundColor()
89 return ManagedColor(canvas_color.colorModel(), canvas_color.colorDepth(), canvas_color.colorProfile())
90 return ManagedColor(
'RGBA',
'U8',
'sRGB-elle-V2-srgbtrc.icc')
94 self.
ui.initialize(self)
102 main_program.writeSetting(
"",
"MixerSliderColors", setting)
105 return ','.join([managedcolor.colorModel(),
106 managedcolor.colorDepth(),
107 managedcolor.colorProfile()] +
108 [str(c)
for c
in managedcolor.components()])
111 color = ManagedColor(array[0], array[1], array[2])
112 color.setComponents([float(x)
for x
in array[3:]])
123 return managedcolor.colorForCanvas(self.canvas())
125Application.addDockWidgetFactory(
DockWidgetFactory(
"mixer_slider_docker", DockWidgetFactoryBase.DockPosition.DockRight, MixerSliderDocker))
static Krita * instance()
instance retrieve the singleton instance of the Application object.
static ManagedColor * fromQColor(const QColor &qcolor, Canvas *canvas=0)
fromQColor is the (approximate) reverse of colorForCanvas()
color_to_settings(self, managedcolor)
canvasChanged(self, canvas)
managedcolor_to_qcolor(self, managedcolor)
qcolor_to_managedcolor(self, qcolor)