URI: 
       tadd password_dialog - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit a199061462c7d2e62866b24dcdd7b51fd575e355
   DIR parent 2e8801fdda3936ec80b1d1f6fb41a101faed06a7
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 13 Oct 2015 19:09:12 +0200
       
       add password_dialog
       
       Diffstat:
         M gui/kivy/main_window.py             |      22 ++++++++++++++++------
         M gui/kivy/uix/screens.py             |      19 ++++++++-----------
         A gui/kivy/uix/ui_screens/password.kv |      27 +++++++++++++++++++++++++++
         M gui/kivy/uix/ui_screens/settings.kv |      11 ++++++++++-
       
       4 files changed, 61 insertions(+), 18 deletions(-)
       ---
   DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
       t@@ -381,15 +381,10 @@ class ElectrumWindow(App):
                ''' Initialize The Ux part of electrum. This function performs the basic
                tasks of setting up the ui.
                '''
       -        global ref
       -        if not ref:
       -            from weakref import ref
       -
       +        from weakref import ref
                set_language(self.electrum_config.get('language'))
        
                self.funds_error = False
       -        self.completions = []
       -
                # setup UX
                self.screens = {}
        
       t@@ -806,3 +801,18 @@ class ElectrumWindow(App):
                if not pos:
                        pos = (win.center[0], win.center[1] - (info_bubble.height/2))
                info_bubble.show(pos, duration, width, modal=modal, exit=exit)
       +
       +
       +    def password_dialog(self, f, args):
       +        if self.wallet.use_encryption:
       +            popup = Builder.load_file('gui/kivy/uix/ui_screens/password.kv')
       +            def callback():
       +                pw = popup.ids.text_input.text
       +                Clock.schedule_once(lambda x: apply(f, args + (pw,)), 0.5)
       +            popup.on_dismiss = callback
       +            popup.open()
       +        else:
       +            apply(f, args + (None,))
       +
       +
       +
   DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
       t@@ -2,6 +2,7 @@ from weakref import ref
        from decimal import Decimal
        import re
        import datetime
       +import traceback, sys
        
        from kivy.app import App
        from kivy.cache import Cache
       t@@ -96,11 +97,9 @@ class HistoryScreen(CScreen):
                    time_str = _("unknown")
                    if conf > 0:
                        try:
       -                    time_str = datetime.datetime.fromtimestamp(
       -                                    timestamp).isoformat(' ')[:-3]
       +                    time_str = datetime.datetime.fromtimestamp(timestamp).isoformat(' ')[:-3]
                        except Exception:
                            time_str = _("error")
       -
                    if conf == -1:
                        time_str = _('unverified')
                        icon = "atlas://gui/kivy/theming/light/close"
       t@@ -153,7 +152,6 @@ class HistoryScreen(CScreen):
                    ri = RecentActivityItem()
                    ri.icon = icon
                    ri.date = date_time
       -            mintimestr = date_time.split()[0]
                    ri.address = address
                    ri.amount = amount
                    ri.quote_text = quote_text
       t@@ -223,17 +221,16 @@ class SendScreen(CScreen):
                    app.show_error(_('Invalid Fee'))
                    return
        
       -        message = 'sending {} {} to {}'.format(self.app.base_unit, scrn.amount_e.text, r)
       -        # assume no password and fee is None
       -        password = None
                fee = None
       -        self.send_tx([('address', to_address, amount)], fee, label, password)
       +        message = 'sending {} {} to {}'.format(self.app.base_unit, scrn.amount_e.text, r)
       +        outputs = [('address', to_address, amount)]
       +        self.app.password_dialog(self.send_tx, (outputs, fee, label))
        
            def send_tx(self, outputs, fee, label, password):
                # make unsigned transaction
                coins = self.app.wallet.get_spendable_coins()
                try:
       -            tx = self.app.wallet.make_unsigned_transaction(coins, outputs, self.electrum_config, fee)
       +            tx = self.app.wallet.make_unsigned_transaction(coins, outputs, self.app.electrum_config, fee)
                except Exception as e:
                    traceback.print_exc(file=sys.stdout)
                    self.app.show_error(str(e))
       t@@ -246,8 +243,8 @@ class SendScreen(CScreen):
                    self.app.show_error(str(e))
                    return
                # broadcast
       -        self.wallet.sendtx(tx)
       -
       +        ok, txid = self.app.wallet.sendtx(tx)
       +        self.app.show_info(txid)
        
        
        class ReceiveScreen(CScreen):
   DIR diff --git a/gui/kivy/uix/ui_screens/password.kv b/gui/kivy/uix/ui_screens/password.kv
       t@@ -0,0 +1,27 @@
       +Popup:
       +    id: pw
       +    title: _('Password')
       +
       +    BoxLayout:
       +
       +        orientation: 'vertical'
       +        size_hint: 1, None
       +
       +        GridLayout:
       +            size_hint: 1, None
       +            cols: 2
       +            Label:
       +                text: 'Password'
       +                height: '48dp'
       +            TextInput:
       +                id: text_input
       +                password:True
       +
       +        Button:
       +            size_hint_y: None
       +            height: '48dp'
       +            text: _('Close')
       +            on_release: pw.dismiss()
       +
       +        Widget:
       +            size_hint_y: 1
   DIR diff --git a/gui/kivy/uix/ui_screens/settings.kv b/gui/kivy/uix/ui_screens/settings.kv
       t@@ -5,17 +5,26 @@ Popup:
            BoxLayout:
        
                orientation: 'vertical'
       -        size_hint_y: None
       +        size_hint: 1, None
        
                GridLayout:
                    cols: 2
                    Label:
                        text: _('Base unit')
                        height: '48dp'
       +                size_hint: 1, None
                    Spinner:
                        text: 'BTC'
                        values: ('BTC', 'mBTC')
                        height: '48dp'
       +
       +            Label:
       +                size_hint: 1, None
       +                text: 'OpenAlias'
       +                height: '48dp'
       +            TextInput:
       +                size_hint: 1, None
       +            
                    
                Button:
                    #size_hint_y: None