From 1b0521cabd07689fcd83fac7254565adbc9b6072 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Mon, 14 Oct 2019 11:59:04 +0200 Subject: [PATCH] kivy: toggle lightning dialog --- electrum/gui/kivy/main_window.py | 38 ++++++++++++++++++++-- electrum/gui/kivy/uix/ui_screens/status.kv | 10 ++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py index 062a76059..80bdbc95e 100644 --- a/electrum/gui/kivy/main_window.py +++ b/electrum/gui/kivy/main_window.py @@ -42,6 +42,7 @@ from .uix.dialogs.installwizard import InstallWizard from .uix.dialogs import InfoBubble, crash_reporter from .uix.dialogs import OutputList, OutputItem from .uix.dialogs import TopLabel, RefLabel +from .uix.dialogs.question import Question #from kivy.core.window import Window #Window.softinput_mode = 'below_target' @@ -613,7 +614,6 @@ class ElectrumWindow(App): if not ask_if_wizard: launch_wizard() else: - from .uix.dialogs.question import Question def handle_answer(b: bool): if b: launch_wizard() @@ -676,6 +676,9 @@ class ElectrumWindow(App): d.open() def lightning_channels_dialog(self): + if not self.wallet.has_lightning(): + self.show_error('Lightning not enabled on this wallet') + return if self._channels_dialog is None: self._channels_dialog = LightningChannelsDialog(self) self._channels_dialog.open() @@ -1073,8 +1076,39 @@ class ElectrumWindow(App): else: f(*(args + (None,))) + def toggle_lightning(self): + if self.wallet.has_lightning(): + if not bool(self.wallet.lnworker.channels): + warning = _('This will delete your lightning private keys') + d = Question(_('Disable Lightning?') + '\n\n' + warning, self._disable_lightning) + d.open() + else: + self.show_info('This wallet has channels') + else: + warning1 = _("Lightning support in Electrum is experimental. Do not put large amounts in lightning channels.") + warning2 = _("Funds stored in lightning channels are not recoverable from your seed. You must backup your wallet file everytime you crate a new channel.") + d = Question(_('Enable Lightning?') + '\n\n' + warning1 + '\n\n' + warning2, self._enable_lightning) + d.open() + + def _enable_lightning(self, b): + if not b: + return + wallet_path = self.get_wallet_path() + self.wallet.init_lightning() + self.show_info(_('Lightning keys have been initialized.')) + self.stop_wallet() + self.load_wallet_by_name(wallet_path) + + def _disable_lightning(self, b): + if not b: + return + wallet_path = self.get_wallet_path() + self.wallet.remove_lightning() + self.show_info(_('Lightning keys have been removed.')) + self.stop_wallet() + self.load_wallet_by_name(wallet_path) + def delete_wallet(self): - from .uix.dialogs.question import Question basename = os.path.basename(self.wallet.storage.path) d = Question(_('Delete wallet?') + '\n' + basename, self._delete_wallet) d.open() diff --git a/electrum/gui/kivy/uix/ui_screens/status.kv b/electrum/gui/kivy/uix/ui_screens/status.kv index c2adc6546..f23188bac 100644 --- a/electrum/gui/kivy/uix/ui_screens/status.kv +++ b/electrum/gui/kivy/uix/ui_screens/status.kv @@ -29,6 +29,9 @@ Popup: BoxLabel: text: _("Wallet type:") value: app.wallet.wallet_type + BoxLabel: + text: _("Lightning:") + value: _('Enabled') if app.wallet.has_lightning() else _('Disabled') BoxLabel: text: _("Balance") + ':' value: app.format_amount_and_units(root.confirmed + root.unconfirmed + root.unmatured) @@ -77,6 +80,13 @@ Popup: on_release: root.dismiss() app.delete_wallet() + Button: + size_hint: 0.5, None + height: '48dp' + text: _('Disable LN') if app.wallet.has_lightning() else _('Enable LN') + on_release: + root.dismiss() + app.toggle_lightning() Button: size_hint: 0.5, None height: '48dp'