[tracker] tracker-search-tool: Make single-instance.



commit 4777e0484dbdd7c4e934de8c70267e2b0b9d69a5
Author: Carlos Garnacho <carlos gnome org>
Date:   Fri Oct 23 14:57:35 2009 +0200

    tracker-search-tool: Make single-instance.

 src/tracker-search-tool/tracker-search-tool.gs |   50 +++++++++++++++++++-----
 1 files changed, 40 insertions(+), 10 deletions(-)
---
diff --git a/src/tracker-search-tool/tracker-search-tool.gs b/src/tracker-search-tool/tracker-search-tool.gs
index c7ec7b0..b2a59af 100644
--- a/src/tracker-search-tool/tracker-search-tool.gs
+++ b/src/tracker-search-tool/tracker-search-tool.gs
@@ -22,13 +22,47 @@
 uses
     Gtk
 
+window : Window
 
-init  
+[DBus (name = "org.freedesktop.Tracker1.SearchTool")]
+class TrackerSearchToolServer : GLib.Object
+    def Show ()
+        window.present ()
+
+init
     Gtk.init (ref args)
-    
+
+    var server = new TrackerSearchToolServer
+
+    try
+        bus : dynamic DBus.Object
+        result : uint
+
+        var conn = DBus.Bus.get (DBus.BusType.SESSION)
+
+        bus = conn.get_object ("org.freedesktop.DBus", \
+                               "/org/freedesktop/DBus", \
+                               "org.freedesktop.DBus")
+
+        result = bus.request_name ("org.freedesktop.Tracker1.SearchTool", (uint) 0)
+
+        if (result is DBus.RequestNameReply.PRIMARY_OWNER)
+            conn.register_object ("/org/freedesktop/Tracker1/SearchTool", server)
+        else
+            /* There's another instance, pop it up */
+            remote : dynamic DBus.Object
+            remote = conn.get_object ("org.freedesktop.Tracker1.SearchTool", \
+                                      "/org/freedesktop/Tracker1/SearchTool", \
+                                      "org.freedesktop.Tracker1.SearchTool")
+
+            remote.show ()
+            return
+    except e : DBus.Error
+        warning ("%s", e.message)
+
     var builder = new Builder ()
-        
-    try 
+
+    try
         builder.add_from_file (SRCDIR + "tst.ui")
         
     except e : GLib.Error 
@@ -45,7 +79,7 @@ init
             Gtk.main_quit()
     
               
-    var window = builder.get_object ("window") as Window
+    window = builder.get_object ("window") as Window
     window.destroy += Gtk.main_quit
         
     /* create tracker widgets */    
@@ -78,9 +112,5 @@ init
     detail_box.add (tile)
 
     window.show_all ()
-        
-    Gtk.main ()
-
-
-
 
+    Gtk.main ()



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]