mirror of
https://github.com/aclist/dztui.git
synced 2026-11-14 05:41:52 +01:00
feat: dzgui 7 alpha
This commit is contained in:
1 parent
1acdbd58c5
commit
2e5b771137
150 files changed
+10359
No files matched your search
@@ -0,0 +1,54 @@
|
||||
import textwrap
|
||||
from typing import Self, TYPE_CHECKING
|
||||
|
||||
from dzgui.const.enum import Popup, Preferences
|
||||
from dzgui.const.constants import NO_EXPAND, NO_FILL
|
||||
from dzgui.util.open_links import open_user_workshop
|
||||
from dzgui.views.dialogs.generic import GenericDialog
|
||||
from dzgui.views.components.web_button import WebButton
|
||||
|
||||
import gi
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, GLib, Gdk, GObject, Pango # noqa E402
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dzgui.controllers.mc import Controller
|
||||
|
||||
|
||||
class WorkshopLinkDialog(GenericDialog):
|
||||
def __init__(self, controller: "Controller", text: str, button_label: str, uid: str):
|
||||
super().__init__(controller, text, Popup.NOTIFY)
|
||||
|
||||
text = textwrap.dedent(text)
|
||||
self.dialogBox = self.get_content_area()
|
||||
self.set_default_response(Gtk.ResponseType.OK)
|
||||
self.set_size_request(500, 0)
|
||||
|
||||
"""
|
||||
If the user's ID was successfully parsed from loginusers,
|
||||
a clickable link to their workshop subscriptions is added
|
||||
"""
|
||||
if uid is not None:
|
||||
button = WebButton(label=button_label)
|
||||
button.set_margin_start(60)
|
||||
button.set_margin_end(60)
|
||||
button.connect("clicked", self._on_button_clicked, uid)
|
||||
self.dialogBox.pack_end(button, NO_EXPAND, NO_FILL, 0)
|
||||
|
||||
self.show_all()
|
||||
self.connect("response", self._on_dialog_response)
|
||||
|
||||
def _on_button_clicked(self, button: Gtk.Button, uid: str) -> None:
|
||||
# TODO: currently checks user id on instantiation
|
||||
client = self.controller.query_config(Preferences.CLIENT)
|
||||
open_user_workshop(uid, client)
|
||||
|
||||
def _on_dialog_response(
|
||||
self, dialog: Self, resp: Gtk.ResponseType
|
||||
) -> None:
|
||||
match resp:
|
||||
case Gtk.ResponseType.DELETE_EVENT:
|
||||
return
|
||||
case Gtk.ResponseType.OK:
|
||||
self.destroy()
|
||||
Reference in new issue
Block a user