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()