From 7d22f7c9fc1127ea1abd31f650beb10df8369867 Mon Sep 17 00:00:00 2001 From: Qubasa Date: Fri, 8 Dec 2023 11:56:27 +0100 Subject: [PATCH] Added join window --- .../clan_vm_manager/__init__.py | 8 ++-- pkgs/clan-vm-manager/clan_vm_manager/app.py | 9 +---- .../clan_vm_manager/windows/join.py | 38 +++++++++++++++++-- .../clan_vm_manager/windows/overview.py | 28 ++++++-------- 4 files changed, 50 insertions(+), 33 deletions(-) diff --git a/pkgs/clan-vm-manager/clan_vm_manager/__init__.py b/pkgs/clan-vm-manager/clan_vm_manager/__init__.py index 9322baa7..bb665e11 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/__init__.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/__init__.py @@ -1,11 +1,7 @@ import argparse - -from .app import Application -from clan_cli.clan_uri import ClanURI - from .windows.join import register_join_parser -from .windows.overview import show_overview, OverviewWindow +from .windows.overview import register_overview_parser, show_overview def main() -> None: @@ -19,6 +15,8 @@ def main() -> None: ) register_join_parser(subparser.add_parser("join", help="join a clan")) + register_overview_parser(subparser.add_parser("overview", help="overview screen")) + # Executed when no command is given parser.set_defaults(func=show_overview) args = parser.parse_args() diff --git a/pkgs/clan-vm-manager/clan_vm_manager/app.py b/pkgs/clan-vm-manager/clan_vm_manager/app.py index 7cc21d11..48b39d21 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/app.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/app.py @@ -1,18 +1,12 @@ #!/usr/bin/env python3 -import sys -from typing import Any import gi -from .models import VMBase - gi.require_version("Gtk", "3.0") from gi.repository import Gio, Gtk from .constants import constants -from .ui.clan_join_page import ClanJoinPage -from .ui.clan_select_list import ClanEdit, ClanList class Application(Gtk.Application): @@ -30,7 +24,8 @@ class Application(Gtk.Application): def do_activate(self) -> None: win = self.props.active_window if not win: - win = self.window(application=self) + win = self.window + win.set_application(self) win.present() # TODO: For css styling diff --git a/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py b/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py index 0bdef7ca..bff1bd9f 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py @@ -1,16 +1,46 @@ -from ..app import Application import argparse -from .overview import OverviewWindow +from typing import Any + +import gi from clan_cli.clan_uri import ClanURI +from ..app import Application + +gi.require_version("Gtk", "3.0") +from gi.repository import Gio, Gtk + + +class JoinWindow(Gtk.ApplicationWindow): + def __init__(self) -> None: + super().__init__() + # Initialize the main window + self.set_title("cLAN Manager") + self.connect("delete-event", self.on_quit) + self.set_default_size(800, 600) + + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6, expand=True) + self.add(vbox) + + # Add a notebook layout + # https://python-gtk-3-tutorial.readthedocs.io/en/latest/layout.html#notebook + self.notebook = Gtk.Notebook() + self.stack = Gtk.Stack() + + vbox.add(self.stack) + + # Must be called AFTER all components were added + self.show_all() + + def on_quit(self, *args: Any) -> None: + Gio.Application.quit(self.get_application()) + def show_join(args: argparse.Namespace) -> None: print(f"Joining clan {args.clan_uri}") - app = Application(OverviewWindow) + app = Application(JoinWindow()) return app.run() def register_join_parser(parser: argparse.ArgumentParser) -> None: parser.add_argument("clan_uri", type=ClanURI, help="clan URI to join") parser.set_defaults(func=show_join) - diff --git a/pkgs/clan-vm-manager/clan_vm_manager/windows/overview.py b/pkgs/clan-vm-manager/clan_vm_manager/windows/overview.py index 1885bd74..f0dba3b4 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/windows/overview.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/windows/overview.py @@ -1,4 +1,3 @@ -import sys from typing import Any import gi @@ -6,18 +5,18 @@ import gi from ..models import VMBase gi.require_version("Gtk", "3.0") -from gi.repository import Gio, Gtk - -from ..constants import constants -from ..ui.clan_join_page import ClanJoinPage -from ..ui.clan_select_list import ClanEdit, ClanList -from ..app import Application -from clan_cli.clan_uri import ClanURI import argparse +from gi.repository import Gio, Gtk + +from ..app import Application +from ..ui.clan_join_page import ClanJoinPage +from ..ui.clan_select_list import ClanEdit, ClanList + + class OverviewWindow(Gtk.ApplicationWindow): - def __init__(self, application: Gtk.Application) -> None: - super().__init__(application=application) + def __init__(self) -> None: + super().__init__() # Initialize the main window self.set_title("cLAN Manager") self.connect("delete-event", self.on_quit) @@ -89,15 +88,10 @@ class OverviewWindow(Gtk.ApplicationWindow): Gio.Application.quit(self.get_application()) - def show_overview(args: argparse.Namespace) -> None: - app = Application(OverviewWindow) + app = Application(OverviewWindow()) return app.run() + def register_overview_parser(parser: argparse.ArgumentParser) -> None: - parser.add_argument("clan_uri", type=ClanURI, help="clan URI to join") parser.set_defaults(func=show_overview) - - - -