Simplified by referencing to resources directly instead of through labels
authorEnrico Zini <enrico@enricozini.org>
Wed, 16 Dec 2009 16:19:09 +0000 (16:19 +0000)
committerEnrico Zini <enrico@enricozini.org>
Wed, 16 Dec 2009 16:19:09 +0000 (16:19 +0000)
17 files changed:
src/app.vala
src/app_calendar.vala
src/app_debug.vala
src/app_gps.vala
src/app_gsm.vala
src/app_keyboard.vala
src/app_main.vala
src/app_power.vala
src/app_wm.vala
src/audio.vala
src/clock.vala
src/core.vala
src/gps.vala
src/gsm.vala
src/input.vala
src/registry.vala
src/zavai.vala

index 12f41dd0608c813570c4789a7b9e329668f04362..24a94c2839a204d4e87e44dcceed20b231865add 100644 (file)
@@ -28,19 +28,19 @@ public class Zavai : Gtk.Window, zavai.Resource
     public signal void visibility_changed(bool visible);
 
     zavai.Applet current;
-    string current_name;
 
     public Zavai()
     {
         title = "Zavai";
         current = null;
-        current_name = null;
         destroy += Gtk.main_quit;
         set_events(get_events() | Gdk.EventMask.VISIBILITY_NOTIFY_MASK);
         visibility_notify_event += on_visibility;
         set_skip_pager_hint(true);
         set_skip_taskbar_hint(true);
         //set_type_hint(Gdk.WindowTypeHint.DESKTOP);
+
+        zavai.registry.register(this);
     }
 
     private bool on_visibility(Gdk.Event event)
@@ -88,51 +88,42 @@ public class Zavai : Gtk.Window, zavai.Resource
         }
     }
 
-    public void show_applet(string name)
+    public void show_applet(Applet applet)
     {
-        zavai.Applet applet = zavai.registry.geta(name);
-
         // Remove the current applet
         if (current != null)
         {
             current.stop();
             remove(current);
             current = null;
-            current_name = null;
         }
 
         // Add the new applet
         current = applet;
-        current_name = name;
         add(current);
         current.start();
         current.show_all();
     }
 
