From 61a0c69b388a2461fe408a825ba47cf8f229bc06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 4 Jan 2024 16:49:21 +0100 Subject: [PATCH 1/3] clan-vm-manager: rename "Online" to "Status" online means connected to some network, which is not what this field shows. --- pkgs/clan-vm-manager/clan_vm_manager/models.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pkgs/clan-vm-manager/clan_vm_manager/models.py b/pkgs/clan-vm-manager/clan_vm_manager/models.py index 0e7b2b248..ef3ad3175 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/models.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/models.py @@ -1,5 +1,6 @@ from collections import OrderedDict from dataclasses import dataclass +from enum import StrEnum from pathlib import Path from typing import Any @@ -16,12 +17,17 @@ from gi.repository import GdkPixbuf from clan_vm_manager import assets +class VMStatus(StrEnum): + RUNNING = "Running" + STOPPED = "Stopped" + + @dataclass(frozen=True) class VMBase: icon: Path | GdkPixbuf.Pixbuf name: str url: str - status: bool + status: VMStatus _flake_attr: str @staticmethod @@ -31,7 +37,7 @@ class VMBase: "Icon": GdkPixbuf.Pixbuf, "Name": str, "URL": str, - "Online": bool, + "Status": str, "_FlakeAttr": str, } ) @@ -46,7 +52,7 @@ class VMBase: "Icon": str(self.icon), "Name": self.name, "URL": self.url, - "Online": self.status, + "Status": self.status, "_FlakeAttr": self._flake_attr, } ) @@ -75,9 +81,9 @@ def get_initial_vms( if entry.flake.icon is not None: icon = entry.flake.icon - status = False + status = VMStatus.STOPPED if entry.flake.flake_url in running_vms: - status = True + status = VMStatus.RUNNING base = VMBase( icon=icon, From 11a2e808f0eeeb29c45cdb5963ab0142dd9e7b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 4 Jan 2024 16:50:19 +0100 Subject: [PATCH 2/3] clan-vm-manager: rename "New" to "Join Clan" --- .../clan_vm_manager/ui/clan_select_list.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/clan-vm-manager/clan_vm_manager/ui/clan_select_list.py b/pkgs/clan-vm-manager/clan_vm_manager/ui/clan_select_list.py index b7448dc7e..caf4e62d5 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/ui/clan_select_list.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/ui/clan_select_list.py @@ -107,7 +107,7 @@ class ClanList(Gtk.Box): on_start_clicked=self.on_start_clicked, on_stop_clicked=self.on_stop_clicked, on_edit_clicked=self.on_edit_clicked, - on_new_clicked=self.on_new_clicked, + on_join_clan_clicked=self.on_join_clan_clicked, on_flash_clicked=self.on_flash_clicked, ) self.toolbar.set_is_selected(self.selected_vm is not None) @@ -139,7 +139,7 @@ class ClanList(Gtk.Box): self.cbs.stop_vm(self.selected_vm.url, self.selected_vm._flake_attr) self.remount_list_view() - def on_new_clicked(self, widget: Gtk.Widget) -> None: + def on_join_clan_clicked(self, widget: Gtk.Widget) -> None: self.show_join() def on_edit_clicked(self, widget: Gtk.Widget) -> None: @@ -163,7 +163,7 @@ class ClanListToolbar(Gtk.Toolbar): on_start_clicked: Callable[[Gtk.Widget], None], on_stop_clicked: Callable[[Gtk.Widget], None], on_edit_clicked: Callable[[Gtk.Widget], None], - on_new_clicked: Callable[[Gtk.Widget], None], + on_join_clan_clicked: Callable[[Gtk.Widget], None], on_flash_clicked: Callable[[Gtk.Widget], None], ) -> None: super().__init__(orientation=Gtk.Orientation.HORIZONTAL) @@ -180,9 +180,9 @@ class ClanListToolbar(Gtk.Toolbar): self.edit_button.connect("clicked", on_edit_clicked) self.add(self.edit_button) - self.new_button = Gtk.ToolButton(label="New") - self.new_button.connect("clicked", on_new_clicked) - self.add(self.new_button) + self.join_clan_button = Gtk.ToolButton(label="Join Clan") + self.join_clan_button.connect("clicked", on_join_clan_clicked) + self.add(self.join_clan_button) self.flash_button = Gtk.ToolButton(label="Write to USB") self.flash_button.connect("clicked", on_flash_clicked) From cb9b25b34dd1860abfd2cc5e47ff5cf82057fcbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Thu, 4 Jan 2024 17:08:01 +0100 Subject: [PATCH 3/3] clan-vm-manager: make joining clan url more logical The icon is confusing. It distracts from the actual "Join" label. Also when a user copy in an URL we can assume they trust the content, which might be not the case when they just clicked on an URL. --- .../clan_vm_manager/windows/join.py | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) 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 a8f27947b..d315820d1 100644 --- a/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py +++ b/pkgs/clan-vm-manager/clan_vm_manager/windows/join.py @@ -38,15 +38,14 @@ class Trust(Gtk.Box): ) layout = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, expand=True) layout.set_border_width(20) - - upper = Gtk.Box(orientation="vertical") - upper.set_spacing(20) + layout.set_spacing(20) if self.url is not None: self.entry = Gtk.Label(label=str(self.url)) - upper.add(Gtk.Label(label="Clan URL")) + layout.add(icon) + layout.add(Gtk.Label(label="Clan URL")) else: - upper.add(Gtk.Label(label="Enter Clan URL")) + layout.add(Gtk.Label(label="Enter Clan URL")) self.entry = Gtk.Entry() # Autocomplete # TODO: provide intelligent suggestions @@ -61,17 +60,16 @@ class Trust(Gtk.Box): self.entry.set_completion(completion) self.entry.set_placeholder_text("clan://") - upper.add(icon) - upper.add(self.entry) + layout.add(self.entry) + + if self.url is None: + trust_button = Gtk.Button(label="Load cLAN-URL") + else: + trust_button = Gtk.Button(label="Trust cLAN-URL") - lower = Gtk.Box(orientation="vertical") - lower.set_spacing(20) - trust_button = Gtk.Button(label="Trust") trust_button.connect("clicked", self.on_trust_clicked) - lower.add(trust_button) + layout.add(trust_button) - layout.pack_start(upper, expand=True, fill=True, padding=0) - layout.pack_end(lower, expand=True, fill=True, padding=0) self.set_center_widget(layout) def on_trust_clicked(self, widget: Gtk.Widget) -> None: