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.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. tool
  2. extends ScrollContainer
  3. onready var nodes = {
  4. 'themes': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer/HBoxContainer/ThemeOptionButton,
  5. 'new_lines': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer2/NewLines,
  6. 'remove_empty_messages': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer/RemoveEmptyMessages,
  7. 'auto_color_names': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer3/AutoColorNames,
  8. 'propagate_input': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer4/PropagateInput,
  9. 'dim_characters': $VBoxContainer/HBoxContainer3/VBoxContainer/VBoxContainer2/HBoxContainer5/DimCharacters,
  10. }
  11. func _ready():
  12. update_data()
  13. nodes['themes'].connect('item_selected', self, '_on_default_theme_selected')
  14. nodes['new_lines'].connect('toggled', self, '_on_new_line_toggled')
  15. nodes['remove_empty_messages'].connect('toggled', self, '_on_remove_empty_message_toggled')
  16. nodes['auto_color_names'].connect('toggled', self, '_on_auto_color_names_toggled')
  17. nodes['propagate_input'].connect('toggled', self, '_on_propagate_input_toggled')
  18. nodes['dim_characters'].connect('toggled', self, '_on_dim_characters_toggled')
  19. func update_data():
  20. var settings = DialogicResources.get_settings_config()
  21. refresh_themes(settings)
  22. dialog_options(settings)
  23. func dialog_options(settings):
  24. if settings.has_section_key('dialog', 'remove_empty_messages'):
  25. nodes['remove_empty_messages'].pressed = settings.get_value('dialog', 'remove_empty_messages')
  26. if settings.has_section_key('dialog', 'new_lines'):
  27. nodes['new_lines'].pressed = settings.get_value('dialog', 'new_lines')
  28. if settings.has_section_key('dialog', 'auto_color_names'):
  29. nodes['auto_color_names'].pressed = settings.get_value('dialog', 'auto_color_names')
  30. if settings.has_section_key('dialog', 'propagate_input'):
  31. nodes['propagate_input'].pressed = settings.get_value('dialog', 'propagate_input')
  32. if settings.has_section_key('dialog', 'dim_characters'):
  33. nodes['dim_characters'].pressed = settings.get_value('dialog', 'dim_characters')
  34. func refresh_themes(settings):
  35. nodes['themes'].clear()
  36. var theme_list = DialogicUtil.get_sorted_theme_list()
  37. var theme_indexes = {}
  38. var index = 0
  39. for theme in theme_list:
  40. nodes['themes'].add_item(theme['name'])
  41. nodes['themes'].set_item_metadata(index, {'file': theme['file']})
  42. theme_indexes[theme['file']] = index
  43. index += 1
  44. # Only one item added, then save as default
  45. if index == 1:
  46. set_value('theme', 'default', theme_list[0]['file'])
  47. # More than one theme? Select which the default one is
  48. if index > 1:
  49. if settings.has_section_key('theme', 'default'):
  50. nodes['themes'].select(theme_indexes[settings.get_value('theme', 'default', null)])
  51. else:
  52. # Fallback
  53. set_value('theme', 'default', theme_list[0]['file'])
  54. func _on_default_theme_selected(index):
  55. set_value('theme', 'default', nodes['themes'].get_item_metadata(index)['file'])
  56. func _on_remove_empty_message_toggled(value):
  57. set_value('dialog', 'remove_empty_messages', value)
  58. func _on_new_line_toggled(value):
  59. set_value('dialog', 'new_lines', value)
  60. func _on_auto_color_names_toggled(value):
  61. set_value('dialog', 'auto_color_names', value)
  62. func _on_propagate_input_toggled(value):
  63. set_value('dialog', 'propagate_input', value)
  64. func _on_dim_characters_toggled(value):
  65. set_value('dialog', 'dim_characters', value)
  66. # Reading and saving data to the settings file
  67. func set_value(section, key, value):
  68. DialogicResources.set_settings_value(section, key, value)