-    public void push_applet(string name)
+    public void push_applet(Applet applet)
     {
         // Make the function idempotent
-        if (current_name == name)
+        if (current == applet)
             return;
 
-//stderr.printf("push applet %s -> %s\n", current_name, name);
-        zavai.Applet applet = zavai.registry.geta(name);
-
         // Remove the current applet
         if (current != null)
         {
 //stderr.printf("push applet remove %s\n", current_name);
-            applet.back_link = current_name;
+            applet.back_link = current;
             current.stop();
             remove(current);
             current = null;
-            current_name = null;
         }
 
 //stderr.printf("push applet add %s\n", name);
         // Add the new applet
         current = applet;
-        current_name = name;
         add(current);
         current.start();
         current.show_all();
@@ -146,7 +137,7 @@ public class Zavai : Gtk.Window, zavai.Resource
 
     public void back_to_main()
     {
-        show_applet("zavai.status");
+        show_applet(zavai.ui.main.status);
     }
 
     public void shutdown()
@@ -200,7 +191,7 @@ public abstract class Applet : Gtk.VBox, Resource
     // 'back_link' property: link to use to "go back". If null, do not show
     // a way to go back.
     protected AppletLink _back_link = null;
-    public string back_link {
+    public Applet back_link {
         get { return _back_link.target; }
         set {
 //stderr.printf("Set back link of %s to %s\n", _label, value);
@@ -227,6 +218,7 @@ public abstract class Applet : Gtk.VBox, Resource
         this.spacing = 0;
         pack_end(button_box, false, true, 0);
         _back_link = new AppletStraightLink();
+        zavai.registry.register(this);
     }
 
     public virtual void back()
@@ -255,14 +247,14 @@ public class Menu : Applet
         _label = label;
     }
 
-    public void add_applet(string target)
+    public void add_applet(Applet target)
     {
         pack_start(new AppletPushLink(target), false, false, 0);
     }
 
-    public void add_service_toggle(string service_name, string label_start, string label_stop)
+    public void add_service_toggle(Service service, string label_start, string label_stop)
     {
-        pack_start(new ServiceRequestLink(service_name, label_start, label_stop), false, false, 0);
+        pack_start(new ServiceRequestLink(service, label_start, label_stop), false, false, 0);
     }
 
     public void add_widget(Gtk.Widget w)
@@ -281,23 +273,21 @@ public class BigButton : Gtk.Button
 
 public abstract class AppletLink : BigButton
 {
-    protected string _target;
-    public string target {
+    protected Applet _target;
+    public Applet target {
         get { return _target; }
         set
         {
             if (_target != null)
             {
-                Applet a = zavai.registry.geta(_target);
-                a.label_changed -= on_label_changed;
+                _target.label_changed -= on_label_changed;
             }
             bool was_shown = _target != null;
             _target = value;
             if (_target != null)
             {
-                Applet a = zavai.registry.geta(_target);
-                set_label(a.label);
-                a.label_changed += on_label_changed;
+                set_label(_target.label);
+                _target.label_changed += on_label_changed;
                 if (!was_shown) show();
             } else {
                 if (was_shown) hide();
@@ -312,10 +302,10 @@ public abstract class AppletLink : BigButton
 
     private abstract void on_clicked(Gtk.Button src);
 
-    public AppletLink(string? name = null)
+    public AppletLink(Applet? applet = null)
     {
         _target = null;
-        target = name;
+        target = applet;
 
         clicked += on_clicked;
     }
@@ -335,9 +325,9 @@ public class AppletStraightLink : AppletLink
             zavai.app.show_applet(_target);
     }
 
-    public AppletStraightLink(string? name = null)
+    public AppletStraightLink(Applet? applet = null)
     {
-        base(name);
+        base(applet);
     }
 }
 
@@ -350,31 +340,30 @@ public class AppletPushLink : AppletLink
             zavai.app.push_applet(_target);
     }
 
-    public AppletPushLink(string? name = null)
+    public AppletPushLink(Applet? applet = null)
     {
-        base(name);
+        base(applet);
     }
 }
 
 public class ServiceRequestLink : Gtk.ToggleButton
 {
-    protected string service_name;
+    protected Service service;
     protected string label_start;
     protected string label_stop;
 
     private void on_toggled(Gtk.Button src)
     {
-        Service s = zavai.registry.gets(service_name);
         if (get_active())
-            s.request("servicerequestlink");
+            service.request("servicerequestlink");
         else
-            s.release("servicerequestlink");
+            service.release("servicerequestlink");
         set_label(get_active() ? label_stop : label_start);
     }
 
-    public ServiceRequestLink(string service_name, string label_start, string label_stop)
+    public ServiceRequestLink(Service service, string label_start, string label_stop)
     {
-        this.service_name = service_name;
+        this.service = service;
         this.label_start = label_start;
         this.label_stop = label_stop;
         set_size_request(0, zavai.config.min_button_height);
@@ -408,5 +397,29 @@ public class StatusIcon : Gtk.Button
 
 
 public zavai.Zavai app;
+public zavai.Menu menu_main;
+public zavai.Menu menu_gps;
+public zavai.Menu menu_gsm;
+public zavai.Menu menu_misc;
+
+namespace main {
+
+public void init()
+{
+    zavai.app = new zavai.Zavai();
+    menu_main = new zavai.Menu("Main menu");
+
+    // Create menus
+    menu_gps = new zavai.Menu("GPS");
+    menu_main.add_applet(menu_gps);
+
+    menu_gsm = new zavai.Menu("GSM");
+    menu_main.add_applet(menu_gsm);
+
+    menu_misc = new zavai.Menu("Misc");
+    menu_main.add_applet(menu_misc);
+}
+
+}
 
 }
index 6dae536efc5058865d55b69f6901de3dccbaa3a7..bc87f3fa42878ac0a4bfc79989d39392a66c0040 100644 (file)
@@ -48,8 +48,7 @@ Calendar calendar;
 public void init()
 {
     calendar = new Calendar();
-    zavai.registry.register_applet("ui.calendar", calendar);
-    zavai.registry.getmenu("menu.misc").add_applet("ui.calendar");
+    zavai.menu_misc.add_applet(calendar);
 }
 
 }
index e00b48dc9bf433125ff8d83b4745af1991513996..221e2c9b7daa4d9a852af13fdcc2d7b8444d1a42 100644 (file)
@@ -78,6 +78,8 @@ class Quitter(gtk.Action):
         self.connect("activate", gtk.main_quit)
 */
 
+public zavai.Menu menu_debug;
+
 public void init()
 {
     //label_on = "Stop useless service";
@@ -86,23 +88,23 @@ public void init()
     var useless = new Useless();
     var quitter = new Quitter();
     var useless_service = new UselessService();
-    zavai.registry.register_applet("app.debug.useless", useless);
-    zavai.registry.register_service(useless_service);
-    zavai.registry.register_applet("app.debug.quit", quitter);
+    zavai.registry.register(useless);
+    zavai.registry.register(useless_service);
+    zavai.registry.register(quitter);
 
     // Menus
-    var menu_debug = new zavai.Menu("Debug");
-    menu_debug.add_applet("app.debug.useless");
-    menu_debug.add_service_toggle("app.debug.useless_service", "Start useless service", "Stop useless service");
+    menu_debug = new zavai.Menu("Debug");
+    menu_debug.add_applet(useless);
+    menu_debug.add_service_toggle(useless_service, "Start useless service", "Stop useless service");
 
     var power_menu_service = new PowerMenuService();
-    zavai.registry.register_service(power_menu_service);
-    menu_debug.add_service_toggle("app.debug.power_menu_service", "Toggle power menu", "Toggle power menu");
+    zavai.registry.register(power_menu_service);
+    menu_debug.add_service_toggle(power_menu_service, "Toggle power menu", "Toggle power menu");
 
-    menu_debug.add_applet("app.debug.quit");
+    menu_debug.add_applet(quitter);
 
-    zavai.registry.register_menu("menu.debug", menu_debug);
-    zavai.registry.getmenu("menu.main").add_applet("menu.debug");
+    zavai.registry.register(menu_debug);
+    zavai.menu_main.add_applet(menu_debug);
 }
 
 
index aac99d770fb87a878d90cae2b0be7c219fc45d71..7ad705b606c5af52e1ac2fd0d4bca3879687881b 100644 (file)
@@ -95,7 +95,6 @@ class GPXAudioTracer(gtk.ToggleAction):
 
 public class GPSRequestLink : Gtk.ToggleButton
 {
-    protected string service_name;
     protected string label_start;
     protected string label_stop;
     protected zavai.StatusIcon status_icon;
@@ -103,7 +102,6 @@ public class GPSRequestLink : Gtk.ToggleButton
 
     public GPSRequestLink()
     {
-        service_name = "gps";
         label_start = "Keep GPS on";
         label_stop = "Stop keeping GPS on";
         set_size_request(0, zavai.config.min_button_height);
@@ -145,11 +143,10 @@ public class GPSRequestLink : Gtk.ToggleButton
 
     private void on_toggled(Gtk.Button src)
     {
-        Service s = zavai.registry.gets(service_name);
         if (get_active())
-            s.request("servicerequestlink");
+            zavai.gps.gps.request("servicerequestlink");
         else
-            s.release("servicerequestlink");
+            zavai.gps.gps.release("servicerequestlink");
         set_label(get_active() ? label_stop : label_start);
         update_icon();
     }
@@ -194,12 +191,11 @@ public void init()
     var menu_gpsrequest = new GPSRequestLink();
 
     // Menus
-    var menu_gps = zavai.registry.getmenu("menu.gps");
-    menu_gps.add_service_toggle("gps.gpx", "Start GPX trace", "Stop GPX trace");
-    //menu_gps.add_applet("ui.gps.monitor");
-    menu_gps.add_widget(menu_waypoint);
-    menu_gps.add_widget(menu_gpsrequest);
-    menu_gps.add_widget(new GPSStuck());
+    zavai.menu_gps.add_service_toggle(zavai.gps.gpx, "Start GPX trace", "Stop GPX trace");
+    //zavai.menu_gps.add_applet("ui.gps.monitor");
+    zavai.menu_gps.add_widget(menu_waypoint);
+    zavai.menu_gps.add_widget(menu_gpsrequest);
+    zavai.menu_gps.add_widget(new GPSStuck());
 }
 
 }
index c8b88fac83e11f1d6d8e65807dd1e9e1ef6b183c..ae7562ed32bb87c4855fcf397ea5b32181d44dc9 100644 (file)
@@ -27,8 +27,7 @@ namespace gsm {
 public void init()
 {
     // Menus
-    var menu_gsm = zavai.registry.getmenu("menu.gsm");
-    menu_gsm.add_service_toggle("gsm.gprs", "Start GPRS", "Stop GPRS");
+    zavai.menu_gsm.add_service_toggle(zavai.gsm.gprs, "Start GPRS", "Stop GPRS");
 }
 
 }
index 467c1f631314e61bce3ebc58eab5459251c6251a..7d38b7887de5ac0fee82b2301dbdbc865f655cf5 100644 (file)
@@ -153,9 +153,7 @@ KeyboardIcon icon;
 
 public void init()
 {
-stderr.printf("INIT KBD\n");
     keyboard = new Keyboard();
-    zavai.registry.register_service(keyboard);
     icon = new KeyboardIcon();
     icon.set_visible(true);
 }
index d8265f1911fbb750e8d46816d621158029e9220c..3b995ae4665a5c4aebe9e6fa1e6bb5f19391e283 100644 (file)
@@ -75,7 +75,7 @@ public class Clock : Gtk.VBox
 
     private void on_date_clicked(Gtk.Button b)
     {
-        zavai.app.push_applet("ui.calendar");
+        zavai.app.push_applet(zavai.ui.calendar.calendar);
     }
 
     private void on_schedule_changed(zavai.clock.Alarm? next)
@@ -137,7 +137,7 @@ public class Status : Applet
         _label = label;
         status_icons = new Gtk.HBox(false, 0);
         clock = new Clock();
-        menu = new AppletPushLink("menu.main");
+        menu = new AppletPushLink(zavai.menu_main);
 
         pack_start(status_icons, false, false, 0);
         pack_start(clock, false, false, 0);
@@ -401,28 +401,23 @@ public class AddDailyDeadline : Applet
 }
 */
 
-Status status;
-AddAbsoluteDeadline aad;
-AddRelativeDeadline ard;
+public Status status;
+public AddAbsoluteDeadline aad;
+public AddRelativeDeadline ard;
 //AddDailyDeadline add;
 
 public void init()
 {
     status = new Status("Zavai");
-    zavai.registry.register_applet("zavai.status", status);
-
     aad = new AddAbsoluteDeadline();
-    zavai.registry.register_applet("clock.addabsolute", aad);
     ard = new AddRelativeDeadline();
-    zavai.registry.register_applet("clock.addrelative", ard);
     /*
     add = new AddDailyDeadline();
     zavai.registry.register_applet("clock.adddaily", add);
     */
 
-    var menu_misc = zavai.registry.getmenu("menu.misc");
-    menu_misc.add_applet("clock.addabsolute");
-    menu_misc.add_applet("clock.addrelative");
+    zavai.menu_misc.add_applet(aad);
+    zavai.menu_misc.add_applet(ard);
     //menu_misc.add_applet("clock.adddaily");
 }
 
index c4af85c27de5b411146d15783311092198edea80..74415d221a04262e264a386fc9f4f8bcf013ff68 100644 (file)
@@ -74,6 +74,7 @@ public class Power : zavai.Resource, Object
 
                power_short_press += on_power_short_press;
                power_long_press += on_power_long_press;
+        zavai.registry.register(this);
        }
 
        public void shutdown()
@@ -544,11 +545,12 @@ public class PowerMenu : zavai.Resource, Gtk.Window
                act_reboot = new RebootButton();
                vbox.pack_start(act_reboot, false, false, 0);
 
-               act_backlight_on = new ServiceRequestLink("backlight", "Keep backlight on", "Let backlight fade");
+               act_backlight_on = new ServiceRequestLink(backlight, "Keep backlight on", "Let backlight fade");
                act_backlight_on.toggled += (src) => { this.hide_menu(); };
                vbox.pack_start(act_backlight_on, false, false, 0);
 
                //vbox.show_all();
+        zavai.registry.register(this);
        }
 
        public void toggle()
