URI: 
       tMerge branch 'master' of gitorious.org:electrum/electrum - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit c533b797e0d2d976da3ee1ab1afb7f5562f5747b
   DIR parent a3830e5903fb11319fdd4397bb94fae1ff71b76c
  HTML Author: Julian Tosh <Julian@Tosh.us>
       Date:   Sat,  7 Jul 2012 06:41:16 -0700
       
       Merge branch 'master' of gitorious.org:electrum/electrum
       
       Diffstat:
         M lib/gui_lite.py                     |      20 +++++++++++++++++++-
         M lib/wallet.py                       |      75 +++++++++++++++++---------------
       
       2 files changed, 59 insertions(+), 36 deletions(-)
       ---
   DIR diff --git a/lib/gui_lite.py b/lib/gui_lite.py
       t@@ -120,7 +120,8 @@ class MiniWindow(QDialog):
                self.connect(expand_button, SIGNAL("clicked()"), expand_callback)
        
                self.btc_balance = None
       -        self.quote_currencies = ("EUR", "USD", "GBP")
       +        self.quote_currencies = ["EUR", "USD", "GBP"]
       +        self.actuator.set_configured_currency(self.set_quote_currency)
                self.exchanger = exchange_rate.Exchanger(self)
                # Needed because price discovery is done in a different thread
                # which needs to be sent back to this main one to update the GUI
       t@@ -212,9 +213,16 @@ class MiniWindow(QDialog):
            def deactivate(self):
                pass
        
       +    def set_quote_currency(self, currency):
       +        assert currency in self.quote_currencies
       +        self.quote_currencies.remove(currency)
       +        self.quote_currencies = [currency] + self.quote_currencies
       +        self.refresh_balance()
       +
            def change_quote_currency(self):
                self.quote_currencies = \
                    self.quote_currencies[1:] + self.quote_currencies[0:1]
       +        self.actuator.set_config_currency(self.quote_currencies[0])
                self.refresh_balance()
        
            def refresh_balance(self):
       t@@ -440,9 +448,19 @@ class MiniActuator:
            def __init__(self, wallet):
                self.wallet = wallet
        
       +    def set_configured_currency(self, set_quote_currency):
       +        currency = self.wallet.conversion_currency
       +        assert currency is not None
       +        set_quote_currency(currency)
       +
       +    def set_config_currency(self, conversion_currency):
       +        self.wallet.conversion_currency = conversion_currency
       +
            def copy_address(self, receive_popup):
                addrs = [addr for addr in self.wallet.all_addresses()
                         if not self.wallet.is_change(addr)]
       +        # Select most recent addresses from gap limit
       +        addrs = addrs[-self.wallet.gap_limit:]
                copied_address = random.choice(addrs)
                qApp.clipboard().setText(copied_address)
                receive_popup.setup(copied_address)
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -281,6 +281,7 @@ class Wallet:
                self.fee = 100000
                self.num_zeros = 0
                self.master_public_key = ''
       +        self.conversion_currency = None
        
                # saved fields
                self.use_encryption = False
       t@@ -638,30 +639,34 @@ class Wallet:
        
        
            def save(self):
       +        # TODO: Need special config storage class. Should not be mixed
       +        # up with the wallet.
       +        # Settings should maybe be stored in a flat ini file.
                s = {
       -            'seed_version':self.seed_version,
       -            'use_encryption':self.use_encryption,
       -            'use_change':self.use_change,
       +            'seed_version': self.seed_version,
       +            'use_encryption': self.use_encryption,
       +            'use_change': self.use_change,
                    'master_public_key': self.master_public_key.encode('hex'),
       -            'fee':self.fee,
       -            'server':self.server,
       -            'seed':self.seed,
       -            'addresses':self.addresses,
       -            'change_addresses':self.change_addresses,
       -            'history':self.history, 
       -            'labels':self.labels,
       -            'contacts':self.addressbook,
       -            'imported_keys':self.imported_keys,
       -            'aliases':self.aliases,
       -            'authorities':self.authorities,
       -            'receipts':self.receipts,
       -            'num_zeros':self.num_zeros,
       -            'frozen_addresses':self.frozen_addresses,
       -            'prioritized_addresses':self.prioritized_addresses,
       -            'expert_mode':self.expert_mode,
       -            'gap_limit':self.gap_limit,
       -            'debug_server':self.debug_server,
       -            }
       +            'fee': self.fee,
       +            'server': self.server,
       +            'seed': self.seed,
       +            'addresses': self.addresses,
       +            'change_addresses': self.change_addresses,
       +            'history': self.history, 
       +            'labels': self.labels,
       +            'contacts': self.addressbook,
       +            'imported_keys': self.imported_keys,
       +            'aliases': self.aliases,
       +            'authorities': self.authorities,
       +            'receipts': self.receipts,
       +            'num_zeros': self.num_zeros,
       +            'frozen_addresses': self.frozen_addresses,
       +            'prioritized_addresses': self.prioritized_addresses,
       +            'expert_mode': self.expert_mode,
       +            'gap_limit': self.gap_limit,
       +            'debug_server': self.debug_server,
       +            'conversion_currency': self.conversion_currency
       +        }
                f = open(self.path,"w")
                f.write( repr(s) )
                f.close()
       t@@ -685,26 +690,26 @@ class Wallet:
                    self.seed_version = d.get('seed_version')
                    self.master_public_key = d.get('master_public_key').decode('hex')
                    self.use_encryption = d.get('use_encryption')
       -            self.use_change = bool(d.get('use_change',True))
       -            self.fee = int( d.get('fee') )
       +            self.use_change = bool(d.get('use_change', True))
       +            self.fee = int(d.get('fee'))
                    self.seed = d.get('seed')
                    self.server = d.get('server')
       -            #blocks = d.get('blocks')
                    self.addresses = d.get('addresses')
                    self.change_addresses = d.get('change_addresses')
                    self.history = d.get('history')
                    self.labels = d.get('labels')
                    self.addressbook = d.get('contacts')
       -            self.imported_keys = d.get('imported_keys',{})
       -            self.aliases = d.get('aliases',{})
       -            self.authorities = d.get('authorities',{})
       -            self.receipts = d.get('receipts',{})
       -            self.num_zeros = d.get('num_zeros',0)
       -            self.frozen_addresses = d.get('frozen_addresses',[])
       -            self.prioritized_addresses = d.get('prioritized_addresses',[])
       -            self.expert_mode = d.get('expert_mode',False)
       -            self.gap_limit = d.get('gap_limit',5)
       -            self.debug_server = d.get('debug_server',False)
       +            self.imported_keys = d.get('imported_keys', {})
       +            self.aliases = d.get('aliases', {})
       +            self.authorities = d.get('authorities', {})
       +            self.receipts = d.get('receipts', {})
       +            self.num_zeros = d.get('num_zeros', 0)
       +            self.frozen_addresses = d.get('frozen_addresses', [])
       +            self.prioritized_addresses = d.get('prioritized_addresses', [])
       +            self.expert_mode = d.get('expert_mode', False)
       +            self.gap_limit = d.get('gap_limit', 5)
       +            self.debug_server = d.get('debug_server', False)
       +            self.conversion_currency = d.get('conversion_currency', 'USD')
                except:
                    raise BaseException("cannot read wallet file")