mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +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_inputs import (
|
||||
ColorInputsWidget,
|
||||
AlphaInputs
|
||||
AlphaSlider,
|
||||
AlphaInputs,
|
||||
HEXInputs,
|
||||
RGBInputs,
|
||||
HSLInputs,
|
||||
HSVInputs,
|
||||
CMYKInputs
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -16,24 +22,27 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
|||
def __init__(self, color=None, parent=None):
|
||||
super(ColorPickerWidget, self).__init__(parent)
|
||||
|
||||
# Eye picked widget
|
||||
pick_widget = PickScreenColorWidget()
|
||||
|
||||
# Color utils
|
||||
utils_widget = QtWidgets.QWidget(self)
|
||||
utils_layout = QtWidgets.QVBoxLayout(utils_widget)
|
||||
|
||||
bottom_utils_widget = QtWidgets.QWidget(utils_widget)
|
||||
top_part = QtWidgets.QWidget(self)
|
||||
left_side = QtWidgets.QWidget(top_part)
|
||||
|
||||
# Color triangle
|
||||
color_triangle = QtColorTriangle(utils_widget)
|
||||
color_triangle = QtColorTriangle(left_side)
|
||||
|
||||
# Color preview
|
||||
color_view = ColorViewer(bottom_utils_widget)
|
||||
color_view.setMaximumHeight(50)
|
||||
alpha_slider = AlphaSlider(QtCore.Qt.Horizontal, left_side)
|
||||
|
||||
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
|
||||
btn_pick_color = QtWidgets.QPushButton(bottom_utils_widget)
|
||||
btn_pick_color = QtWidgets.QPushButton(right_side)
|
||||
icon_path = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"eyedropper.png"
|
||||
|
|
@ -41,50 +50,62 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
|||
btn_pick_color.setIcon(QtGui.QIcon(icon_path))
|
||||
btn_pick_color.setToolTip("Pick a color")
|
||||
|
||||
# Color inputs widget
|
||||
color_inputs = ColorInputsWidget(self)
|
||||
# Color preview
|
||||
color_view = ColorViewer(right_side)
|
||||
color_view.setMaximumHeight(50)
|
||||
|
||||
# Alpha inputs
|
||||
alpha_input_wrapper_widget = QtWidgets.QWidget(self)
|
||||
alpha_input_wrapper_layout = QtWidgets.QVBoxLayout(
|
||||
alpha_input_wrapper_widget
|
||||
)
|
||||
row = 0
|
||||
right_layout = QtWidgets.QGridLayout(right_side)
|
||||
right_layout.setContentsMargins(0, 0, 0, 0)
|
||||
right_layout.addWidget(btn_pick_color, row, 0)
|
||||
right_layout.addWidget(color_view, row, 1)
|
||||
|
||||
alpha_inputs = AlphaInputs(alpha_input_wrapper_widget)
|
||||
alpha_input_wrapper_layout.addWidget(alpha_inputs)
|
||||
alpha_input_wrapper_layout.addWidget(QtWidgets.QWidget(), 1)
|
||||
color_inputs_color = QtGui.QColor()
|
||||
col_inputs_by_label = [
|
||||
("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)
|
||||
bottom_utils_layout.setContentsMargins(0, 0, 0, 0)
|
||||
bottom_utils_layout.addWidget(color_view, 1)
|
||||
bottom_utils_layout.addWidget(btn_pick_color, 0)
|
||||
|
||||
utils_layout.addWidget(bottom_utils_widget, 0)
|
||||
utils_layout.addWidget(color_triangle, 1)
|
||||
row += 1
|
||||
alpha_inputs = AlphaInputs(right_side)
|
||||
right_layout.addWidget(QtWidgets.QLabel("Alpha", right_side), row, 0)
|
||||
right_layout.addWidget(alpha_inputs, row, 1)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.addWidget(utils_widget, 1)
|
||||
layout.addWidget(color_inputs, 0)
|
||||
layout.addWidget(alpha_input_wrapper_widget, 0)
|
||||
layout.setSpacing(5)
|
||||
layout.addWidget(left_side, 1)
|
||||
layout.addWidget(right_side, 0)
|
||||
|
||||
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)
|
||||
alpha_slider.valueChanged.connect(self._on_alpha_slider_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.alpha_changed)
|
||||
alpha_inputs.alpha_changed.connect(self._on_alpha_inputs_changed)
|
||||
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.utils_widget = utils_widget
|
||||
self.bottom_utils_widget = bottom_utils_widget
|
||||
|
||||
self.color_triangle = color_triangle
|
||||
self.alpha_slider = alpha_slider
|
||||
|
||||
self.color_view = color_view
|
||||
self.btn_pick_color = btn_pick_color
|
||||
self.color_inputs = color_inputs
|
||||
self.alpha_inputs = alpha_inputs
|
||||
self.btn_pick_color = btn_pick_color
|
||||
|
||||
if color:
|
||||
self.set_color(color)
|
||||
|
|
@ -92,9 +113,7 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
|||
|
||||
def showEvent(self, event):
|
||||
super(ColorPickerWidget, self).showEvent(event)
|
||||
triangle_width = int((
|
||||
self.utils_widget.height() - self.bottom_utils_widget.height()
|
||||
) / 5 * 4)
|
||||
triangle_width = int(self.height() / 5 * 4)
|
||||
self.color_triangle.setMinimumWidth(triangle_width)
|
||||
|
||||
def color(self):
|
||||
|
|
@ -109,12 +128,38 @@ class ColorPickerWidget(QtWidgets.QWidget):
|
|||
|
||||
def triangle_color_changed(self, 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):
|
||||
self.color_view.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):
|
||||
self.color_view.set_alpha(alpha)
|
||||
def _on_color_input_value_change(self):
|
||||
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