@@ -605,7 +607,6 @@ public void init()
 {
        power = new Power();
        backlight = new Backlight();
-       zavai.registry.register_service(backlight);
        brightness = new BrightnessAdjustment();
        
        try {
@@ -626,7 +627,6 @@ public void init()
                }
 
                power_menu = new PowerMenu();
-               zavai.registry.register_resource("powermenu", power_menu);
        } catch (Error e) {
                stderr.printf("Creating power menu: %s\n", e.message);
                power_menu = null;
index 217f5901cd7b683cd9fd36aabd244e0753351b79..e3c3bcb89ccd380c198a03e4eefef4a6c0320166 100644 (file)
@@ -133,7 +133,7 @@ public class WindowList : Applet
         selector = new Wnck.Tasklist(Wnck.Screen.get_default());
         pack_start(selector, true, true, 0);
 
-        launcher_link = new AppletPushLink("wm.launcher");
+        launcher_link = new AppletPushLink(zavai.ui.wm.launcher);
         button_box.pack_start(launcher_link, true, true, 0);
     }
 }
@@ -280,7 +280,7 @@ public class AppShortcut : Object
 
     public void on_icon_clicked()
     {
-        zavai.app.push_applet("wm.list");
+        zavai.app.push_applet(zavai.ui.wm.window_list);
     }
 }
 
