From 4b137b7391af121e230ed3cf495e26d3bff11772 Mon Sep 17 00:00:00 2001 From: Russell Matney Date: Thu, 6 Jun 2024 18:00:33 -0400 Subject: [PATCH] feat: introduce Log.gd editor-settings Hooks into the editor_settings.settings_changed signal - towards supporting setting custom values for Log.gd config options, such as disable_colors and max_array_size. Not _quite_ working, but this is the bulk of the work. --- addons/log/log.gd | 56 ++++++++++++++++++++++++++++++++++---------- addons/log/plugin.gd | 12 ++++++++++ src/ExampleScene.gd | 7 +++--- 3 files changed, 58 insertions(+), 17 deletions(-) diff --git a/addons/log/log.gd b/addons/log/log.gd index 66e391d..e52151c 100644 --- a/addons/log/log.gd +++ b/addons/log/log.gd @@ -11,35 +11,65 @@ static func assoc(opts: Dictionary, key: String, val): ## config #################################### +const KEY_PREFIX = "Loggd" + +const KEY_COLOR_SCHEME = "%s/color_scheme" % KEY_PREFIX +const KEY_DISABLE_COLORS = "%s/disable_colors" % KEY_PREFIX +const KEY_MAX_ARRAY_SIZE = "%s/max_array_size" % KEY_PREFIX +const KEY_SKIP_KEYS = "%s/dictionary_skip_keys" % KEY_PREFIX + +static func setup_config(editor_settings, opts={}): + var keys = opts.get("update_keys", [ + KEY_COLOR_SCHEME, + KEY_DISABLE_COLORS, + KEY_MAX_ARRAY_SIZE, + KEY_SKIP_KEYS, + ]) + + for key in keys: + editor_settings.set_initial_value(key, Log.config.get(key), false) + + if editor_settings.has_setting(key): + Log.config[key] = editor_settings.get_setting(key) + else: + editor_settings.set_setting(key, Log.config.get(key)) + static var config = { - max_array_size=20, - dictionary_skip_keys=[ + # TODO convert to selecting a scheme by name + KEY_COLOR_SCHEME: {}, + KEY_DISABLE_COLORS: false, + KEY_MAX_ARRAY_SIZE: 20, + KEY_SKIP_KEYS: [ "layer_0/tile_data", # skip huge tilemap arrays ], - color_scheme={}, - disable_colors=false, } +## config getters + static func get_max_array_size(): - return Log.config.get("max_array_size", 20) + return Log.config.get(KEY_MAX_ARRAY_SIZE, 20) static func get_dictionary_skip_keys(): - return Log.config.get("dictionary_skip_keys", []) + return Log.config.get(KEY_SKIP_KEYS, []) static func get_disable_colors(): - return Log.config.get("disable_colors", false) + return Log.config.get(KEY_DISABLE_COLORS, false) + +static func get_config_color_scheme(): + return Log.config.get(KEY_COLOR_SCHEME, {}) + +## config setters +# consider setting the editor-settings values of these when the funcs are called +# editor_settings.set_setting(key, config.get(key)) static func disable_colors(): - Log.config["disable_colors"] = true + Log.config[KEY_DISABLE_COLORS] = true static func enable_colors(): - Log.config["disable_colors"] = false + Log.config[KEY_DISABLE_COLORS] = false static func set_color_scheme(scheme): - Log.config["color_scheme"] = scheme - -static func get_config_color_scheme(): - return Log.config.get("color_scheme", {}) + Log.config[KEY_COLOR_SCHEME] = scheme ## colors ########################################################################### diff --git a/addons/log/plugin.gd b/addons/log/plugin.gd index 15356b8..6cdbb02 100644 --- a/addons/log/plugin.gd +++ b/addons/log/plugin.gd @@ -1,3 +1,15 @@ @tool extends EditorPlugin +var editor_settings + +func _enter_tree(): + editor_settings = get_editor_interface().get_editor_settings() + editor_settings.settings_changed.connect(on_settings_changed) + + Log.setup_config(editor_settings) + +func on_settings_changed(): + if editor_settings.check_changed_settings_in_group(Log.KEY_PREFIX): + var changed_keys = editor_settings.get_changed_settings() + Log.setup_config(editor_settings, {updated_keys=changed_keys}) diff --git a/src/ExampleScene.gd b/src/ExampleScene.gd index 61760a1..6a62045 100644 --- a/src/ExampleScene.gd +++ b/src/ExampleScene.gd @@ -2,7 +2,7 @@ extends CanvasLayer func _enter_tree(): - print("\\033[31mHello\\033[0m") + # print("\\033[31mHello\\033[0m") Log.set_colors_pretty() # Log.disable_colors() @@ -12,7 +12,7 @@ class ExampleObj: func _init(v): val = v - func to_printable(): + func to_pretty(): return {val=val, id=get_instance_id()} @export var some_custom_types : Array[SomeResource] @@ -41,5 +41,4 @@ func _ready(): Log.pr("disabled colors") print_rich(Log.to_pretty(1, {disable_colors=true})) - print("\\033[31;1;4mHello\\033[0m") - + # print("\\033[31;1;4mHello\\033[0m")