Skip to content

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:

{user_data}/config/settings.ini

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)