123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- tool
- extends ScrollContainer
-
- onready var nodes = {
- 'themes': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer/ThemeOptionButton,
- 'advanced_themes': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer2/AdvancedThemes,
- 'new_lines': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer2/NewLines,
- 'remove_empty_messages': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer/RemoveEmptyMessages,
- 'auto_color_names': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3/AutoColorNames,
- 'propagate_input': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4/PropagateInput,
- 'dim_characters': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5/DimCharacters,
- 'save_current_timeline': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer/SaveCurrentTimeline,
- 'clear_current_timeline': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer2/ClearCurrentTimeline,
- 'save_definitions_on_start': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer3/SaveDefinitionsOnStart,
- 'save_definitions_on_end': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer4/SaveDefinitionsOnEnd,
- }
-
- var THEME_KEYS := [
- 'advanced_themes',
- ]
-
- var DIALOG_KEYS := [
- 'new_lines',
- 'remove_empty_messages',
- 'auto_color_names',
- 'propagate_input',
- 'dim_characters',
- ]
-
- var SAVING_KEYS := [
- 'save_current_timeline',
- 'clear_current_timeline',
- 'save_definitions_on_start',
- 'save_definitions_on_end',
- ]
-
- func _ready():
- update_data()
-
- # Themes
- nodes['themes'].connect('item_selected', self, '_on_default_theme_selected')
- # TODO move to theme section later
- nodes['advanced_themes'].connect('toggled', self, '_on_item_toggled', ['dialog', 'advanced_themes'])
-
- for k in DIALOG_KEYS:
- nodes[k].connect('toggled', self, '_on_item_toggled', ['dialog', k])
-
- for k in SAVING_KEYS:
- nodes[k].connect('toggled', self, '_on_item_toggled', ['saving', k])
-
-
- func update_data():
- var settings = DialogicResources.get_settings_config()
- refresh_themes(settings)
- load_values(settings, "dialog")
- load_values(settings, "saving")
-
-
- func load_values(settings: ConfigFile, section: String):
- for k in DIALOG_KEYS:
- if settings.has_section_key(section, k):
- nodes[k].pressed = settings.get_value(section, k)
-
-
- func refresh_themes(settings: ConfigFile):
- # TODO move to theme section later
- if settings.has_section_key('dialog', 'advanced_themes'):
- nodes['advanced_themes'].pressed = settings.get_value('dialog', 'advanced_themes')
-
- nodes['themes'].clear()
- var theme_list = DialogicUtil.get_sorted_theme_list()
- var theme_indexes = {}
- var index = 0
- for theme in theme_list:
- nodes['themes'].add_item(theme['name'])
- nodes['themes'].set_item_metadata(index, {'file': theme['file']})
- theme_indexes[theme['file']] = index
- index += 1
-
- # Only one item added, then save as default
- if index == 1:
- set_value('theme', 'default', theme_list[0]['file'])
-
- # More than one theme? Select which the default one is
- if index > 1:
- if settings.has_section_key('theme', 'default'):
- nodes['themes'].select(theme_indexes[settings.get_value('theme', 'default', null)])
- else:
- # Fallback
- set_value('theme', 'default', theme_list[0]['file'])
-
-
- func _on_default_theme_selected(index):
- set_value('theme', 'default', nodes['themes'].get_item_metadata(index)['file'])
-
-
- func _on_item_toggled(value: bool, section: String, key: String):
- set_value(section, key, value)
-
-
- # Reading and saving data to the settings file
- func set_value(section, key, value):
- DialogicResources.set_settings_value(section, key, value)
|