[hamster-applet] with apologies to translators, this should be last of the shuffle. hamster-client -> hamster-cli; ha



commit 76b570a37cd4048fc7d1eaadd9d684a5e36c2cae
Author: Toms Bauģis <toms baugis gmail com>
Date:   Mon Jul 19 13:45:02 2010 +0100

    with apologies to translators, this should be last of the shuffle. hamster-client -> hamster-cli; hamster-standalone->hamster-time-tracker. Dropped all the window calls from cli and added those to the time-tracker.

 data/hamster-applet.schemas.in                     |    2 +-
 data/hamster-standalone.desktop.in.in              |    9 --
 ...op.in.in => hamster-time-tracker.desktop.in.in} |    3 +-
 data/wscript_build                                 |   16 +--
 po/POTFILES.in                                     |    4 +-
 po/POTFILES.skip                                   |    2 +-
 src/docky_control/hamster_control.py               |    4 +-
 src/{hamster-client => hamster-cli}                |   22 +---
 src/{hamster-standalone => hamster-time-tracker}   |  134 +++++++++++++-------
 wscript                                            |    6 +-
 10 files changed, 100 insertions(+), 102 deletions(-)
---
diff --git a/data/hamster-applet.schemas.in b/data/hamster-applet.schemas.in
index ab0501f..bbf5ddd 100644
--- a/data/hamster-applet.schemas.in
+++ b/data/hamster-applet.schemas.in
@@ -122,7 +122,7 @@
             <applyto>/desktop/gnome/keybindings/hamster-applet/action</applyto>
             <owner>hamster-applet</owner>
             <type>string</type>
-            <default>hamster-client toggle</default>
+            <default>hamster-time-tracker toggle</default>
             <locale name="C">
                 <short>Toggle hamster application window action</short>
                 <long>Command for toggling visibility of the hamster application window.</long>
diff --git a/data/hamster-client.desktop.in.in b/data/hamster-time-tracker.desktop.in.in
similarity index 76%
rename from data/hamster-client.desktop.in.in
rename to data/hamster-time-tracker.desktop.in.in
index 0c94f43..18e4673 100644
--- a/data/hamster-client.desktop.in.in
+++ b/data/hamster-time-tracker.desktop.in.in
@@ -5,6 +5,5 @@ Terminal=false
 _Name=Time Tracker
 _Comment=Project Hamster - track your time
 Icon=hamster-applet
-Exec= BINDIR@/hamster-client overview
+Exec= BINDIR@/hamster-time-tracker
 Categories=GNOME;GTK;Utility;
-NoDisplay=true
diff --git a/data/wscript_build b/data/wscript_build
index dc46542..cb94aa0 100644
--- a/data/wscript_build
+++ b/data/wscript_build
@@ -1,6 +1,5 @@
 #! /usr/bin/env python
 # encoding: utf-8
-# Thomas Nagy, 2006-2009 (ita)
 
 bld.install_files('${DATADIR}/hamster-applet', '*.ui')
 bld.install_files('${DATADIR}/hamster-applet', 'hamster.db Hamster_Applet.xml')
