forked from clan/clan-core
Extracted class from app.py
This commit is contained in:
parent
5c9b95c0b9
commit
a4a16361c9
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "pkgs/clan-vm-manager/test_democlan"]
|
||||
path = pkgs/clan-vm-manager/test_democlan
|
||||
url = gitea@git.clan.lol:clan/democlan.git
|
@ -2,8 +2,6 @@
|
||||
|
||||
import argparse
|
||||
import sys
|
||||
from collections import OrderedDict
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import gi
|
||||
@ -15,64 +13,6 @@ from .constants import constants
|
||||
from .ui.clan_select_list import ClanSelectPage
|
||||
|
||||
|
||||
class VM:
|
||||
def __init__(
|
||||
self,
|
||||
icon: Path,
|
||||
name: str,
|
||||
url: str,
|
||||
path: Path,
|
||||
running: bool = False,
|
||||
autostart: bool = False,
|
||||
) -> None:
|
||||
self.icon = icon.resolve()
|
||||
assert self.icon.exists()
|
||||
assert self.icon.is_file()
|
||||
self.url = url
|
||||
self.autostart = autostart
|
||||
self.running = running
|
||||
self.name = name
|
||||
self.path = path
|
||||
|
||||
def list_display(self) -> OrderedDict[str, Any]:
|
||||
return OrderedDict(
|
||||
{
|
||||
"Icon": str(self.icon),
|
||||
"Name": self.name,
|
||||
"URL": self.url,
|
||||
"Running": self.running,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
assets = Path(__file__).parent / "assets"
|
||||
|
||||
vms = [
|
||||
VM(
|
||||
assets / "cybernet.jpeg",
|
||||
"Cybernet Clan",
|
||||
"clan://cybernet.lol",
|
||||
"/home/user/w-clan",
|
||||
True,
|
||||
),
|
||||
VM(
|
||||
assets / "zenith.jpeg",
|
||||
"Zenith Clan",
|
||||
"clan://zenith.lol",
|
||||
"/home/user/lassulus-clan",
|
||||
),
|
||||
VM(
|
||||
assets / "firestorm.jpeg",
|
||||
"Firestorm Clan",
|
||||
"clan://firestorm.lol",
|
||||
"/home/user/mic-clan",
|
||||
),
|
||||
]
|
||||
# vms.extend(vms)
|
||||
# vms.extend(vms)
|
||||
# vms.extend(vms)
|
||||
|
||||
|
||||
class ClanJoinPage(Gtk.Box):
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
@ -97,7 +37,7 @@ class MainWindow(Gtk.ApplicationWindow):
|
||||
self.notebook = Gtk.Notebook()
|
||||
vbox.add(self.notebook)
|
||||
|
||||
self.notebook.append_page(ClanSelectPage(vms), Gtk.Label(label="Overview"))
|
||||
self.notebook.append_page(ClanSelectPage(), Gtk.Label(label="Overview"))
|
||||
self.notebook.append_page(ClanJoinPage(), Gtk.Label(label="Join"))
|
||||
|
||||
# Must be called AFTER all components were added
|
||||
|
@ -1,23 +1,29 @@
|
||||
from collections.abc import Callable
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from gi.repository import GdkPixbuf, Gtk
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ..app import VM
|
||||
from ..models import VM, list_vms
|
||||
|
||||
|
||||
class ClanSelectPage(Gtk.Box):
|
||||
def __init__(self, vms: list["VM"]) -> None:
|
||||
def __init__(self) -> None:
|
||||
super().__init__(orientation=Gtk.Orientation.VERTICAL, expand=True)
|
||||
|
||||
self.add(ClanSelectList(vms, self.on_cell_toggled, self.on_select_row, self.on_double_click))
|
||||
self.add(
|
||||
ClanSelectButtons(
|
||||
self.on_start_clicked, self.on_stop_clicked, self.on_backup_clicked
|
||||
)
|
||||
)
|
||||
vms = list_vms()
|
||||
|
||||
list_hooks = {
|
||||
"on_cell_toggled": self.on_cell_toggled,
|
||||
"on_select_row": self.on_select_row,
|
||||
"on_double_click": self.on_double_click,
|
||||
}
|
||||
self.add(ClanSelectList(vms=vms, **list_hooks))
|
||||
|
||||
button_hooks = {
|
||||
"on_start_clicked": self.on_start_clicked,
|
||||
"on_stop_clicked": self.on_stop_clicked,
|
||||
"on_backup_clicked": self.on_backup_clicked,
|
||||
}
|
||||
self.add(ClanSelectButtons(**button_hooks))
|
||||
|
||||
def on_start_clicked(self, widget: Gtk.Widget) -> None:
|
||||
print("Start clicked")
|
||||
@ -42,13 +48,12 @@ class ClanSelectPage(Gtk.Box):
|
||||
def on_select_row(self, selection: Gtk.TreeSelection) -> None:
|
||||
model, row = selection.get_selected()
|
||||
if row is not None:
|
||||
print(f"Selected {model[row][0]}")
|
||||
|
||||
def on_double_click(self, tree_view, path, column) -> None:
|
||||
|
||||
model = tree_view.get_model()
|
||||
iter = model.get_iter(path)
|
||||
print(f"Selected {model[row][1]}")
|
||||
|
||||
def on_double_click(
|
||||
self, tree_view: Gtk.TreeView, path: Gtk.TreePath, column: Gtk.TreeViewColumn
|
||||
) -> None:
|
||||
breakpoint()
|
||||
# Get the selection object of the tree view
|
||||
selection = tree_view.get_selection()
|
||||
model, row = selection.get_selected()
|
||||
@ -59,6 +64,7 @@ class ClanSelectPage(Gtk.Box):
|
||||
class ClanSelectButtons(Gtk.Box):
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
on_start_clicked: Callable[[Gtk.Widget], None],
|
||||
on_stop_clicked: Callable[[Gtk.Widget], None],
|
||||
on_backup_clicked: Callable[[Gtk.Widget], None],
|
||||
@ -81,7 +87,8 @@ class ClanSelectButtons(Gtk.Box):
|
||||
class ClanSelectList(Gtk.Box):
|
||||
def __init__(
|
||||
self,
|
||||
vms: list["VM"],
|
||||
*,
|
||||
vms: list[VM],
|
||||
on_cell_toggled: Callable[[Gtk.Widget, str], None],
|
||||
on_select_row: Callable[[Gtk.TreeSelection], None],
|
||||
on_double_click: Callable[[Gtk.TreeSelection], None],
|
||||
|
1
pkgs/clan-vm-manager/test_democlan
Submodule
1
pkgs/clan-vm-manager/test_democlan
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 99f20170a9a122b4349fbb5226d1f07183dc1bd9
|
Loading…
Reference in New Issue
Block a user