gtg team mailing list archive
-
gtg team
-
Mailing list archive
-
Message #03767
[Merge] lp:~tomkadwill/gtg/delete-tag2 into lp:gtg
Tom Kadwill has proposed merging lp:~tomkadwill/gtg/delete-tag2 into lp:gtg.
Requested reviews:
Gtg developers (gtg)
For more details, see:
https://code.launchpad.net/~tomkadwill/gtg/delete-tag2/+merge/141682
Have fixed bug Bug #1044639
--
https://code.launchpad.net/~tomkadwill/gtg/delete-tag2/+merge/141682
Your team Gtg developers is requested to review the proposed merge of lp:~tomkadwill/gtg/delete-tag2 into lp:gtg.
=== modified file 'CHANGELOG'
--- CHANGELOG 2013-01-01 16:24:57 +0000
+++ CHANGELOG 2013-01-02 23:31:24 +0000
@@ -6,6 +6,7 @@
* Fix for bug #1047753: Changing due date doesn't update "days left" information, by Codee
* Fix for bug #1090301: "Deactivating the untouched tasks plugin leaves "add @untouched tag" in plugins menu", by Nimit Shah
* Fix for bug #1039651: Urgency coloring of parent tasks in collapsed view, by Parin Porecha
+ * Fix for bug #1095451: Can now delete tags from Tags Sidebar
2012-11-06 Getting Things GNOME! 0.3
* Hide tasks with due date someday, #931376
=== modified file 'GTG/gtk/browser/browser.py'
--- GTG/gtk/browser/browser.py 2012-12-13 15:44:18 +0000
+++ GTG/gtk/browser/browser.py 2013-01-02 23:31:24 +0000
@@ -620,12 +620,12 @@
self.config.set('tasklist_sort_column', sort_column)
self.config.set('tasklist_sort_order', sort_order)
- def on_move(self, widget = None, data = None):
+ def on_move(self, widget=None, data=None):
xpos, ypos = self.window.get_position()
self.config.set('x_pos', xpos)
self.config.set('y_pos', ypos)
- def on_size_allocate(self, widget = None, data = None):
+ def on_size_allocate(self, widget=None, data=None):
width, height = self.window.get_size()
self.config.set('width', width)
self.config.set('height', height)
@@ -868,6 +868,9 @@
keyname = gtk.gdk.keyval_name(event.keyval)
is_shift_f10 = (keyname == "F10" and
event.get_state() & gtk.gdk.SHIFT_MASK)
+ if keyname == "Delete":
+ self.on_delete_tags()
+ return True
if is_shift_f10 or keyname == "Menu":
selected_tags = self.get_selected_tags(nospecial=True)
selected_search = self.get_selected_search()
@@ -885,6 +888,12 @@
self.reset_cursor()
return True
+ def on_delete_tags(self, widget=None, tid=None):
+ selected_tags = self.get_selected_tags(nospecial=True)
+ Log.debug("going to delete %s" % selected_tags)
+ if self.vmanager.ask_delete_tags(selected_tags):
+ self.req.remove_tag(selected_tags[0])
+
def on_task_treeview_button_press_event(self, treeview, event):
""" Pop up context menu on right mouse click in the main
task tree view """
=== modified file 'GTG/gtk/delete_dialog.py'
--- GTG/gtk/delete_dialog.py 2012-12-02 12:25:37 +0000
+++ GTG/gtk/delete_dialog.py 2013-01-02 23:31:24 +0000
@@ -131,3 +131,43 @@
return tasklist
else:
return []
+
+ def delete_tags(self, tags):
+ # We fill the text and the buttons' labels according to the number
+ # of tasks to delete
+ label = self.builder.get_object("label1")
+ label_text = label.get_text()
+ cdlabel2 = self.builder.get_object("cd-label2")
+ cdlabel3 = self.builder.get_object("cd-label3")
+ cdlabel4 = self.builder.get_object("cd-label4")
+ singular = len(tags)
+ label_text = ngettext("Deleting a tag cannot be undone, "
+ "and will delete the following tag: ",
+ "Deleting a tag cannot be undone, "
+ "and will delete the following tags: ",
+ singular)
+ cdlabel2.set_label(ngettext("Are you sure you want to delete this "
+ "tag?",
+ "Are you sure you want to delete these "
+ "tag?",
+ singular))
+
+ cdlabel3.set_label(ngettext("Keep selected tag",
+ "Keep selected tag",
+ singular))
+ cdlabel4.set_label(ngettext("Permanently remove tag",
+ "Permanently remove tag",
+ singular))
+ label_text = label_text[0:label_text.find(":") + 1]
+
+ delete_dialog = self.builder.get_object("confirm_delete")
+ titles = "".join("\n - " + tag for tag in tags)
+ label.set_text(label_text + titles)
+ delete_dialog.resize(1, 1)
+ cancel_button = self.builder.get_object("cancel")
+ cancel_button.grab_focus()
+ if delete_dialog.run() != 1:
+ delete_dialog.hide()
+ else:
+ delete_dialog.hide()
+ return True
=== modified file 'GTG/gtk/manager.py'
--- GTG/gtk/manager.py 2012-12-13 15:44:18 +0000
+++ GTG/gtk/manager.py 2013-01-02 23:31:24 +0000
@@ -238,6 +238,17 @@
if t.get_id() in self.opened_task:
self.close_task(t.get_id())
+ def ask_delete_tags(self, tags):
+ self.delete_dialog = DeletionUI(self.req)
+ if self.delete_dialog.delete_tags(tags):
+ requester = self.plugin_api.get_requester()
+ closed_tree = requester.get_tasks_tree(name = 'inactive')
+ closed_tasks = [requester.get_task(tid) for tid in \
+ closed_tree.get_all_nodes()]
+ for task in closed_tasks:
+ task.remove_tag(tags[0])
+ return True
+
def open_tag_editor(self, tag):
if not self.tag_editor_dialog:
self.tag_editor_dialog = TagEditor(self.req, self, tag)