Skip to content

Commit

Permalink
Add ValueSliders to Rotate and HSV dialogs
Browse files Browse the repository at this point in the history
  • Loading branch information
OverloadedOrama committed Oct 15, 2022
1 parent 0c954e6 commit 9230f35
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 359 deletions.
5 changes: 4 additions & 1 deletion Translations/Translations.pot
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,10 @@ msgstr ""
msgid "Rotate Image"
msgstr ""

msgid "Pivot (x, y):"
msgid "Pivot x:"
msgstr ""

msgid "Pivot y:"
msgstr ""

msgid "Smear options:"
Expand Down
62 changes: 14 additions & 48 deletions src/UI/Dialogs/ImageEffects/HSVDialog.gd
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
extends ImageEffect

var shader: Shader = preload("res://src/Shaders/HSV.shader")
var live_preview := true

var live_preview: bool = true

onready var hue_slider = $VBoxContainer/HBoxContainer/Sliders/Hue
onready var sat_slider = $VBoxContainer/HBoxContainer/Sliders/Saturation
onready var val_slider = $VBoxContainer/HBoxContainer/Sliders/Value

onready var hue_spinbox = $VBoxContainer/HBoxContainer/TextBoxes/Hue
onready var sat_spinbox = $VBoxContainer/HBoxContainer/TextBoxes/Saturation
onready var val_spinbox = $VBoxContainer/HBoxContainer/TextBoxes/Value
onready var wait_apply_timer = $WaitApply
onready var wait_time_spinbox = $VBoxContainer/WaitSettings/WaitTime
onready var hue_slider: ValueSlider = $VBoxContainer/HueSlider
onready var sat_slider: ValueSlider = $VBoxContainer/SaturationSlider
onready var val_slider: ValueSlider = $VBoxContainer/ValueSlider
onready var wait_apply_timer: Timer = $WaitApply
onready var wait_time_slider: ValueSlider = $VBoxContainer/WaitTime


func _ready() -> void:
Expand All @@ -22,7 +17,7 @@ func _ready() -> void:


func _about_to_show() -> void:
reset()
_reset()
._about_to_show()


Expand Down Expand Up @@ -54,58 +49,29 @@ func commit_action(cel: Image, project: Project = Global.current_project) -> voi
yield(gen, "done")


func reset() -> void:
disconnect_signals()
wait_apply_timer.wait_time = wait_time_spinbox.value / 1000.0
func _reset() -> void:
wait_apply_timer.wait_time = wait_time_slider.value / 1000.0
hue_slider.value = 0
sat_slider.value = 0
val_slider.value = 0
hue_spinbox.value = 0
sat_spinbox.value = 0
val_spinbox.value = 0
reconnect_signals()
confirmed = false


func disconnect_signals() -> void:
hue_slider.disconnect("value_changed", self, "_on_Hue_value_changed")
sat_slider.disconnect("value_changed", self, "_on_Saturation_value_changed")
val_slider.disconnect("value_changed", self, "_on_Value_value_changed")
hue_spinbox.disconnect("value_changed", self, "_on_Hue_value_changed")
sat_spinbox.disconnect("value_changed", self, "_on_Saturation_value_changed")
val_spinbox.disconnect("value_changed", self, "_on_Value_value_changed")


func reconnect_signals() -> void:
hue_slider.connect("value_changed", self, "_on_Hue_value_changed")
sat_slider.connect("value_changed", self, "_on_Saturation_value_changed")
val_slider.connect("value_changed", self, "_on_Value_value_changed")
hue_spinbox.connect("value_changed", self, "_on_Hue_value_changed")
sat_spinbox.connect("value_changed", self, "_on_Saturation_value_changed")
val_spinbox.connect("value_changed", self, "_on_Value_value_changed")


func _on_Hue_value_changed(value: float) -> void:
hue_spinbox.value = value
hue_slider.value = value
func _on_HueSlider_value_changed(_value: float) -> void:
if live_preview:
update_preview()
else:
wait_apply_timer.start()


func _on_Saturation_value_changed(value: float) -> void:
sat_spinbox.value = value
sat_slider.value = value
func _on_SaturationSlider_value_changed(_value: float) -> void:
if live_preview:
update_preview()
else:
wait_apply_timer.start()


func _on_Value_value_changed(value: float) -> void:
val_spinbox.value = value
val_slider.value = value
func _on_ValueSlider_value_changed(_value: float) -> void:
if live_preview:
update_preview()
else:
Expand All @@ -122,5 +88,5 @@ func _on_WaitTime_value_changed(value: float) -> void:

