Add storage management and enhance settings interface in settings.py

- Integrated storage management for loading and saving configuration.
- Added storage information display for debugging purposes.
- Improved docstrings for better clarity on function usage and parameters.
This commit is contained in:
2025-09-20 13:56:54 -05:00
parent 7e9775c358
commit 408a5a3423

View File

@@ -1,26 +1,43 @@
import pathlib """Settings interface for Ren Browser.
Provides configuration management, log viewing, and storage
information display.
"""
import flet as ft import flet as ft
from ren_browser.logs import ERROR_LOGS, RET_LOGS from ren_browser.logs import ERROR_LOGS, RET_LOGS
from ren_browser.storage.storage import get_storage_manager
def open_settings_tab(page: ft.Page, tab_manager): def open_settings_tab(page: ft.Page, tab_manager):
config_path = pathlib.Path(__file__).resolve().parents[2] / "config" / "config" """Open a settings tab with configuration and debugging options.
Args:
page: Flet page instance for UI updates.
tab_manager: Tab manager to add the settings tab to.
"""
storage = get_storage_manager(page)
try: try:
config_text = config_path.read_text() config_text = storage.load_config()
except Exception as ex: except Exception as ex:
config_text = f"Error reading config: {ex}" config_text = f"Error reading config: {ex}"
config_field = ft.TextField( config_field = ft.TextField(
label="Reticulum config", label="Reticulum config",
value=config_text, value=config_text,
expand=True, expand=True,
multiline=True, multiline=True,
) )
def on_save_config(ev): def on_save_config(ev):
try: try:
config_path.write_text(config_field.value) success = storage.save_config(config_field.value)
page.snack_bar = ft.SnackBar(ft.Text("Config saved. Please restart the app."), open=True) if success:
page.snack_bar = ft.SnackBar(ft.Text("Config saved successfully. Please restart the app."), open=True)
else:
page.snack_bar = ft.SnackBar(ft.Text("Error saving config: Storage operation failed"), open=True)
except Exception as ex: except Exception as ex:
page.snack_bar = ft.SnackBar(ft.Text(f"Error saving config: {ex}"), open=True) page.snack_bar = ft.SnackBar(ft.Text(f"Error saving config: {ex}"), open=True)
page.update() page.update()
@@ -41,6 +58,18 @@ def open_settings_tab(page: ft.Page, tab_manager):
multiline=True, multiline=True,
read_only=True, read_only=True,
) )
# Storage information for debugging
storage_info = storage.get_storage_info()
storage_text = "\n".join([f"{key}: {value}" for key, value in storage_info.items()])
storage_field = ft.TextField(
label="Storage Information",
value=storage_text,
expand=True,
multiline=True,
read_only=True,
)
content_placeholder = ft.Container(expand=True) content_placeholder = ft.Container(expand=True)
def show_config(ev): def show_config(ev):
content_placeholder.content = config_field content_placeholder.content = config_field
@@ -51,10 +80,14 @@ def open_settings_tab(page: ft.Page, tab_manager):
def show_ret_logs(ev): def show_ret_logs(ev):
content_placeholder.content = ret_field content_placeholder.content = ret_field
page.update() page.update()
def show_storage_info(ev):
content_placeholder.content = storage_field
page.update()
btn_config = ft.ElevatedButton("Config", on_click=show_config) btn_config = ft.ElevatedButton("Config", on_click=show_config)
btn_errors = ft.ElevatedButton("Errors", on_click=show_errors) btn_errors = ft.ElevatedButton("Errors", on_click=show_errors)
btn_ret = ft.ElevatedButton("Ret Logs", on_click=show_ret_logs) btn_ret = ft.ElevatedButton("Ret Logs", on_click=show_ret_logs)
button_row = ft.Row(controls=[btn_config, btn_errors, btn_ret]) btn_storage = ft.ElevatedButton("Storage", on_click=show_storage_info)
button_row = ft.Row(controls=[btn_config, btn_errors, btn_ret, btn_storage])
content_placeholder.content = config_field content_placeholder.content = config_field
settings_content = ft.Column( settings_content = ft.Column(
expand=True, expand=True,