URI: 
       tpassword button - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 70e369dcbd2f95ed5bf2e42e2592a0dabcf03df8
   DIR parent 54d6df09f7249da7a6d3e1835a63345b30b2357d
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sat,  5 Nov 2011 00:15:02 +0100
       
       password button
       
       Diffstat:
         M client/gui.py                       |      63 ++++++++++++++++---------------
       
       1 file changed, 33 insertions(+), 30 deletions(-)
       ---
   DIR diff --git a/client/gui.py b/client/gui.py
       t@@ -61,7 +61,7 @@ def init_wallet(wallet):
                    r = dialog.run()
                    passphrase = p_entry.get_text()
                    dialog.destroy()
       -            if r==-6: exit(1)
       +            if r==gtk.RESPONSE_CANCEL: exit(1)
                    if len(passphrase) < 20:
                        print len(passphrase)
                        passphrase = None
       t@@ -88,7 +88,7 @@ def init_wallet(wallet):
                thread.start_new_thread( recover_thread, ( wallet, dialog, None ) ) # no password
                r = dialog.run()
                dialog.destroy()
       -        if r==-6: exit(1)
       +        if r==gtk.RESPONSE_CANCEL: exit(1)
        
        def settings_dialog(wallet, is_recover):
        
       t@@ -96,23 +96,9 @@ def settings_dialog(wallet, is_recover):
                parent = None,
                flags = gtk.DIALOG_MODAL, 
                buttons = gtk.BUTTONS_OK_CANCEL, 
       -        message_format = "Please indicate the server, and the gap limit if you are recovering a lost wallet." if is_recover else '' )
       +        message_format = "Please indicate the server, and the gap limit if you are recovering a lost wallet." if is_recover else 'Settings')
        
       -    if not is_recover:
       -        dialog.get_image().hide()
       -        dialog.set_title("settings")
       -
       -    pw = gtk.HBox()
       -    if not is_recover:
       -        pw_label = gtk.Label('Encryption: ')
       -        pw_label.set_size_request(100,10)
       -        pw_label.show()
       -        pw.pack_start(pw_label,False, False, 10)
       -        pw_button = gtk.Button( ('Yes' if wallet.use_encryption else 'No'))
       -        pw_button.connect("clicked", change_password_dialog, wallet)
       -        pw_button.show()
       -        pw.pack_start(pw_button,False, False, 10)
       -        pw.show()
       +    dialog.set_default_response(gtk.RESPONSE_OK)
        
            gap = gtk.HBox()
            gap_label = gtk.Label('Max. gap:')
       t@@ -154,7 +140,6 @@ def settings_dialog(wallet, is_recover):
                fee.show()
        
            vbox = dialog.vbox
       -    vbox.pack_start(pw, False, False, 5)
            vbox.pack_start(host, False,False, 5)
            vbox.pack_start(gap, False,False, 5)
            vbox.pack_start(fee, False, False, 5)    
       t@@ -220,11 +205,11 @@ def password_dialog():
            dialog.destroy()
            if result: return pw
        
       -def change_password_dialog(button, wallet):
       -    dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
       -                                gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL,  'Change password')
       +def change_password_dialog(button, wallet, icon):
       +    dialog = gtk.MessageDialog( None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_OK_CANCEL, 
       +                                'Your wallet is encrypted' if wallet.use_encryption else 'Your wallet is not encrypted')
            if wallet.use_encryption:
       -        current_pw, current_pw_entry = password_line('Old password:')
       +        current_pw, current_pw_entry = password_line('Current password:')
                dialog.vbox.pack_start(current_pw, False, True, 0)
        
            password, password_entry = password_line('New password:')
       t@@ -238,14 +223,14 @@ def change_password_dialog(button, wallet):
            new_password = password_entry.get_text()
            new_password2 = password2_entry.get_text()
            dialog.destroy()
       -    if result == 0: 
       +    if result == gtk.RESPONSE_CANCEL: 
                return
        
            try:
                passphrase = wallet.pw_decode( wallet.passphrase, password)
                private_keys = ast.literal_eval( wallet.pw_decode( wallet.private_keys, password) )
            except:
       -        show_message("sorry")
       +        show_message("Incorrect password")
                return
        
            if new_password != new_password2:
       t@@ -256,8 +241,12 @@ def change_password_dialog(button, wallet):
            wallet.passphrase = wallet.pw_encode( passphrase, new_password)
            wallet.private_keys = wallet.pw_encode( repr( private_keys ), new_password)
            wallet.save()
       -    if button:
       -        button.set_label('Yes' if wallet.use_encryption else 'No')
       +
       +    if icon:
       +        if wallet.use_encryption:
       +            icon.set_tooltip_text('wallet is encrypted')
       +        else:
       +            icon.set_tooltip_text('wallet is unencrypted')
        
        
        def add_help_button(hbox, message):
       t@@ -310,21 +299,35 @@ class BitcoinGUI:
                self.status_image.set_from_stock(gtk.STOCK_YES, gtk.ICON_SIZE_MENU)
                self.status_image.set_alignment(True, 0.5  )
                self.status_image.show()
       -        self.status_bar.pack_end(self.status_image,False,False)
       +        self.status_bar.pack_end(self.status_image, False, False)
        
                settings_icon = gtk.Image()
                settings_icon.set_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU)
       -        settings_icon.set_alignment(True, False)
       -        settings_icon.set_size_request(30,9 )
       +        settings_icon.set_alignment(0.5, 0.5)
       +        settings_icon.set_size_request(16,16 )
                settings_icon.show()
        
                prefs_button = gtk.Button()
                prefs_button.connect("clicked", run_settings_dialog, self.wallet, False)
                prefs_button.add(settings_icon)
                prefs_button.set_tooltip_text("Settings")
       +        prefs_button.set_relief(gtk.RELIEF_NONE)
                prefs_button.show()
                self.status_bar.pack_end(prefs_button,False,False)
        
       +        pw_icon = gtk.Image()
       +        pw_icon.set_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION, gtk.ICON_SIZE_MENU)
       +        pw_icon.set_alignment(0.5, 0.5)
       +        pw_icon.set_size_request(16,16 )
       +        pw_icon.show()
       +
       +        password_button = gtk.Button()
       +        password_button.connect("clicked", change_password_dialog, self.wallet, pw_icon)
       +        password_button.add(pw_icon)
       +        password_button.set_relief(gtk.RELIEF_NONE)
       +        password_button.show()
       +        self.status_bar.pack_end(password_button,False,False)
       +
                self.window.add(vbox)
                self.window.show_all()