[hamster-applet] docky 2.1 support



commit 078c408fabb3f39466bebafebff44c704d2597cd
Author: Toms Bauģis <toms baugis gmail com>
Date:   Wed Aug 4 17:47:04 2010 +0100

    docky 2.1 support

 src/docky_control/{ => 2.0}/hamster_control.py     |    0
 .../{ => 2.0}/hamster_control.py.info              |    0
 src/docky_control/{ => 2.1}/hamster_control.py     |   44 +++++++++-----------
 src/docky_control/2.1/hamster_control.py.info      |    4 ++
 wscript                                            |   11 ++++-
 5 files changed, 33 insertions(+), 26 deletions(-)
---
diff --git a/src/docky_control/hamster_control.py b/src/docky_control/2.0/hamster_control.py
similarity index 100%
copy from src/docky_control/hamster_control.py
copy to src/docky_control/2.0/hamster_control.py
diff --git a/src/docky_control/hamster_control.py.info b/src/docky_control/2.0/hamster_control.py.info
similarity index 100%
rename from src/docky_control/hamster_control.py.info
rename to src/docky_control/2.0/hamster_control.py.info
diff --git a/src/docky_control/hamster_control.py b/src/docky_control/2.1/hamster_control.py
similarity index 70%
rename from src/docky_control/hamster_control.py
rename to src/docky_control/2.1/hamster_control.py
index 708e5a0..0f7a001 100755
--- a/src/docky_control/hamster_control.py
+++ b/src/docky_control/2.1/hamster_control.py
@@ -27,7 +27,7 @@ from subprocess import Popen
 
 
 import gtk
-from docky.docky import DockyItem, DockySink
+from dockmanager.dockmanager import DockManagerItem, DockManagerSink
 from signal import signal, SIGTERM
 from sys import exit
 
@@ -37,9 +37,9 @@ from hamster import i18n
 i18n.setup_i18n()
 
 
-class DockyHamsterItem(DockyItem):
-    def __init__(self, path):
-        DockyItem.__init__(self, path)
+class HamsterItem(DockManagerItem):
+    def __init__(self, sink, path):
+        DockManagerItem.__init__(self, sink, path)
 
         self.storage = client.Storage()
         self.storage.connect("facts-changed", lambda storage: self.refresh_hamster())
@@ -65,15 +65,11 @@ class DockyHamsterItem(DockyItem):
         if today and today[-1]['end_time'] is None:
             fact = today[-1]
 
-            self.iface.SetText("%(name)s - %(category)s" % fact)
-            self.iface.SetBadgeText(stuff.format_duration(fact['delta'], human=False))
+            self.set_tooltip("%(name)s - %(category)s" % fact)
+            self.set_badge(stuff.format_duration(fact['delta'], human=False))
         else:
-            self.iface.SetText(_("No activity"))
-            self.iface.ResetBadgeText()
-
-    def add_menu_item(self, name, icon):
-        menu_id = self.iface.AddMenuItem(name, icon, "")
-        self.id_map[menu_id] = name
+            self.set_tooltip(_("No activity"))
+            self.reset_badge()
 
     def menu_pressed(self, menu_id):
         if self.id_map[menu_id] == _("Overview"):
@@ -86,8 +82,8 @@ class DockyHamsterItem(DockyItem):
 
     def add_actions(self):
         # first clear the menu
-        for k, v in self.id_map.iteritems():
-            self.iface.RemoveItem(k)
+        for k in self.id_map.keys():
+            self.remove_menu_item(k)
 
         self.id_map = {}
         # now add buttons
@@ -95,21 +91,21 @@ class DockyHamsterItem(DockyItem):
         self.add_menu_item(_("Preferences"), "preferences-desktop-personal")
 
 
-class DockyHamsterSink(DockySink):
+class HamsterSink(DockManagerSink):
     def item_path_found(self, pathtoitem, item):
-        if item.GetOwnsDesktopFile() and item.GetDesktopFile().endswith("hamster-time-tracker.desktop"):
-            self.items[pathtoitem] = DockyHamsterItem(pathtoitem)
+        if item.Get("org.freedesktop.DockItem", "DesktopFile", dbus_interface="org.freedesktop.DBus.Properties").endswith ("hamster-time-tracker.desktop"):
+            self.items[pathtoitem] = HamsterItem(self, pathtoitem)
 
-dockysink = DockyHamsterSink()
+hamstersink = HamsterSink()
 
 def cleanup():
-    dockysink.dispose()
+	hamstersink.dispose()
 
 if __name__ == "__main__":
-    mainloop = gobject.MainLoop(is_running=True)
+	mainloop = gobject.MainLoop(is_running=True)
 
-    atexit.register (cleanup)
-    signal(SIGTERM, lambda signum, stack_frame: exit(1))
+	atexit.register (cleanup)
+	signal(SIGTERM, lambda signum, stack_frame: exit(1))
 
-    while mainloop.is_running():
-        mainloop.run()
+	while mainloop.is_running():
+		mainloop.run()
diff --git a/src/docky_control/2.1/hamster_control.py.info b/src/docky_control/2.1/hamster_control.py.info
new file mode 100644
index 0000000..b3e4dd2
--- /dev/null
+++ b/src/docky_control/2.1/hamster_control.py.info
@@ -0,0 +1,4 @@
+[DockmanagerHelper]
+Name=Hamster Controls
+Description=Status icon for the Project Hamster time tracker
+Icon=hamster-applet
diff --git a/wscript b/wscript
index 21bfcaa..5d2e45b 100644
--- a/wscript
+++ b/wscript
@@ -64,10 +64,17 @@ def build(bld):
     bld.install_files('${PYTHONDIR}/hamster/widgets', 'src/hamster/widgets/*.py')
 
     bld.install_files('${DATADIR}/docky/helpers',
-                      'src/docky_control/hamster_control.py',
+                      'src/docky_control/2.0/hamster_control.py',
                       chmod = 0755)
     bld.install_files('${DATADIR}/docky/helpers/metadata',
-                      'src/docky_control/hamster_control.py.info')
+                      'src/docky_control/2.0/hamster_control.py.info')
+
+    # docky 2.1+ changes python API, folder and other things (how amusing)
+    bld.install_files('${DATADIR}/dockmanager/scripts',
+                      'src/docky_control/2.1/hamster_control.py',
+                      chmod = 0755)
+    bld.install_files('${DATADIR}/dockmanager/metadata',
+                      'src/docky_control/2.1/hamster_control.py.info')
 
 
     bld.new_task_gen("subst",



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