diff options
Diffstat (limited to 'examples/vala/simple-bar/widget/Bar.vala')
-rw-r--r-- | examples/vala/simple-bar/widget/Bar.vala | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/examples/vala/simple-bar/widget/Bar.vala b/examples/vala/simple-bar/widget/Bar.vala new file mode 100644 index 0000000..4d42f9c --- /dev/null +++ b/examples/vala/simple-bar/widget/Bar.vala @@ -0,0 +1,50 @@ +class Battery : Gtk.Box { + Astal.Icon icon = new Astal.Icon(); + Astal.Label label = new Astal.Label(); + + public Battery() { + add(icon); + add(label); + + var bat = AstalBattery.get_default(); + bat.bind_property("battery-icon-name", icon, "icon", BindingFlags.SYNC_CREATE); + bat.bind_property("percentage", label, "label", BindingFlags.SYNC_CREATE, (_, src, ref trgt) => { + var p = Math.floor(src.get_double() * 100); + trgt.set_string(@"$p%"); + return true; + }); + } +} + +class Clock : Astal.Label { + string format; + Astal.Time interval; + + void sync() { + label = new DateTime.now_local().format(format); + } + + public Clock(string format = "%H:%M - %A %e.") { + this.format = format; + interval = Astal.Time.interval(1000, null); + interval.now.connect(sync); + destroy.connect(interval.cancel); + } +} + +class Left : Gtk.Box { + public Left() { + add(new Clock()); + add(new Battery()); + } +} + +class Bar : Astal.Window { + public Bar() { + add(new Astal.CenterBox() { + start_widget = new Left() + }); + + show_all(); + } +} |