Subject: [sup-devel] BRANCH: rerun_crypto_selector

From: Hamish D <[email-masked]>
Date: Wed, 9 Feb 2011 22:03:55 +0000

I noticed that if I changed the reply-to selector that my
crypto-selector hook wasn't getting called, so I've made a branch
called rerun_crypto_selector (and merged it to next). From the main
commit message in the branch:

    Re-run the crypto selector hook after message changes.

    The crypto-selector hook will be re-run after the message is edited,
    or after the recipients change due to changing the "Reply to"
    selector in reply-mode. So when the recipients change, the default
    selector will also change.

    However, if the user has manually changed the crypto selector then the
    hook will not be re-run, so as to avoid over-riding the user's choice.

I've also updated the wiki as the headers["to"] bit is sometimes an
array. Working much nicer now. I've pasted in the two patches at the
end for those who like to review them in the email.

Hamish Downer

commit f111201a469fd1c1dccb143e089cc623ce35025d
Author: Hamish Downer <[email-masked]>
Date:   Tue Feb 8 23:53:13 2011 +0000

    added @changed_by_user to HorizontalSelector

diff --git a/lib/sup/horizontal-selector.rb b/lib/sup/horizontal-selector.rb
index 35a028e..e6ec6dc 100644
--- a/lib/sup/horizontal-selector.rb
+++ b/lib/sup/horizontal-selector.rb
@@ -1,7 +1,7 @@
 module Redwood

 class HorizontalSelector
-  attr_accessor :label
+  attr_accessor :label, :changed_by_user

   def initialize label, vals, labels,
base_color=:horizontal_selector_unselected_color,
selected_color=:horizontal_selector_selected_color
     @label = label
@@ -10,6 +10,7 @@ class HorizontalSelector
     @base_color = base_color
     @selected_color = selected_color
     @selection = 0
+    @changed_by_user = false
   end

   def set_to val; @selection = @vals.index(val) end
@@ -37,10 +38,12 @@ class HorizontalSelector

   def roll_left
     @selection = (@selection - 1) % @labels.length
+    @changed_by_user = true
   end

   def roll_right
     @selection = (@selection + 1) % @labels.length
+    @changed_by_user = true
   end
 end

commit 3cbccb471fc73b1593374ef8efea1a22ba237d89
Author: Hamish Downer <[email-masked]>
Date:   Wed Feb 9 18:58:30 2011 +0000

    Re-run the crypto selector hook after message changes.

    The crypto-selector hook will be re-run after the message is edited,
    or after the recipients change due to changing the "Reply to"
    selector in reply-mode. So when the recipients change, the default
    selector will also change.

    However, if the user has manually changed the crypto selector then the
    hook will not be re-run, so as to avoid over-riding the user's choice.

diff --git a/lib/sup/modes/edit-message-mode.rb
b/lib/sup/modes/edit-message-mode.rb
index 734a879..6c2d61c 100644
--- a/lib/sup/modes/edit-message-mode.rb
+++ b/lib/sup/modes/edit-message-mode.rb
@@ -179,6 +179,7 @@ EOS
     header, @body = parse_file @file.path
     @header = header - NON_EDITABLE_HEADERS
     handle_new_text @header, @body
+    rerun_crypto_selector_hook
     update

     @edited
@@ -215,6 +216,12 @@ EOS

 protected

+  def rerun_crypto_selector_hook
+    if @crypto_selector && [email-masked]
+      HookManager.run "crypto-mode", :header => @header, :body =>
@body, :crypto_selector => @crypto_selector
+    end
+  end
+
   def mime_encode string
     string = [string].pack('M') # basic quoted-printable
     string.gsub!(/=\n/,'')      # .. remove trailing newline
diff --git a/lib/sup/modes/reply-mode.rb b/lib/sup/modes/reply-mode.rb
index 079e4de..ccdf371 100644
--- a/lib/sup/modes/reply-mode.rb
+++ b/lib/sup/modes/reply-mode.rb
@@ -165,6 +165,7 @@ protected
     if @headers[@type_selector.val] != self.header
       self.header = @headers[@type_selector.val]
       self.body = @bodies[@type_selector.val] unless @edited
+      rerun_crypto_selector_hook
       update
     end
   end
@@ -174,6 +175,7 @@ protected
     if @headers[@type_selector.val] != self.header
       self.header = @headers[@type_selector.val]
       self.body = @bodies[@type_selector.val] unless @edited
+      rerun_crypto_selector_hook
       update
     end
   end
_______________________________________________
Sup-devel mailing list
[email-masked]
http://rubyforge.org/mailman/listinfo/sup-devel