mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 08:24:53 +01:00
inputs are handled inside ColorPickerWidget
This commit is contained in:
parent
cbed588a75
commit
9f86bcff62
1 changed files with 93 additions and 48 deletions
|
|
@ -6,7 +6,13 @@ from .color_view import ColorViewer
|
||||||
from .color_screen_pick import PickScreenColorWidget
|
from .color_screen_pick import PickScreenColorWidget
|
||||||
from .color_inputs import (
|
from .color_inputs import (
|
||||||
ColorInputsWidget,
|
ColorInputsWidget,
|
||||||
AlphaInputs
|
AlphaSlider,
|
||||||
|
AlphaInputs,
|
||||||
|
HEXInputs,
|
||||||
|
RGBInputs,
|
||||||
|
HSLInputs,
|
||||||
|
HSVInputs,
|
||||||
|
CMYKInputs
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -16,24 +22,27 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
||||||
def __init__(self, color=None, parent=None):
|
def __init__(self, color=None, parent=None):
|
||||||
super(ColorPickerWidget, self).__init__(parent)
|
super(ColorPickerWidget, self).__init__(parent)
|
||||||
|
|
||||||
# Eye picked widget
|
top_part = QtWidgets.QWidget(self)
|
||||||
pick_widget = PickScreenColorWidget()
|
left_side = QtWidgets.QWidget(top_part)
|
||||||
|
|
||||||
# Color utils
|
|
||||||
utils_widget = QtWidgets.QWidget(self)
|
|
||||||
utils_layout = QtWidgets.QVBoxLayout(utils_widget)
|
|
||||||
|
|
||||||
bottom_utils_widget = QtWidgets.QWidget(utils_widget)
|
|
||||||
|
|
||||||
# Color triangle
|
# Color triangle
|
||||||
color_triangle = QtColorTriangle(utils_widget)
|
color_triangle = QtColorTriangle(left_side)
|
||||||
|
|
||||||
# Color preview
|
alpha_slider = AlphaSlider(QtCore.Qt.Horizontal, left_side)
|
||||||
color_view = ColorViewer(bottom_utils_widget)
|
|
||||||
color_view.setMaximumHeight(50)
|
left_layout = QtWidgets.QVBoxLayout(left_side)
|
||||||
|
left_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
left_layout.addWidget(color_triangle)
|
||||||
|
left_layout.addWidget(alpha_slider)
|
||||||
|
|
||||||
|
right_side = QtWidgets.QWidget(top_part)
|
||||||
|
|
||||||
|
# Eye picked widget
|
||||||
|
pick_widget = PickScreenColorWidget()
|
||||||
|
pick_widget.setMaximumHeight(50)
|
||||||
|
|
||||||
# Color pick button
|
# Color pick button
|
||||||
btn_pick_color = QtWidgets.QPushButton(bottom_utils_widget)
|
btn_pick_color = QtWidgets.QPushButton(right_side)
|
||||||
icon_path = os.path.join(
|
icon_path = os.path.join(
|
||||||
os.path.dirname(os.path.abspath(__file__)),
|
os.path.dirname(os.path.abspath(__file__)),
|
||||||
"eyedropper.png"
|
"eyedropper.png"
|
||||||
|
|
@ -41,50 +50,62 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
||||||
btn_pick_color.setIcon(QtGui.QIcon(icon_path))
|
btn_pick_color.setIcon(QtGui.QIcon(icon_path))
|
||||||
btn_pick_color.setToolTip("Pick a color")
|
btn_pick_color.setToolTip("Pick a color")
|
||||||
|
|
||||||
# Color inputs widget
|
# Color preview
|
||||||
color_inputs = ColorInputsWidget(self)
|
color_view = ColorViewer(right_side)
|
||||||
|
color_view.setMaximumHeight(50)
|
||||||
|
|
||||||
# Alpha inputs
|
row = 0
|
||||||
alpha_input_wrapper_widget = QtWidgets.QWidget(self)
|
right_layout = QtWidgets.QGridLayout(right_side)
|
||||||
alpha_input_wrapper_layout = QtWidgets.QVBoxLayout(
|
right_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
alpha_input_wrapper_widget
|
right_layout.addWidget(btn_pick_color, row, 0)
|
||||||
)
|
right_layout.addWidget(color_view, row, 1)
|
||||||
|
|
||||||
alpha_inputs = AlphaInputs(alpha_input_wrapper_widget)
|
color_inputs_color = QtGui.QColor()
|
||||||
alpha_input_wrapper_layout.addWidget(alpha_inputs)
|
col_inputs_by_label = [
|
||||||
alpha_input_wrapper_layout.addWidget(QtWidgets.QWidget(), 1)
|
("HEX", HEXInputs(color_inputs_color, right_side)),
|
||||||
|
("RGB", RGBInputs(color_inputs_color, right_side)),
|
||||||
|
("HSL", HSLInputs(color_inputs_color, right_side)),
|
||||||
|
("HSV", HSVInputs(color_inputs_color, right_side))
|
||||||
|
]
|
||||||
|
color_input_fields = []
|
||||||
|
for label, input_field in col_inputs_by_label:
|
||||||
|
row += 1
|
||||||
|
right_layout.addWidget(QtWidgets.QLabel(label, right_side), row, 0)
|
||||||
|
right_layout.addWidget(input_field, row, 1)
|
||||||
|
input_field.value_changed.connect(
|
||||||
|
self._on_color_input_value_change
|
||||||
|
)
|
||||||
|
color_input_fields.append(input_field)
|
||||||
|
|
||||||
bottom_utils_layout = QtWidgets.QHBoxLayout(bottom_utils_widget)
|
row += 1
|
||||||
bottom_utils_layout.setContentsMargins(0, 0, 0, 0)
|
alpha_inputs = AlphaInputs(right_side)
|
||||||
bottom_utils_layout.addWidget(color_view, 1)
|
right_layout.addWidget(QtWidgets.QLabel("Alpha", right_side), row, 0)
|
||||||
bottom_utils_layout.addWidget(btn_pick_color, 0)
|
right_layout.addWidget(alpha_inputs, row, 1)
|
||||||
|
|
||||||
utils_layout.addWidget(bottom_utils_widget, 0)
|
|
||||||
utils_layout.addWidget(color_triangle, 1)
|
|
||||||
|
|
||||||
layout = QtWidgets.QHBoxLayout(self)
|
layout = QtWidgets.QHBoxLayout(self)
|
||||||
layout.addWidget(utils_widget, 1)
|
layout.setSpacing(5)
|
||||||
layout.addWidget(color_inputs, 0)
|
layout.addWidget(left_side, 1)
|
||||||
layout.addWidget(alpha_input_wrapper_widget, 0)
|
layout.addWidget(right_side, 0)
|
||||||
|
|
||||||
color_view.set_color(color_triangle.cur_color)
|
color_view.set_color(color_triangle.cur_color)
|
||||||
color_inputs.set_color(color_triangle.cur_color)
|
|
||||||
|
|
||||||
color_triangle.color_changed.connect(self.triangle_color_changed)
|
color_triangle.color_changed.connect(self.triangle_color_changed)
|
||||||
|
alpha_slider.valueChanged.connect(self._on_alpha_slider_change)
|
||||||
pick_widget.color_selected.connect(self.on_color_change)
|
pick_widget.color_selected.connect(self.on_color_change)
|
||||||
color_inputs.color_changed.connect(self.on_color_change)
|
alpha_inputs.alpha_changed.connect(self._on_alpha_inputs_changed)
|
||||||
alpha_inputs.alpha_changed.connect(self.alpha_changed)
|
|
||||||
btn_pick_color.released.connect(self.pick_color)
|
btn_pick_color.released.connect(self.pick_color)
|
||||||
|
|
||||||
|
self.color_input_fields = color_input_fields
|
||||||
|
self.color_inputs_color = color_inputs_color
|
||||||
|
|
||||||
self.pick_widget = pick_widget
|
self.pick_widget = pick_widget
|
||||||
self.utils_widget = utils_widget
|
|
||||||
self.bottom_utils_widget = bottom_utils_widget
|
|
||||||
|
|
||||||
self.color_triangle = color_triangle
|
self.color_triangle = color_triangle
|
||||||
|
self.alpha_slider = alpha_slider
|
||||||
|
|
||||||
self.color_view = color_view
|
self.color_view = color_view
|
||||||
self.btn_pick_color = btn_pick_color
|
|
||||||
self.color_inputs = color_inputs
|
|
||||||
self.alpha_inputs = alpha_inputs
|
self.alpha_inputs = alpha_inputs
|
||||||
|
self.btn_pick_color = btn_pick_color
|
||||||
|
|
||||||
if color:
|
if color:
|
||||||
self.set_color(color)
|
self.set_color(color)
|
||||||
|
|
@ -92,9 +113,7 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
||||||
|
|
||||||
def showEvent(self, event):
|
def showEvent(self, event):
|
||||||
super(ColorPickerWidget, self).showEvent(event)
|
super(ColorPickerWidget, self).showEvent(event)
|
||||||
triangle_width = int((
|
triangle_width = int(self.height() / 5 * 4)
|
||||||
self.utils_widget.height() - self.bottom_utils_widget.height()
|
|
||||||
) / 5 * 4)
|
|
||||||
self.color_triangle.setMinimumWidth(triangle_width)
|
self.color_triangle.setMinimumWidth(triangle_width)
|
||||||
|
|
||||||
def color(self):
|
def color(self):
|
||||||
|
|
@ -109,12 +128,38 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
||||||
|
|
||||||
def triangle_color_changed(self, color):
|
def triangle_color_changed(self, color):
|
||||||
self.color_view.set_color(color)
|
self.color_view.set_color(color)
|
||||||
self.color_inputs.set_color(color)
|
if self.color_inputs_color != color:
|
||||||
|
self.color_inputs_color.setRgb(
|
||||||
|
color.red(), color.green(), color.blue()
|
||||||
|
)
|
||||||
|
for color_input in self.color_input_fields:
|
||||||
|
color_input.color_changed()
|
||||||
|
|
||||||
def on_color_change(self, color):
|
def on_color_change(self, color):
|
||||||
self.color_view.set_color(color)
|
self.color_view.set_color(color)
|
||||||
self.color_triangle.set_color(color)
|
self.color_triangle.set_color(color)
|
||||||
self.color_inputs.set_color(color)
|
if self.color_inputs_color != color:
|
||||||
|
self.color_inputs_color.setRgb(
|
||||||
|
color.red(), color.green(), color.blue()
|
||||||
|
)
|
||||||
|
for color_input in self.color_input_fields:
|
||||||
|
color_input.color_changed()
|
||||||
|
|
||||||
def alpha_changed(self, alpha):
|
def _on_color_input_value_change(self):
|
||||||
self.color_view.set_alpha(alpha)
|
for input_field in self.color_input_fields:
|
||||||
|
input_field.color_changed()
|
||||||
|
self.on_color_change(QtGui.QColor(self.color_inputs_color))
|
||||||
|
|
||||||
|
def alpha_changed(self, value):
|
||||||
|
self.color_view.set_alpha(value)
|
||||||
|
if self.alpha_slider.value() != value:
|
||||||
|
self.alpha_slider.setValue(value)
|
||||||
|
|
||||||
|
if self.alpha_inputs.alpha_value != value:
|
||||||
|
self.alpha_inputs.set_alpha(value)
|
||||||
|
|
||||||
|
def _on_alpha_inputs_changed(self, value):
|
||||||
|
self.alpha_changed(value)
|
||||||
|
|
||||||
|
def _on_alpha_slider_change(self, value):
|
||||||
|
self.alpha_changed(value)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue