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