Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/globals.py
diff options
context:
space:
mode:
authorAntoine van Gelder <antoine@g7.org.za>2007-10-28 09:45:28 (GMT)
committer Antoine van Gelder <antoine@g7.org.za>2007-10-28 09:45:28 (GMT)
commit800e3caabcd9c85b0b2ae9299217ea31d0309545 (patch)
tree130af075b9cbc72eba462c58166c771739ded092 /globals.py
parent49eb6ebd4760b4bfcf009f7e887a3ef9a547061d (diff)
Initial import
Diffstat (limited to 'globals.py')
-rw-r--r--globals.py118
1 files changed, 118 insertions, 0 deletions
diff --git a/globals.py b/globals.py
new file mode 100644
index 0000000..5cadaeb
--- /dev/null
+++ b/globals.py
@@ -0,0 +1,118 @@
+# 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 of
+# 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
+import logging
+from sugar.activity import activity
+try:
+ from hashlib import sha1
+except ImportError:
+ # Python < 2.5
+ from sha import new as sha1
+
+from persistence.jokemachinestate import JokeMachineState
+
+
+class __globals(object):
+ '''All applications have code that affects global state. These are the
+ globals for Jokemachine'''
+
+ def __init__(self):
+ self.__pwd = activity.get_bundle_path()
+ self.__logo = 'resources/GameLogoCharacter.png'
+ self.__activity_state = None
+ self.__activity = None
+
+ # owner
+ self.__owner = None
+ self.__owner_sha1 = None
+
+ self.__temporary_filenames = []
+
+
+ # convert all of these to @Property
+ def set_activity_instance(self, activity_instance):
+ logging.debug('setting actifity %r' % activity_instance)
+ self.__activity = activity_instance
+
+ # TODO -> Should we refresh the GUI for this one ?
+ def set_activity_state(self, activity_state):
+ self.__activity_state = activity_state
+
+ def set_owner(self, owner):
+ logging.debug('Owner is %s' % owner.props.nick)
+ self.__owner = owner
+ self.__owner_sha1 = sha1(owner.props.nick).hexdigest()
+
+ @property
+ def pwd(self):
+ return self.__pwd
+
+ @property
+ def tmpdir(self):
+ '''Temporary directory - currently this exists for the sole purpose of
+ having a place to dump sounds and images into so we don't have to keep
+ them in memory - don't know if this will still be valid under bitfrost,
+ don't know if sounds and images can be pulled directly out of the journal
+ when needing to be (dis)played'''
+ return '/tmp' #os.path.join(self.__pwd, 'tmp')
+
+ @property
+ def logo(self):
+ return os.path.join(self.pwd, self.__logo)
+
+ @property
+ def JokeMachineState(self):
+ if not self.__activity_state:
+ # Okay - When app is not run from Journal activity.read_file() is never
+ # called, which means we never call Globals.set_activity_state so we
+ # create a default state here:
+ logging.debug('Globals.JokeMachineState() - creating default data')
+ self.__activity_state = JokeMachineState().test_data() # TODO - implement JokeMachineState.new()
+ return self.__activity_state
+
+ @property
+ def JokeMachineActivity(self):
+ if not self.__activity:
+ # todo log this!!
+ logging.debug('no activity set! - use Globals.set_activity_instance to register activity with Global manager')
+ return None
+ return self.__activity
+
+ @property
+ def nickname(self):
+ return self.__owner.props.nick
+
+
+ # utility functions with global state
+
+ def temporary_filename(self):
+ # TODO - remember these and delete them all on app exit
+ file_name = os.tempnam(self.tmpdir)
+ self.__temporary_filenames.append(file_name)
+ return file_name
+
+
+ def shutdown(self):
+ for filename in self.__temporary_filenames:
+ if os.path.exists(filename):
+ logging.info(' deleting temporary file: %s' % filename)
+ os.remove(filename)
+
+
+Globals = __globals()
+
+ \ No newline at end of file