Preferences Window Overhaul

Languages are now unique buttons instead of one OptionButton, this also fixes problem where Chinese characters weren't being rendered with the Roboto font. Also made the brushes popup a little bigger.
This commit is contained in:
OverloadedOrama 2019-12-27 01:02:36 +02:00
parent 0c664a34be
commit de2f9b68be
4 changed files with 183 additions and 64 deletions

View file

@ -11,7 +11,7 @@ var export_as_single_file : CheckBox
var export_vertical_spritesheet : CheckBox
var redone := false
var fps := 6.0
var animation_loop := 0 #0 is no loop, 1 is cycle loop, 2 is ping-pong loop
var animation_loop := 0 # 0 is no loop, 1 is cycle loop, 2 is ping-pong loop
var animation_forward := true
var previous_left_color := Color.black
var previous_right_color := Color.white
@ -89,7 +89,8 @@ func _ready() -> void:
# Set the language option menu's default selected option to the loaded locale
var locale_index := Global.loaded_locales.find(saved_locale)
$PreferencesDialog/VBoxContainer/OptionsContainer/LanguageOption.selected = locale_index + 1
$PreferencesDialog.languages.get_child(1).pressed = false
$PreferencesDialog.languages.get_child(locale_index + 2).pressed = true
else: # If the user doesn't have a language preference, set it to their OS' locale
TranslationServer.set_locale(OS.get_locale())
@ -251,7 +252,7 @@ func edit_menu_id_pressed(id : int) -> void:
Global.selected_pixels.clear()
Global.canvas.handle_redo("Rectangle Select")
3: # Preferences
$PreferencesDialog.popup_centered()
$PreferencesDialog.popup_centered(Vector2(380, 300))
Global.can_draw = false
func view_menu_id_pressed(id : int) -> void:

View file

@ -1,20 +1,61 @@
extends AcceptDialog
onready var tree : Tree = $HSplitContainer/Tree
onready var right_side : VBoxContainer = $HSplitContainer/ScrollContainer/VBoxContainer
onready var languages = $HSplitContainer/ScrollContainer/VBoxContainer/Languages
onready var theme_option = $HSplitContainer/ScrollContainer/VBoxContainer/ThemeOption
onready var grid_guides = $"HSplitContainer/ScrollContainer/VBoxContainer/Grid&Guides"
func _ready() -> void:
var root := tree.create_item()
var language_button := tree.create_item(root)
var theme_button := tree.create_item(root)
var grid_button := tree.create_item(root)
language_button.set_text(0, " Language")
language_button.select(0)
theme_button.set_text(0, " Themes")
grid_button.set_text(0, " Guides & Grid")
for child in languages.get_children():
if child is Button:
child.connect("pressed", self, "_on_Language_pressed", [child])
if Global.config_cache.has_section_key("preferences", "theme"):
var theme_id = Global.config_cache.get_value("preferences", "theme")
change_theme(theme_id)
$VBoxContainer/OptionsContainer/ThemeOption.selected = theme_id
theme_option.selected = theme_id
func _on_LanguageOption_item_selected(ID : int) -> void:
if ID == 0:
func _on_Tree_item_selected() -> void:
for child in right_side.get_children():
child.visible = false
var selected := tree.get_selected().get_text(0)
if "Language" in selected:
languages.visible = true
elif "Themes" in selected:
theme_option.visible = true
elif "Guides & Grid" in selected:
grid_guides.visible = true
func _on_Language_pressed(button : Button) -> void:
var index := 0
var i := -1
for child in languages.get_children():
if child is Button:
if child == button:
button.pressed = true
index = i
else:
child.pressed = false
i += 1
if index == -1:
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")
TranslationServer.set_locale(Global.loaded_locales[index])
if TranslationServer.get_locale() == "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")