From bf4052ad84959d701404d474bde7f0e9a04462f5 Mon Sep 17 00:00:00 2001 From: OverloadedOrama <35376950+OverloadedOrama@users.noreply.github.com> Date: Sun, 8 Dec 2019 03:12:34 +0200 Subject: [PATCH] Full Greek support and minor UI changes Everything should now be translated in Greek. Will update if I have forgotten anything. Also made some changes to the layer and frame button colors and layer position. --- Main.tscn | 343 ++++++++++------------ Prefabs/FrameButton.tscn | 26 +- Prefabs/LayerContainer.tscn | 66 +++-- Prefabs/NotificationLabel.tscn | 8 +- Scripts/BrushButton.gd | 12 +- Scripts/Canvas.gd | 8 +- Scripts/Global.gd | 4 +- Scripts/LayerContainer.gd | 2 +- Scripts/Main.gd | 18 +- Themes & Styles/RulerStyle.tres | 2 +- Translations/#Translations.csv | 112 ++++++- Translations/#Translations.el.translation | Bin 3028 -> 12356 bytes Translations/#Translations.en.translation | Bin 2269 -> 7005 bytes 13 files changed, 356 insertions(+), 245 deletions(-) diff --git a/Main.tscn b/Main.tscn index de72138f5..cace2a2bc 100644 --- a/Main.tscn +++ b/Main.tscn @@ -154,7 +154,6 @@ text = "[64×64]" align = 2 [node name="UI" type="HBoxContainer" parent="MenuAndUI"] -editor/display_folded = true margin_top = 28.0 margin_right = 1152.0 margin_bottom = 648.0 @@ -163,6 +162,7 @@ size_flags_vertical = 3 custom_constants/separation = 0 [node name="ToolPanel" type="Panel" parent="MenuAndUI/UI"] +editor/display_folded = true margin_right = 224.0 margin_bottom = 620.0 rect_min_size = Vector2( 224, 0 ) @@ -185,7 +185,6 @@ margin_bottom = 127.0 custom_constants/separation = 17 [node name="UtilityTools" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools"] -editor/display_folded = true margin_right = 208.0 margin_bottom = 55.0 @@ -206,7 +205,6 @@ margin_right = 208.0 margin_bottom = 19.0 [node name="SelectionToolsContainer2" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/UtilityTools"] -editor/display_folded = true margin_top = 23.0 margin_right = 208.0 margin_bottom = 55.0 @@ -214,11 +212,7 @@ margin_bottom = 55.0 [node name="RectSelect" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/UtilityTools/SelectionToolsContainer2"] margin_right = 32.0 margin_bottom = 32.0 -hint_tooltip = "Rectangular Selection - -R for left mouse button -Alt + R for right mouse button -Press Shift to move the content" +hint_tooltip = "RECTSELECT_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 3 ) @@ -227,11 +221,7 @@ texture_normal = ExtResource( 3 ) margin_left = 36.0 margin_right = 68.0 margin_bottom = 32.0 -hint_tooltip = "Color Picker -Select a color from the canvas - -O for left mouse button -Alt + O for right mouse button" +hint_tooltip = "COLORPICKER_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 4 ) @@ -267,11 +257,7 @@ margin_bottom = 55.0 [node name="Pencil" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/MenusAndTools/DrawTools/PaintToolsContainer"] margin_right = 32.0 margin_bottom = 32.0 -hint_tooltip = "Pencil - -P for left mouse button -Alt + P for right mouse button -Hold Shift to make a line" +hint_tooltip = "PENCIL_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 5 ) @@ -280,11 +266,7 @@ texture_normal = ExtResource( 5 ) margin_left = 36.0 margin_right = 68.0 margin_bottom = 32.0 -hint_tooltip = "Eraser - -E for left mouse button -Alt + E for right mouse button -Hold Shift to make a line" +hint_tooltip = "ERASER_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 6 ) @@ -293,10 +275,7 @@ texture_normal = ExtResource( 6 ) margin_left = 72.0 margin_right = 104.0 margin_bottom = 32.0 -hint_tooltip = "Bucket - -B for left mouse button -Alt + B for right mouse button" +hint_tooltip = "BUCKET_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 7 ) @@ -305,10 +284,7 @@ texture_normal = ExtResource( 7 ) margin_left = 108.0 margin_right = 140.0 margin_bottom = 32.0 -hint_tooltip = "Lighten/Darken - -U for left mouse button -Alt + U for right mouse button" +hint_tooltip = "LD_HT" mouse_default_cursor_shape = 2 button_mask = 3 texture_normal = ExtResource( 8 ) @@ -335,7 +311,7 @@ margin_bottom = 32.0 margin_right = 64.0 margin_bottom = 32.0 rect_min_size = Vector2( 64, 32 ) -hint_tooltip = "Color picker for the left tool" +hint_tooltip = "LEFTCOLOR_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 0 @@ -355,7 +331,7 @@ margin_bottom = 24.0 [node name="ColorSwitch" type="TextureButton" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/ColorPickersCenter/ColorPickersHorizontal/ColorButtonsCenter/ColorButtonsVertical"] margin_right = 17.0 margin_bottom = 7.0 -hint_tooltip = "Switch left and right colors" +hint_tooltip = "COLORSWITCH_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 9 ) @@ -363,7 +339,7 @@ texture_normal = ExtResource( 9 ) margin_top = 11.0 margin_right = 17.0 margin_bottom = 17.0 -hint_tooltip = "Reset the colors to their default state (black for left, white for right)" +hint_tooltip = "COLORDEFAULTS_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 10 ) @@ -372,7 +348,7 @@ margin_left = 89.0 margin_right = 153.0 margin_bottom = 32.0 rect_min_size = Vector2( 64, 32 ) -hint_tooltip = "Color picker for the right tool" +hint_tooltip = "RIGHTCOLOR_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 0 @@ -385,7 +361,6 @@ margin_right = 208.0 margin_bottom = 36.0 [node name="LeftToolOptions" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions"] -editor/display_folded = true margin_top = 36.0 margin_right = 208.0 margin_bottom = 242.0 @@ -402,7 +377,7 @@ align = 1 margin_top = 19.0 margin_right = 208.0 margin_bottom = 43.0 -hint_tooltip = "Show left mouse pixel indicator or brush on the canvas when drawing" +hint_tooltip = "LEFT_INDIC_HT" mouse_default_cursor_shape = 2 pressed = true text = "Left pixel indicator" @@ -417,6 +392,8 @@ margin_bottom = 79.0 margin_right = 36.0 margin_bottom = 32.0 rect_min_size = Vector2( 36, 32 ) +hint_tooltip = "BRUSH_HT" +mouse_default_cursor_shape = 2 size_flags_horizontal = 0 texture_normal = ExtResource( 11 ) @@ -442,62 +419,42 @@ margin_bottom = 108.0 [node name="BrushSizeLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushSize"] margin_top = 5.0 -margin_right = 61.0 +margin_right = 58.0 margin_bottom = 20.0 -text = "Brush size: " +text = "Brush size:" [node name="LeftBrushSizeEdit" type="SpinBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushSize"] -margin_left = 65.0 -margin_right = 127.0 +margin_left = 62.0 +margin_right = 124.0 margin_bottom = 25.0 mouse_default_cursor_shape = 2 min_value = 1.0 value = 1.0 suffix = "px" -[node name="LeftColorInterpolation" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] +[node name="LeftColorInterpolation" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] editor/display_folded = true visible = false -margin_top = 110.0 -margin_right = 226.0 -margin_bottom = 144.0 +margin_top = 112.0 +margin_right = 208.0 +margin_bottom = 137.0 [node name="ColorComesFrom" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation"] -margin_right = 226.0 -margin_bottom = 14.0 +margin_top = 5.0 +margin_right = 90.0 +margin_bottom = 20.0 +hint_tooltip = "COLORFROM_HT" text = "Brush color from" -[node name="InterpolateColor" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation"] -editor/display_folded = true -margin_top = 18.0 -margin_right = 226.0 -margin_bottom = 34.0 - -[node name="BrushColorLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation/InterpolateColor"] -margin_top = 1.0 -margin_right = 9.0 -margin_bottom = 15.0 -rect_pivot_offset = Vector2( -90, -47 ) -text = "B" - -[node name="LeftInterpolateFactor" type="HSlider" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation/InterpolateColor"] -margin_left = 13.0 -margin_right = 214.0 -margin_bottom = 16.0 -hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)" +[node name="LeftInterpolateFactor" type="SpinBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation"] +margin_left = 94.0 +margin_right = 208.0 +margin_bottom = 25.0 +hint_tooltip = "COLORFROM_HT" size_flags_horizontal = 3 max_value = 1.0 step = 0.01 value = 1.0 -ticks_on_borders = true - -[node name="SelectedColorLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation/InterpolateColor"] -margin_left = 218.0 -margin_top = 1.0 -margin_right = 226.0 -margin_bottom = 15.0 -rect_pivot_offset = Vector2( -90, -47 ) -text = "C" [node name="LeftFillArea" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] editor/display_folded = true @@ -548,30 +505,41 @@ text = "Amount:" margin_left = 59.0 margin_right = 133.0 margin_bottom = 24.0 +hint_tooltip = "LDAMOUNT_HT" max_value = 1.0 step = 0.01 value = 0.1 -[node name="LeftMirroring" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] +[node name="LeftMirroring" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions"] editor/display_folded = true margin_top = 112.0 margin_right = 208.0 -margin_bottom = 136.0 +margin_bottom = 155.0 -[node name="LeftHorizontalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring"] -margin_right = 95.0 -margin_bottom = 24.0 -hint_tooltip = "Enable horizontal mirrored drawing for the left tool" -mouse_default_cursor_shape = 2 -text = "Horiz. Mirror" +[node name="Label" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring"] +margin_right = 208.0 +margin_bottom = 15.0 +text = "Mirroring" -[node name="LeftVerticalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring"] -margin_left = 99.0 -margin_right = 187.0 +[node name="LeftMirrorButtons" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring"] +margin_top = 19.0 +margin_right = 208.0 +margin_bottom = 43.0 + +[node name="LeftHorizontalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftMirrorButtons"] +margin_right = 85.0 margin_bottom = 24.0 -hint_tooltip = "Enable vertical mirrored drawing for the left tool" +hint_tooltip = "HORIZMIRROR_HT" mouse_default_cursor_shape = 2 -text = "Vert. Mirror" +text = "Horizontal" + +[node name="LeftVerticalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftMirrorButtons"] +margin_left = 89.0 +margin_right = 158.0 +margin_bottom = 24.0 +hint_tooltip = "VERTMIRROR_HT" +mouse_default_cursor_shape = 2 +text = "Vertical" [node name="HSeparator2" type="HSeparator" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions"] margin_top = 242.0 @@ -579,7 +547,6 @@ margin_right = 208.0 margin_bottom = 246.0 [node name="RightToolOptions" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions"] -editor/display_folded = true margin_top = 246.0 margin_right = 208.0 margin_bottom = 453.0 @@ -596,7 +563,7 @@ align = 1 margin_top = 19.0 margin_right = 208.0 margin_bottom = 43.0 -hint_tooltip = "Show right mouse pixel indicator or brush on the canvas when drawing" +hint_tooltip = "RIGHT_INDIC_HT" mouse_default_cursor_shape = 2 text = "Right pixel indicator" @@ -610,6 +577,8 @@ margin_bottom = 79.0 margin_right = 36.0 margin_bottom = 32.0 rect_min_size = Vector2( 36, 32 ) +hint_tooltip = "BRUSH_HT" +mouse_default_cursor_shape = 2 size_flags_horizontal = 0 texture_normal = ExtResource( 11 ) @@ -635,61 +604,42 @@ margin_bottom = 108.0 [node name="BrushSizeLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushSize"] margin_top = 5.0 -margin_right = 61.0 +margin_right = 58.0 margin_bottom = 20.0 -text = "Brush size: " +text = "Brush size:" [node name="RightBrushSizeEdit" type="SpinBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushSize"] -margin_left = 65.0 -margin_right = 127.0 +margin_left = 62.0 +margin_right = 124.0 margin_bottom = 25.0 mouse_default_cursor_shape = 2 min_value = 1.0 value = 1.0 suffix = "px" -[node name="RightColorInterpolation" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] +[node name="RightColorInterpolation" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] editor/display_folded = true visible = false -margin_top = 110.0 -margin_right = 226.0 -margin_bottom = 144.0 +margin_top = 112.0 +margin_right = 208.0 +margin_bottom = 137.0 [node name="ColorComesFrom" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation"] -margin_right = 226.0 -margin_bottom = 14.0 +margin_top = 5.0 +margin_right = 90.0 +margin_bottom = 20.0 +hint_tooltip = "COLORFROM_HT" text = "Brush color from" -[node name="InterpolateColor" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation"] -margin_top = 18.0 -margin_right = 226.0 -margin_bottom = 34.0 - -[node name="BrushColorLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation/InterpolateColor"] -margin_top = 1.0 -margin_right = 9.0 -margin_bottom = 15.0 -rect_pivot_offset = Vector2( -90, -47 ) -text = "B" - -[node name="RightInterpolateFactor" type="HSlider" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation/InterpolateColor"] -margin_left = 13.0 -margin_right = 214.0 -margin_bottom = 16.0 -hint_tooltip = "Choose if the brush's color should come from the brush itself (left), or the currently selected color (right)" +[node name="RightInterpolateFactor" type="SpinBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation"] +margin_left = 94.0 +margin_right = 208.0 +margin_bottom = 25.0 +hint_tooltip = "COLORFROM_HT" size_flags_horizontal = 3 max_value = 1.0 step = 0.01 value = 1.0 -ticks_on_borders = true - -[node name="SelectedColorLabel" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation/InterpolateColor"] -margin_left = 218.0 -margin_top = 1.0 -margin_right = 226.0 -margin_bottom = 15.0 -rect_pivot_offset = Vector2( -90, -47 ) -text = "C" [node name="RightFillArea" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] editor/display_folded = true @@ -740,30 +690,41 @@ text = "Amount:" margin_left = 59.0 margin_right = 133.0 margin_bottom = 24.0 +hint_tooltip = "LDAMOUNT_HT" max_value = 1.0 step = 0.01 value = 0.1 -[node name="RightMirroring" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] +[node name="RightMirroring" type="VBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions"] editor/display_folded = true margin_top = 112.0 margin_right = 208.0 -margin_bottom = 136.0 +margin_bottom = 155.0 -[node name="RightHorizontalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring"] -margin_right = 95.0 -margin_bottom = 24.0 -hint_tooltip = "Enable horizontal mirrored drawing for the right tool" -mouse_default_cursor_shape = 2 -text = "Horiz. Mirror" +[node name="Label" type="Label" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring"] +margin_right = 208.0 +margin_bottom = 15.0 +text = "Mirroring" -[node name="RightVerticalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring"] -margin_left = 99.0 -margin_right = 187.0 +[node name="RightMirrorButtons" type="HBoxContainer" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring"] +margin_top = 19.0 +margin_right = 208.0 +margin_bottom = 43.0 + +[node name="RightHorizontalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightMirrorButtons"] +margin_right = 85.0 margin_bottom = 24.0 -hint_tooltip = "Enable vertical mirrored drawing for the right tool" +hint_tooltip = "HORIZMIRROR_HT" mouse_default_cursor_shape = 2 -text = "Vert. Mirror" +text = "Horizontal" + +[node name="RightVerticalMirroring" type="CheckBox" parent="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightMirrorButtons"] +margin_left = 89.0 +margin_right = 158.0 +margin_bottom = 24.0 +hint_tooltip = "VERTMIRROR_HT" +mouse_default_cursor_shape = 2 +text = "Vertical" [node name="CanvasAndTimeline" type="VBoxContainer" parent="MenuAndUI/UI"] editor/display_folded = true @@ -856,6 +817,7 @@ margin_right = 319.0 margin_bottom = 464.0 [node name="ViewportContainer2" type="ViewportContainer" parent="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer"] +editor/display_folded = true visible = false margin_left = 345.0 margin_right = 686.0 @@ -899,11 +861,10 @@ margin_top = 4.0 [node name="TimelineContainer" type="VBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer"] margin_right = 562.0 -margin_bottom = 138.0 +margin_bottom = 139.0 size_flags_horizontal = 3 [node name="AnimationButtons" type="HBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer"] -editor/display_folded = true margin_right = 562.0 margin_bottom = 25.0 rect_min_size = Vector2( 0, 24 ) @@ -925,6 +886,7 @@ size_flags_horizontal = 2 [node name="FirstFrame" type="TextureButton" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/PlaybackButtons"] margin_right = 20.0 margin_bottom = 25.0 +hint_tooltip = "FIRSTFRAME_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 19 ) @@ -932,6 +894,7 @@ texture_normal = ExtResource( 19 ) margin_left = 24.0 margin_right = 44.0 margin_bottom = 25.0 +hint_tooltip = "PREVIOUSFRAME_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 20 ) @@ -939,7 +902,7 @@ texture_normal = ExtResource( 20 ) margin_left = 48.0 margin_right = 68.0 margin_bottom = 25.0 -hint_tooltip = "Play the animation backwards (from end to beggining)" +hint_tooltip = "PLAYBACKWARDS_HT" mouse_default_cursor_shape = 2 toggle_mode = true texture_normal = ExtResource( 21 ) @@ -949,7 +912,7 @@ texture_pressed = ExtResource( 22 ) margin_left = 72.0 margin_right = 92.0 margin_bottom = 25.0 -hint_tooltip = "Play the animation forward (from beggining to end)" +hint_tooltip = "PLAYFORWARD_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 toggle_mode = true @@ -960,6 +923,7 @@ texture_pressed = ExtResource( 22 ) margin_left = 96.0 margin_right = 116.0 margin_bottom = 25.0 +hint_tooltip = "NEXTFRAME_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 24 ) @@ -967,11 +931,11 @@ texture_normal = ExtResource( 24 ) margin_left = 120.0 margin_right = 140.0 margin_bottom = 25.0 +hint_tooltip = "LASTFRAME_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 25 ) [node name="LoopButtons" type="HBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons"] -editor/display_folded = true margin_left = 476.0 margin_right = 562.0 margin_bottom = 25.0 @@ -980,7 +944,7 @@ size_flags_horizontal = 0 [node name="FPSValue" type="SpinBox" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/TimelineContainer/AnimationButtons/LoopButtons"] margin_right = 62.0 margin_bottom = 25.0 -hint_tooltip = "How many frames per second should the animation preview be? The more FPS, the faster the animation plays." +hint_tooltip = "FPS_HT" mouse_default_cursor_shape = 2 min_value = 0.1 step = 0.1 @@ -1039,49 +1003,54 @@ scroll_vertical_enabled = false [node name="VSeparator" type="VSeparator" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer"] margin_left = 566.0 margin_right = 570.0 -margin_bottom = 138.0 +margin_bottom = 139.0 [node name="OnionSkinningButtons" type="VBoxContainer" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer"] editor/display_folded = true margin_left = 574.0 margin_right = 681.0 -margin_bottom = 138.0 +margin_bottom = 139.0 [node name="OnionSkinning" type="Label" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] margin_right = 107.0 -margin_bottom = 33.0 -text = "Onion Skinning: -Past Steps" +margin_bottom = 15.0 +text = "Onion Skinning:" + +[node name="OnionSkinningPast" type="Label" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] +margin_top = 19.0 +margin_right = 107.0 +margin_bottom = 34.0 +text = "Past Frames" [node name="PastOnionSkinning" type="SpinBox" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] -margin_top = 37.0 +margin_top = 38.0 margin_right = 107.0 -margin_bottom = 62.0 +margin_bottom = 63.0 mouse_default_cursor_shape = 2 [node name="OnionSkinningFuture" type="Label" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] -margin_top = 66.0 +margin_top = 67.0 margin_right = 107.0 -margin_bottom = 81.0 -text = "Future Steps" +margin_bottom = 82.0 +text = "Future Frames" [node name="FutureOnionSkinning" type="SpinBox" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] -margin_top = 85.0 +margin_top = 86.0 margin_right = 107.0 -margin_bottom = 110.0 +margin_bottom = 111.0 mouse_default_cursor_shape = 2 [node name="BlueRedMode" type="CheckBox" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer/OnionSkinningButtons"] -margin_top = 114.0 +margin_top = 115.0 margin_right = 107.0 -margin_bottom = 138.0 +margin_bottom = 139.0 mouse_default_cursor_shape = 2 text = "Blue-Red Mode" [node name="VSeparator2" type="VSeparator" parent="MenuAndUI/UI/CanvasAndTimeline/AnimationTimeline/AnimationContainer"] margin_left = 685.0 margin_right = 689.0 -margin_bottom = 138.0 +margin_bottom = 139.0 [node name="LayerPanel" type="Panel" parent="MenuAndUI/UI"] editor/display_folded = true @@ -1097,6 +1066,7 @@ margin_top = 16.0 custom_constants/separation = 3 [node name="CanvasPreview" type="ViewportContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc"] +editor/display_folded = true margin_right = 224.0 margin_bottom = 164.0 rect_min_size = Vector2( 0, 164 ) @@ -1135,7 +1105,6 @@ margin_right = 224.0 margin_bottom = 224.0 [node name="LayerButtons" type="HBoxContainer" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/CenterContainer"] -editor/display_folded = true margin_left = 6.0 margin_right = 218.0 margin_bottom = 32.0 @@ -1143,7 +1112,7 @@ margin_bottom = 32.0 [node name="AddLayerButton" type="TextureButton" parent="MenuAndUI/UI/LayerPanel/LayersAndMisc/CenterContainer/LayerButtons"] margin_right = 32.0 margin_bottom = 32.0 -hint_tooltip = "Create a new layer" +hint_tooltip = "LAYERNEW_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 29 ) @@ -1151,7 +1120,7 @@ texture_normal = ExtResource( 29 ) margin_left = 36.0 margin_right = 68.0 margin_bottom = 32.0 -hint_tooltip = "Remove current layer" +hint_tooltip = "LAYERREMOVE_HT" mouse_default_cursor_shape = 8 disabled = true texture_normal = ExtResource( 30 ) @@ -1161,7 +1130,7 @@ texture_disabled = ExtResource( 31 ) margin_left = 72.0 margin_right = 104.0 margin_bottom = 32.0 -hint_tooltip = "Move up the current layer" +hint_tooltip = "LAYERUP_HT" mouse_default_cursor_shape = 8 disabled = true texture_normal = ExtResource( 32 ) @@ -1171,7 +1140,7 @@ texture_disabled = ExtResource( 33 ) margin_left = 108.0 margin_right = 140.0 margin_bottom = 32.0 -hint_tooltip = "Move down the current layer" +hint_tooltip = "LAYERDOWN_HT" mouse_default_cursor_shape = 8 disabled = true texture_normal = ExtResource( 34 ) @@ -1181,7 +1150,7 @@ texture_disabled = ExtResource( 35 ) margin_left = 144.0 margin_right = 176.0 margin_bottom = 32.0 -hint_tooltip = "Clone current layer" +hint_tooltip = "LAYERCLONE_HT" mouse_default_cursor_shape = 2 texture_normal = ExtResource( 36 ) @@ -1189,7 +1158,7 @@ texture_normal = ExtResource( 36 ) margin_left = 180.0 margin_right = 212.0 margin_bottom = 32.0 -hint_tooltip = "Merge down current layer" +hint_tooltip = "LAYERMERGE_HT" mouse_default_cursor_shape = 8 disabled = true texture_normal = ExtResource( 37 ) @@ -1256,9 +1225,7 @@ margin_left = -236.921 margin_top = 44.4745 margin_right = -223.921 margin_bottom = 57.4745 -hint_tooltip = "Split screen - -Show/hide second canvas" +hint_tooltip = "SPLITSCREEN_HT" mouse_default_cursor_shape = 2 size_flags_vertical = 0 toggle_mode = true @@ -1352,6 +1319,7 @@ margin_left = -512.0 margin_top = -300.0 margin_right = 3.0 margin_bottom = 48.0 +window_title = "Save Sprite as .pxo" resizable = true access = 2 filters = PoolStringArray( "*.pxo ; Pixelorama Project" ) @@ -1378,7 +1346,7 @@ margin_left = -512.0 margin_top = -300.0 margin_right = 3.0 margin_bottom = 48.0 -window_title = "Export sprite" +window_title = "Export Sprite" resizable = true access = 2 filters = PoolStringArray( "*.png ; PNG Image" ) @@ -1394,7 +1362,7 @@ margin_bottom = 114.0 margin_left = 8.0 margin_top = 8.0 margin_right = 192.0 -margin_bottom = 106.0 +margin_bottom = 77.0 [node name="ImageSize" type="Label" parent="ScaleImage/VBoxContainer"] margin_right = 184.0 @@ -1459,6 +1427,7 @@ editor/display_folded = true margin_right = 200.0 margin_bottom = 70.0 window_title = "Preferences" +resizable = true [node name="VBoxContainer" type="VBoxContainer" parent="PreferencesDialog"] anchor_left = 0.5 @@ -1466,7 +1435,7 @@ anchor_right = 0.5 margin_left = -92.0 margin_top = 8.0 margin_right = 92.0 -margin_bottom = 131.0 +margin_bottom = 33.0 [node name="OptionsContainer" type="GridContainer" parent="PreferencesDialog/VBoxContainer"] margin_right = 184.0 @@ -1559,24 +1528,22 @@ margin_bottom = 158.0 [node name="Pixelorama" type="Label" parent="AboutDialog/AboutUI"] margin_right = 268.0 margin_bottom = 33.0 -text = "Pixelorama v0.3 +text = "Pixelorama v0.5 " align = 1 [node name="MadeBy" type="Label" parent="AboutDialog/AboutUI"] margin_top = 37.0 margin_right = 268.0 -margin_bottom = 88.0 -text = "Your Free and Open Source Sprite Editor -Developed by Orama Interactive -" +margin_bottom = 70.0 +text = "MADEBY_LABEL" align = 1 [node name="Links" type="CenterContainer" parent="AboutDialog/AboutUI"] editor/display_folded = true -margin_top = 92.0 +margin_top = 74.0 margin_right = 268.0 -margin_bottom = 113.0 +margin_bottom = 95.0 [node name="LinkButtons" type="HBoxContainer" parent="AboutDialog/AboutUI/Links"] editor/display_folded = true @@ -1602,9 +1569,9 @@ margin_bottom = 21.0 text = "Donate" [node name="Copyright" type="Label" parent="AboutDialog/AboutUI"] -margin_top = 117.0 +margin_top = 99.0 margin_right = 268.0 -margin_bottom = 150.0 +margin_bottom = 132.0 text = " Copyright 2019 - Orama Interactive" align = 1 @@ -1613,7 +1580,7 @@ align = 1 margin_right = 200.0 margin_bottom = 70.0 resizable = true -dialog_text = "Are you sure you want to exit Pixelorama?" +dialog_text = "QUIT_LABEL" [node name="AnimationTimer" type="Timer" parent="."] [connection signal="color_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/ColorPickersCenter/ColorPickersHorizontal/LeftColorPickerButton" to="." method="_on_LeftColorPickerButton_color_changed"] @@ -1627,21 +1594,21 @@ dialog_text = "Are you sure you want to exit Pixelorama?" [connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftIndicatorCheckbox" to="." method="_on_LeftIndicatorCheckbox_toggled"] [connection signal="pressed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushType/LeftBrushTypeButton" to="." method="_on_LeftBrushTypeButton_pressed"] [connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftBrushSize/LeftBrushSizeEdit" to="." method="_on_LeftBrushSizeEdit_value_changed"] -[connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation/InterpolateColor/LeftInterpolateFactor" to="." method="_on_LeftInterpolateFactor_value_changed"] +[connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftColorInterpolation/LeftInterpolateFactor" to="." method="_on_LeftInterpolateFactor_value_changed"] [connection signal="item_selected" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftFillArea/LeftFillAreaOptions" to="." method="_on_LeftFillAreaOptions_item_selected"] [connection signal="item_selected" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftLDOptions/LeftLightenDarken" to="." method="_on_LeftLightenDarken_item_selected"] [connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftLDOptions/LeftLDAmount/LeftLDAmountSpinbox" to="." method="_on_LeftLDAmountSpinbox_value_changed"] -[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftHorizontalMirroring" to="." method="_on_LeftHorizontalMirroring_toggled"] -[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftVerticalMirroring" to="." method="_on_LeftVerticalMirroring_toggled"] +[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftMirrorButtons/LeftHorizontalMirroring" to="." method="_on_LeftHorizontalMirroring_toggled"] +[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/LeftToolOptions/LeftMirroring/LeftMirrorButtons/LeftVerticalMirroring" to="." method="_on_LeftVerticalMirroring_toggled"] [connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightIndicatorCheckbox" to="." method="_on_RightIndicatorCheckbox_toggled"] [connection signal="pressed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushType/RightBrushTypeButton" to="." method="_on_RightBrushTypeButton_pressed"] [connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightBrushSize/RightBrushSizeEdit" to="." method="_on_RightBrushSizeEdit_value_changed"] -[connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation/InterpolateColor/RightInterpolateFactor" to="." method="_on_RightInterpolateFactor_value_changed"] +[connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightColorInterpolation/RightInterpolateFactor" to="." method="_on_RightInterpolateFactor_value_changed"] [connection signal="item_selected" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightFillArea/RightFillAreaOptions" to="." method="_on_RightFillAreaOptions_item_selected"] [connection signal="item_selected" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightLDOptions/RightLightenDarken" to="." method="_on_RightLightenDarken_item_selected"] [connection signal="value_changed" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightLDOptions/RightLDAmount/RightLDAmountSpinbox" to="." method="_on_RightLDAmountSpinbox_value_changed"] -[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightHorizontalMirroring" to="." method="_on_RightHorizontalMirroring_toggled"] -[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightVerticalMirroring" to="." method="_on_RightVerticalMirroring_toggled"] +[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightMirrorButtons/RightHorizontalMirroring" to="." method="_on_RightHorizontalMirroring_toggled"] +[connection signal="toggled" from="MenuAndUI/UI/ToolPanel/Tools/ToolOptions/RightToolOptions/RightMirroring/RightMirrorButtons/RightVerticalMirroring" to="." method="_on_RightVerticalMirroring_toggled"] [connection signal="pressed" from="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/HorizontalRuler" to="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/HorizontalRuler" method="_on_HorizontalRuler_pressed"] [connection signal="pressed" from="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/VerticalRuler" to="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/VerticalRuler" method="_on_VerticalRuler_pressed"] [connection signal="mouse_entered" from="MenuAndUI/UI/CanvasAndTimeline/HViewportContainer/ViewportAndRulers/ViewportandVerticalRuler/ViewportContainer" to="." method="_on_ViewportContainer_mouse_entered"] diff --git a/Prefabs/FrameButton.tscn b/Prefabs/FrameButton.tscn index bcdb6a745..a712dc95c 100644 --- a/Prefabs/FrameButton.tscn +++ b/Prefabs/FrameButton.tscn @@ -1,7 +1,28 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://Scripts/FrameButton.gd" type="Script" id=1] +[sub_resource type="StyleBoxFlat" id=3] +bg_color = Color( 0.337255, 0.32549, 0.388235, 1 ) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.231373, 0.219608, 0.266667, 1 ) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.270588, 0.258824, 0.305882, 1 ) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + [node name="Frame" type="VBoxContainer"] margin_right = 32.0 margin_bottom = 50.0 @@ -13,6 +34,9 @@ rect_min_size = Vector2( 36, 36 ) mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 0 +custom_styles/hover = SubResource( 3 ) +custom_styles/pressed = SubResource( 1 ) +custom_styles/normal = SubResource( 2 ) toggle_mode = true button_mask = 3 script = ExtResource( 1 ) diff --git a/Prefabs/LayerContainer.tscn b/Prefabs/LayerContainer.tscn index 586f7eead..dfa01d243 100644 --- a/Prefabs/LayerContainer.tscn +++ b/Prefabs/LayerContainer.tscn @@ -1,63 +1,73 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=6 format=2] [ext_resource path="res://Scripts/LayerContainer.gd" type="Script" id=1] [ext_resource path="res://Assets/Graphics/Layers/layer_visible.png" type="Texture" id=2] +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.337255, 0.32549, 0.388235, 1 ) + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.231373, 0.219608, 0.266667, 1 ) + +[sub_resource type="StyleBoxFlat" id=3] +bg_color = Color( 0.270588, 0.258824, 0.305882, 1 ) + [node name="LayerContainer" type="Button"] -margin_left = -0.540344 -margin_right = 11.4597 +margin_right = 160.0 margin_bottom = 42.0 rect_min_size = Vector2( 160, 42 ) +custom_styles/hover = SubResource( 1 ) +custom_styles/pressed = SubResource( 2 ) +custom_styles/normal = SubResource( 3 ) toggle_mode = true script = ExtResource( 1 ) __meta__ = { "_edit_horizontal_guides_": [ ] } -[node name="HBoxContainer" type="HBoxContainer" parent="."] -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -margin_left = -80.0 -margin_top = -21.0 -margin_right = 80.0 -margin_bottom = 21.0 -mouse_default_cursor_shape = 2 - -[node name="VisibilityButton" type="TextureButton" parent="HBoxContainer"] +[node name="VisibilityButton" type="TextureButton" parent="."] +margin_left = 6.0 margin_top = 5.0 -margin_right = 32.0 +margin_right = 38.0 margin_bottom = 37.0 -hint_tooltip = "Toggle layer's visibility" +hint_tooltip = "LAYERVISIBILITY_HT" mouse_default_cursor_shape = 2 size_flags_horizontal = 0 size_flags_vertical = 4 texture_normal = ExtResource( 2 ) +[node name="HBoxContainer" type="HBoxContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -41.0 +margin_top = -16.0 +margin_right = 41.0 +margin_bottom = 16.0 +mouse_default_cursor_shape = 2 + [node name="TextureRect" type="TextureRect" parent="HBoxContainer"] -margin_left = 36.0 -margin_top = 5.0 -margin_right = 68.0 -margin_bottom = 37.0 +margin_right = 32.0 +margin_bottom = 32.0 rect_min_size = Vector2( 32, 32 ) size_flags_vertical = 4 expand = true stretch_mode = 6 [node name="Label" type="Label" parent="HBoxContainer"] -margin_left = 72.0 -margin_top = 14.0 -margin_right = 118.0 -margin_bottom = 28.0 +margin_left = 36.0 +margin_top = 9.0 +margin_right = 82.0 +margin_bottom = 23.0 text = "Layer 0" align = 1 [node name="LineEdit" type="LineEdit" parent="HBoxContainer"] visible = false -margin_left = 122.0 +margin_left = 86.0 margin_top = 5.0 -margin_right = 202.0 +margin_right = 166.0 margin_bottom = 37.0 rect_min_size = Vector2( 80, 32 ) size_flags_vertical = 4 @@ -66,5 +76,5 @@ editable = false caret_blink = true caret_blink_speed = 0.5 [connection signal="pressed" from="." to="." method="_on_LayerContainer_pressed"] -[connection signal="pressed" from="HBoxContainer/VisibilityButton" to="." method="_on_VisibilityButton_pressed"] +[connection signal="pressed" from="VisibilityButton" to="." method="_on_VisibilityButton_pressed"] [connection signal="text_changed" from="HBoxContainer/LineEdit" to="." method="_on_LineEdit_text_changed"] diff --git a/Prefabs/NotificationLabel.tscn b/Prefabs/NotificationLabel.tscn index fb97a8c32..e4d1799ca 100644 --- a/Prefabs/NotificationLabel.tscn +++ b/Prefabs/NotificationLabel.tscn @@ -1,13 +1,15 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] -[ext_resource path="res://Scripts/NotificationLabel.gd" type="Script" id=1] +[ext_resource path="res://Themes & Styles/Main Theme.tres" type="Theme" id=1] +[ext_resource path="res://Scripts/NotificationLabel.gd" type="Script" id=2] [node name="NotificationLabel" type="Label"] margin_right = 116.0 margin_bottom = 14.0 +theme = ExtResource( 1 ) custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) text = "Undo: Notification" -script = ExtResource( 1 ) +script = ExtResource( 2 ) [node name="Tween" type="Tween" parent="."] diff --git a/Scripts/BrushButton.gd b/Scripts/BrushButton.gd index d92a89534..c27b6cd00 100644 --- a/Scripts/BrushButton.gd +++ b/Scripts/BrushButton.gd @@ -12,12 +12,12 @@ func _on_BrushButton_pressed() -> void: if Global.current_left_tool == "Pencil": Global.left_color_interpolation_container.visible = true if hint_tooltip == "": - Global.left_brush_type_label.text = "Custom brush" + Global.left_brush_type_label.text = tr("Custom brush") else: - Global.left_brush_type_label.text = "Brush: %s" % hint_tooltip + Global.left_brush_type_label.text = tr("Brush:") + " %s" % hint_tooltip else: #Pixel brush Global.left_color_interpolation_container.visible = false - Global.left_brush_type_label.text = "Brush: Pixel" + Global.left_brush_type_label.text = tr("Brush: Pixel") Global.update_left_custom_brush() @@ -28,12 +28,12 @@ func _on_BrushButton_pressed() -> void: if Global.current_right_tool == "Pencil": Global.right_color_interpolation_container.visible = true if hint_tooltip == "": - Global.right_brush_type_label.text = "Custom brush" + Global.right_brush_type_label.text = tr("Custom brush") else: - Global.right_brush_type_label.text = "Brush: %s" % hint_tooltip + Global.right_brush_type_label.text = tr("Brush:") + " %s" % hint_tooltip else: #Pixel brush Global.right_color_interpolation_container.visible = false - Global.right_brush_type_label.text = "Brush: Pixel" + Global.right_brush_type_label.text = tr("Brush: Pixel") Global.update_right_custom_brush() diff --git a/Scripts/Canvas.gd b/Scripts/Canvas.gd index fefbd9f30..68cc71510 100644 --- a/Scripts/Canvas.gd +++ b/Scripts/Canvas.gd @@ -319,7 +319,7 @@ func update_texture(layer_index : int, update_frame_tex := true) -> void: layers[layer_index][1].create_from_image(layers[layer_index][0], 0) var layer_container := get_layer_container(layer_index) if layer_container: - layer_container.get_child(0).get_child(1).texture = layers[layer_index][1] + layer_container.get_child(1).get_child(0).texture = layers[layer_index][1] if update_frame_tex: #This code is used to update the texture in the animation timeline frame button @@ -440,9 +440,9 @@ func generate_layer_panels() -> void: if !layers[i][2]: layers[i][2] = "Layer %s" % i layer_container.i = i - layer_container.get_child(0).get_child(1).texture = layers[i][1] - layer_container.get_child(0).get_child(2).text = layers[i][2] - layer_container.get_child(0).get_child(3).text = layers[i][2] + layer_container.get_child(1).get_child(0).texture = layers[i][1] + layer_container.get_child(1).get_child(1).text = layers[i][2] + layer_container.get_child(1).get_child(2).text = layers[i][2] layers[i][3] = true #set visible Global.vbox_layer_container.add_child(layer_container) diff --git a/Scripts/Global.gd b/Scripts/Global.gd index 9b9f230e4..842353534 100644 --- a/Scripts/Global.gd +++ b/Scripts/Global.gd @@ -262,7 +262,7 @@ func find_node_by_name(root, node_name) -> Node: func notification_label(text : String) -> void: var notification : Label = load("res://Prefabs/NotificationLabel.tscn").instance() - notification.text = text + notification.text = tr(text) notification.rect_position = Vector2(240, OS.window_size.y - 150) get_tree().get_root().add_child(notification) @@ -347,7 +347,7 @@ func redo(_canvases : Array, layer_index : int = -1) -> void: func frame_changed(value : int) -> void: current_frame = value - current_frame_label.text = "Current frame: %s/%s" % [str(current_frame + 1), canvases.size()] + current_frame_label.text = tr("Current frame:") + " %s/%s" % [str(current_frame + 1), canvases.size()] for c in canvases: c.visible = false diff --git a/Scripts/LayerContainer.gd b/Scripts/LayerContainer.gd index 01fff5af5..1ae12134e 100644 --- a/Scripts/LayerContainer.gd +++ b/Scripts/LayerContainer.gd @@ -5,7 +5,7 @@ var i # warning-ignore:unused_class_variable var currently_selected := false -onready var visibility_button := $HBoxContainer/VisibilityButton +onready var visibility_button := $VisibilityButton onready var label := $HBoxContainer/Label onready var line_edit := $HBoxContainer/LineEdit diff --git a/Scripts/Main.gd b/Scripts/Main.gd index ce023b2c7..dce6875aa 100644 --- a/Scripts/Main.gd +++ b/Scripts/Main.gd @@ -126,19 +126,21 @@ func _ready() -> void: #Options for Import import_as_new_frame = CheckBox.new() - import_as_new_frame.text = "Import as new frame?" + import_as_new_frame.text = tr("IMPORT_FILE_LABEL") $ImportSprites.get_vbox().add_child(import_as_new_frame) #Options for Export + var export_project_hbox := HBoxContainer.new() export_all_frames = CheckBox.new() - export_all_frames.text = "Export all frames?" + export_all_frames.text = tr("EXPORT_ALLFRAMES_LABEL") export_as_single_file = CheckBox.new() - export_as_single_file.text = "Export frames as a single file?" + export_as_single_file.text = tr("EXPORT_FRAMES_ASFILE_LABEL") export_vertical_spritesheet = CheckBox.new() - export_vertical_spritesheet.text = "Vertical spritesheet?" - $ExportSprites.get_vbox().add_child(export_all_frames) - $ExportSprites.get_vbox().add_child(export_as_single_file) - $ExportSprites.get_vbox().add_child(export_vertical_spritesheet) + export_vertical_spritesheet.text = tr("EXPORT_VERTICAL_SPRITESHEET_LABEL") + $ExportSprites.get_vbox().add_child(export_project_hbox) + export_project_hbox.add_child(export_all_frames) + export_project_hbox.add_child(export_as_single_file) + export_project_hbox.add_child(export_vertical_spritesheet) var path := "Brushes" var brushes_dir := Directory.new() @@ -938,9 +940,11 @@ func _on_SplitScreenButton_toggled(button_pressed) -> void: if button_pressed: Global.viewport_separator.visible = true Global.second_viewport.visible = true + $SplitScreenButton.hint_tooltip = tr("SPLITSCREEN_HIDE_HT") else: Global.viewport_separator.visible = false Global.second_viewport.visible = false + $SplitScreenButton.hint_tooltip = tr("SPLITSCREEN_HT") func _on_ColorSwitch_pressed() -> void: var temp := Global.left_color_picker.color diff --git a/Themes & Styles/RulerStyle.tres b/Themes & Styles/RulerStyle.tres index 19ab2337a..87f61486f 100644 --- a/Themes & Styles/RulerStyle.tres +++ b/Themes & Styles/RulerStyle.tres @@ -1,4 +1,4 @@ [gd_resource type="StyleBoxFlat" format=2] [resource] -bg_color = Color( 0.0862745, 0.0862745, 0.0862745, 1 ) +bg_color = Color( 0.211765, 0.2, 0.243137, 1 ) diff --git a/Translations/#Translations.csv b/Translations/#Translations.csv index fe422558e..d25ff5a59 100644 --- a/Translations/#Translations.csv +++ b/Translations/#Translations.csv @@ -30,8 +30,18 @@ Tile Mode Tile Mode Λειτουργία μοτίβου Show Grid Show Grid Εμφάνιση πλέγματος Show Rulers Show Rulers Εμφάνιση χαράκων Show Guides Show Guides Εμφάνιση οδηγών -About Pixelorama About Pixelorama Σχετικά με το Pixelorama Fill with color: Fill with color: Γέμισμα με χρώμα: +Open a File Open a File Άνοιγμα αρχείου +Open File(s) Open File(s) Άνοιγμα αρχείου/ων +IMPORT_FILE_LABEL Import as new frame Εισαγωγή ως νέο καρέ +Save Sprite as .pxo Save Sprite as .pxo Αποθήκευση εικόνας ως .pxo +Export Sprite Export Sprite Εξαγωγή εικόνας +EXPORT_ALLFRAMES_LABEL Export all frames Εξαγωγή όλων των καρέ +EXPORT_FRAMES_ASFILE_LABEL Export frames as a single file Εξαγωγή όλων των καρέ στο ίδιο αρχείο +EXPORT_VERTICAL_SPRITESHEET_LABEL Vertical spritesheet Κάθετη ευθυγράμμιση +Path: Path: Διαδρομή: +Directories & Files: Directories & Files: Φάκελοι & Αρχεία: +File: File: Αρχείο: Interpolation: Interpolation: Παρεμβολή: Nearest Nearest Χωρίς Bilinear Bilinear Διγραμμική @@ -41,10 +51,104 @@ Grid options Grid options Επιλογές πλέγματος Color: Color: Χρώμα: Language: Language: Γλώσσα: System Language System Language Γλώσσα Συστήματος -English English Αγγλικά -Greek Greek Ελληνικά +English [en] English [en] Αγγλικά [en] +Greek [el] Greek [el] Ελληνικά [el] +About Pixelorama About Pixelorama Σχετικά με το Pixelorama +MADEBY_LABEL Your Free and Open Source Sprite Editor!\nDeveloped by Orama Interactive\n Το δωρεάν και ανοιχτού κώδικα πρόγραμμά σας!\nΦτιαγμένο από την Orama Interactive\n +Website Website Ιστοσελίδα +Donate Donate Κάντε μια δωρεά +QUIT_LABEL Are you sure you want to exit Pixelorama? Σίγουρα θέλετε να βγείτε από το Pixelorama; Utility Tools Utility Tools Βοηθητικά Εργαλεία +RECTSELECT_HT Rectangular Selection\n\nR for left mouse button\nAlt + R for right mouse button\n\nPress Shift to move the content Ορθογώνια επιλογή\n\nR για το αριστερό κουμπί ποντικιού\nAlt + R για το δεξί κουμπί ποντικιού\n\nΠατήστε Shift για να μετακινηθεί το περιεχόμενο +COLORPICKER_HT Color Picker\nSelect a color from a pixel of the sprite\n\nO for left mouse button\nAlt + O for right mouse button Επιλογέας χρωμάτων\nΕπιλέξτε ένα χρώμα από ένα εικονοστοιχείο της εικόνας\n\nΟ για το αριστερό κουμπί ποντικιού\nAlt + Ο για το δεξί κουμπί ποντικιού Draw Tools Draw Tools Εργαλεία Ζωγραφικής +PENCIL_HT Pencil\n\nP for left mouse button\nAlt + P for right mouse button\n\nHold Shift to make a line Μολύβι\n\nP για το αριστερό κουμπί ποντικιού\nAlt + P για το δεξί κουμπί ποντικιού\n\nΚρατήστε Shift για να τραβήξετε μια γραμμή +ERASER_HT Eraser\n\nE for left mouse button\nAlt + E for right mouse button\n\nHold Shift to make a line Γόμα\n\nE για το αριστερό κουμπί ποντικιού\nAlt + E για το δεξί κουμπί ποντικιού\n\nΚρατήστε Shift για να τραβήξετε μια γραμμή +BUCKET_HT Bucket\n\nB for left mouse button\nAlt + B for right mouse button Κουβάς\n\nB για το αριστερό κουμπί ποντικιού\nAlt + B για το δεξί κουμπί ποντικιού +LD_HT Lighten/Darken\n\nU for left mouse button\nAlt + U for right mouse button Φώτισμα/Σκούρημα\n\nU για το αριστερό κουμπί ποντικιού\nAlt + U για το δεξί κουμπί ποντικιού +LEFTCOLOR_HT Choose a color for the left tool Επιλέξτε ένα χρώμα για το αριστερό εργαλείο +RIGHTCOLOR_HT Choose a color for the right tool Επιλέξτε ένα χρώμα για το δεξί εργαλείο +COLORSWITCH_HT Switch left and right colors Εναλλαγή μεταξύ αριστερού και δεξιού χρώματος +COLORDEFAULTS_HT Reset the colors to their default state (black for left, white for right) Επαναφορά των χρωμάτων στην αρχική τους κατάσταση (μαύρο για το αριστερό, άσπρο για το δεξί) +Raw Mode Raw Mode Ωμή Λειτουργία Left tool options Left tool options Επιλογές αριστερού εργαλείου Right tool options Right tool options Επιλογές δεξιού εργαλείου -Layers Layers Στρώσεις \ No newline at end of file +Left pixel indicator Left pixel indicator Δείκτης αριστερού πιξελ +LEFT_INDIC_HT Show left mouse pixel indicator or brush on the canvas when drawing Εμφάνιση δείκτη για το εικονοστοιχείο ή το πινέλο πάνω στον καμβά που αντιστοιχεί στο αριστερό κουμπί του ποντικιού +RIGHT_INDIC_HT Show right mouse pixel indicator or brush on the canvas when drawing Εμφάνιση δείκτη για το εικονοστοιχείο ή το πινέλο πάνω στον καμβά που αντιστοιχεί στο δεξί κουμπί του ποντικιού +Right pixel indicator Right pixel indicator Δείκτης δεξιού πιξελ +Brush: Brush: Πινέλο: +BRUSH_HT Select a brush Επιλέξτε ένα πινέλο +Brush: Pixel Brush: Pixel Πινέλο: Εικονοστοιχείο +Custom brush Custom brush Προσαρμοσμένο πινέλο +Brush size: Brush size: Μέγεθος πινέλου: +Brush color from Brush color from Χρώμα πινέλου από +COLORFROM_HT 0: Color from the brush itself, 1: the currently selected color 0: Χρώμα από το πινέλο, 1: επιλεγμένο χρώμα +Fill area: Fill area: Περιοχή γεμίσματος: +Area of the same color Area of the same color Περιοχή ίδιου χρώματος +All pixels of the same color All pixels of the same color Όλα τα πίξελ ίδιου χρώματος +Lighten Lighten Φώτισμα +Darken Darken Σκούρημα +Amount: Amount: Ποσό: +LDAMOUNT_HT Lighten/Darken amount Ποσό φωτίσματος ή σκουρήματος +Mirroring Mirroring Κατοπτρισμός +Horizontal Horizontal Οριζόντια +HORIZMIRROR_HT Enable horizontal mirrored drawing Ενεργοποίηση ζωγραφικής με οριζόντιο κατοπτρισμό +VERTMIRROR_HT Enable vertical mirrored drawing Ενεργοποίηση ζωγραφικής με κάθετο κατοπτρισμό +Vertical Vertical Κάθετα +Current frame: Current frame: Τρέχον καρέ: +Current frame: 1/1 Current frame: 1/1 Τρέχον καρέ: 1/1 +FIRSTFRAME_HT Jump to the first frame Μετάβαση στο πρώτο καρέ +PREVIOUSFRAME_HT Go to the previous frame Μετάβαση στο προηγούμενο καρέ +PLAYBACKWARDS_HT Play the animation backwards (from end to beginning) Αναπαραγωγή της κίνησης ανάποδα (από το τέλος προς την αρχή) +PLAYFORWARD_HT Play the animation forward (from beginning to end) Αναπαραγωγή της κίνησης κανονικά (από την αρχή προς το τέλος) +NEXTFRAME_HT Go to the next frame Μετάβαση στο επόμενο καρέ +LASTFRAME_HT Jump to the last frame Μετάβαση στο τελευταίο καρέ +FPS_HT How many frames per second should the animation preview be?\nThe more FPS, the faster the animation plays. Πόσα καρέ ανά δευτερόλεπτο (FPS) να είναι η προεπισκόπηση της κίνησης;\nΌσο περισσότερα FPS, τόσο πιο γρήγορα παίζει η κίνηση. +No loop No loop Όχι επανάληψη +Cycle loop Cycle loop Κυκλική επανάληψη +Ping-pong loop Ping-pong loop Επανάληψη πινγκ-πονγκ +Onion Skinning: Onion Skinning: Γειτονικά καρέ: +Past Frames Past Frames Παρελθοντικά καρέ +Future Frames Future Frames Μελλοντικά καρέ +Blue-Red Mode Blue-Red Mode Μπλε-Κόκκινη λειτουργία +Add a new frame Add a new frame Προσθήκη νέου καρέ +Remove Frame Remove Frame Διαγραφή Καρέ +Clone Frame Clone Frame Κλωνοποίηση Καρέ +Move Left Move Left Μετακίνηση Αριστερά +Move Right Move Right Μετακίνηση Δεξιά +Layers Layers Στρώσεις +LAYERNEW_HT Create a new layer Δημιουργία νέας στρώσης +LAYERREMOVE_HT Remove current layer Διαγραφή της τρέχουσας στρώσης +LAYERUP_HT Move up the current layer Μετακίνηση της τρέχουσας στρώσης προς τα πάνω +LAYERDOWN_HT Move down the current layer Μετακίνηση της τρέχουσας στρώσης προς τα κάτω +LAYERCLONE_HT Clone current layer Κλωνοποίηση της τρέχουσας στρώσης +LAYERMERGE_HT Merge current layer with the one below Συγχώνευση της τρέχουσας στρώσης με την από κάτω +LAYERVISIBILITY_HT Toggle layer's visibility Εναλλαγή της ορατότητας της στρώσης +SPLITSCREEN_HT Split screen\n\nShow second canvas Διπλή οθόνη\n\nΕμφάνιση δεύτερου καμβά +SPLITSCREEN_HIDE_HT Split screen\n\nHide second canvas Διπλή οθόνη\n\nΑπόκρυψη δεύτερου καμβά +Undo: Draw Undo: Draw Αναίρεση: Ζωγραφική +Redo: Draw Redo: Draw Ακύρωση αναίρεσης: Ζωγραφική +Undo: Rectangle Select Undo: Rectangle Select Αναίρεση: Ορθογώνια επιλογή +Redo: Rectangle Select Redo: Rectangle Select Ακύρωση αναίρεσης: Ορθογώνια επιλογή +Undo: Scale Undo: Scale Αναίρεση: Κλιμάκωση +Redo: Scale Redo: Scale Ακύρωση αναίρεσης: Κλιμάκωση +Undo: Add Layer Undo: Add Layer Αναίρεση: Προσθήκη στρώσης +Redo: Add Layer Redo: Add Layer Ακύρωση αναίρεσης: Προσθήκη στρώσης +Undo: Remove Layer Undo: Remove Layer Αναίρεση: Διαγραφή στρώσης +Redo: Remove Layer Redo: Remove Layer Ακύρωση αναίρεσης: Διαγραφή στρώσης +Undo: Merge Layer Undo: Merge Layer Αναίρεση: Συγχώνευση στρώσης +Redo: Merge Layer Redo: Merge Layer Ακύρωση αναίρεσης: Συγχώνευση στρώσης +Undo: Change Layer Order Undo: Change Layer Order Αναίρεση: Αλλαγή σειράς στρώσης +Redo: Change Layer Order Redo: Change Layer Order Ακύρωση αναίρεσης: Αλλαγή σειράς στρώσης +Undo: Add Frame Undo: Add Frame Αναίρεση: Προσθήκη καρέ +Redo: Add Frame Redo: Add Frame Ακύρωση αναίρεσης: Προσθήκη καρέ +Undo: Remove Frame Undo: Remove Frame Αναίρεση: Διαγραφή καρέ +Redo: Remove Frame Redo: Remove Frame Ακύρωση αναίρεσης: Διαγραφή καρέ +Undo: Change Frame Order Undo: Change Frame Order Αναίρεση: Αλλαγή σειράς καρέ +Redo: Change Frame Order Redo: Change Frame Order Ακύρωση αναίρεσης: Αλλαγή σειράς καρέ +Undo: Delete Custom Brush Undo: Delete Custom Brush Αναίρεση: Διαγραφή προσαρμοσμένου πινέλου +Redo: Delete Custom Brush Redo: Delete Custom Brush Ακύρωση αναίρεσης: Διαγραφή προσαρμοσμένου πινέλου +Move Guide Move Guide Μετακίνηση βοηθού +File saved File saved Το αρχείο αποθηκεύτηκε +File exported File exported Έγινε εξαγωγή αρχείου \ No newline at end of file diff --git a/Translations/#Translations.el.translation b/Translations/#Translations.el.translation index bbe9c7cecf7b57431ce5d6d761bcbbd5b5882005..dda42390892309d6be54169aaa033f6238675f17 100644 GIT binary patch literal 12356 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 H{{#OE|3(be literal 3028 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�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 literal 2269 zcmbtWT}&KR6u#85UCNdU##*3}sU=zorJ=Ueth6dDzm}iwZUNgW4!hUgDZ4YnCvWoQ zob%mt&OPVOnVt3eyw%KJ4?t!BBy)k*df5p3by+ncvZ-h)sQ;gs9{vsY06y@&Njg8iU+#6X%lpk zVd{z+S`IS;x)L)%E_b*dGMUM}b7whoQPWr}_Dq+t7LWiLSi*u}l;T0#E`XG5{c*_M zw!R-_z{Wb4j1K_wU;B9wbet1IUCb0rcS3EYs}bQxn;* zL#H80qFaBj5Bhq5#sjWN6ko~6t$|JxLJ;xqjOQukuqij;!(r=!iXfUa7a-zCjEDbt z61IpJ{IkxHypO=sc?9t??Jf8w^C+CipZGiZBe_G6l#>Q7v$1iY82dEo#EE)N@0pe! zgDv{We7~gK-R0^tUxO39Ym{%>%fF7y!gfF> zi1;6(`dimwQ2zwMFEl>U-wT84O1-}v?h4-mM|VxRix$>s5XpO>I>h-0r5lN-5l_7m z3jdn;asqbxeeT~En{5D3`RF|p@!wA$Ki&pj)SG|p%9(xGPmez#eR1q7_)#qcs7ZJ} z9~=G{2IV9OKK{wY8OkBvHV-3c23GG{7+T9_?c$~|GgpA(*eKqe)?N(Y^NV2sw1_Zv4xo#y1Vpq z|GAoTeh2c4=PLT?Jv+I34*nEFxh`**ta=raYNI(3_1z8?$o(+HT#9%{d9d_P_=!36 zB=`~fO%U}8zq>z8Nx_u<+M9>{3HXV8;+&r=gOe32@V<(3#gBj&^$UNO`{;br3jC=( zyDpyvPtTU#F`AnqU=D#TFR)q#pO2cLVzPQ3iLsU#S6M?8pBu@ioaC%s37TOy_LNZA zbh9>vCs;F2l$DhwT}k@n6I@71Hb`xV#x&iOTAS<0vRd2AvaRZ(Qm1Q&s;U;Nmel}{ zFsn{~)KNM3H3%)D>279KEpF^_SvShFv~ao%U~89<6TOC zS$=)!%@&ItjN@((spRC_(vfX7jQ)%2ntQf3S!k{|dBlM=rJp(+6U&!jd7aPX-8X%` qhRLInxCd6Fh9Zg)W`|5AqL{ssU(+H6tJ68}W*%Km*aY+9kIjEu0$R@i