tkivy: ask RBF before send - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit 48d42bbafae88faf77e75efa804612c29e3df7ba
DIR parent 5a2ec733673eb05b21d547ac19525705041f674d
HTML Author: ThomasV <thomasv@electrum.org>
Date: Fri, 29 Jul 2016 15:47:13 +0200
kivy: ask RBF before send
Diffstat:
M gui/kivy/main_window.py | 9 ++++-----
M gui/kivy/uix/dialogs/question.py | 4 +++-
M gui/kivy/uix/screens.py | 24 +++++++++++++++++-------
3 files changed, 24 insertions(+), 13 deletions(-)
---
DIR diff --git a/gui/kivy/main_window.py b/gui/kivy/main_window.py
t@@ -54,8 +54,6 @@ Cache.register('electrum_widgets', timeout=0)
from kivy.uix.screenmanager import Screen
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.label import Label
-from kivy.uix.checkbox import CheckBox
-from kivy.uix.switch import Switch
from kivy.core.clipboard import Clipboard
Factory.register('TabbedCarousel', module='electrum_gui.kivy.uix.screens')
t@@ -762,9 +760,10 @@ class ElectrumWindow(App):
d = Question(_('Delete wallet?') + '\n' + basename, self._delete_wallet)
d.open()
- def _delete_wallet(self):
- basename = os.path.basename(self.wallet.storage.path)
- self.protected(_("Enter your PIN code to confirm deletion of %s") % basename, self.__delete_wallet, ())
+ def _delete_wallet(self, b):
+ if b:
+ basename = os.path.basename(self.wallet.storage.path)
+ self.protected(_("Enter your PIN code to confirm deletion of %s") % basename, self.__delete_wallet, ())
def __delete_wallet(self, pw):
wallet_path = self.get_wallet_path()
DIR diff --git a/gui/kivy/uix/dialogs/question.py b/gui/kivy/uix/dialogs/question.py
t@@ -20,6 +20,7 @@ Builder.load_string('''
Label:
id: label
text: root.message
+ text_size: self.width, None
Widget:
size_hint: 1, 0.1
BoxLayout:
t@@ -30,13 +31,14 @@ Builder.load_string('''
size_hint: 0.5, None
height: '48dp'
on_release:
+ root.callback(False)
popup.dismiss()
Button:
text: _('Yes')
size_hint: 0.5, None
height: '48dp'
on_release:
- root.callback()
+ root.callback(True)
popup.dismiss()
''')
DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
t@@ -264,6 +264,14 @@ class SendScreen(CScreen):
outputs = [(bitcoin.TYPE_ADDRESS, address, amount)]
message = unicode(self.screen.message)
amount = sum(map(lambda x:x[2], outputs))
+ if self.app.electrum_config.get('use_rbf'):
+ from dialogs.question import Question
+ d = Question(_('Should this transaction be replaceable?'), lambda b: self._do_send(amount, message, outputs, b))
+ d.open()
+ else:
+ self._do_send(amount, message, outputs, False)
+
+ def _do_send(self, amount, message, outputs, rbf):
# make unsigned transaction
coins = self.app.wallet.get_spendable_coins()
config = self.app.electrum_config
t@@ -276,7 +284,7 @@ class SendScreen(CScreen):
traceback.print_exc(file=sys.stdout)
self.app.show_error(str(e))
return
- if self.app.electrum_config.get('use_rbf'):
+ if rbf:
tx.set_sequence(0)
fee = tx.get_fee()
msg = [
t@@ -458,9 +466,10 @@ class InvoicesScreen(CScreen):
def do_delete(self, obj):
from dialogs.question import Question
- def cb():
- self.app.invoices.remove(obj.key)
- self.app.update_tab('invoices')
+ def cb(result):
+ if result:
+ self.app.invoices.remove(obj.key)
+ self.app.update_tab('invoices')
d = Question(_('Delete invoice?'), cb)
d.open()
t@@ -527,9 +536,10 @@ class RequestsScreen(CScreen):
def do_delete(self, obj):
from dialogs.question import Question
- def cb():
- self.app.wallet.remove_payment_request(obj.address, self.app.electrum_config)
- self.update()
+ def cb(result):
+ if result:
+ self.app.wallet.remove_payment_request(obj.address, self.app.electrum_config)
+ self.update()
d = Question(_('Delete request?'), cb)
d.open()