config_handler.gd 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. extends Node
  2. var config = ConfigFile.new()
  3. const SETTINGS_FILE_PATH = "user://settings.ini"
  4. func _ready():
  5. var file_exists = FileAccess.file_exists(SETTINGS_FILE_PATH)
  6. if file_exists:
  7. config.load(SETTINGS_FILE_PATH)
  8. # Set defaults only if not present
  9. ensure_setting("cdpprogs", "location", "no_location")
  10. ensure_setting("interface_settings", "disable_pvoc_warning", false)
  11. ensure_setting("interface_settings", "disable_progress_bar", false)
  12. ensure_setting("interface_settings", "auto_close_console", false)
  13. ensure_setting("interface_settings", "console_on_top", true)
  14. ensure_setting("interface_settings", "theme", 0)
  15. ensure_setting("interface_settings", "theme_custom_colour", "#865699")
  16. ensure_setting("interface_settings", "invert_theme", false)
  17. ensure_setting("interface_settings", "high_contrast_selected_cables", false)
  18. ensure_setting("interface_settings", "swap_zoom_and_move", false)
  19. ensure_setting("interface_settings", "right_click_opens_explore", false)
  20. ensure_setting("interface_settings", "ui_scale_multiplier", 1.0)
  21. ensure_setting("interface_settings", "delete_intermediate", true)
  22. ensure_setting("interface_settings", "reuse_output_folder", true)
  23. ensure_setting("interface_settings", "last_used_output_folder", "no_file")
  24. ensure_setting("interface_settings", "last_used_input_folder", "no_file")
  25. ensure_setting("interface_settings", "autoplay", true)
  26. ensure_setting("interface_settings", "favourites", [])
  27. ensure_setting("audio_settings", "device", "Default")
  28. # Only save if we added anything new
  29. if !file_exists or config_changed:
  30. config.save(SETTINGS_FILE_PATH)
  31. # Internal tracker
  32. var config_changed := false
  33. func ensure_setting(section: String, key: String, default_value):
  34. if !config.has_section_key(section, key):
  35. config.set_value(section, key, default_value)
  36. config_changed = true
  37. func save_cdpprogs_settings(location: String):
  38. config.set_value("cdpprogs", "location", location)
  39. config.save(SETTINGS_FILE_PATH)
  40. func load_cdpprogs_settings():
  41. var cdpprogs_settings = {}
  42. for key in config.get_section_keys("cdpprogs"):
  43. cdpprogs_settings[key] = config.get_value("cdpprogs", key)
  44. return cdpprogs_settings
  45. func save_interface_settings(key: String, value):
  46. config.set_value("interface_settings", key, value)
  47. config.save(SETTINGS_FILE_PATH)
  48. func load_interface_settings():
  49. var interface_settings = {}
  50. for key in config.get_section_keys("interface_settings"):
  51. interface_settings[key] = config.get_value("interface_settings", key)
  52. return interface_settings
  53. func save_audio_settings(key: String, device: String):
  54. config.set_value("audio_settings", key, device)
  55. config.save(SETTINGS_FILE_PATH)
  56. func load_audio_settings():
  57. var audio_settings = {}
  58. for key in config.get_section_keys("audio_settings"):
  59. audio_settings[key] = config.get_value("audio_settings", key)
  60. return audio_settings