mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
commit
803a42d38c
BIN
Assets/Graphics/Palette/new_swatch_button.png
Normal file
BIN
Assets/Graphics/Palette/new_swatch_button.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 146 B |
34
Assets/Graphics/Palette/new_swatch_button.png.import
Normal file
34
Assets/Graphics/Palette/new_swatch_button.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/new_swatch_button.png-37e4c5ebd7346f6c29db555ec99ae1f5.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Graphics/Palette/new_swatch_button.png"
|
||||||
|
dest_files=[ "res://.import/new_swatch_button.png-37e4c5ebd7346f6c29db555ec99ae1f5.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
BIN
Assets/Graphics/Palette/new_swatch_button_hover.png
Normal file
BIN
Assets/Graphics/Palette/new_swatch_button_hover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 156 B |
34
Assets/Graphics/Palette/new_swatch_button_hover.png.import
Normal file
34
Assets/Graphics/Palette/new_swatch_button_hover.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/new_swatch_button_hover.png-5a3842ea128669b8a5845c570dfb34de.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Graphics/Palette/new_swatch_button_hover.png"
|
||||||
|
dest_files=[ "res://.import/new_swatch_button_hover.png-5a3842ea128669b8a5845c570dfb34de.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=true
|
||||||
|
svg/scale=1.0
|
BIN
Assets/Graphics/Palette/remove_swatch_button.png
Normal file
BIN
Assets/Graphics/Palette/remove_swatch_button.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 B |
34
Assets/Graphics/Palette/remove_swatch_button.png.import
Normal file
34
Assets/Graphics/Palette/remove_swatch_button.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/remove_swatch_button.png-e55ca10e4a33e81efd86e89e399c8786.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Graphics/Palette/remove_swatch_button.png"
|
||||||
|
dest_files=[ "res://.import/remove_swatch_button.png-e55ca10e4a33e81efd86e89e399c8786.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
BIN
Assets/Graphics/Palette/remove_swatch_button_hover.png
Normal file
BIN
Assets/Graphics/Palette/remove_swatch_button_hover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 130 B |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/remove_swatch_button_hover.png-3d8cfbbb669e326875ae170abbd7ecbf.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Assets/Graphics/Palette/remove_swatch_button_hover.png"
|
||||||
|
dest_files=[ "res://.import/remove_swatch_button_hover.png-3d8cfbbb669e326875ae170abbd7ecbf.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
122
Prefabs/EditPalettePopup.tscn
Normal file
122
Prefabs/EditPalettePopup.tscn
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
[gd_scene load_steps=6 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Scripts/EditPalettePopup.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://Assets/Graphics/Palette/new_swatch_button.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://Assets/Graphics/Palette/new_swatch_button_hover.png" type="Texture" id=3]
|
||||||
|
[ext_resource path="res://Assets/Graphics/Palette/remove_swatch_button.png" type="Texture" id=4]
|
||||||
|
[ext_resource path="res://Assets/Graphics/Palette/remove_swatch_button_hover.png" type="Texture" id=5]
|
||||||
|
|
||||||
|
[node name="EditPalettePopup" type="WindowDialog"]
|
||||||
|
visible = true
|
||||||
|
margin_right = 600.0
|
||||||
|
margin_bottom = 550.0
|
||||||
|
rect_min_size = Vector2( 600, 550 )
|
||||||
|
window_title = "Edit Palette"
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
margin_left = 10.0
|
||||||
|
margin_top = 10.0
|
||||||
|
margin_right = -10.0
|
||||||
|
margin_bottom = -10.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 478.0
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="EditPaletteColorPicker" type="ColorPicker" parent="VBoxContainer/HBoxContainer"]
|
||||||
|
margin_right = 290.0
|
||||||
|
margin_bottom = 478.0
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="VBoxContainer/HBoxContainer"]
|
||||||
|
margin_left = 294.0
|
||||||
|
margin_right = 556.0
|
||||||
|
margin_bottom = 478.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="EditPaletteGridContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer/Panel"]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
columns = 8
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer"]
|
||||||
|
margin_left = 560.0
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 478.0
|
||||||
|
|
||||||
|
[node name="AddSwatchButton" type="TextureButton" parent="VBoxContainer/HBoxContainer/VBoxContainer"]
|
||||||
|
margin_right = 20.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
texture_normal = ExtResource( 2 )
|
||||||
|
texture_hover = ExtResource( 3 )
|
||||||
|
|
||||||
|
[node name="RemoveSwatchButton" type="TextureButton" parent="VBoxContainer/HBoxContainer/VBoxContainer"]
|
||||||
|
margin_top = 24.0
|
||||||
|
margin_right = 20.0
|
||||||
|
margin_bottom = 44.0
|
||||||
|
texture_normal = ExtResource( 4 )
|
||||||
|
texture_hover = ExtResource( 5 )
|
||||||
|
|
||||||
|
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
margin_top = 482.0
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 506.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer3"]
|
||||||
|
margin_top = 5.0
|
||||||
|
margin_right = 79.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
text = "Color Name:"
|
||||||
|
|
||||||
|
[node name="EditPaletteColorNameLineEdit" type="LineEdit" parent="VBoxContainer/HBoxContainer3"]
|
||||||
|
margin_left = 83.0
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 24.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"]
|
||||||
|
margin_top = 510.0
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 530.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="SpacerControl" type="Control" parent="VBoxContainer/HBoxContainer2"]
|
||||||
|
margin_right = 156.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="EditPaletteSaveButton" type="Button" parent="VBoxContainer/HBoxContainer2"]
|
||||||
|
margin_left = 160.0
|
||||||
|
margin_right = 201.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "Save"
|
||||||
|
|
||||||
|
[node name="SpacerControl2" type="Control" parent="VBoxContainer/HBoxContainer2"]
|
||||||
|
margin_left = 205.0
|
||||||
|
margin_right = 361.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="EditPaletteCancelButton" type="Button" parent="VBoxContainer/HBoxContainer2"]
|
||||||
|
margin_left = 365.0
|
||||||
|
margin_right = 419.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "Cancel"
|
||||||
|
|
||||||
|
[node name="SpacerControl3" type="Control" parent="VBoxContainer/HBoxContainer2"]
|
||||||
|
margin_left = 423.0
|
||||||
|
margin_right = 580.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
[connection signal="color_changed" from="VBoxContainer/HBoxContainer/EditPaletteColorPicker" to="." method="_on_EditPaletteColorPicker_color_changed"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer/VBoxContainer/AddSwatchButton" to="." method="_on_AddSwatchButton_pressed"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer/VBoxContainer/RemoveSwatchButton" to="." method="_on_RemoveSwatchButton_pressed"]
|
||||||
|
[connection signal="text_changed" from="VBoxContainer/HBoxContainer3/EditPaletteColorNameLineEdit" to="." method="_on_EditPaletteColorNameLineEdit_text_changed"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer2/EditPaletteSaveButton" to="." method="_on_EditPaletteSaveButton_pressed"]
|
||||||
|
[connection signal="pressed" from="VBoxContainer/HBoxContainer2/EditPaletteCancelButton" to="." method="_on_EditPaletteCancelButton_pressed"]
|
25
Prefabs/NewPaletteDialog.tscn
Normal file
25
Prefabs/NewPaletteDialog.tscn
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
[gd_scene format=2]
|
||||||
|
|
||||||
|
[node name="NewPaletteDialog" type="ConfirmationDialog"]
|
||||||
|
margin_right = 200.0
|
||||||
|
margin_bottom = 70.0
|
||||||
|
window_title = "Create a new custom palette from existing default?"
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="."]
|
||||||
|
margin_left = 8.0
|
||||||
|
margin_top = 8.0
|
||||||
|
margin_right = 365.0
|
||||||
|
margin_bottom = 34.0
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="HBoxContainer2"]
|
||||||
|
margin_top = 6.0
|
||||||
|
margin_right = 91.0
|
||||||
|
margin_bottom = 20.0
|
||||||
|
text = "Palette Name:"
|
||||||
|
|
||||||
|
[node name="NewPaletteNameLineEdit" type="LineEdit" parent="HBoxContainer2"]
|
||||||
|
margin_left = 95.0
|
||||||
|
margin_right = 357.0
|
||||||
|
margin_bottom = 26.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
expand_to_text_length = true
|
13
Prefabs/PaletteImportFileDialog.tscn
Normal file
13
Prefabs/PaletteImportFileDialog.tscn
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_scene format=2]
|
||||||
|
|
||||||
|
[node name="PaletteImportFileDialog" type="FileDialog"]
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
rect_min_size = Vector2( 500, 300 )
|
||||||
|
window_title = "Open a File"
|
||||||
|
resizable = true
|
||||||
|
mode = 0
|
||||||
|
access = 2
|
||||||
|
filters = PoolStringArray( "*.json ; JavaScript Object Notation" )
|
||||||
|
current_dir = "D:/GitHub/Pixelorama"
|
||||||
|
current_path = "D:/GitHub/Pixelorama/"
|
97
Prefabs/PreferencesDialog.tscn
Normal file
97
Prefabs/PreferencesDialog.tscn
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://Scripts/PreferencesDialog.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="PreferencesDialog" type="AcceptDialog"]
|
||||||
|
margin_right = 200.0
|
||||||
|
margin_bottom = 70.0
|
||||||
|
window_title = "Preferences"
|
||||||
|
resizable = true
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
margin_left = -92.0
|
||||||
|
margin_top = 8.0
|
||||||
|
margin_right = 92.0
|
||||||
|
margin_bottom = 34.0
|
||||||
|
|
||||||
|
[node name="OptionsContainer" type="GridContainer" parent="VBoxContainer"]
|
||||||
|
margin_right = 184.0
|
||||||
|
margin_bottom = 23.0
|
||||||
|
columns = 2
|
||||||
|
|
||||||
|
[node name="LanguageLabel" type="Label" parent="VBoxContainer/OptionsContainer"]
|
||||||
|
margin_top = 4.0
|
||||||
|
margin_right = 57.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
text = "Language:"
|
||||||
|
|
||||||
|
[node name="LanguageOption" type="OptionButton" parent="VBoxContainer/OptionsContainer"]
|
||||||
|
margin_left = 57.0
|
||||||
|
margin_right = 176.0
|
||||||
|
margin_bottom = 23.0
|
||||||
|
text = "System Language"
|
||||||
|
items = [ "System Language", null, false, 0, null, "Deutsch [de]", null, false, 1, null, "Ελληνικά [el]", null, false, 2, null, "English [en]", null, false, 3, null, "Français [fr]", null, false, 4, null, "Polski [pl]", null, false, 5, null, "Русский [ru]", null, false, 6, null, "繁體中文 [zh_TW]", null, false, 7, null ]
|
||||||
|
selected = 0
|
||||||
|
|
||||||
|
[node name="GridOptionsLabel" type="Label" parent="VBoxContainer"]
|
||||||
|
margin_top = 27.0
|
||||||
|
margin_right = 184.0
|
||||||
|
margin_bottom = 42.0
|
||||||
|
text = "Grid options"
|
||||||
|
|
||||||
|
[node name="GridOptions" type="GridContainer" parent="VBoxContainer"]
|
||||||
|
margin_top = 46.0
|
||||||
|
margin_right = 184.0
|
||||||
|
margin_bottom = 103.0
|
||||||
|
columns = 2
|
||||||
|
|
||||||
|
[node name="WidthLabel" type="Label" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_top = 1.0
|
||||||
|
margin_right = 39.0
|
||||||
|
margin_bottom = 16.0
|
||||||
|
text = "Width:"
|
||||||
|
|
||||||
|
[node name="GridWidthValue" type="SpinBox" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_left = 39.0
|
||||||
|
margin_right = 103.0
|
||||||
|
margin_bottom = 17.0
|
||||||
|
min_value = 1.0
|
||||||
|
max_value = 16384.0
|
||||||
|
value = 1.0
|
||||||
|
suffix = "px"
|
||||||
|
|
||||||
|
[node name="Height" type="Label" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_top = 19.0
|
||||||
|
margin_right = 39.0
|
||||||
|
margin_bottom = 33.0
|
||||||
|
text = "Height:"
|
||||||
|
|
||||||
|
[node name="GridHeightValue" type="SpinBox" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_left = 39.0
|
||||||
|
margin_top = 19.0
|
||||||
|
margin_right = 103.0
|
||||||
|
margin_bottom = 34.0
|
||||||
|
min_value = 1.0
|
||||||
|
max_value = 16384.0
|
||||||
|
value = 1.0
|
||||||
|
suffix = "px"
|
||||||
|
|
||||||
|
[node name="GridColorLabel" type="Label" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_top = 42.0
|
||||||
|
margin_right = 39.0
|
||||||
|
margin_bottom = 53.0
|
||||||
|
text = "Color:"
|
||||||
|
|
||||||
|
[node name="GridColor" type="ColorPickerButton" parent="VBoxContainer/GridOptions"]
|
||||||
|
margin_left = 39.0
|
||||||
|
margin_top = 38.0
|
||||||
|
margin_right = 103.0
|
||||||
|
margin_bottom = 57.0
|
||||||
|
rect_min_size = Vector2( 64, 20 )
|
||||||
|
[connection signal="item_selected" from="VBoxContainer/OptionsContainer/LanguageOption" to="." method="_on_LanguageOption_item_selected"]
|
||||||
|
[connection signal="value_changed" from="VBoxContainer/GridOptions/GridWidthValue" to="." method="_on_GridWidthValue_value_changed"]
|
||||||
|
[connection signal="value_changed" from="VBoxContainer/GridOptions/GridHeightValue" to="." method="_on_GridHeightValue_value_changed"]
|
||||||
|
[connection signal="color_changed" from="VBoxContainer/GridOptions/GridColor" to="." method="_on_GridColor_color_changed"]
|
|
@ -103,13 +103,13 @@ func _on_EditPaletteCancelButton_pressed() -> void:
|
||||||
pass # Replace with function body.
|
pass # Replace with function body.
|
||||||
|
|
||||||
func _on_EditPaletteColorNameLineEdit_text_changed(new_text) -> void:
|
func _on_EditPaletteColorNameLineEdit_text_changed(new_text) -> void:
|
||||||
if current_swatch > 0 && current_swatch < working_palette.colors.size():
|
if current_swatch >= 0 && current_swatch < working_palette.colors.size():
|
||||||
working_palette.colors[current_swatch].name = new_text
|
working_palette.colors[current_swatch].name = new_text
|
||||||
_refresh_hint_tooltip(current_swatch)
|
_refresh_hint_tooltip(current_swatch)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func _on_EditPaletteColorPicker_color_changed(color) -> void:
|
func _on_EditPaletteColorPicker_color_changed(color) -> void:
|
||||||
if current_swatch > 0 && current_swatch < working_palette.colors.size():
|
if current_swatch >= 0 && current_swatch < working_palette.colors.size():
|
||||||
palette_grid.get_child(current_swatch).get_child(0).modulate = color
|
palette_grid.get_child(current_swatch).get_child(0).modulate = color
|
||||||
working_palette.colors[current_swatch].data = color.to_html(true)
|
working_palette.colors[current_swatch].data = color.to_html(true)
|
||||||
_refresh_hint_tooltip(current_swatch)
|
_refresh_hint_tooltip(current_swatch)
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
var config_cache := ConfigFile.new()
|
||||||
|
# warning-ignore:unused_class_variable
|
||||||
|
var loaded_locales : Array
|
||||||
var undo_redo : UndoRedo
|
var undo_redo : UndoRedo
|
||||||
var undos := 0 #The number of times we added undo properties
|
var undos := 0 #The number of times we added undo properties
|
||||||
|
|
||||||
|
@ -182,7 +185,7 @@ var move_up_layer_button : BaseButton
|
||||||
var move_down_layer_button : BaseButton
|
var move_down_layer_button : BaseButton
|
||||||
var merge_down_layer_button : BaseButton
|
var merge_down_layer_button : BaseButton
|
||||||
|
|
||||||
var add_palette_button : TextureButton
|
var add_palette_button : MenuButton
|
||||||
var remove_palette_button : TextureButton
|
var remove_palette_button : TextureButton
|
||||||
var palette_option_button : OptionButton
|
var palette_option_button : OptionButton
|
||||||
var edit_palette_button : BaseButton
|
var edit_palette_button : BaseButton
|
||||||
|
@ -190,6 +193,7 @@ var palette_container : GridContainer
|
||||||
var edit_palette_popup : WindowDialog
|
var edit_palette_popup : WindowDialog
|
||||||
var new_palette_dialog : ConfirmationDialog
|
var new_palette_dialog : ConfirmationDialog
|
||||||
var new_palette_name_line_edit : LineEdit
|
var new_palette_name_line_edit : LineEdit
|
||||||
|
var palette_import_file_dialog : FileDialog
|
||||||
|
|
||||||
var error_dialog : AcceptDialog
|
var error_dialog : AcceptDialog
|
||||||
|
|
||||||
|
@ -283,6 +287,7 @@ func _ready() -> void:
|
||||||
edit_palette_popup = find_node_by_name(root, "EditPalettePopup")
|
edit_palette_popup = find_node_by_name(root, "EditPalettePopup")
|
||||||
new_palette_dialog = find_node_by_name(root, "NewPaletteDialog")
|
new_palette_dialog = find_node_by_name(root, "NewPaletteDialog")
|
||||||
new_palette_name_line_edit = find_node_by_name(new_palette_dialog, "NewPaletteNameLineEdit")
|
new_palette_name_line_edit = find_node_by_name(new_palette_dialog, "NewPaletteNameLineEdit")
|
||||||
|
palette_import_file_dialog = find_node_by_name(root, "PaletteImportFileDialog")
|
||||||
|
|
||||||
error_dialog = find_node_by_name(root, "ErrorDialog")
|
error_dialog = find_node_by_name(root, "ErrorDialog")
|
||||||
|
|
||||||
|
@ -489,5 +494,11 @@ func blend_image_with_color(image : Image, color : Color, interpolate_factor : f
|
||||||
return blended_image
|
return blended_image
|
||||||
|
|
||||||
func _exit_tree() -> void:
|
func _exit_tree() -> void:
|
||||||
|
config_cache.set_value("window", "screen", OS.current_screen)
|
||||||
|
config_cache.set_value("window", "maximized", OS.window_maximized || OS.window_fullscreen)
|
||||||
|
config_cache.set_value("window", "position", OS.window_position)
|
||||||
|
config_cache.set_value("window", "size", OS.window_size)
|
||||||
|
config_cache.save("user://cache.ini")
|
||||||
|
|
||||||
# Thanks to qarmin from GitHub for pointing this out
|
# Thanks to qarmin from GitHub for pointing this out
|
||||||
undo_redo.free()
|
undo_redo.free()
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
var config_cache := ConfigFile.new()
|
|
||||||
var loaded_locales : Array
|
|
||||||
var current_save_path := ""
|
var current_save_path := ""
|
||||||
var current_export_path := ""
|
var current_export_path := ""
|
||||||
var opensprite_file_selected := false
|
var opensprite_file_selected := false
|
||||||
|
@ -27,28 +25,28 @@ func _ready() -> void:
|
||||||
# `TranslationServer.get_loaded_locales()` was added in 3.2beta and in 3.1.2
|
# `TranslationServer.get_loaded_locales()` was added in 3.2beta and in 3.1.2
|
||||||
# The `has_method()` check and the `else` branch can be removed once 3.2 is released.
|
# The `has_method()` check and the `else` branch can be removed once 3.2 is released.
|
||||||
if TranslationServer.has_method("get_loaded_locales"):
|
if TranslationServer.has_method("get_loaded_locales"):
|
||||||
loaded_locales = TranslationServer.get_loaded_locales()
|
Global.loaded_locales = TranslationServer.get_loaded_locales()
|
||||||
else:
|
else:
|
||||||
# Hardcoded list of locales
|
# Hardcoded list of locales
|
||||||
loaded_locales = ["de", "el", "en", "fr", "pl", "ru", "zh_TW"]
|
Global.loaded_locales = ["de", "el", "en", "fr", "pl", "ru", "zh_TW"]
|
||||||
|
|
||||||
# Make sure locales are always sorted, in the same order
|
# Make sure locales are always sorted, in the same order
|
||||||
loaded_locales.sort()
|
Global.loaded_locales.sort()
|
||||||
|
|
||||||
# Load settings from the config file
|
# Load settings from the config file
|
||||||
config_cache.load("user://cache.ini")
|
Global.config_cache.load("user://cache.ini")
|
||||||
|
|
||||||
# Restore the window position/size if values are present in the configuration cache
|
# Restore the window position/size if values are present in the configuration cache
|
||||||
if config_cache.has_section_key("window", "screen"):
|
if Global.config_cache.has_section_key("window", "screen"):
|
||||||
OS.current_screen = config_cache.get_value("window", "screen")
|
OS.current_screen = Global.config_cache.get_value("window", "screen")
|
||||||
if config_cache.has_section_key("window", "maximized"):
|
if Global.config_cache.has_section_key("window", "maximized"):
|
||||||
OS.window_maximized = config_cache.get_value("window", "maximized")
|
OS.window_maximized = Global.config_cache.get_value("window", "maximized")
|
||||||
|
|
||||||
if !OS.window_maximized:
|
if !OS.window_maximized:
|
||||||
if config_cache.has_section_key("window", "position"):
|
if Global.config_cache.has_section_key("window", "position"):
|
||||||
OS.window_position = config_cache.get_value("window", "position")
|
OS.window_position = Global.config_cache.get_value("window", "position")
|
||||||
if config_cache.has_section_key("window", "size"):
|
if Global.config_cache.has_section_key("window", "size"):
|
||||||
OS.window_size = config_cache.get_value("window", "size")
|
OS.window_size = Global.config_cache.get_value("window", "size")
|
||||||
|
|
||||||
var file_menu_items := {
|
var file_menu_items := {
|
||||||
"New..." : KEY_MASK_CMD + KEY_N,
|
"New..." : KEY_MASK_CMD + KEY_N,
|
||||||
|
@ -81,12 +79,12 @@ func _ready() -> void:
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load language
|
# Load language
|
||||||
if config_cache.has_section_key("preferences", "locale"):
|
if Global.config_cache.has_section_key("preferences", "locale"):
|
||||||
var saved_locale : String = config_cache.get_value("preferences", "locale")
|
var saved_locale : String = Global.config_cache.get_value("preferences", "locale")
|
||||||
TranslationServer.set_locale(saved_locale)
|
TranslationServer.set_locale(saved_locale)
|
||||||
|
|
||||||
# Set the language option menu's default selected option to the loaded locale
|
# Set the language option menu's default selected option to the loaded locale
|
||||||
var locale_index := loaded_locales.find(saved_locale)
|
var locale_index := Global.loaded_locales.find(saved_locale)
|
||||||
$PreferencesDialog/VBoxContainer/OptionsContainer/LanguageOption.selected = locale_index + 1
|
$PreferencesDialog/VBoxContainer/OptionsContainer/LanguageOption.selected = locale_index + 1
|
||||||
else: # If the user doesn't have a language preference, set it to their OS' locale
|
else: # If the user doesn't have a language preference, set it to their OS' locale
|
||||||
TranslationServer.set_locale(OS.get_locale())
|
TranslationServer.set_locale(OS.get_locale())
|
||||||
|
@ -101,6 +99,7 @@ func _ready() -> void:
|
||||||
var edit_menu : PopupMenu = Global.edit_menu.get_popup()
|
var edit_menu : PopupMenu = Global.edit_menu.get_popup()
|
||||||
view_menu = Global.view_menu.get_popup()
|
view_menu = Global.view_menu.get_popup()
|
||||||
var help_menu : PopupMenu = Global.help_menu.get_popup()
|
var help_menu : PopupMenu = Global.help_menu.get_popup()
|
||||||
|
var add_palette_menu : PopupMenu = Global.add_palette_button.get_popup()
|
||||||
|
|
||||||
var i = 0
|
var i = 0
|
||||||
for item in file_menu_items.keys():
|
for item in file_menu_items.keys():
|
||||||
|
@ -125,6 +124,7 @@ func _ready() -> void:
|
||||||
edit_menu.connect("id_pressed", self, "edit_menu_id_pressed")
|
edit_menu.connect("id_pressed", self, "edit_menu_id_pressed")
|
||||||
view_menu.connect("id_pressed", self, "view_menu_id_pressed")
|
view_menu.connect("id_pressed", self, "view_menu_id_pressed")
|
||||||
help_menu.connect("id_pressed", self, "help_menu_id_pressed")
|
help_menu.connect("id_pressed", self, "help_menu_id_pressed")
|
||||||
|
add_palette_menu.connect("id_pressed", self, "add_palette_menu_id_pressed")
|
||||||
|
|
||||||
var root = get_tree().get_root()
|
var root = get_tree().get_root()
|
||||||
#Node, left mouse shortcut, right mouse shortcut
|
#Node, left mouse shortcut, right mouse shortcut
|
||||||
|
@ -635,28 +635,6 @@ func _on_ScaleImage_confirmed() -> void:
|
||||||
Global.undo_redo.add_do_method(Global, "redo", [Global.canvas])
|
Global.undo_redo.add_do_method(Global, "redo", [Global.canvas])
|
||||||
Global.undo_redo.commit_action()
|
Global.undo_redo.commit_action()
|
||||||
|
|
||||||
func _on_LanguageOption_item_selected(ID : int) -> void:
|
|
||||||
if ID == 0:
|
|
||||||
TranslationServer.set_locale(OS.get_locale())
|
|
||||||
else:
|
|
||||||
TranslationServer.set_locale(loaded_locales[ID - 1])
|
|
||||||
if loaded_locales[ID - 1] == "zh_TW":
|
|
||||||
theme.default_font = preload("res://Assets/Fonts/NotoSansCJKtc-Regular.tres")
|
|
||||||
else:
|
|
||||||
theme.default_font = preload("res://Assets/Fonts/Roboto-Regular.tres")
|
|
||||||
|
|
||||||
config_cache.set_value("preferences", "locale", TranslationServer.get_locale())
|
|
||||||
config_cache.save("user://cache.ini")
|
|
||||||
|
|
||||||
func _on_GridWidthValue_value_changed(value : float) -> void:
|
|
||||||
Global.grid_width = value
|
|
||||||
|
|
||||||
func _on_GridHeightValue_value_changed(value : float) -> void:
|
|
||||||
Global.grid_height = value
|
|
||||||
|
|
||||||
func _on_GridColor_color_changed(color : Color) -> void:
|
|
||||||
Global.grid_color = color
|
|
||||||
|
|
||||||
func _on_ImportSprites_popup_hide() -> void:
|
func _on_ImportSprites_popup_hide() -> void:
|
||||||
if !opensprite_file_selected:
|
if !opensprite_file_selected:
|
||||||
Global.can_draw = true
|
Global.can_draw = true
|
||||||
|
@ -1046,14 +1024,6 @@ func _on_QuitDialog_confirmed() -> void:
|
||||||
|
|
||||||
get_tree().quit()
|
get_tree().quit()
|
||||||
|
|
||||||
func _exit_tree() -> void:
|
|
||||||
# Save the window position and size to remember it when restarting the application
|
|
||||||
config_cache.set_value("window", "screen", OS.current_screen)
|
|
||||||
config_cache.set_value("window", "maximized", OS.window_maximized || OS.window_fullscreen)
|
|
||||||
config_cache.set_value("window", "position", OS.window_position)
|
|
||||||
config_cache.set_value("window", "size", OS.window_size)
|
|
||||||
config_cache.save("user://cache.ini")
|
|
||||||
|
|
||||||
func _on_PaletteOptionButton_item_selected(ID) -> void:
|
func _on_PaletteOptionButton_item_selected(ID) -> void:
|
||||||
var palette_name = Global.palette_option_button.get_item_metadata(ID)
|
var palette_name = Global.palette_option_button.get_item_metadata(ID)
|
||||||
Global.palette_container.on_palette_select(palette_name)
|
Global.palette_container.on_palette_select(palette_name)
|
||||||
|
@ -1066,6 +1036,18 @@ func _on_RemovePalette_pressed() -> void:
|
||||||
Global.palette_container.remove_current_palette()
|
Global.palette_container.remove_current_palette()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
func add_palette_menu_id_pressed(id) -> void:
|
||||||
|
match id:
|
||||||
|
0: # New Empty Palette
|
||||||
|
Global.palette_container.on_new_empty_palette()
|
||||||
|
1: # Import Palette
|
||||||
|
Global.palette_container.on_import_palette()
|
||||||
|
pass
|
||||||
|
|
||||||
func _on_NewPaletteDialog_confirmed() -> void:
|
func _on_NewPaletteDialog_confirmed() -> void:
|
||||||
Global.palette_container.on_new_palette_confirmed()
|
Global.palette_container.on_new_palette_confirmed()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
func _on_PaletteImportFileDialog_file_selected(path) -> void:
|
||||||
|
Global.palette_container.on_palette_import_file_selected(path)
|
||||||
|
pass
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
extends GridContainer
|
extends GridContainer
|
||||||
|
|
||||||
var palette_button = preload("res://Prefabs/PaletteButton.tscn");
|
const palette_button = preload("res://Prefabs/PaletteButton.tscn");
|
||||||
|
|
||||||
var current_palette = "Default"
|
var current_palette = "Default"
|
||||||
var from_palette : = {}
|
var from_palette : = {}
|
||||||
|
@ -34,6 +34,48 @@ func on_palette_select(palette_name : String) -> void:
|
||||||
current_palette = "Default"
|
current_palette = "Default"
|
||||||
_display_palette(Global.palettes["Default"])
|
_display_palette(Global.palettes["Default"])
|
||||||
|
|
||||||
|
func on_new_empty_palette() -> void:
|
||||||
|
Global.new_palette_dialog.window_title = "Create a new empty palette?"
|
||||||
|
Global.new_palette_name_line_edit.text = "Custom_Palette"
|
||||||
|
from_palette = {}
|
||||||
|
Global.new_palette_dialog.popup_centered()
|
||||||
|
pass
|
||||||
|
|
||||||
|
func on_import_palette() -> void:
|
||||||
|
Global.palette_import_file_dialog.popup_centered()
|
||||||
|
pass
|
||||||
|
|
||||||
|
func on_palette_import_file_selected(path) -> void:
|
||||||
|
var file := File.new()
|
||||||
|
|
||||||
|
file.open(path, File.READ)
|
||||||
|
var text = file.get_as_text()
|
||||||
|
var result_json = JSON.parse(text)
|
||||||
|
var result = {}
|
||||||
|
var palette_name = null # Default error condition
|
||||||
|
|
||||||
|
if result_json.error != OK: # If parse has errors
|
||||||
|
print("Error: ", result_json.error)
|
||||||
|
print("Error Line: ", result_json.error_line)
|
||||||
|
print("Error String: ", result_json.error_string)
|
||||||
|
else: # If parse OK
|
||||||
|
var data = result_json.result
|
||||||
|
if data.has("name"): #If data is 'valid' palette file
|
||||||
|
palette_name = data.name
|
||||||
|
if not Global.palettes.has(palette_name):
|
||||||
|
Global.palettes[palette_name] = data
|
||||||
|
Global.palette_option_button.add_item(palette_name)
|
||||||
|
var index := Global.palette_option_button.get_item_count() - 1
|
||||||
|
Global.palette_option_button.set_item_metadata(index, palette_name)
|
||||||
|
Global.palette_option_button.select(index)
|
||||||
|
on_palette_select(palette_name)
|
||||||
|
save_palette(palette_name, palette_name + ".json")
|
||||||
|
else:
|
||||||
|
Global.error_dialog.set_text("Palette named '" + palette_name + "' already exists");
|
||||||
|
Global.error_dialog.popup_centered()
|
||||||
|
file.close()
|
||||||
|
pass
|
||||||
|
|
||||||
func on_edit_palette() -> void:
|
func on_edit_palette() -> void:
|
||||||
var palette : Dictionary = Global.palettes[current_palette]
|
var palette : Dictionary = Global.palettes[current_palette]
|
||||||
|
|
||||||
|
@ -44,6 +86,7 @@ func on_edit_palette() -> void:
|
||||||
|
|
||||||
if create_new_palette:
|
if create_new_palette:
|
||||||
from_palette = Global.palettes[current_palette]
|
from_palette = Global.palettes[current_palette]
|
||||||
|
Global.new_palette_dialog.window_title = "Create a new custom palette from existing default?"
|
||||||
Global.new_palette_name_line_edit.text = "Custom_" + current_palette
|
Global.new_palette_name_line_edit.text = "Custom_" + current_palette
|
||||||
Global.new_palette_dialog.popup_centered()
|
Global.new_palette_dialog.popup_centered()
|
||||||
else:
|
else:
|
||||||
|
|
23
Scripts/PreferencesDialog.gd
Normal file
23
Scripts/PreferencesDialog.gd
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
extends AcceptDialog
|
||||||
|
|
||||||
|
func _on_LanguageOption_item_selected(ID : int) -> void:
|
||||||
|
if ID == 0:
|
||||||
|
TranslationServer.set_locale(OS.get_locale())
|
||||||
|
else:
|
||||||
|
TranslationServer.set_locale(Global.loaded_locales[ID - 1])
|
||||||
|
if Global.loaded_locales[ID - 1] == "zh_TW":
|
||||||
|
Global.control.theme.default_font = preload("res://Assets/Fonts/NotoSansCJKtc-Regular.tres")
|
||||||
|
else:
|
||||||
|
Global.control.theme.default_font = preload("res://Assets/Fonts/Roboto-Regular.tres")
|
||||||
|
|
||||||
|
Global.config_cache.set_value("preferences", "locale", TranslationServer.get_locale())
|
||||||
|
Global.config_cache.save("user://cache.ini")
|
||||||
|
|
||||||
|
func _on_GridWidthValue_value_changed(value : float) -> void:
|
||||||
|
Global.grid_width = value
|
||||||
|
|
||||||
|
func _on_GridHeightValue_value_changed(value : float) -> void:
|
||||||
|
Global.grid_height = value
|
||||||
|
|
||||||
|
func _on_GridColor_color_changed(color : Color) -> void:
|
||||||
|
Global.grid_color = color
|
|
@ -148,6 +148,17 @@ LineEdit/icons/clear = null
|
||||||
LineEdit/styles/focus = null
|
LineEdit/styles/focus = null
|
||||||
LineEdit/styles/normal = SubResource( 8 )
|
LineEdit/styles/normal = SubResource( 8 )
|
||||||
LineEdit/styles/read_only = null
|
LineEdit/styles/read_only = null
|
||||||
|
MenuButton/colors/font_color = Color( 0.878431, 0.878431, 0.878431, 1 )
|
||||||
|
MenuButton/colors/font_color_disabled = Color( 1, 1, 1, 0.3 )
|
||||||
|
MenuButton/colors/font_color_hover = Color( 0.941176, 0.941176, 0.941176, 1 )
|
||||||
|
MenuButton/colors/font_color_pressed = Color( 1, 1, 1, 1 )
|
||||||
|
MenuButton/constants/hseparation = 3
|
||||||
|
MenuButton/fonts/font = null
|
||||||
|
MenuButton/styles/disabled = null
|
||||||
|
MenuButton/styles/focus = null
|
||||||
|
MenuButton/styles/hover = null
|
||||||
|
MenuButton/styles/normal = null
|
||||||
|
MenuButton/styles/pressed = null
|
||||||
TabContainer/colors/font_color_bg = Color( 0.690196, 0.690196, 0.690196, 1 )
|
TabContainer/colors/font_color_bg = Color( 0.690196, 0.690196, 0.690196, 1 )
|
||||||
TabContainer/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
|
TabContainer/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 )
|
||||||
TabContainer/colors/font_color_fg = Color( 0.941176, 0.941176, 0.941176, 1 )
|
TabContainer/colors/font_color_fg = Color( 0.941176, 0.941176, 0.941176, 1 )
|
||||||
|
|
Loading…
Reference in a new issue