1
0
Fork 0
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:
OverloadedOrama 2019-12-18 18:12:44 +02:00
parent 4586853636
commit 432c9690ff
6 changed files with 172 additions and 156 deletions

133
Main.tscn

File diff suppressed because one or more lines are too long

View 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"]

View file

@ -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()

View file

@ -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)

View file

@ -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)

View 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