commit a199061462c7d2e62866b24dcdd7b51fd575e355
parent 2e8801fdda3936ec80b1d1f6fb41a101faed06a7
Author: ThomasV <thomasv@electrum.org>
Date: Tue, 13 Oct 2015 19:09:12 +0200
add password_dialog
Diffstat:
4 files changed, 61 insertions(+), 18 deletions(-)
diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
@@ -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 = {}
@@ -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,))
+
+
+
diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
@@ -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
@@ -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"
@@ -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
@@ -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))
@@ -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):
diff --git a/gui/kivy/uix/ui_screens/password.kv b/gui/kivy/uix/ui_screens/password.kv
@@ -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
diff --git a/gui/kivy/uix/ui_screens/settings.kv b/gui/kivy/uix/ui_screens/settings.kv
@@ -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