@@ -302,15 +302,13 @@ public void init()
 
     try {
         launcher = new Launcher("Run program");
-        zavai.registry.register_applet("wm.launcher", launcher);
     } catch (Error e) {
         stderr.printf("Error creating app launcher: %s\n", e.message);
         launcher = null;
     }
 
     window_list = new WindowList("Apps");
-    zavai.registry.register_applet("wm.list", window_list);
-    zavai.registry.getmenu("menu.main").add_applet("wm.list");
+    zavai.menu_main.add_applet(window_list);
 
     //zavai.registry.getmenu("menu.main").add_applet("wm.launcher");
 }
index e1c32cadbf8ad91883c3789fbdb2d3a980daec40..6686fa2a862eecb64eb65740d1e83ad4381605e4 100644 (file)
@@ -60,8 +60,6 @@ public Audio audio = null;
 public void init()
 {
     audio = new Audio();
-
-       zavai.registry.register_service(audio);
 }
 
 }
index d470432d99a001835f42a114e8e3c0bda7754f93..d4d390860880fe8ca16beb48b8d0f76b0af19bbe 100644 (file)
@@ -281,8 +281,6 @@ public Clock clock = null;
 public void init()
 {
     clock = new Clock();
-
-    zavai.registry.register_service(clock);
 }
 
 }
