Catch more exceptions at top level.
[matthijs/upstream/mobilegtd.git] / src / main.py
1 # SYMBIAN_UID = 0xA0008CDC
2 # 0xA0008CDC
3 # 0x2001A1A0
4
5 #from logging import traceS60
6 #tr=traceS60.trace() 
7 #tr.go()
8
9 def run():
10     try:
11         import sys
12         import e32
13         if e32.in_emulator():
14             sys.path.append('c:/python/')
15             
16             
17         import os.path
18         print sys.path
19     #    print os.path.dirname(__file__)
20     #    sys.path.append(os.path.dirname(__file__))
21         import log.logging
22         from log.logging import logger
23         import sys,os
24         logger.log_stderr()
25         sys.stderr.write('stderr logged from default')
26         
27         
28         
29         lock=None
30         
31         from config.config import gtd_directory,read_configurations
32         read_configurations()
33
34         from inout.io import safe_chdir
35         safe_chdir(gtd_directory)
36         print os.getcwd() 
37         
38         e32.ao_yield()
39         import sys,os
40     
41         import config.config, config.defaultconfig
42         import gui.gui
43         from model.projects import Projects
44         from gui.projects_list.project_list_view import ProjectListView
45         import inout.io
46         from persistence.projects_directory import ProjectsDirectory
47     
48         directory = os.path.join(config.config.gtd_directory,'@Projects')
49
50         projects = Projects()
51         projects_directory = ProjectsDirectory(projects)
52         projects_directory.add_directory(directory)
53         projects_directory.add_directory(os.path.join(directory,'@Review'))
54         projects_directory.read()
55 #        projects.process()
56         projects_view = ProjectListView(projects)
57         projects_view.run()
58         #logger.close()
59     except Exception, e:
60         import appuifw,traceback
61         trace = traceback.extract_tb(sys.exc_info()[2])
62         print e,trace
63         def display(objects):
64             strings=[]
65             for object in objects:
66                 strings.append(u'%s'%object)
67             appuifw.selection_list(strings)
68         
69         error_text = unicode(repr(e.args))
70         t = appuifw.Text()
71         for trace_line in trace:
72             formatted_trace_line = u'\nIn %s line %s: %s "%s"'%trace_line
73             logger.log(formatted_trace_line,1)
74             t.add(formatted_trace_line)
75         logger.log(error_text,1)
76         t.add(error_text)
77         lock = e32.Ao_lock()
78         appuifw.app.menu=[(u'Exit', lock.signal)]
79     
80         appuifw.app.title=u'Error'
81         appuifw.app.body=t
82         #appuifw.app.exit_key_handler=gui.exit
83         lock.wait()
84
85     logger.close()
86
87 run()
88
89 #tr.stop()