Merge pull request 'new clan; Join page with none as initial value' (#662) from hsjobeki-main into main

This commit is contained in:
clan-bot
2023-12-30 09:47:01 +00:00
3 changed files with 44 additions and 29 deletions

View File

@@ -0,0 +1,22 @@
#!/usr/bin/env python3
from typing import Literal
import gi
gi.require_version("Gtk", "3.0")
from clan_cli.errors import ClanError
from gi.repository import Gtk
Severity = Literal["Error"] | Literal["Warning"] | Literal["Info"] | str
def show_error_dialog(error: ClanError, severity: Severity | None = "Error") -> None:
message = str(error)
dialog = Gtk.MessageDialog(
None, 0, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, severity
)
print("error:", message)
dialog.format_secondary_text(message)
dialog.run()
dialog.destroy()

View File

@@ -3,9 +3,11 @@ from typing import Any
import gi import gi
from clan_cli.clan_uri import ClanURI from clan_cli.clan_uri import ClanURI
from clan_cli.errors import ClanError
from clan_cli.history.add import add_history, list_history from clan_cli.history.add import add_history, list_history
from clan_vm_manager import assets from clan_vm_manager import assets
from clan_vm_manager.errors.show_error import show_error_dialog
from ..interfaces import Callbacks, InitialJoinValues from ..interfaces import Callbacks, InitialJoinValues
@@ -73,11 +75,14 @@ class Trust(Gtk.Box):
self.set_center_widget(layout) self.set_center_widget(layout)
def on_trust(self, widget: Gtk.Widget) -> None: def on_trust(self, widget: Gtk.Widget) -> None:
try:
uri = self.url or ClanURI(self.entry.get_text()) uri = self.url or ClanURI(self.entry.get_text())
print(f"trusted: {uri}") print(f"trusted: {uri}")
add_history(uri) add_history(uri)
history = list_history() history = list_history()
found = filter(lambda item: item.flake.flake_url == uri.get_internal(), history) found = filter(
lambda item: item.flake.flake_url == uri.get_internal(), history
)
if found: if found:
[item] = found [item] = found
self.stack.add_titled( self.stack.add_titled(
@@ -88,6 +93,9 @@ class Trust(Gtk.Box):
self.show_next() self.show_next()
self.stack.set_visible_child_name("details") self.stack.set_visible_child_name("details")
except ClanError as e:
show_error_dialog(e)
class Details(Gtk.Box): class Details(Gtk.Box):
def __init__(self, url: str, description: str | None) -> None: def __init__(self, url: str, description: str | None) -> None:
@@ -152,7 +160,7 @@ class Details(Gtk.Box):
def on_join(self, widget: Gtk.Widget) -> None: def on_join(self, widget: Gtk.Widget) -> None:
# TODO: @Qubasa # TODO: @Qubasa
raise Exception("Not ready yet.") show_error_dialog(ClanError("Feature not ready yet."), "Info")
class JoinWindow(Gtk.ApplicationWindow): class JoinWindow(Gtk.ApplicationWindow):
@@ -177,27 +185,12 @@ class JoinWindow(Gtk.ApplicationWindow):
self.stack = Gtk.Stack() self.stack = Gtk.Stack()
# If the initial url is not set, the user must provide one
# if initial_values.url is None:
# self.stack.add_titled(
# UrlInput(
# initial_values, stack=self.stack
# ),
# "URL",
# "url",
# )
print("initial_values", initial_values) print("initial_values", initial_values)
self.stack.add_titled( self.stack.add_titled(
Trust(initial_values, show_next=self.show_details, stack=self.stack), Trust(initial_values, show_next=self.show_details, stack=self.stack),
"trust", "trust",
"Trust", "Trust",
) )
# self.stack.add_titled(
# self.details,
# "details",
# "Details",
# )
vbox.add(self.stack) vbox.add(self.stack)