summaryrefslogtreecommitdiff
path: root/examples/vala/simple-bar/widget/Bar.vala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/vala/simple-bar/widget/Bar.vala')
-rw-r--r--examples/vala/simple-bar/widget/Bar.vala50
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();
+ }
+}