Skip to content

Commit

Permalink
Init package manager screen
Browse files Browse the repository at this point in the history
  • Loading branch information
jeckel committed Nov 9, 2024
1 parent ec3d728 commit c8fd869
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 3 deletions.
4 changes: 4 additions & 0 deletions src/models/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,7 @@ def check_composer_file(self):
if os.path.exists(composer_file):
self.composer = True
return self

@property
def has_package_managers(self) -> bool:
return self.package_managers is not None and len(self.package_managers) > 0
14 changes: 13 additions & 1 deletion src/presentation/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from .composer import ComposerCommandRequested
from .composer.composer_screen import ComposerScreen
from .docker import DockerContainer
from .package_manager import PackageManagerScreen
from .summary import ProjectSummaryContainer
from .component import Sidebar, TerminalModal, NonShellCommand
from .summary.summary_screen import SummaryScreen
Expand All @@ -26,14 +27,22 @@ class MainApp(App[None]):
}
"""
CSS_PATH = "../tcss/layout.tcss"
SCREENS = {"summary": SummaryScreen, "composer": ComposerScreen}
SCREENS = {
"summary": SummaryScreen,
"composer": ComposerScreen,
"packages": PackageManagerScreen,
}

_project: Project

def __init__(self):
super().__init__()
self._project = ServiceLocator.context().current_project
self.title = f"DX Companion - {self._project.name}"
if self._project.has_package_managers:
self.bind(
keys="ctrl+u", action="toggle_package_screen", description="Packages"
)

def on_mount(self) -> None:
self.push_screen("summary")
Expand All @@ -44,6 +53,9 @@ def action_toggle_sidebar(self) -> None:
except NoMatches:
pass

def action_toggle_package_screen(self) -> None:
self.switch_screen("packages")

@on(ComposerCommandRequested)
def action_composer_script(self, event: ComposerCommandRequested) -> None:
def refresh_composer(result: bool | None):
Expand Down
1 change: 1 addition & 0 deletions src/presentation/package_manager/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .screen import PackageManagerScreen
25 changes: 25 additions & 0 deletions src/presentation/package_manager/screen.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from textual import on
from textual.app import ComposeResult
from textual.events import ScreenResume
from textual.screen import Screen
from textual.widgets import Header, Footer

from presentation.component.sidebar import Sidebar


class PackageManagerScreen(Screen):
BINDINGS = {
("escape", "return", "Return to project"),
}

def compose(self) -> ComposeResult:
yield Sidebar(classes="-hidden")
yield Header()
yield Footer()

def action_return(self):
self.app.switch_screen("summary")

@on(ScreenResume)
def screen_resume(self):
pass
3 changes: 1 addition & 2 deletions src/presentation/summary/package_card.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from rich.style import Style
from rich.table import Table

from presentation import ComposerScreen
from service_locator import ServiceLocator
from services.package_manager.abstract_package_manager import Package

Expand All @@ -31,7 +30,7 @@ def compose(self) -> ComposeResult:

@on(Button.Pressed, "#toggle_package_screen")
def on_composer_manage(self):
self.app.push_screen(ComposerScreen())
self.app.switch_screen("packages")

def refresh_packages(self) -> None:
"""
Expand Down

0 comments on commit c8fd869

Please sign in to comment.