change: move ErrorPopover

This commit is contained in:
aclist 2026-08-16 12:44:51 +09:00
parent 8d1d5bde80
commit dfd6850d6d
2 changed files with 25 additions and 19 deletions

View File

@ -1,5 +1,8 @@
from dzgui.const.constants import ERROR, FLATPAK_RUN_CMD, FLATPAK_SANDBOX, STEAM_CMD
from dzgui.strings import options from dzgui.strings import options
from dzgui.const.constants import FLATPAK_RUN_CMD, FLATPAK_SANDBOX, STEAM_CMD from dzgui.views.components.box import HBox
from dzgui.views.components.buttons import Icon
import gi import gi
@ -33,3 +36,18 @@ class ClientCombo(Gtk.ComboBox):
self.pack_start(renderer_text, True) self.pack_start(renderer_text, True)
self.add_attribute(renderer_text, "text", 0) self.add_attribute(renderer_text, "text", 0)
self.set_active(0) self.set_active(0)
class ErrorPopover(Gtk.Popover):
def __init__(self, relative_to: Gtk.Widget, position: Gtk.PositionType) -> None:
super().__init__(relative_to=relative_to, position=position)
self.hbox = HBox()
self.label = Gtk.Label(label="", margin_start=10, margin_end=10)
error_icon = Icon(ERROR, margin_start=10)
self.hbox.extend([error_icon, self.label])
self.add(self.hbox)
self.show_all()
self.popdown()
def set_label(self, label: str) -> None:
self.label.set_label(label)

View File

@ -9,7 +9,6 @@ from dzgui.const.constants import (
APPNAME_DAYZ, APPNAME_DAYZ,
APPNAME_DAYZ_EXP_HUMAN, APPNAME_DAYZ_EXP_HUMAN,
EDIT_DELETE, EDIT_DELETE,
ERROR,
FOLDER, FOLDER,
WARNING, WARNING,
) )
@ -21,6 +20,7 @@ from dzgui.views.components.buttons import Icon, IconTextButton
from dzgui.views.components.eventbox import InfoEventBox from dzgui.views.components.eventbox import InfoEventBox
from dzgui.views.components.frame import HeadingFrame from dzgui.views.components.frame import HeadingFrame
from dzgui.views.components.scrollable import NoOverlayScrolledWindow from dzgui.views.components.scrollable import NoOverlayScrolledWindow
from dzgui.views.components.misc import ErrorPopover
from dzgui.views.trees.tree_mods import OfflineModTreeView from dzgui.views.trees.tree_mods import OfflineModTreeView
@ -57,17 +57,9 @@ class PageHeading(Gtk.Box):
css.add_class(self, "page-heading") css.add_class(self, "page-heading")
class ErrorPopover(Gtk.Popover): class OfflineErrorPopover(ErrorPopover):
def __init__(self) -> None: def __init__(self, relative_to: Gtk.Widget, position: Gtk.PositionType) -> None:
super().__init__(position=Gtk.PositionType.RIGHT) super().__init__(relative_to=relative_to, position=position)
self.hbox = HBox()
self.label = Gtk.Label(label="", margin_start=10, margin_end=10)
error_icon = Icon(ERROR, margin_start=10)
self.hbox.extend([error_icon, self.label])
self.add(self.hbox)
self.show_all()
self.popdown()
def set_label(self, error: FolderError, msg: str) -> None: def set_label(self, error: FolderError, msg: str) -> None:
match error: match error:
@ -115,13 +107,10 @@ class FolderHBox(HBox):
[self.eb, self.button, self.spinner, self.scrolled_label, self.unset_button] [self.eb, self.button, self.spinner, self.scrolled_label, self.unset_button]
) )
self.pop = ErrorPopover() self.pop = OfflineErrorPopover(self.button, Gtk.PositionType.RIGHT)
self.pop.set_relative_to(self.button)
self.pop.connect("unmap", lambda _: self.grab_focus()) self.pop.connect("unmap", lambda _: self.grab_focus())
self.sidepop = ErrorPopover() self.sidepop = OfflineErrorPopover(self.scrolled_label, Gtk.PositionType.BOTTOM)
self.sidepop.set_position(Gtk.PositionType.BOTTOM)
self.sidepop.set_relative_to(self.scrolled_label)
self.sidepop.connect("unmap", lambda _: self.grab_focus()) self.sidepop.connect("unmap", lambda _: self.grab_focus())
self.connect("map", self._on_map) self.connect("map", self._on_map)
@ -467,7 +456,6 @@ class OfflineLoader(Gtk.Box):
] ]
) )
# TODO: share ConnectBox class with preconnect dialog?
self.button_box = HBox(spacing=5) self.button_box = HBox(spacing=5)
self.button_box.set_halign(Gtk.Align.END) self.button_box.set_halign(Gtk.Align.END)
self.button_box.set_margin_top(15) self.button_box.set_margin_top(15)