1 from model import model
2 from config import config
3 from gui.gui import SearchableListView
4 import appuifw,thread,re
6 from config.config import gtd_directory,read_sms
7 from config.defaultconfig import default_projects_menu
8 from log.logging import logger
9 from e32 import Ao_lock, in_emulator
10 from key_codes import *
12 from new_project_widget import NewProjectWidget
13 from new_action_widget import NewActionWidget
14 from project_widget import ProjectWidget
15 from logic import review_visitor
20 PROJECT_LIST_KEYS_AND_MENU = config.Configuration(gtd_directory+"projects.cfg",default_projects_menu)
21 sms_regexp = re.compile('([^\w ]*)',re.U)
23 class ProjectListView(SearchableListView):
24 def __init__(self,projects):
25 self.projects = projects
26 self.projects.observers.append(self)
27 super(ProjectListView, self).__init__()
28 self.set_menu(PROJECT_LIST_KEYS_AND_MENU)
29 self.set_title(u'Projects')
30 self.set_filters([lambda:projects])
31 #appuifw.note(u'Before starting thread')
32 # thread.start_new_thread(projects.process,())
33 #appuifw.note(u'After starting thread %s'%repr(projects.observers))
38 appuifw.app.set_exit()
41 show_config(PROJECT_LIST_KEYS_AND_MENU)
42 PROJECT_LIST_KEYS_AND_MENU.write()
43 def edit_config(self):
44 show_config(COMMON_CONFIG)
46 def add_project(self,project):
47 self.projects.add_project(project)
49 def all_widget_entries(self):
50 return [entry.name_and_details() for entry in self.widgets]
51 def new_project(self):
52 NewProjectWidget(self.projects).change()
54 NewActionWidget().change()
55 def generate_widgets(self):
57 widgets.append(NewProjectWidget(self.projects))
58 widgets.append(NewActionWidget())
60 widgets.extend([ProjectWidget(self.projects,project) for project in self.projects.sorted_by_status()])
62 from sms_widget import create_sms_widgets
64 widgets.extend(create_sms_widgets())
66 logger.log(u'No permission to access SMS inbox')
67 logger.log(unicode(repr(e.args)))
70 def process_all(self):
71 review_visitor.reviewer.review(self.projects)
72 self.redisplay_widgets()
73 def reread_projects(self):
74 self.projects.reread()