@@ -15,20 +14,14 @@ bld.install_files('${DATADIR}/icons/hicolor/scalable/apps','art/scalable/hamster
 
 
 bld(features = "subst",
-    source= "hamster-standalone.desktop.in.in",
-    target= "hamster-standalone.desktop.in",
-    dict = bld.env
-   )
-
-bld(features = "subst",
     source= "hamster-applet.desktop.in.in",
     target= "hamster-applet.desktop.in",
     dict = bld.env
    )
 
 bld(features = "subst",
-    source= "hamster-client.desktop.in.in",
-    target= "hamster-client.desktop.in",
+    source= "hamster-time-tracker.desktop.in.in",
+    target= "hamster-time-tracker.desktop.in",
     dict = bld.env
    )
 
@@ -48,9 +41,8 @@ bld(features = 'intltool_in',
     flags    = ['-s', '-u', '-c'])
 
 bld(features = 'intltool_in',
-    source   = """hamster-standalone.desktop.in
-                  hamster-applet.desktop.in
-                  hamster-client.desktop.in""",
+    source   = """hamster-time-tracker.desktop.in
+                  hamster-applet.desktop.in""",
     install_path = '${DATADIR}/applications',
     podir    = '../po',
     flags    = ['-d', '-q', '-u', '-c'])
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 08f7315..dbbe16b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -5,7 +5,7 @@ data/hamster-applet.schemas.in
 data/Hamster_Applet.server.in.in
 data/Hamster_Applet.xml
 data/hamster-applet.desktop.in.in
-data/hamster-standalone.desktop.in.in
+data/hamster-time-tracker.desktop.in.in
 [type: gettext/glade]data/applet.ui
 [type: gettext/glade]data/edit_activity.ui
 [type: gettext/glade]data/hamster.ui
@@ -24,7 +24,7 @@ src/hamster/overview.py
 src/hamster/overview_totals.py
 src/hamster/preferences.py
 src/hamster/reports.py
-src/hamster-standalone
+src/hamster-time-tracker
 src/hamster/stats.py
 src/hamster/stuff.py
 src/hamster/widgets/reportchooserdialog.py
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index a241d2c..6cfe034 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,3 +1,3 @@
 data/Hamster_Applet.server.in
-data/hamster-standalone.desktop.in
+data/hamster-time-tracker.desktop.in
 build/
diff --git a/src/docky_control/hamster_control.py b/src/docky_control/hamster_control.py
index 0690601..7531047 100755
--- a/src/docky_control/hamster_control.py
+++ b/src/docky_control/hamster_control.py
@@ -77,9 +77,9 @@ class DockyHamsterItem(DockyItem):
 
     def menu_pressed(self, menu_id):
         if self.id_map[menu_id] == _("Overview"):
-            Popen(["hamster-client", "overview", "&"])
+            Popen(["hamster-time-tracker", "overview"])
         elif self.id_map[menu_id] == _("Preferences"):
-            Popen(["hamster-client", "preferences", "&"])
+            Popen(["hamster-time-tracker", "preferences"])
 
         self.add_actions() # TODO - figure out why is it that we have to regen all menu items after each click
 
diff --git a/src/hamster-client b/src/hamster-cli
similarity index 94%
rename from src/hamster-client
rename to src/hamster-cli
index 955e3d3..5142a1c 100755
--- a/src/hamster-client
+++ b/src/hamster-cli
@@ -243,7 +243,7 @@ Time formats:
 """)
 
 
-    # CLI Structure: ./hamster-client.py <start|stop|list|...> <conditional_args>
+    # CLI Structure: ./hamster-cli.py <start|stop|list|...> <conditional_args>
 
     if len(sys.argv) < 2:
         sys.exit(usage % {'prog': sys.argv[0]})
@@ -287,26 +287,6 @@ Time formats:
         elif command == 'list-categories':
             hamster_client.list_categories()
 
-    elif command in ("overview", "statistics", "edit", "preferences"): # windows
-        import gtk
-        from hamster import i18n
-        i18n.setup_i18n()
-
-        gtk.window_set_default_icon_name("hamster-applet")
-        from hamster.configuration import dialogs
-
-
-        if command == "overview":
-            dialogs.overview.show()
-        elif command == "statistics":
-            dialogs.stats.show()
-        elif command == "edit":
-            dialogs.edit.show()
-        elif command == "preferences":
-            dialogs.prefs.show()
-
-        gtk.main()
-
     else:
         # unknown command - print usage, go home
         sys.exit(usage % {'prog': sys.argv[0]})
diff --git a/src/hamster-standalone b/src/hamster-time-tracker
similarity index 87%
rename from src/hamster-standalone
rename to src/hamster-time-tracker
index ad754bf..0c8a4c5 100755
--- a/src/hamster-standalone
+++ b/src/hamster-time-tracker
@@ -18,53 +18,15 @@
 
 # You should have received a copy of the GNU General Public License
 # along with Project Hamster.  If not, see <http://www.gnu.org/licenses/>.
-
+import sys
 import logging
 import datetime as dt
-import os.path
-
-import gtk
 
-import gobject
+import gtk, gobject
 import dbus, dbus.service, dbus.mainloop.glib
 
-from hamster.configuration import conf, runtime, dialogs
-
-from hamster import stuff
-
-# controllers for other windows
-from hamster import widgets
-from hamster import idle
-
-try:
-    import wnck
-except:
-    logging.warning("Could not import wnck - workspace tracking will be disabled")
-    wnck = None
-
-try:
-    import pynotify
-    pynotify.init('Hamster Applet')
-except:
-    logging.warning("Could not import pynotify - notifications will be disabled")
-    pynotify = None
-
-import dbus, dbus.service, sys
-
-class ProjectHamster(dbus.service.Object):
-    __dbus_object_path__ = "/org/gnome/Hamster/Standalone"
-
-    def __init__(self):
-        # maintain just one instance. this code feels hackish
-        self.bus = dbus.SessionBus()
-        if "org.gnome.Hamster.Standalone" not in dbus.SessionBus().list_names():
-            bus_name = dbus.service.BusName("org.gnome.Hamster.Standalone", bus=self.bus)
-            dbus.service.Object.__init__(self, bus_name, self.__dbus_object_path__)
-        else:
-            overview = self.bus.get_object("org.gnome.Hamster.Standalone", self.__dbus_object_path__)
-            overview.show()
-            sys.exit(0)
-
+class ProjectHamster(object):
+    def __init__(self, window_name = None):
         # load window of activity switcher and todays view
         self._gui = stuff.load_ui_file("hamster.ui")
         self.window = self._gui.get_object('hamster-window')
@@ -305,19 +267,14 @@ class ProjectHamster(dbus.service.Object):
     """button events"""
     def on_menu_add_earlier_activate(self, menu):
         dialogs.edit.show(self.window)
-
     def on_menu_overview_activate(self, menu_item):
         dialogs.overview.show(self.window)
-
     def on_menu_about_activate(self, component):
         dialogs.about.show(self.window)
-
     def on_menu_statistics_activate(self, component):
         dialogs.stats.show(self.window)
-
     def on_menu_preferences_activate(self, menu_item):
         dialogs.prefs.show(self.window)
-
     def on_menu_help_contents_activate(self, *args):
         gtk.show_uri(gtk.gdk.Screen(), "ghelp:hamster-applet", 0L)
 
@@ -456,7 +413,6 @@ class ProjectHamster(dbus.service.Object):
     def on_window_configure_event(self, window, event):
         self.treeview.fix_row_heights()
 
-    @dbus.service.method("org.gnome.Hamster.Standalone")
     def show(self):
         self.window.show_all()
         self.window.present()
@@ -481,10 +437,90 @@ class ProjectHamster(dbus.service.Object):
 
         gtk.main_quit()
 
+
+
+# maintain just one instance. this code feels hackish
+class WindowServer(dbus.service.Object):
+    __dbus_object_path__ = "/org/gnome/Hamster/WindowServer"
+
+    def __init__(self):
+        self.app = None
+        self.bus = dbus.SessionBus()
+        bus_name = dbus.service.BusName("org.gnome.Hamster.WindowServer", bus=self.bus)
+        dbus.service.Object.__init__(self, bus_name, self.__dbus_object_path__)
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def main(self):
+        if self.app:
+            self.app.window.show()
+            self.app.window.present()
+        else:
+            self.app = ProjectHamster()
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def edit(self): dialogs.edit.show()
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def overview(self): dialogs.overview.show()
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def about(self): dialogs.about.show()
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def statistics(self): dialogs.stats.show()
+
+    @dbus.service.method("org.gnome.Hamster.WindowServer")
+    def preferences(self): dialogs.prefs.show()
+
+
 if __name__ == "__main__":
     from hamster import i18n
     i18n.setup_i18n()
 
+    # determine the window we will be launching
+    window = None
+    if len(sys.argv) == 1:
+        window = "main"
+    elif len(sys.argv) == 2 and sys.argv[1] in ("overview", "statistics", "edit", "preferences", "about"):
+        window = sys.argv[1]
+    else:
+        usage = _(
+"""Hamster time tracker. Usage:
+  %(prog)s [overview|statistics|edit|preferences|about]
+""")
+        sys.exit(usage % {'prog': sys.argv[0]})
+
+
+
+    from hamster.configuration import runtime, dialogs, conf
+
+    # if there is windowserver hanging in dbus - call that and exit
+    bus = dbus.SessionBus()
+    if "org.gnome.Hamster.WindowServer" in dbus.SessionBus().list_names():
+        server = bus.get_object("org.gnome.Hamster.WindowServer", WindowServer.__dbus_object_path__)
+        getattr(server, window)()
+        sys.exit(0)
+
+
+    # otherwise proceed and do all the import and everything
     gtk.gdk.threads_init()
-    app = ProjectHamster()
+    gtk.window_set_default_icon_name("hamster-applet")
+
+    from hamster import stuff, widgets, idle
+
+    try:
+        import wnck
+    except:
+        logging.warning("Could not import wnck - workspace tracking will be disabled")
+        wnck = None
+
+    try:
+        import pynotify
+        pynotify.init('Hamster Applet')
+    except:
+        logging.warning("Could not import pynotify - notifications will be disabled")
+        pynotify = None
+
+
+    getattr(WindowServer(), window)()
     gtk.main()
diff --git a/wscript b/wscript
index d3589ab..bcb0bc7 100644
--- a/wscript
+++ b/wscript
@@ -45,11 +45,11 @@ def set_options(opt):
 def build(bld):
     bld.install_files('${LIBDIR}/hamster-applet', 'src/hamster-applet', chmod = 0755)
     bld.install_files('${BINDIR}',
-                      """src/hamster-standalone
-                         src/hamster-client
+                      """src/hamster-time-tracker
+                         src/hamster-cli
                          src/hamster-service""",
                       chmod = 0755)
-    bld.symlink_as('${BINDIR}/gnome-time-tracker', 'hamster-standalone')
+    bld.symlink_as('${BINDIR}/gnome-time-tracker', 'hamster-time-tracker')
 
 
     # set correct flags in defs.py



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