mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
PreferencesDialog is now a scene of its own
We should change the organization of the project, and use multiple saved scenes instead of everything being on Main.tscn. Also restored "X" as a shortcut for color switch, because that somehow got lost.
This commit is contained in:
parent
4586853636
commit
432c9690ff
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"]
|
|
@ -1,5 +1,8 @@
|
|||
extends Node
|
||||
|
||||
var config_cache := ConfigFile.new()
|
||||
# warning-ignore:unused_class_variable
|
||||
var loaded_locales : Array
|
||||
var undo_redo : UndoRedo
|
||||
var undos := 0 #The number of times we added undo properties
|
||||
|
||||
|
@ -491,5 +494,11 @@ func blend_image_with_color(image : Image, color : Color, interpolate_factor : f
|
|||
return blended_image
|
||||
|
||||
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
|
||||
undo_redo.free()
|
||||
undo_redo.free()
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
extends Control
|
||||
|
||||
var config_cache := ConfigFile.new()
|
||||
var loaded_locales : Array
|
||||
var current_save_path := ""
|
||||
var current_export_path := ""
|
||||
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
|
||||
# The `has_method()` check and the `else` branch can be removed once 3.2 is released.
|
||||
if TranslationServer.has_method("get_loaded_locales"):
|
||||
loaded_locales = TranslationServer.get_loaded_locales()
|
||||
Global.loaded_locales = TranslationServer.get_loaded_locales()
|
||||
else:
|
||||
# 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
|
||||
loaded_locales.sort()
|
||||
Global.loaded_locales.sort()
|
||||
|
||||
# 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
|
||||
if config_cache.has_section_key("window", "screen"):
|
||||
OS.current_screen = config_cache.get_value("window", "screen")
|
||||
if config_cache.has_section_key("window", "maximized"):
|
||||
OS.window_maximized = config_cache.get_value("window", "maximized")
|
||||
if Global.config_cache.has_section_key("window", "screen"):
|
||||
OS.current_screen = Global.config_cache.get_value("window", "screen")
|
||||
if Global.config_cache.has_section_key("window", "maximized"):
|
||||
OS.window_maximized = Global.config_cache.get_value("window", "maximized")
|
||||
|
||||
if !OS.window_maximized:
|
||||
if config_cache.has_section_key("window", "position"):
|
||||
OS.window_position = config_cache.get_value("window", "position")
|
||||
if config_cache.has_section_key("window", "size"):
|
||||
OS.window_size = config_cache.get_value("window", "size")
|
||||
if Global.config_cache.has_section_key("window", "position"):
|
||||
OS.window_position = Global.config_cache.get_value("window", "position")
|
||||
if Global.config_cache.has_section_key("window", "size"):
|
||||
OS.window_size = Global.config_cache.get_value("window", "size")
|
||||
|
||||
var file_menu_items := {
|
||||
"New..." : KEY_MASK_CMD + KEY_N,
|
||||
|
@ -81,12 +79,12 @@ func _ready() -> void:
|
|||
}
|
||||
|
||||
# Load language
|
||||
if config_cache.has_section_key("preferences", "locale"):
|
||||
var saved_locale : String = config_cache.get_value("preferences", "locale")
|
||||
if Global.config_cache.has_section_key("preferences", "locale"):
|
||||
var saved_locale : String = Global.config_cache.get_value("preferences", "locale")
|
||||
TranslationServer.set_locale(saved_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
|
||||
else: # If the user doesn't have a language preference, set it to their OS' locale
|
||||
TranslationServer.set_locale(OS.get_locale())
|
||||
|
@ -637,28 +635,6 @@ func _on_ScaleImage_confirmed() -> void:
|
|||
Global.undo_redo.add_do_method(Global, "redo", [Global.canvas])
|
||||
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:
|
||||
if !opensprite_file_selected:
|
||||
Global.can_draw = true
|
||||
|
@ -1048,14 +1024,6 @@ func _on_QuitDialog_confirmed() -> void:
|
|||
|
||||
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:
|
||||
var palette_name = Global.palette_option_button.get_item_metadata(ID)
|
||||
Global.palette_container.on_palette_select(palette_name)
|
||||
|
|
|
@ -47,7 +47,7 @@ func on_import_palette() -> void:
|
|||
|
||||
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)
|
||||
|
|
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
|
Loading…
Reference in a new issue