index c2b3cd936d24b2bc83664f12f938a2f64bc37ba8..7881d04d1478df0d4b665b47365723acfb78ec4d 100644 (file)
@@ -50,8 +50,10 @@ public abstract class Service : Object, Resource {
 
     protected HashMap<string, int> requests;
 
-    construct {
+    construct
+    {
         requests = new HashMap<string, int>(str_hash, str_equal);
+        zavai.registry.register(this);
     }
 
     public void shutdown()
index 0336cb3e3d3a54bfbdd20f2b9abf44a9fbb6b8b0..434f7f269a14c7fda7fd29147f456795c79b03bc 100644 (file)
@@ -399,10 +399,6 @@ public void init()
        gps = new GPS();
        position = new Position();
        gpx = new GPX();
-
-       zavai.registry.register_service(gps);
-       zavai.registry.register_service(position);
-       zavai.registry.register_service(gpx);
 }
 
 }
index 05e2a47222f31e16426b0a394981cc7fbe562308..561216b6ee93ca0779552e2d02e9df6a6d0c4eec 100644 (file)
@@ -121,9 +121,6 @@ public void init()
 {
     gsm = new GSM();
     gprs = new GPRS();
-
-    zavai.registry.register_service(gsm);
-    zavai.registry.register_service(gprs);
 }
 
 }
index e551e468331e3a53c9c00430d99162222d9c6ef6..3bdd61b343b66f1cf11155e54d6064c3bf6cc2f5 100644 (file)
@@ -298,8 +298,6 @@ public PowerButton power_button = null;
 public void init()
 {
     power_button = new PowerButton();
-
-    zavai.registry.register_service(power_button);
 }
 
 }
index a95e16045a60647b9c2f9398be90affdd7f5bcd1..3d549da1d0ec0f6ad484a2ec760549c2c9054f06 100644 (file)
  */
 
 using GLib;
