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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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. }
  10. func _ready():
  11. update_data()
  12. nodes['themes'].connect('item_selected', self, '_on_default_theme_selected')
  13. nodes['new_lines'].connect('toggled', self, '_on_new_line_toggled')
  14. nodes['remove_empty_messages'].connect('toggled', self, '_on_remove_empty_message_toggled')
  15. nodes['auto_color_names'].connect('toggled', self, '_on_auto_color_names_toggled')
  16. nodes['propagate_input'].connect('toggled', self, '_on_propagate_input_toggled')
  17. func update_data():
  18. var settings = DialogicResources.get_settings_config()
  19. refresh_themes(settings)
  20. dialog_options(settings)
  21. func dialog_options(settings):
  22. if settings.has_section_key('dialog', 'remove_empty_messages'):
  23. nodes['remove_empty_messages'].pressed = settings.get_value('dialog', 'remove_empty_messages')
  24. if settings.has_section_key('dialog', 'new_lines'):
  25. nodes['new_lines'].pressed = settings.get_value('dialog', 'new_lines')
  26. if settings.has_section_key('dialog', 'auto_color_names'):
  27. nodes['auto_color_names'].pressed = settings.get_value('dialog', 'auto_color_names')
  28. if settings.has_section_key('dialog', 'propagate_input'):
  29. nodes['propagate_input'].pressed = settings.get_value('dialog', 'propagate_input')
  30. func refresh_themes(settings):
  31. nodes['themes'].clear()
  32. var theme_list = DialogicUtil.get_sorted_theme_list()
  33. var theme_indexes = {}
  34. var index = 0
  35. for theme in theme_list:
  36. nodes['themes'].add_item(theme['name'])
  37. nodes['themes'].set_item_metadata(index, {'file': theme['file']})
  38. theme_indexes[theme['file']] = index
  39. index += 1
  40. # Only one item added, then save as default
  41. if index == 1:
  42. set_value('theme', 'default', theme_list[0]['file'])
  43. # More than one theme? Select which the default one is
  44. if index > 1:
  45. if settings.has_section_key('theme', 'default'):
  46. nodes['themes'].select(theme_indexes[settings.get_value('theme', 'default', null)])
  47. else:
  48. # Fallback
  49. set_value('theme', 'default', theme_list[0]['file'])
  50. func _on_default_theme_selected(index):
  51. set_value('theme', 'default', nodes['themes'].get_item_metadata(index)['file'])
  52. func _on_remove_empty_message_toggled(value):
  53. set_value('dialog', 'remove_empty_messages', value)
  54. func _on_new_line_toggled(value):
  55. set_value('dialog', 'new_lines', value)
  56. func _on_auto_color_names_toggled(value):
  57. set_value('dialog', 'auto_color_names', value)
  58. func _on_propagate_input_toggled(value):
  59. set_value('dialog', 'propagate_input', value)
  60. # Reading and saving data to the settings file
  61. func set_value(section, key, value):
  62. DialogicResources.set_settings_value(section, key, value)