1
0
Fork 0
mirror of https://github.com/Orama-Interactive/Pixelorama.git synced 2025-02-20 12:33:14 +00:00

Some timeline UI improvements

This commit is contained in:
Emmanouil Papadeas 2023-12-01 21:13:28 +02:00
parent 2ce81f8c1c
commit 1b22e75034
2 changed files with 93 additions and 100 deletions

View file

@ -1,5 +1,7 @@
extends Panel
const FRAME_BUTTON_TSCN := preload("res://src/UI/Timeline/FrameButton.tscn")
var is_animation_running := false
var animation_loop := 1 ## 0 is no loop, 1 is cycle loop, 2 is ping-pong loop
var animation_forward := true
@ -13,24 +15,21 @@ var max_cel_size := 144
var past_above_canvas := true
var future_above_canvas := true
var frame_button_node := preload("res://src/UI/Timeline/FrameButton.tscn")
@onready var old_scroll := 0 ## The previous scroll state of $ScrollContainer
@onready var tag_spacer = find_child("TagSpacer")
@onready var start_spacer = find_child("StartSpacer")
@onready var layer_settings_container: VBoxContainer = %LayerSettingsContainer
@onready var layer_container: VBoxContainer = %LayerContainer
@onready var add_layer_list: MenuButton = $"%AddLayerList"
@onready var tag_spacer := %TagSpacer as Control
@onready var layer_settings_container := %LayerSettingsContainer as VBoxContainer
@onready var layer_container := %LayerContainer as VBoxContainer
@onready var add_layer_list := $"%AddLayerList" as MenuButton
@onready var blend_modes_button := %BlendModes as OptionButton
@onready var timeline_scroll: ScrollContainer = find_child("TimelineScroll")
@onready var frame_scroll_container: Control = find_child("FrameScrollContainer")
@onready var frame_scroll_bar: HScrollBar = find_child("FrameScrollBar")
@onready var tag_scroll_container: ScrollContainer = find_child("TagScroll")
@onready var layer_frame_h_split: HSplitContainer = find_child("LayerFrameHSplit")
@onready var fps_spinbox: ValueSlider = find_child("FPSValue")
@onready var onion_skinning_button: BaseButton = find_child("OnionSkinning")
@onready var loop_animation_button: BaseButton = find_child("LoopAnim")
@onready var drag_highlight: ColorRect = find_child("DragHighlight")
@onready var frame_scroll_container := %FrameScrollContainer as Control
@onready var frame_scroll_bar := %FrameScrollBar as HScrollBar
@onready var tag_scroll_container := %TagScroll as ScrollContainer
@onready var layer_frame_h_split := %LayerFrameHSplit as HSplitContainer
@onready var fps_spinbox := %FPSValue as ValueSlider
@onready var onion_skinning_button := %OnionSkinning as BaseButton
@onready var onion_skinning_settings := $OnionSkinningSettings as Popup
@onready var loop_animation_button := %LoopAnim as BaseButton
@onready var drag_highlight := $DragHighlight as ColorRect
func _ready() -> void:
@ -86,14 +85,14 @@ func _ready() -> void:
var future_above = Global.config_cache.get_value(
"timeline", "future_above_canvas", future_above_canvas
)
$"%PastOnionSkinning".value = past_rate
$"%FutureOnionSkinning".value = future_rate
$"%BlueRedMode".button_pressed = blue_red
$"%PastPlacement".select(0 if past_above else 1)
$"%FuturePlacement".select(0 if future_above else 1)
%PastOnionSkinning.value = past_rate
%FutureOnionSkinning.value = future_rate
%BlueRedMode.button_pressed = blue_red
%PastPlacement.select(0 if past_above else 1)
%FuturePlacement.select(0 if future_above else 1)
# emit signals that were supposed to be emitted (Check if it's still required in godot 4)
$"%PastPlacement".item_selected.emit(0 if past_above else 1)
$"%FuturePlacement".item_selected.emit(0 if future_above else 1)
%PastPlacement.item_selected.emit(0 if past_above else 1)
%FuturePlacement.item_selected.emit(0 if future_above else 1)
# Makes sure that the frame and tag scroll bars are in the right place:
Global.layer_vbox.emit_signal.call_deferred("resized")
@ -488,14 +487,8 @@ func _on_OnionSkinning_pressed() -> void:
func _on_OnionSkinningSettings_pressed() -> void:
$OnionSkinningSettings.popup(
Rect2(
onion_skinning_button.global_position.x - $OnionSkinningSettings.size.x - 16,
onion_skinning_button.global_position.y - $OnionSkinningSettings.size.y + 32,
136,
126
)
)
var pos := Vector2i(onion_skinning_button.global_position) - onion_skinning_settings.size
onion_skinning_settings.popup(Rect2i(pos.x - 16, pos.y + 32, 136, 126))
func _on_LoopAnim_pressed() -> void:
@ -981,11 +974,11 @@ func _on_OpacitySlider_value_changed(value: float) -> void:
func _on_onion_skinning_settings_close_requested() -> void:
$OnionSkinningSettings.hide()
onion_skinning_settings.hide()
func _on_onion_skinning_settings_visibility_changed() -> void:
Global.can_draw = not $OnionSkinningSettings.visible
Global.can_draw = not onion_skinning_settings.visible
# Methods to update the UI in response to changes in the current project
@ -1005,7 +998,7 @@ func project_changed() -> void:
for i in project.layers.size():
project_layer_added(i)
for f in project.frames.size():
var button := frame_button_node.instantiate() as Button
var button := FRAME_BUTTON_TSCN.instantiate() as Button
button.frame = f
Global.frame_hbox.add_child(button)
@ -1030,7 +1023,7 @@ func project_changed() -> void:
func project_frame_added(frame: int) -> void:
var project := Global.current_project
var button := frame_button_node.instantiate() as Button
var button := FRAME_BUTTON_TSCN.instantiate() as Button
button.frame = frame
Global.frame_hbox.add_child(button)
Global.frame_hbox.move_child(button, frame)

