[hamster-applet] with apologies to translators, this should be last of the shuffle. hamster-client -> hamster-cli; ha
- From: Toms Baugis <tbaugis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [hamster-applet] with apologies to translators, this should be last of the shuffle. hamster-client -> hamster-cli; ha
- Date: Mon, 19 Jul 2010 12:45:28 +0000 (UTC)
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]