tkivy: toggle lightning dialog - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 1b0521cabd07689fcd83fac7254565adbc9b6072 DIR parent a13cea6f8ac47b37ad1740539072321e2418bf8c HTML Author: ThomasV <thomasv@electrum.org> Date: Mon, 14 Oct 2019 11:59:04 +0200 kivy: toggle lightning dialog Diffstat: M electrum/gui/kivy/main_window.py | 38 +++++++++++++++++++++++++++++-- M electrum/gui/kivy/uix/ui_screens/s… | 10 ++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) --- DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py t@@ -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' t@@ -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() t@@ -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() t@@ -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() DIR diff --git a/electrum/gui/kivy/uix/ui_screens/status.kv b/electrum/gui/kivy/uix/ui_screens/status.kv t@@ -30,6 +30,9 @@ Popup: 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) BoxLabel: t@@ -80,6 +83,13 @@ Popup: 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' text: _('Close') on_release: root.dismiss()