Refactor `Application` and `RichInterface` setup logic

- Added `is_configured` flag in `Application` to track configuration state.
- Updated `RichInterface` to support multiple modes (`configure`, `detailed`, etc.) using structured logic.
- Integrated TUI run modes and refined display messages.
- Fixed minor imports and style inconsistencies in `RichInterface`.
This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2025-10-30 01:28:36 -03:00
parent f6a5c15eac
commit 772020a9e5
3 changed files with 29 additions and 11 deletions

View File

@ -2,6 +2,7 @@ import argparse
import sys
import rich
from metar_navigate.ui import RichInterface
from metar_navigate.utils import ConfigManager
@ -11,11 +12,12 @@ class Application:
self.args = None
self.config = ConfigManager()
self.ui = None
self.is_configured = False
def setup(self) -> None:
if self.config.read_config() is None:
rich.print("[bold red]No config file found. Please run metarNavigate --configure[/bold red] ")
if self.config.read_config() is not None:
self.is_configured = True
self._validate_args()
@ -74,4 +76,4 @@ class Application:
def run(self):
pass
self.ui.run()

View File

@ -1,3 +1,3 @@
from .ui import RichInterface
__all__ = ["RichInterface"]
__all__ = ["RichInterface",]

View File

@ -1,6 +1,6 @@
from abc import ABC, abstractmethod
from rich import Console
from rich import console
class UIInterface(ABC):
@ -16,15 +16,31 @@ class UIInterface(ABC):
class RichInterface(UIInterface):
def __init__(self):
super().__init__()
self.console = Console()
self.console = console.Console()
self.console.show_cursor(False)
self.mode = None
def setup(self,**kwargs):
for key, value in kwargs.items():
if key == "configures" and value == True:
self.mode = "configure"
else:
self.mode = "run"
match(key):
case "configure":
if value:
self.mode = "configure"
else:
self.mode = "run"
case "detailed":
self.mode = "detailed"
case _:
raise ValueError(f"Invalid mode: {key}")
def configure_run_mode(self):
self.console.print("This Application is in [bold red]Configure Mode[/bold red]")
self.console.print("This Application requires a CheckWX API Key to run")
def run(self):
pass
if self.mode == "configure":
self.configure_run_mode()
else:
self.console.print("This Application is in [bold red]Run Mode[/bold red]")
self.console.show_cursor(True)