summaryrefslogtreecommitdiffstats
path: root/ui-macos/my.py
diff options
context:
space:
mode:
Diffstat (limited to 'ui-macos/my.py')
-rw-r--r--ui-macos/my.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/ui-macos/my.py b/ui-macos/my.py
new file mode 100644
index 0000000..cd701eb
--- /dev/null
+++ b/ui-macos/my.py
@@ -0,0 +1,62 @@
+import sys, os
+from AppKit import *
+import PyObjCTools.AppHelper
+
+
+def bundle_path(name, typ):
+ if typ:
+ return NSBundle.mainBundle().pathForResource_ofType_(name, typ)
+ else:
+ return os.path.join(NSBundle.mainBundle().resourcePath(), name)
+
+
+# Load an NSData using a python string
+def Data(s):
+ return NSData.alloc().initWithBytes_length_(s, len(s))
+
+
+# Load a property list from a file in the application bundle.
+def PList(name):
+ path = bundle_path(name, 'plist')
+ return NSDictionary.dictionaryWithContentsOfFile_(path)
+
+
+# Load an NSImage from a file in the application bundle.
+def Image(name, ext):
+ bytes = open(bundle_path(name, ext)).read()
+ img = NSImage.alloc().initWithData_(Data(bytes))
+ return img
+
+
+# Return the NSUserDefaults shared object.
+def Defaults():
+ return NSUserDefaults.standardUserDefaults()
+
+
+# Usage:
+# f = DelayedCallback(func, args...)
+# later:
+# f()
+#
+# When you call f(), it will schedule a call to func() next time the
+# ObjC event loop iterates. Multiple calls to f() in a single iteration
+# will only result in one call to func().
+#
+def DelayedCallback(func, *args, **kwargs):
+ flag = [0]
+ def _go():
+ if flag[0]:
+ print 'running %r (flag=%r)' % (func, flag)
+ flag[0] = 0
+ func(*args, **kwargs)
+ def call():
+ flag[0] += 1
+ PyObjCTools.AppHelper.callAfter(_go)
+ return call
+
+
+def atoi(s):
+ try:
+ return int(s)
+ except ValueError:
+ return 0