func _on_LiveCheckbox_toggled(button_pressed: bool) -> void:
live_preview = button_pressed
wait_time_spinbox.editable = !live_preview
wait_time_spinbox.get_parent().visible = !live_preview
wait_time_slider.editable = !live_preview
wait_time_slider.visible = !live_preview
163 changes: 36 additions & 127 deletions src/UI/Dialogs/ImageEffects/HSVDialog.tscn
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
[gd_scene load_steps=3 format=2]
[gd_scene load_steps=4 format=2]

[ext_resource path="res://src/UI/Dialogs/ImageEffects/HSVDialog.gd" type="Script" id=1]
[ext_resource path="res://src/UI/TransparentChecker.tscn" type="PackedScene" id=2]
[ext_resource path="res://src/UI/Nodes/ValueSlider.tscn" type="PackedScene" id=3]

[node name="HSVDialog" type="ConfirmationDialog"]
margin_left = 1.0
Expand All @@ -21,19 +22,16 @@ margin_left = 8.0
margin_top = 8.0
margin_right = 340.0
margin_bottom = 380.0
__meta__ = {
"_edit_use_anchors_": false
}

[node name="AspectRatioContainer" type="AspectRatioContainer" parent="VBoxContainer"]
margin_right = 332.0
margin_bottom = 228.0
margin_bottom = 232.0
size_flags_vertical = 3

[node name="Preview" type="TextureRect" parent="VBoxContainer/AspectRatioContainer"]
margin_left = 52.0
margin_right = 280.0
margin_bottom = 228.0
margin_left = 50.0
margin_right = 282.0
margin_bottom = 232.0
rect_min_size = Vector2( 200, 200 )
expand = true
stretch_mode = 5
Expand All @@ -46,158 +44,72 @@ margin_right = 0.0
margin_bottom = 0.0

[node name="LiveSettings" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 232.0
margin_top = 236.0
margin_right = 332.0
margin_bottom = 256.0
margin_bottom = 260.0
alignment = 1

[node name="LiveCheckbox" type="CheckBox" parent="VBoxContainer/LiveSettings"]
margin_left = 112.0
margin_right = 220.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
pressed = true
text = "Live Preview"

[node name="WaitSettings" type="HBoxContainer" parent="VBoxContainer"]
[node name="WaitTime" parent="VBoxContainer" instance=ExtResource( 3 )]
visible = false
margin_top = 232.0
margin_top = 236.0
margin_right = 332.0
margin_bottom = 256.0
alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}

[node name="Label" type="Label" parent="VBoxContainer/WaitSettings"]
margin_left = 3.0
margin_top = 5.0
margin_right = 251.0
margin_bottom = 19.0
text = "Update preview delay (in milliseconds)"

[node name="WaitTime" type="SpinBox" parent="VBoxContainer/WaitSettings"]
margin_left = 255.0
margin_right = 329.0
margin_bottom = 24.0
margin_bottom = 260.0
min_value = 1.0
max_value = 1000.0
value = 200.0
editable = false
suffix = "msec"
prefix = "Preview delay:"
suffix = "ms"