-using Gee;
 
 namespace zavai {
 
 public class Registry : Object, Resource
 {
-    HashMap<string, Resource> memb_resources;
-    HashMap<string, Service> memb_services;
-    HashMap<string, Applet> memb_applets;
-    HashMap<string, Menu> memb_menus;
-    protected ArrayList<Resource> registration_order;
+    List<Resource> resources;
     public DBus.Connection sbus;
     public string bus_name;
 
     public Registry()
     {
-        memb_resources = new HashMap<string, Resource>(str_hash, str_equal);
-        memb_services = new HashMap<string, Service>(str_hash, str_equal);
-        memb_applets = new HashMap<string, Applet>(str_hash, str_equal);
-        memb_menus = new HashMap<string, Menu>(str_hash, str_equal);
-        registration_order = new ArrayList<Resource>();
+        resources = new List<Resource>();
         try {
             sbus = DBus.Bus.get(DBus.BusType.SYSTEM);
         } catch (DBus.Error e) {
@@ -76,77 +67,13 @@ public class Registry : Object, Resource
     public void shutdown()
     {
         // Shutdown in reverse registration order
-        for (int i = registration_order.size - 1; i >= 0; --i) 
-            registration_order[i].shutdown();
+        for (weak List<Resource> i = resources; i != null; i = i.next)
+            i.data.shutdown();
     }
 
-    public void register_resource(string name, Resource obj)
+    public void register(Resource obj)
     {
-        memb_resources[name] = obj;
-        registration_order.add(obj);
-    }
-
-    public void register_service(Service obj)
-    {
-        memb_services[obj.name] = obj;
-        registration_order.add(obj);
-    }
-
-    public void register_applet(string name, Applet obj)
-    {
-        memb_applets[name] = obj;
-        registration_order.add(obj);
-    }
-
-    public void register_menu(string name, Menu obj)
-    {
-        memb_applets[name] = obj;
-        memb_menus[name] = obj;
-        registration_order.add(obj);
-    }
-
-    public Resource? getr(string name)
-    {
-        if (name in memb_resources)
-            return memb_resources[name];
-        else
-        {
-            log.error("getr: no resource found: " + name);
-            return null;
-        }
-    }
-
-    public Service? gets(string name)
-    {
-        if (name in memb_services)
-            return memb_services[name];
-        else
-        {
-            log.error("gets: no service found: " + name);
-            return null;
-        }
-    }
-
-    public Applet? geta(string name)
-    {
-        if (name in memb_applets)
-            return memb_applets[name];
-        else
-        {
-            log.error("geta: no applet found: " + name);
-            return null;
-        }
-    }
-
-    public Menu? getmenu(string name)
-    {
-        if (name in memb_menus)
-            return memb_menus[name];
-        else
-        {
-            log.error("getmenu: no menu found: " + name);
-            return null;
-        }
+        resources.prepend(obj);
     }
 }
 
index 4ab0327a58e9a0946f08ee2939b8754fc7421d9b..1ff6443ae0c0ef8127756bd44e670e82f114b56f 100644 (file)
@@ -90,14 +90,19 @@ static int main (string[] args) {
        zavai.config.argv0 = args[0];
        zavai.registry = new zavai.Registry();
 
-       zavai.app = new zavai.Zavai();
-       zavai.registry.register_resource("zavai", zavai.app);
+stderr.printf("MI 1\n");
+    zavai.main.init();
 
     // Additional infrastructure
+stderr.printf("MI 2\n");
        zavai.input.init();
+stderr.printf("MI 3\n");
        zavai.gps.init();
+stderr.printf("MI 4\n");
        zavai.gsm.init();
+stderr.printf("MI 5\n");
        zavai.audio.init();
+stderr.printf("MI 6\n");
        zavai.clock.init();
 
        /*
@@ -107,34 +112,28 @@ static int main (string[] args) {
        zavai.clock.clock.check_alarms();
        */
 
-       // Create menus
-       zavai.registry.register_menu("menu.main", new zavai.Menu("Main menu"));
-
-       var menu_gps = new zavai.Menu("GPS");
-       zavai.registry.register_menu("menu.gps", menu_gps);
-       zavai.registry.getmenu("menu.main").add_applet("menu.gps");
-
-       var menu_gsm = new zavai.Menu("GSM");
-       zavai.registry.register_menu("menu.gsm", menu_gsm);
-       zavai.registry.getmenu("menu.main").add_applet("menu.gsm");
-
-       var menu_misc = new zavai.Menu("Misc");
-       zavai.registry.register_menu("menu.misc", menu_misc);
-       zavai.registry.getmenu("menu.main").add_applet("menu.misc");
-
        // User interface
+stderr.printf("MI 7\n");
        zavai.ui.main.init();
+stderr.printf("MI 8\n");
        zavai.ui.gps.init();
+stderr.printf("MI 9\n");
        zavai.ui.gsm.init();
+stderr.printf("MI 10\n");
        zavai.app.run_script(zavai.config.homedir + "/display init");
+stderr.printf("MI 11\n");
        zavai.ui.power.init();
+stderr.printf("MI 12\n");
        zavai.ui.kbd.init();
+stderr.printf("MI 13\n");
        zavai.ui.wm.init();
+stderr.printf("MI 14\n");
        zavai.ui.calendar.init();
+stderr.printf("MI 15\n");
        zavai.ui.debug.init();
 
        //zavai.app.show_applet("menu.main");
-       zavai.app.show_applet("zavai.status");
+       zavai.app.show_applet(zavai.ui.main.status);
 
 /*
        zavai.clock.clock.schedule(new zavai.clock.Alarm(time_t() + 10, "Test second"));