Skip to content

Commit ef133ba

Browse files
authored
Auto save main windows geometry on close (#162)
1 parent 7a1233c commit ef133ba

File tree

6 files changed

+20
-3
lines changed

6 files changed

+20
-3
lines changed

addons/panku_console/common/panku_module.gd

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,21 @@ func load_window_data(window:PankuLynxWindow):
5959
window.set_window_visibility(load_module_data("window_visibility", false))
6060

6161
func save_window_data(window:PankuLynxWindow):
62+
_save_window_geometry(window)
63+
save_module_data("window_visibility", window.visible)
64+
65+
66+
func _save_window_geometry(window:PankuLynxWindow):
6267
save_module_data("window_position", window.position)
6368
save_module_data("window_size", window.get_normal_window_size())
64-
save_module_data("window_visibility", window.visible)
69+
70+
71+
# Add hook to window to auto save its geometry on close.
72+
func add_auto_save_hook(window: PankuLynxWindow) -> void:
73+
# Here some global settings check can be implemented,
74+
# if we decide to make "save on close" feature optional
75+
window.window_closed.connect(_save_window_geometry.bind(window))
76+
6577

6678
func get_module_env() -> RefCounted:
6779
return _env
@@ -73,7 +85,7 @@ func _init_module():
7385
var module_script_dir:String = get_script().resource_path.get_base_dir()
7486
var env_script_path = module_script_dir + "/env.gd"
7587
var opt_script_path = module_script_dir + "/opt.gd"
76-
88+
7789
if FileAccess.file_exists(env_script_path):
7890
_env = load(env_script_path).new()
7991
_env._module = self

addons/panku_console/modules/expression_monitor/module.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func init_monitor_window():
2121
monitor._module = self
2222
# monitor.set_data(load_module_data("exprs", []))
2323
monitor_window = core.windows_manager.create_window(monitor)
24+
add_auto_save_hook(monitor_window)
2425
monitor_window.queue_free_on_close = false
2526
monitor_window.set_window_title_text("Expression Monitor")
2627

addons/panku_console/modules/history_manager/module.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ func init_module():
1313

1414
# bind window
1515
window = core.windows_manager.create_window(ui)
16+
add_auto_save_hook(window)
1617
window.queue_free_on_close = false
1718
window.set_window_title_text("History Manager")
1819
load_window_data(window)

addons/panku_console/modules/interactive_shell/module.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func get_intro() -> String:
2828
func init_module():
2929
interactive_shell = preload("./console_ui/panku_console_ui.tscn").instantiate()
3030
window = core.windows_manager.create_window(interactive_shell)
31+
add_auto_save_hook(window)
3132
interactive_shell._repl._module = self
3233
window.queue_free_on_close = false
3334
window.set_window_title_text("Interative Shell V2")

addons/panku_console/modules/keyboard_shortcuts/module.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ func init_module():
1010

1111
# bind window
1212
window = core.windows_manager.create_window(key_mapper)
13+
add_auto_save_hook(window)
1314
window.queue_free_on_close = false
1415
window.set_window_title_text("Keyboard Shortcuts")
1516

addons/panku_console/modules/native_logger/module.gd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ func init_module():
2828
logger_ui.console = core
2929

3030
window = core.windows_manager.create_window(logger_ui)
31+
add_auto_save_hook(window)
3132
window.queue_free_on_close = false
3233
window.set_window_title_text("Native Logger")
3334

@@ -47,7 +48,7 @@ func init_module():
4748
func(bbcode:String):
4849
output_overlay.text = bbcode
4950
)
50-
51+
5152
core.interactive_shell_visibility_changed.connect(
5253
func(v:bool):
5354
if output_overlay_display_mode == ScreenOverlayDisplayMode.ShowIfShellVisible:

0 commit comments

Comments
 (0)