Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS3
-rw-r--r--activity/activity.info2
-rw-r--r--powerd.py51
-rw-r--r--stopwatch.py5
4 files changed, 60 insertions, 1 deletions
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..08a3160
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,3 @@
+5
+
+*Adding new toolbar compatibility, stopbutton
diff --git a/activity/activity.info b/activity/activity.info
index 51827ac..89b30df 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -3,5 +3,5 @@ name = StopWatch
bundle_id = org.laptop.StopWatchActivity
class = activity.StopWatchActivity
icon = activity-stopwatch
-activity_version = 4
+activity_version = 5
show_launcher = yes
diff --git a/powerd.py b/powerd.py
new file mode 100644
index 0000000..88b4e84
--- /dev/null
+++ b/powerd.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2011 One Laptop per Child
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty ofwa
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+import os
+
+
+def marker():
+ """ filesystem path of per-process inhibit file """
+ return os.path.join('/var/run/powerd-inhibit-suspend', str(os.getpid()))
+
+
+class Suspend():
+ """ control of powerd idle suspend,
+ reference counted,
+ does nothing if powerd is not present """
+
+ def __init__(self):
+ self.references = 0
+
+ def inhibit(self):
+ """ inhibit suspend for this process """
+ if self.references == 0:
+ try:
+ file(marker(), 'w').write('')
+ except:
+ return
+ self.references += 1
+
+ def uninhibit(self):
+ """ uninhibit suspend for this process """
+ self.references -= 1
+ if self.references > 0:
+ return
+ try:
+ os.remove(marker())
+ except:
+ pass
+ self.references = 0
diff --git a/stopwatch.py b/stopwatch.py
index 4ae43dd..d24f0e3 100644
--- a/stopwatch.py
+++ b/stopwatch.py
@@ -26,6 +26,9 @@ import threading
import locale
import pango
from gettext import gettext
+import powerd
+
+suspend = powerd.Suspend()
class WatchModel():
STATE_PAUSED = 1
@@ -316,8 +319,10 @@ class OneWatchView():
self._logger.debug("run button pressed: " + str(t))
if self._run_button.get_active(): #button has _just_ been set active
action = WatchModel.RUN_EVENT
+ suspend.inhibit()
else:
action = WatchModel.PAUSE_EVENT
+ suspend.uninhibit()
self._watch_model.add_event_from_view((self._timer.get_offset() + t, action))
return True