[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 260.0
[node name="HueSlider" parent="VBoxContainer" instance=ExtResource( 3 )]
margin_top = 264.0
margin_right = 332.0
margin_bottom = 344.0
custom_constants/separation = 10
__meta__ = {
"_edit_use_anchors_": false
}

[node name="Names" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
margin_right = 68.0
margin_bottom = 50.0
size_flags_horizontal = 3
size_flags_vertical = 0
size_flags_stretch_ratio = 0.9

[node name="Hue" type="Label" parent="VBoxContainer/HBoxContainer/Names"]
margin_right = 68.0
margin_bottom = 14.0
text = "Hue:"
align = 2

[node name="Saturation" type="Label" parent="VBoxContainer/HBoxContainer/Names"]
margin_top = 18.0
margin_right = 68.0
margin_bottom = 32.0
text = "Saturation:"
align = 2

[node name="Value" type="Label" parent="VBoxContainer/HBoxContainer/Names"]
margin_top = 36.0
margin_right = 68.0
margin_bottom = 50.0
text = "Value:"
align = 2

[node name="Sliders" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
margin_left = 78.0
margin_right = 248.0
margin_bottom = 84.0
size_flags_horizontal = 3
size_flags_stretch_ratio = 3.0
custom_constants/separation = 10
alignment = 1

[node name="Hue" type="HSlider" parent="VBoxContainer/HBoxContainer/Sliders"]
margin_top = 8.0
margin_right = 170.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
margin_bottom = 288.0
min_value = -180.0
max_value = 180.0
prefix = "Hue:"

[node name="Saturation" type="HSlider" parent="VBoxContainer/HBoxContainer/Sliders"]
margin_top = 34.0
margin_right = 170.0
margin_bottom = 50.0
mouse_default_cursor_shape = 2
min_value = -100.0

[node name="Value" type="HSlider" parent="VBoxContainer/HBoxContainer/Sliders"]
margin_top = 60.0
margin_right = 170.0
margin_bottom = 76.0
mouse_default_cursor_shape = 2
min_value = -100.0

[node name="TextBoxes" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
margin_left = 258.0
[node name="SaturationSlider" parent="VBoxContainer" instance=ExtResource( 3 )]
margin_top = 292.0
margin_right = 332.0
margin_bottom = 84.0
size_flags_horizontal = 3
size_flags_stretch_ratio = 0.0
custom_constants/separation = 6

[node name="Hue" type="SpinBox" parent="VBoxContainer/HBoxContainer/TextBoxes"]
margin_right = 74.0
margin_bottom = 24.0
mouse_default_cursor_shape = 1
min_value = -180.0
max_value = 180.0

[node name="Saturation" type="SpinBox" parent="VBoxContainer/HBoxContainer/TextBoxes"]
margin_top = 30.0
margin_right = 74.0
margin_bottom = 54.0
mouse_default_cursor_shape = 1
margin_bottom = 316.0
min_value = -100.0
prefix = "Saturation:"

[node name="Value" type="SpinBox" parent="VBoxContainer/HBoxContainer/TextBoxes"]
margin_top = 60.0
margin_right = 74.0
margin_bottom = 84.0
mouse_default_cursor_shape = 1
[node name="ValueSlider" parent="VBoxContainer" instance=ExtResource( 3 )]
margin_top = 320.0
margin_right = 332.0
margin_bottom = 344.0
min_value = -100.0
prefix = "Value:"

[node name="AffectHBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
margin_top = 348.0
margin_right = 332.0
margin_bottom = 372.0

[node name="SelectionCheckBox" type="CheckBox" parent="VBoxContainer/AffectHBoxContainer"]
margin_right = 160.0
margin_right = 164.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
size_flags_horizontal = 3
pressed = true
text = "Only affect selection"

[node name="AffectOptionButton" type="OptionButton" parent="VBoxContainer/AffectHBoxContainer"]
margin_left = 164.0
margin_right = 278.0
margin_left = 168.0
margin_right = 332.0
margin_bottom = 24.0
mouse_default_cursor_shape = 2
size_flags_horizontal = 3
text = "Selected cels"
items = [ "Selected cels", null, false, 0, null, "Current frame", null, false, 1, null, "All frames", null, false, 2, null, "All projects", null, false, 3, null ]
selected = 0
Expand All @@ -207,11 +119,8 @@ wait_time = 0.1
one_shot = true

[connection signal="toggled" from="VBoxContainer/LiveSettings/LiveCheckbox" to="." method="_on_LiveCheckbox_toggled"]
[connection signal="value_changed" from="VBoxContainer/WaitSettings/WaitTime" to="." method="_on_WaitTime_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/Sliders/Hue" to="." method="_on_Hue_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/Sliders/Saturation" to="." method="_on_Saturation_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/Sliders/Value" to="." method="_on_Value_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/TextBoxes/Hue" to="." method="_on_Hue_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/TextBoxes/Saturation" to="." method="_on_Saturation_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/TextBoxes/Value" to="." method="_on_Value_value_changed"]
[connection signal="value_changed" from="VBoxContainer/WaitTime" to="." method="_on_WaitTime_value_changed"]
[connection signal="value_changed" from="VBoxContainer/HueSlider" to="." method="_on_HueSlider_value_changed"]
[connection signal="value_changed" from="VBoxContainer/SaturationSlider" to="." method="_on_SaturationSlider_value_changed"]
[connection signal="value_changed" from="VBoxContainer/ValueSlider" to="." method="_on_ValueSlider_value_changed"]
[connection signal="timeout" from="WaitApply" to="." method="_on_WaitApply_timeout"]
Loading

0 comments on commit 9230f35

Please sign in to comment.