Source code for qtframework.core.context
"""Application context management."""
from __future__ import annotations
from typing import Any
from PySide6.QtCore import QObject, Signal
[docs]
class Context(QObject):
"""Application-wide context for sharing state."""
value_changed = Signal(str, object)
def __init__(self) -> None:
"""Initialize context."""
super().__init__()
self._data: dict[str, Any] = {}
[docs]
def set(self, key: str, value: Any) -> None:
"""Set a context value.
Args:
key: Context key
value: Value to set
"""
old_value = self._data.get(key)
self._data[key] = value
if old_value != value:
self.value_changed.emit(key, value)
[docs]
def get(self, key: str, default: Any = None) -> Any:
"""Get a context value.
Args:
key: Context key
default: Default value if key not found
Returns:
Context value or default
"""
return self._data.get(key, default)
[docs]
def remove(self, key: str) -> None:
"""Remove a context value.
Args:
key: Context key to remove
"""
if key in self._data:
del self._data[key]
self.value_changed.emit(key, None)
[docs]
def clear(self) -> None:
"""Clear all context values."""
self._data.clear()
[docs]
def keys(self) -> list[str]:
"""Get all context keys.
Returns:
List of context keys
"""
return list(self._data.keys())
[docs]
def items(self) -> list[tuple[str, Any]]:
"""Get all context items.
Returns:
List of (key, value) tuples
"""
return list(self._data.items())
[docs]
def update(self, data: dict[str, Any]) -> None:
"""Update multiple context values.
Args:
data: Dictionary of values to update
"""
for key, value in data.items():
self.set(key, value)