Settings Module¶
Thread-safe application settings management using Qt's QSettings with INI file backend.
Quick Start¶
from src.shared_services.settings.settings_manager import app_settings
# Read settings
theme = app_settings.get("appearance/theme", "light")
width = app_settings.get("window/width", 800, int)
# Write settings (auto-syncs to disk)
app_settings.set("appearance/theme", "dark")
app_settings.set("window/width", 1024)
# Remove a setting
app_settings.remove("obsolete/setting")
Features¶
- Thread-safe singleton pattern
- Automatic disk sync on write
- Type-hinted value retrieval
- Group-based batch operations
- INI file format for easy debugging
Group Operations¶
For reading multiple related settings efficiently:
app_settings.begin_group("window")
try:
width = app_settings.get("width", 800)
height = app_settings.get("height", 600)
maximized = app_settings.get("maximized", False, bool)
finally:
app_settings.end_group()
Files¶
| File | Purpose |
|---|---|
settings_manager.py |
GlobalSettings class and app_settings singleton |
constants/paths.py |
Settings file path definition |
Settings File Location¶
The INI file is stored in the user's app data directory:
What Belongs Here¶
Put in settings: - User preferences (theme, language, window state) - Application configuration (paths, defaults) - Persistent UI state
Do NOT put here: - Sensitive data (use security module) - Large data (use files) - Temporary state (use memory)