No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SettingsEditor.gd 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. tool
  2. extends ScrollContainer
  3. onready var nodes = {
  4. 'themes': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer/ThemeOptionButton,
  5. 'advanced_themes': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer2/AdvancedThemes,
  6. 'new_lines': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer2/NewLines,
  7. 'remove_empty_messages': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer/RemoveEmptyMessages,
  8. 'auto_color_names': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3/AutoColorNames,
  9. 'propagate_input': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4/PropagateInput,
  10. 'dim_characters': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5/DimCharacters,
  11. 'save_current_timeline': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer/SaveCurrentTimeline,
  12. 'clear_current_timeline': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer2/ClearCurrentTimeline,
  13. 'save_definitions_on_start': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer3/SaveDefinitionsOnStart,
  14. 'save_definitions_on_end': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer3/HBoxContainer4/SaveDefinitionsOnEnd,
  15. }
  16. var THEME_KEYS := [
  17. 'advanced_themes',
  18. ]
  19. var DIALOG_KEYS := [
  20. 'new_lines',
  21. 'remove_empty_messages',
  22. 'auto_color_names',
  23. 'propagate_input',
  24. 'dim_characters',
  25. ]
  26. var SAVING_KEYS := [
  27. 'save_current_timeline',
  28. 'clear_current_timeline',
  29. 'save_definitions_on_start',
  30. 'save_definitions_on_end',
  31. ]
  32. func _ready():
  33. update_data()
  34. # Themes
  35. nodes['themes'].connect('item_selected', self, '_on_default_theme_selected')
  36. # TODO move to theme section later
  37. nodes['advanced_themes'].connect('toggled', self, '_on_item_toggled', ['dialog', 'advanced_themes'])
  38. for k in DIALOG_KEYS:
  39. nodes[k].connect('toggled', self, '_on_item_toggled', ['dialog', k])
  40. for k in SAVING_KEYS:
  41. nodes[k].connect('toggled', self, '_on_item_toggled', ['saving', k])
  42. func update_data():
  43. var settings = DialogicResources.get_settings_config()
  44. refresh_themes(settings)
  45. load_values(settings, "dialog")
  46. load_values(settings, "saving")
  47. func load_values(settings: ConfigFile, section: String):
  48. for k in DIALOG_KEYS:
  49. if settings.has_section_key(section, k):
  50. nodes[k].pressed = settings.get_value(section, k)
  51. func refresh_themes(settings: ConfigFile):
  52. # TODO move to theme section later
  53. if settings.has_section_key('dialog', 'advanced_themes'):
  54. nodes['advanced_themes'].pressed = settings.get_value('dialog', 'advanced_themes')
  55. nodes['themes'].clear()
  56. var theme_list = DialogicUtil.get_sorted_theme_list()
  57. var theme_indexes = {}
  58. var index = 0
  59. for theme in theme_list:
  60. nodes['themes'].add_item(theme['name'])
  61. nodes['themes'].set_item_metadata(index, {'file': theme['file']})
  62. theme_indexes[theme['file']] = index
  63. index += 1
  64. # Only one item added, then save as default
  65. if index == 1:
  66. set_value('theme', 'default', theme_list[0]['file'])
  67. # More than one theme? Select which the default one is
  68. if index > 1:
  69. if settings.has_section_key('theme', 'default'):
  70. nodes['themes'].select(theme_indexes[settings.get_value('theme', 'default', null)])
  71. else:
  72. # Fallback
  73. set_value('theme', 'default', theme_list[0]['file'])
  74. func _on_default_theme_selected(index):
  75. set_value('theme', 'default', nodes['themes'].get_item_metadata(index)['file'])
  76. func _on_item_toggled(value: bool, section: String, key: String):
  77. set_value(section, key, value)
  78. # Reading and saving data to the settings file
  79. func set_value(section, key, value):
  80. DialogicResources.set_settings_value(section, key, value)