From 42d3b7ab9658cb59b5f41cb3bbb6fb2c59726876 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Wed, 1 Aug 2007 16:06:55 +0000 Subject: [PATCH] edit labels within thread-view-mode git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@513 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- lib/sup/buffer.rb | 1 + lib/sup/modes/thread-index-mode.rb | 2 +- lib/sup/modes/thread-view-mode.rb | 17 +++++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/sup/buffer.rb b/lib/sup/buffer.rb index 62b582e..30cac13 100644 --- a/lib/sup/buffer.rb +++ b/lib/sup/buffer.rb @@ -394,6 +394,7 @@ class BufferManager ## returns an array of labels def ask_for_labels domain, question, default_labels, forbidden_labels=[] + default_labels = default_labels - forbidden_labels - LabelManager::RESERVED_LABELS default = default_labels.join(" ") default += " " unless default.empty? diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb index a59bad3..5c6d4bd 100644 --- a/lib/sup/modes/thread-index-mode.rb +++ b/lib/sup/modes/thread-index-mode.rb @@ -90,7 +90,7 @@ class ThreadIndexMode < LineCursorMode threads.each { |t| select t } end - def handle_starred_update sender, m + def handle_label_update sender, m t = @ts.thread_for(m) or return l = @lines[t] or return update_text_for_line l diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb index 409c23d..bc19772 100644 --- a/lib/sup/modes/thread-view-mode.rb +++ b/lib/sup/modes/thread-view-mode.rb @@ -19,6 +19,7 @@ class ThreadViewMode < LineCursorMode k.add :toggle_expanded, "Expand/collapse item", :enter k.add :expand_all_messages, "Expand/collapse all messages", 'E' k.add :edit_draft, "Edit draft", 'e' + k.add :edit_labels, "Edit or add labels for a thread", 'l' k.add :expand_all_quotes, "Expand/collapse all quotes in a message", 'o' k.add :jump_to_next_open, "Jump to next open message", 'n' k.add :jump_to_prev_open, "Jump to previous open message", 'p' @@ -134,6 +135,18 @@ class ThreadViewMode < LineCursorMode mode.edit end + def edit_labels + m = @message_lines[curpos] or return + new_labels = BufferManager.ask_for_labels :label, "Labels for message: ", m.labels + + return unless new_labels + m.labels = new_labels + new_labels.each { |l| LabelManager << l } + ## TODO: don't recalculate EVERYTHING + update + UpdateManager.relay self, :label, m + end + def toggle_starred m = @message_lines[curpos] or return if m.has_label? :starred @@ -144,7 +157,7 @@ class ThreadViewMode < LineCursorMode ## TODO: don't recalculate EVERYTHING just to add a stupid little ## star to the display update - UpdateManager.relay self, :starred, m + UpdateManager.relay self, :label, m end def toggle_expanded @@ -281,7 +294,7 @@ class ThreadViewMode < LineCursorMode BufferManager.kill_buffer_safely buffer end -private +private def toggle_chunk_expansion chunk l = @chunk_layout[chunk] -- 2.45.2