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