LINK_IDX = 6
NOTES_IDX = 7
- def __init__(self, widgetTree):
+ def __init__(self, widgetTree, errorDisplay):
+ self._errorDisplay = errorDisplay
self._manager = None
self._projId = None
self._showCompleted = False
self._todoItemTree.append_column(self._dueColumn)
self._todoItemTree.append_column(self._linkColumn)
self._todoItemTree.append_column(self._notesColumn)
- self.reset_task_list(self._projId)
+ 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._todoItemTree.set_model(self._itemList)
def _on_item_select(self, treeView, path, viewColumn):
- # @todo See if there is a way to use the new gtk_toolbox.ContextHandler
- taskId = self._itemList[path[0]][self.ID_IDX]
-
- if viewColumn is self._priorityColumn:
- pass
- elif viewColumn is self._nameColumn:
- self._editDialog.enable(self._manager)
- try:
- self._editDialog.request_task(self._manager, taskId)
- finally:
- 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)
- elif viewColumn is self._linkColumn:
- webbrowser.open(self._manager.get_task_details(taskId)["url"])
- elif viewColumn is self._notesColumn:
- pass
+ try:
+ # @todo See if there is a way to use the new gtk_toolbox.ContextHandler
+ taskId = self._itemList[path[0]][self.ID_IDX]
+
+ if viewColumn is self._priorityColumn:
+ pass
+ elif viewColumn is self._nameColumn:
+ self._editDialog.enable(self._manager)
+ try:
+ self._editDialog.request_task(self._manager, taskId)
+ finally:
+ 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)
+ elif viewColumn is self._linkColumn:
+ webbrowser.open(self._manager.get_task_details(taskId)["url"])
+ elif viewColumn is self._notesColumn:
+ pass
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_completion_change(self, cell, path):
- taskId = self._itemList[path[0]][self.ID_IDX]
- self._manager.complete_task(taskId)
- self.reset_task_list(self._projId)
+ try:
+ taskId = self._itemList[path[0]][self.ID_IDX]
+ self._manager.complete_task(taskId)
+ self.reset_task_list(self._projId)
+ except StandardError, e:
+ self._errorDisplay.push_exception()
class QuickAddView(object):
- def __init__(self, widgetTree, addSink):
+ def __init__(self, widgetTree, errorDisplay, addSink):
+ self._errorDisplay = errorDisplay
self._manager = None
self._projId = None
self._addSink = addSink
self._addTaskButton.set_sensitive(not isMeta)
def _on_add(self, *args):
- name = self._taskNameEntry.get_text()
+ try:
+ name = self._taskNameEntry.get_text()
- projId = self._projId
- taskId = self._manager.add_task(projId, name)
+ projId = self._projId
+ taskId = self._manager.add_task(projId, name)
- self._taskNameEntry.set_text("")
- self._addSink.send((projId, taskId))
+ self._taskNameEntry.set_text("")
+ self._addSink.send((projId, taskId))
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_add_edit(self, *args):
- name = self._taskNameEntry.get_text()
+ try:
+ name = self._taskNameEntry.get_text()
- projId = self._projId
- taskId = self._manager.add_task(projId, name)
+ projId = self._projId
+ taskId = self._manager.add_task(projId, name)
- try:
- self._editDialog.enable(self._manager)
try:
- self._editDialog.request_task(self._manager, taskId)
+ self._editDialog.enable(self._manager)
+ try:
+ self._editDialog.request_task(self._manager, taskId)
+ finally:
+ self._editDialog.disable()
finally:
- self._editDialog.disable()
- finally:
- self._taskNameEntry.set_text("")
- self._addSink.send((projId, taskId))
+ self._taskNameEntry.set_text("")
+ self._addSink.send((projId, taskId))
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_add_pressed(self, widget):
- self._addToEditTimerId = gobject.timeout_add(1000, self._on_add_edit)
+ try:
+ self._addToEditTimerId = gobject.timeout_add(1000, self._on_add_edit)
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_add_released(self, widget):
- if self._addToEditTimerId is not None:
- gobject.source_remove(self._addToEditTimerId)
- self._addToEditTimerId = None
+ try:
+ if self._addToEditTimerId is not None:
+ gobject.source_remove(self._addToEditTimerId)
+ self._addToEditTimerId = None
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_paste(self, *args):
- entry = self._taskNameEntry.get_text()
- entry += self._clipboard.wait_for_text()
- self._taskNameEntry.set_text(entry)
+ try:
+ entry = self._taskNameEntry.get_text()
+ entry += self._clipboard.wait_for_text()
+ self._taskNameEntry.set_text(entry)
+ except StandardError, e:
+ self._errorDisplay.push_exception()
def _on_clear(self, *args):
- self._taskNameEntry.set_text("")
+ try:
+ self._taskNameEntry.set_text("")
+ except StandardError, e:
+ self._errorDisplay.push_exception()
class GtkRtMilk(object):
- def __init__(self, widgetTree):
+ def __init__(self, widgetTree, errorDisplay):
"""
@note Thread agnostic
"""
+ self._errorDisplay = errorDisplay
self._manager = None
self._credentials = "", "", ""
self._projectsCombo = widgetTree.get_widget("projectsCombo")
self._onListActivateId = 0
- self._itemView = ItemListView(widgetTree)
+ self._itemView = ItemListView(widgetTree, self._errorDisplay)
addSink = coroutines.func_sink(lambda eventData: self._itemView.reset_task_list(eventData[0]))
- self._addView = QuickAddView(widgetTree, addSink)
+ self._addView = QuickAddView(widgetTree, self._errorDisplay, addSink)
self._credentialsDialog = gtk_toolbox.LoginWindow(widgetTree)
@staticmethod
def _reset_task_list(self):
projectName = self._get_project()
- projId = self._manager.lookup_project(projectName)
+ projId = self._manager.lookup_project(projectName)["id"]
self._addView.reset_task_list(projId)
self._itemView.reset_task_list(projId)
return currentProjectName
def _on_list_activate(self, *args):
- self._reset_task_list()
+ try:
+ self._reset_task_list()
+ except StandardError, e:
+ self._errorDisplay.push_exception()