@todo Add an agenda view to the task list
Tree of days, with each successive 7 days dropping the visibility of further lower priority items
@todo Add a map view
- Using new api widgets people are developing)
- Integrate GPS w/ fallback to default location
- Use locations for mapping
+ Using new api widgets people are developing)
+ Integrate GPS w/ fallback to default location
+ Use locations for mapping
@todo Add a quick search (OR within a property type, and between property types) view
- Drop down for multi selecting priority
- Drop down for multi selecting tags
- Drop down for multi selecting locations
- Calendar selector for choosing due date range
+ Drop down for multi selecting priority
+ Drop down for multi selecting tags
+ Drop down for multi selecting locations
+ Calendar selector for choosing due date range
@todo Remove blocking operations from UI thread
"""
self._showIncomplete = True
self._editDialog = gtk_toolbox.EditTaskDialog(widgetTree)
+ self._notesDialog = gtk_toolbox.NotesDialog(widgetTree)
self._itemList = gtk.ListStore(
gobject.TYPE_STRING, # id
self._nameCell = gtk.CellRendererText()
self._nameColumn.pack_start(self._nameCell, True)
self._nameColumn.set_attributes(self._nameCell, text=self.NAME_IDX)
+ self._nameColumn.set_expand(True)
self._dueColumn = gtk.TreeViewColumn('Due')
self._dueCell = gtk.CellRendererText()
self._dueColumn.pack_start(self._nameCell, False)
self._linkCell = gtk.CellRendererText()
self._linkColumn.pack_start(self._nameCell, False)
self._linkColumn.set_attributes(self._nameCell, text=self.LINK_IDX)
- self._notesColumn = gtk.TreeViewColumn('') # Notes
+ self._notesColumn = gtk.TreeViewColumn('Notes') # Notes
self._notesCell = gtk.CellRendererText()
self._notesColumn.pack_start(self._nameCell, False)
self._notesColumn.set_attributes(self._nameCell, text=self.NOTES_IDX)
self._todoItemScroll = gtk.ScrolledWindow()
self._todoItemScroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
self._todoItemTree = gtk.TreeView()
+ self._todoItemTree.set_headers_visible(True)
+ self._todoItemTree.set_rules_hint(True)
+ self._todoItemTree.set_search_column(self.NAME_IDX)
+ self._todoItemTree.set_enable_search(True)
+ self._todoItemTree.append_column(self._completionColumn)
+ self._todoItemTree.append_column(self._priorityColumn)
+ self._todoItemTree.append_column(self._nameColumn)
+ self._todoItemTree.append_column(self._dueColumn)
+ self._todoItemTree.append_column(self._linkColumn)
+ self._todoItemTree.append_column(self._notesColumn)
+ self._todoItemTree.connect("row-activated", self._on_item_select)
self._todoItemScroll.add(self._todoItemTree)
- self._onItemSelectId = 0
def enable(self, manager, projId):
self._manager = manager
self._todoItemScroll.show_all()
self._itemList.clear()
- self._todoItemTree.append_column(self._completionColumn)
- self._todoItemTree.append_column(self._priorityColumn)
- self._todoItemTree.append_column(self._nameColumn)
- self._todoItemTree.append_column(self._dueColumn)
- self._todoItemTree.append_column(self._linkColumn)
- self._todoItemTree.append_column(self._notesColumn)
try:
self.reset_task_list(self._projId)
except StandardError, e:
self._errorDisplay.push_exception()
- self._todoItemTree.set_headers_visible(False)
- self._nameColumn.set_expand(True)
-
- self._onItemSelectId = self._todoItemTree.connect("row-activated", self._on_item_select)
-
def disable(self):
self._manager = None
self._projId = None
self._todoBox.remove(self._todoItemScroll)
self._todoItemScroll.hide_all()
- self._todoItemTree.disconnect(self._onItemSelectId)
-
- self._todoItemTree.remove_column(self._completionColumn)
- self._todoItemTree.remove_column(self._priorityColumn)
- self._todoItemTree.remove_column(self._nameColumn)
- self._todoItemTree.remove_column(self._dueColumn)
- self._todoItemTree.remove_column(self._linkColumn)
- self._todoItemTree.remove_column(self._notesColumn)
+
self._itemList.clear()
self._itemList.set_model(None)
self._editDialog.disable()
self.reset_task_list(self._projId)
elif viewColumn is self._dueColumn:
- self._editDialog.enable(self._manager)
- try:
- self._editDialog.request_task(self._manager, taskId)
- finally:
- self._editDialog.disable()
- self.reset_task_list(self._projId)
+ due = self._manager.get_task_details(taskId)["dueDate"]
+ if due.is_good():
+ calendar = gtk_toolbox.PopupCalendar(None, due.get(), "Due Date")
+ calendar.run()
elif viewColumn is self._linkColumn:
webbrowser.open(self._manager.get_task_details(taskId)["url"])
elif viewColumn is self._notesColumn:
- pass
+ self._notesDialog.enable()
+ try:
+ self._notesDialog.run(self._manager, taskId)
+ finally:
+ self._notesDialog.disable()
except StandardError, e:
self._errorDisplay.push_exception()