summaryrefslogtreecommitdiff
path: root/examples/py/starter-bar/widget/Bar.py
blob: 9071169959ab95001de8234752d73af6188f0207 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from gi.repository import Astal, Gtk, Gdk, GLib


class Time(Astal.Label):
    def __init__(self, format="%H:%M:%S"):
        super().__init__(visible=True)
        self.connect("destroy", self.on_destroy)
        self.format = format
        self.time = Astal.Time.interval(1000, self.on_tick)

    def on_tick(self):
        datetime = GLib.DateTime.new_now_local()
        assert datetime
        time = datetime.format(self.format)
        assert time
        self.set_label(time)

    def on_destroy(self, *args, **kwargs):
        self.time.cancel()


class Bar(Astal.Window):
    def __init__(self, monitor: Gdk.Monitor):
        super().__init__(
            visible=True,
            gdkmonitor=monitor,
            name="Bar" + str(monitor.get_model()),
            anchor=Astal.WindowAnchor.LEFT
            | Astal.WindowAnchor.RIGHT
            | Astal.WindowAnchor.TOP,
            exclusivity=Astal.Exclusivity.EXCLUSIVE,
        )

        Astal.widget_set_class_names(self, ["Bar"])
        start_widget = Astal.Box(visible=True, hexpand=True, halign=Gtk.Align.CENTER)
        end_widget = Astal.Box(visible=True, hexpand=True, halign=Gtk.Align.CENTER)

        start_widget.set_children([Astal.Label(visible=True, label="Astal in python")])

        end_widget.set_children([Time()])

        self.add(
            Astal.CenterBox(
                visible=True,
                start_widget=start_widget,
                end_widget=end_widget,
            )
        )