wijjit.styling.theme.ThemeManager

class wijjit.styling.theme.ThemeManager[source]

Manages theme registration and switching.

Provides a global registry of themes and handles theme switching at runtime. Applications typically use a single ThemeManager instance.

Variables:
  • themes (dict of str to Theme) – Registered themes by name

  • current_theme (Theme) – Currently active theme

Examples

Create manager with built-in themes:

>>> manager = ThemeManager()
>>> manager.get_theme().name
'default'

Switch themes:

>>> manager.set_theme('dark')
>>> manager.get_theme().name
'dark'

Register custom theme:

>>> custom = Theme('custom', {'button': Style(bold=True)})
>>> manager.register_theme(custom)
>>> manager.set_theme('custom')
__init__()[source]
Return type:

None

Methods

__init__()

get_theme()

Get the currently active theme.

list_themes()

List all registered theme names.

register_theme(theme)

Register a theme.

set_theme(theme_name)

Set the active theme by name.

register_theme(theme)[source]

Register a theme.

Parameters:

theme (Theme) – Theme to register

Return type:

None

Notes

Overwrites any existing theme with the same name.

Examples

>>> manager = ThemeManager()
>>> custom = Theme('custom', {})
>>> manager.register_theme(custom)
>>> 'custom' in manager.themes
True
set_theme(theme_name)[source]

Set the active theme by name.

Parameters:

theme_name (str) – Name of theme to activate

Raises:

KeyError – If theme name is not registered

Return type:

None

Examples

>>> manager = ThemeManager()
>>> manager.set_theme('dark')
>>> manager.get_theme().name
'dark'
get_theme()[source]

Get the currently active theme.

Returns:

Current theme

Return type:

Theme

Examples

>>> manager = ThemeManager()
>>> theme = manager.get_theme()
>>> theme.name
'default'
list_themes()[source]

List all registered theme names.

Returns:

Names of all registered themes

Return type:

list of str

Examples

>>> manager = ThemeManager()
>>> themes = manager.list_themes()
>>> 'default' in themes
True
>>> 'dark' in themes
True