From ca6634c6f0c6679b52f3a6565b506641d593254c Mon Sep 17 00:00:00 2001 From: kolo Date: Tue, 8 Apr 2025 10:04:57 +0300 Subject: [PATCH] some fix --- README.md | 9 ++++++++- argenta/app/dividing_line/__init__.py | 4 ++++ argenta/app/models.py | 22 ++++++++++------------ argenta/router/__init__.py | 2 +- mock/mock_app/handlers/routers.py | 7 +++---- mock/mock_app/main.py | 6 ++++-- pyproject.toml | 2 +- 7 files changed, 31 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 0dc837e..8622ec2 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ --- ## Описание -**Argenta** — Python library for creating custom shells +**Argenta** — Python library for creating TUI ![prewiev](https://github.com/koloideal/Argenta/blob/kolo/imgs/mock_app_preview_last.png?raw=True) Пример внешнего вида TUI, написанного с помощью Argenta @@ -104,6 +104,7 @@ App(prompt: str = 'What do you want to do?\n', ignore_command_register: bool = True, dividing_line: StaticDividingLine | DynamicDividingLine = StaticDividingLine(), repeat_command_groups: bool = True, + full_override_system_messages: bool = False print_func: Callable[[str], None] = Console().print) ``` **Аргументы:** @@ -117,6 +118,7 @@ App(prompt: str = 'What do you want to do?\n', - `ignore_command_register` (`bool`): Игнорировать регистр всех команд. - `dividing_line` (`StaticDividingLine | DynamicDividingLine`): Разделительная строка. - `repeat_command_groups` (`bool`): Повторять описание команд перед вводом. +- `full_override_system_messages` (`bool`): Переопределить ли дефолтное оформление сообщений ([подробнее см.](#override_defaults)) - `print_func` (`Callable[[str], None]`): Функция вывода текста в терминал. --- @@ -224,6 +226,11 @@ App(prompt: str = 'What do you want to do?\n', - Наиболее частые сообщение при запуске предопределены и доступны для быстрого использования: `argenta.app.defaults.PredeterminedMessages` + +- Если `override_system_messages`=`False`, то при переопределении таких атрибутов как `initial_message` и +`farawell_message` будет использовано дефолтное оформление текста, в виде красного ascii арта, при значении +`override_system_messages`=`True` системные сообщения будут отображены в точности какими были переданы + diff --git a/argenta/app/dividing_line/__init__.py b/argenta/app/dividing_line/__init__.py index e69de29..4b4f746 100644 --- a/argenta/app/dividing_line/__init__.py +++ b/argenta/app/dividing_line/__init__.py @@ -0,0 +1,4 @@ +__all__ = ["StaticDividingLine", "DynamicDividingLine"] + + +from argenta.app.dividing_line.models import StaticDividingLine, DynamicDividingLine diff --git a/argenta/app/models.py b/argenta/app/models.py index 391f5fe..04ca32c 100644 --- a/argenta/app/models.py +++ b/argenta/app/models.py @@ -24,14 +24,15 @@ from argenta.app.registered_routers.entity import RegisteredRouters class BaseApp: def __init__(self, prompt: str = '[italic dim bold]What do you want to do?\n', - initial_message: str = 'Argenta', - farewell_message: str = 'See you', + initial_message: str = '\nArgenta\n', + farewell_message: str = '\nSee you\n', exit_command: str = 'Q', exit_command_description: str = 'Exit command', system_points_title: str = 'System points:', ignore_command_register: bool = True, dividing_line: StaticDividingLine | DynamicDividingLine = StaticDividingLine(), repeat_command_groups: bool = True, + full_override_system_messages: bool = False, print_func: Callable[[str], None] = Console().print) -> None: self._prompt = prompt self._print_func = print_func @@ -41,6 +42,7 @@ class BaseApp: self._dividing_line = dividing_line self._ignore_command_register = ignore_command_register self._repeat_command_groups_description = repeat_command_groups + self._full_override_system_messages = full_override_system_messages self.farewell_message = farewell_message self.initial_message = initial_message @@ -55,18 +57,14 @@ class BaseApp: self.unknown_command_handler: Callable[[InputCommand], None] = lambda command: print_func(f"[red bold]Unknown command: {command.get_trigger()}") self.exit_command_handler: Callable[[], None] = lambda: print_func(self.farewell_message) - self._setup_default_view(is_initial_message_default=initial_message == 'Argenta', - is_farewell_message_default=farewell_message == 'See you') + self._setup_default_view() - def _setup_default_view(self, is_initial_message_default: bool, - is_farewell_message_default: bool): - if is_initial_message_default: - self.initial_message = f'\n[bold red]{text2art('Argenta', font='tarty1')}\n\n' - if is_farewell_message_default: - self.farewell_message = (f'[bold red]\n{text2art('\nSee you\n', font='chanky')}[/bold red]\n' - f'[red i]github.com/koloideal/Argenta[/red i] | ' - f'[red bold i]made by kolo[/red bold i]\n') + def _setup_default_view(self): + if not self._full_override_system_messages: + self.initial_message = f'\n[bold red]{text2art(self.initial_message, font='tarty1')}\n\n' + self.farewell_message = (f'[bold red]\n{text2art(f'\n{self.farewell_message}\n', font='chanky')}[/bold red]\n' + f'[red i]github.com/koloideal/Argenta[/red i] | [red bold i]made by kolo[/red bold i]\n') def _validate_number_of_routers(self) -> None: diff --git a/argenta/router/__init__.py b/argenta/router/__init__.py index d716f22..75d05bc 100644 --- a/argenta/router/__init__.py +++ b/argenta/router/__init__.py @@ -1,4 +1,4 @@ __all__ = ["Router"] -from .entity import Router \ No newline at end of file +from argenta.router.entity import Router \ No newline at end of file diff --git a/mock/mock_app/handlers/routers.py b/mock/mock_app/handlers/routers.py index 9d98b76..1e91e3c 100644 --- a/mock/mock_app/handlers/routers.py +++ b/mock/mock_app/handlers/routers.py @@ -18,18 +18,17 @@ console = Console() flag = Flag('test') -@work_router.command(Command(trigger='0', - description='Get Help')) +@work_router.command(Command('0', 'Get Help')) def command_help(): help_command() -@work_router.command(Command(trigger='S', description='Start Solving', flags=Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT, flag))) +@work_router.command(Command('S', 'Start Solving', Flags(PredeterminedFlags.HOST, PredeterminedFlags.PORT, flag))) def command_start_solving(args: InputFlags): print(args.get_flag('test')) -@settings_router.command(Command(trigger='U', description='Update WordMath')) +@settings_router.command(Command('U', 'Update WordMath')) def command_update(): pass diff --git a/mock/mock_app/main.py b/mock/mock_app/main.py index af72d57..7c8e254 100644 --- a/mock/mock_app/main.py +++ b/mock/mock_app/main.py @@ -2,10 +2,12 @@ from mock.mock_app.handlers.routers import work_router, settings_router from argenta.app import App from argenta.app.defaults import PredeterminedMessages -from argenta.app.dividing_line.models import StaticDividingLine, DynamicDividingLine +from argenta.app.dividing_line import DynamicDividingLine -app: App = App(dividing_line=DynamicDividingLine()) +app: App = App(dividing_line=DynamicDividingLine(), + initial_message='WordMath', + farewell_message='shiiiit') def main(): diff --git a/pyproject.toml b/pyproject.toml index b2320e4..6911431 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "argenta" -version = "0.4.8" +version = "0.4.9" description = "Python library for creating TUI" authors = [ {name = "kolo", email = "kolo.is.main@gmail.com"}