View file

@ -188,7 +188,6 @@ anchor_bottom = 1.0
[node name="TimelineButtons" type="HBoxContainer" parent="TimelineContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="LayerTools" type="PanelContainer" parent="TimelineContainer/TimelineButtons"]
layout_mode = 2
@ -199,11 +198,10 @@ layout_mode = 2
[node name="LayerButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 9
[node name="AddLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(44, 22)
custom_minimum_size = Vector2(44, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -256,7 +254,7 @@ offset_bottom = 6.0
texture = ExtResource("10")
[node name="RemoveLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -281,7 +279,7 @@ size_flags_vertical = 0
texture = ExtResource("6")
[node name="MoveUpLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -306,7 +304,7 @@ size_flags_vertical = 0
texture = ExtResource("4")
[node name="MoveDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -331,7 +329,7 @@ size_flags_vertical = 0
texture = ExtResource("3")
[node name="CloneLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -355,7 +353,7 @@ size_flags_vertical = 0
texture = ExtResource("7")
[node name="MergeDownLayer" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(22, 22)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
@ -379,31 +377,26 @@ size_flags_horizontal = 0
size_flags_vertical = 0
texture = ExtResource("5")
[node name="HBoxContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"]
layout_mode = 2
[node name="LayerFX" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"]
[node name="LayerFX" type="Button" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons"]
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_vertical = 4
mouse_default_cursor_shape = 2
text = "FX"
[node name="BlendModeLabel" type="Label" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"]
[node name="BlendContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer"]
layout_mode = 2
[node name="BlendModeLabel" type="Label" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer"]
layout_mode = 2
text = "Blend mode:"
[node name="BlendModes" type="OptionButton" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer"]
[node name="BlendModes" type="OptionButton" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
mouse_default_cursor_shape = 2
[node name="OpacitySlider" parent="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer" instance=ExtResource("9")]
custom_minimum_size = Vector2(207, 24)
layout_mode = 2
size_flags_vertical = 0
value = 100.0
prefix = "Opacity:"
[node name="VBoxContainer" type="VBoxContainer" parent="TimelineContainer/TimelineButtons"]
layout_mode = 2
size_flags_horizontal = 3
@ -421,14 +414,14 @@ size_flags_horizontal = 10
custom_minimum_size = Vector2(0, 24)
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 40
theme_override_constants/separation = 24
alignment = 2
[node name="FrameButtons" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons"]
layout_mode = 2
[node name="AddFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Add a new frame"
@ -449,7 +442,7 @@ offset_bottom = 6.0
texture = ExtResource("19")
[node name="DeleteFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Remove Frame"
@ -472,7 +465,7 @@ size_flags_vertical = 0
texture = ExtResource("20")
[node name="CopyFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Clone Frame"
@ -493,7 +486,7 @@ offset_bottom = 7.0
texture = ExtResource("27")
[node name="FrameTagButton" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Manage frame tags"
@ -514,7 +507,7 @@ offset_bottom = 7.0
texture = ExtResource("28")
[node name="MoveLeft" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Move the selected frame to the left."
@ -536,7 +529,7 @@ texture = ExtResource("8")
flip_h = true
[node name="MoveRight" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Move the selected frame to the right."
@ -560,7 +553,7 @@ texture = ExtResource("8")
layout_mode = 2
[node name="FirstFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Jump to the first frame"
focus_mode = 0
@ -580,7 +573,7 @@ offset_bottom = 6.0
texture = ExtResource("21")
[node name="PreviousFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Go to the previous frame"
focus_mode = 0
@ -600,7 +593,7 @@ offset_bottom = 6.0
texture = ExtResource("23")
[node name="PlayBackwards" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Play the animation backwards (from end to beginning)"
focus_mode = 0
@ -621,7 +614,7 @@ offset_bottom = 6.0
texture = ExtResource("24")
[node name="PlayForward" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Play the animation forward (from beginning to end)"
@ -643,7 +636,7 @@ offset_bottom = 6.0
texture = ExtResource("22")
[node name="NextFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Go to the next frame"
focus_mode = 0
@ -663,7 +656,7 @@ offset_bottom = 6.0
texture = ExtResource("26")
[node name="LastFrame" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/PlaybackButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Jump to the last frame"
focus_mode = 0
@ -686,7 +679,7 @@ texture = ExtResource("25")
layout_mode = 2
[node name="OnionSkinningSettings" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
size_flags_horizontal = 0
tooltip_text = "Onion Skinning settings"
@ -709,7 +702,8 @@ size_flags_vertical = 0
texture = ExtResource("30")
[node name="OnionSkinning" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Enable/disable Onion Skinning"
focus_mode = 0
@ -731,7 +725,8 @@ size_flags_vertical = 0
texture = ExtResource("29")
[node name="LoopAnim" type="Button" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" groups=["UIButtons"]]
custom_minimum_size = Vector2(20, 0)
unique_name_in_owner = true
custom_minimum_size = Vector2(24, 24)
layout_mode = 2
tooltip_text = "Cycle loop"
focus_mode = 0
@ -751,24 +746,28 @@ offset_bottom = 7.0
texture = ExtResource("31")
[node name="FPSValue" parent="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons" instance=ExtResource("9")]
unique_name_in_owner = true
custom_minimum_size = Vector2(72, 24)
layout_mode = 2
size_flags_horizontal = 1
tooltip_text = "How many frames per second should the animation preview be?
The more FPS, the faster the animation plays."
min_value = 0.1
max_value = 50.0
step = 0.1
value = 6.0
allow_greater = true
suffix = "FPS"
[node name="TagScroll" type="ScrollContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer"]
custom_minimum_size = Vector2(0, 32)
unique_name_in_owner = true
custom_minimum_size = Vector2(0, 24)
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
mouse_filter = 2
theme = SubResource("20")
vertical_scroll_mode = 3
[node name="HBoxContainer" type="HBoxContainer" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll"]
layout_mode = 2
@ -777,60 +776,67 @@ size_flags_vertical = 3
theme_override_constants/separation = 0
[node name="TagSpacer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"]
unique_name_in_owner = true
layout_mode = 2
[node name="TagContainer" type="Control" parent="TimelineContainer/TimelineButtons/VBoxContainer/TagScroll/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="PanelContainer" type="PanelContainer" parent="TimelineContainer"]
[node name="MainBodyPanel" type="PanelContainer" parent="TimelineContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="VBoxContainer" type="VBoxContainer" parent="TimelineContainer/PanelContainer"]
[node name="MainBodyVBoxContainer" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel"]
layout_mode = 2
size_flags_horizontal = 3
[node name="TimelineScroll" type="ScrollContainer" parent="TimelineContainer/PanelContainer/VBoxContainer"]
[node name="TimelineScroll" type="ScrollContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer"]
layout_mode = 2
size_flags_vertical = 3
[node name="LayerFrameHSplit" type="HSplitContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll"]
[node name="LayerFrameHSplit" type="HSplitContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll"]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="LayerContainer" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit"]
[node name="LayerContainer" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit"]
unique_name_in_owner = true
layout_mode = 2
[node name="LayerLabel" type="Label" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"]
[node name="OpacitySlider" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer" instance=ExtResource("9")]
custom_minimum_size = Vector2(207, 30)
layout_mode = 2
text = "Layers"
size_flags_vertical = 0
value = 100.0
prefix = "Opacity:"
[node name="LayerVBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"]
[node name="LayerVBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="FrameScrollContainer" type="Container" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit"]
[node name="FrameScrollContainer" type="Container" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit"]
unique_name_in_owner = true
layout_mode = 2
script = ExtResource("11")
h_scroll_bar_node_path = NodePath("../../../BreakFreeFromContainer/FrameScrollBar")
[node name="FrameAndCelBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer"]
[node name="FrameAndCelBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer"]
layout_mode = 2
[node name="FrameHBox" type="HBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
[node name="FrameHBox" type="HBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
custom_minimum_size = Vector2(0, 30)
layout_mode = 2
[node name="CelVBox" type="VBoxContainer" parent="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
[node name="CelVBox" type="VBoxContainer" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/FrameScrollContainer/FrameAndCelBox"]
layout_mode = 2
[node name="BreakFreeFromContainer" type="Control" parent="TimelineContainer/PanelContainer/VBoxContainer"]
[node name="BreakFreeFromContainer" type="Control" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer"]
layout_mode = 2
[node name="FrameScrollBar" type="HScrollBar" parent="TimelineContainer/PanelContainer/VBoxContainer/BreakFreeFromContainer"]
[node name="FrameScrollBar" type="HScrollBar" parent="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/BreakFreeFromContainer"]
unique_name_in_owner = true
layout_mode = 0
anchor_right = 1.0
offset_left = 41.0
@ -840,8 +846,8 @@ size_flags_horizontal = 3
[node name="AnimationTimer" type="Timer" parent="."]
[node name="OnionSkinningSettings" type="Popup" parent="."]
position = Vector2i(0, 36)
size = Vector2i(315, 299)
position = Vector2i(0, 24)
size = Vector2i(288, 207)
unresizable = false
borderless = false
@ -919,12 +925,6 @@ popup/item_0/id = 0
popup/item_1/text = "Below canvas"
popup/item_1/id = 1
[node name="Label" type="Label" parent="OnionSkinningSettings/OnionSkinningButtons"]
layout_mode = 2
theme_override_colors/font_color = Color(0.333333, 0.901961, 0.462745, 1)
text = "If you want a layer to ignore onion skinning simply add the \"_io\" suffix in its name."
autowrap_mode = 3
[node name="FrameTagDialog" parent="." instance=ExtResource("42")]
[node name="LayerEffectsSettings" parent="." instance=ExtResource("26_vbrbd")]
@ -946,9 +946,8 @@ script = ExtResource("12")
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MoveDownLayer" to="." method="change_layer_order" binds= [false]]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/CloneLayer" to="." method="_on_CloneLayer_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/MergeDownLayer" to="." method="_on_MergeDownLayer_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer/LayerFX" to="." method="_on_layer_fx_pressed"]
[connection signal="item_selected" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/HBoxContainer/BlendModes" to="." method="_on_blend_modes_item_selected"]
[connection signal="value_changed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/LayerButtons/LayerFX" to="." method="_on_layer_fx_pressed"]
[connection signal="item_selected" from="TimelineContainer/TimelineButtons/LayerTools/LayerSettingsContainer/BlendContainer/BlendModes" to="." method="_on_blend_modes_item_selected"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/AddFrame" to="." method="add_frame"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/DeleteFrame" to="." method="_on_DeleteFrame_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/FrameButtons/CopyFrame" to="." method="_on_CopyFrame_pressed"]
@ -965,8 +964,9 @@ script = ExtResource("12")
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/OnionSkinning" to="." method="_on_OnionSkinning_pressed"]
[connection signal="pressed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/LoopAnim" to="." method="_on_LoopAnim_pressed"]
[connection signal="value_changed" from="TimelineContainer/TimelineButtons/VBoxContainer/AnimationToolsScrollContainer/AnimationTools/AnimationButtons/LoopButtons/FPSValue" to="." method="_on_FPSValue_value_changed"]
[connection signal="gui_input" from="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit" to="." method="_on_LayerFrameSplitContainer_gui_input"]
[connection signal="resized" from="TimelineContainer/PanelContainer/VBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/LayerVBox" to="." method="_on_LayerVBox_resized"]
[connection signal="gui_input" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit" to="." method="_on_LayerFrameSplitContainer_gui_input"]
[connection signal="value_changed" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/OpacitySlider" to="." method="_on_OpacitySlider_value_changed"]
[connection signal="resized" from="TimelineContainer/MainBodyPanel/MainBodyVBoxContainer/TimelineScroll/LayerFrameHSplit/LayerContainer/LayerVBox" to="." method="_on_LayerVBox_resized"]
[connection signal="timeout" from="AnimationTimer" to="." method="_on_AnimationTimer_timeout"]
[connection signal="close_requested" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_close_requested"]
[connection signal="visibility_changed" from="OnionSkinningSettings" to="." method="_on_onion_skinning_settings_visibility_changed"]