mirror of
https://github.com/aclist/dztui.git
synced 2026-11-10 12:00:38 +01:00
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
from typing import Literal
|
|
from dzgui.util import css
|
|
|
|
import gi
|
|
gi.require_version("Gtk", "3.0")
|
|
from gi.repository import Gtk, GLib # noqa E402
|
|
|
|
|
|
class Toast(Gtk.EventBox):
|
|
def __init__(self) -> None:
|
|
super().__init__()
|
|
|
|
self.label = Gtk.Label(hexpand=True)
|
|
self.box = Gtk.Box(
|
|
orientation=Gtk.Orientation.HORIZONTAL,
|
|
halign=Gtk.Align.CENTER,
|
|
valign=Gtk.Align.CENTER,
|
|
)
|
|
self.box.add(self.label)
|
|
self.add(self.box)
|
|
self.box.set_size_request(200, 100)
|
|
|
|
css.add_class(self.box, "toast-label")
|
|
|
|
def set_text(self, text: str) -> None:
|
|
self.label.set_text(text)
|
|
|
|
def set_text_and_fade(self, text: str) -> None:
|
|
self.set_text(text)
|
|
self.pop()
|
|
self._defer_fade()
|
|
|
|
def fade_out(self) -> bool:
|
|
if self.get_opacity() == 0:
|
|
self.set_visible(False)
|
|
self.set_opacity(1)
|
|
return False
|
|
self.set_opacity(self.get_opacity() - 0.03)
|
|
return True
|
|
|
|
def pop(self) -> None:
|
|
self.set_visible(True)
|
|
|
|
def _defer_fade(self) -> Literal[False]:
|
|
GLib.timeout_add(30, self.fade_out)
|
|
return False
|