New release.
[memo.git] / main.py
blobc77ff741744a9b900642a685fcee71568d6e40a2
1 import findrox; findrox.version(2, 0, 3)
2 import rox
3 from rox import choices
5 choices.migrate('Memo', 'rox.sourceforge.net')
7 import os, __builtin__
8 __builtin__._ = rox.i18n.translation(os.path.join(rox.app_dir, 'Messages'))
10 rox.setup_app_options('Memo', site = 'rox.sourceforge.net')
12 from rox.Menu import set_save_name
13 set_save_name('Memo', site = 'rox.sourceforge.net')
15 import Window, memos, clock
17 # All options must be registered by the time we get here
18 rox.app_options.notify()
20 # This is just to prevent us from loading two copies...
21 memo_service = 'net.sourceforge.rox.Memo'
22 from rox import xxmlrpc, g, tasks
23 try:
24 proxy = xxmlrpc.XXMLProxy(memo_service)
25 # Check to make sure it really is running...
26 def check():
27 call = proxy.get_object('/').get_pid()
28 yield call, tasks.TimeoutBlocker(2)
29 if call.happened:
30 pid = call.get_response()
31 rox.alert('Memo is already running (PID = %d)!' % pid)
32 os._exit(1)
33 g.mainquit()
34 tasks.Task(check())
35 g.main()
36 print "Possible existing copy of Memo is not responding"
37 except xxmlrpc.NoSuchService:
38 pass # Good
39 server = xxmlrpc.XXMLRPCServer(memo_service)
40 class MemoObject:
41 allowed_methods = ['get_pid']
42 def get_pid(self):
43 return os.getpid()
44 server.add_object('/', MemoObject())
46 memo_list = memos.MasterList()
48 main_window = Window.Window(memo_list)
50 def main():
51 try:
52 rox.mainloop()
53 finally:
54 import dbus_notify
55 dbus_notify.close_all()