Coverage for src/prints/themes.py: 52.17%
23 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 21:20 +0000
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 21:20 +0000
1#!/usr/bin/env python3
3# Modules libraries
4try:
5 from prompt_toolkit.styles.style import Style as prompt_toolkit_styles_Style
6except ModuleNotFoundError: # pragma: no cover
7 from typing import Any as prompt_toolkit_styles_Style # type: ignore[assignment]
9# Components
10from .colors import Colors
12# Themes class, pylint: disable=too-few-public-methods
13class Themes:
15 # Flags
16 __prepared = False
18 # Members
19 __bold: str = ''
20 __red: str = ''
21 __selected: str = ''
23 # Prepare
24 @staticmethod
25 def __prepare() -> None:
27 # Colors enabled
28 if Colors.enabled():
29 Themes.__bold = 'bold'
30 Themes.__red = '#FF0000 bold'
31 Themes.__selected = 'bold noreverse'
33 # Colors disabled
34 else:
35 Themes.__bold = 'noinherit bold'
36 Themes.__red = 'noinherit bold'
37 Themes.__selected = 'noinherit bold noreverse'
39 # Raise flag
40 Themes.__prepared = True
42 # Confirmation
43 @staticmethod
44 def confirmation_style() -> prompt_toolkit_styles_Style:
46 # Prepare
47 if not Themes.__prepared:
48 Themes.__prepare()
50 # Result
51 return prompt_toolkit_styles_Style([
52 ('answer', Themes.__red),
53 ('instruction', Themes.__red),
54 ('highlighted', Themes.__bold),
55 ('pointer', Themes.__bold),
56 ('qmark', Themes.__bold),
57 ('question', Themes.__bold),
58 ('selected', Themes.__selected),
59 ('separator', Themes.__bold),
60 ])