Add files from the old svn, r101.
[matthijs/upstream/mobilegtd.git] / src / gui / projects_list / project_widget.py
1 import appuifw #Only temporary
2 from model import project,datetime
3 import time
4 class ProjectWidget:
5     def __init__(self,projects,project):
6         self.project = project
7         self.projects = projects
8     def change(self):
9 #        appuifw.note(u'Opening')
10         from gui.project_details.project_view import ProjectView
11         edit_view = ProjectView(self.project)
12         edit_view.run()
13
14     def add_action(self):
15         action = ask_for_action(u'for project %s'%self.project.name())
16         if action:
17             action.process()
18             add_action_to_project(action,self.project)
19             self.project.write()
20
21     def add_info(self):
22         info = ask_for_info(self.project.name())
23         if info:
24             self.project.add_info(Info(info))
25             self.project.write()
26     def review(self):
27         self.projects.review(self.project)
28     def activate(self):
29         self.project.status = project.active
30     def process(self):
31         appuifw.note(u'Processing %s'%self.project.name())
32         self.projects.process(self.project)
33         
34     def rename(self):
35         new_name = appuifw.query(u'Enter new project name','text',u'%s'%self.project.name())
36         if new_name != None:
37             self.project.set_name(new_name)
38     def remove(self):
39         self.project.status = project.done
40     def list_repr(self):
41         return self.project.status_symbol_and_name()
42     def name_and_details(self):
43         if self.project.has_active_actions():
44             details=self.project.active_actions()[0].summary()
45         else:
46             details=u'Something' #self.project.additional_info()
47         return (self.list_repr(),details)
48
49     
50     def tickle(self):
51         t = appuifw.query(u'Enter the date when the project should show up again', 'date', time.time())
52         if t:
53             date_struct = time.gmtime(t)
54             date = datetime.date(date_struct[0],date_struct[1],date_struct[2])
55             print date
56             self.project.status = project.Tickled(date)
57     def defer(self):
58         self.choose_and_execute(self.projects.get_someday_contexts(),self.projects.defer)
59     def choose_and_execute(self,choices,function):
60         if choices==None or len(choices)==0:
61             function(self.project)
62             return
63         selected_item = appuifw.selection_list(choices,search_field=1)   
64         
65         if not selected_item==None:
66             function(self.project,choices[selected_item])
67         
68     def review(self):
69         self.project.status = project.inactive