Commit Graph

1152 Commits

Author SHA1 Message Date
ThomasV
39fc72dad6 add paste button to qt payto_e. fixes #6878 2020-12-27 12:01:43 +01:00
SomberNight
112ad72cee qt: follow-up passing-around-config
follow-up b28b3994c7

E | gui.qt.exception_window.Exception_Hook | exception caught by crash reporter
Traceback (most recent call last):
  File "...\electrum\electrum\gui\qt\main_window.py", line 670, in new_wallet
    self.gui_object.start_new_window(full_path, None)
  File "...\electrum\electrum\gui\qt\__init__.py", line 245, in wrapper
    return func(self, *args, **kwargs)
  File "...\electrum\electrum\gui\qt\__init__.py", line 269, in start_new_window
    wallet = self._start_wizard_to_select_or_create_wallet(path)
  File "...\electrum\electrum\gui\qt\__init__.py", line 311, in _start_wizard_to_select_or_create_wallet
    wizard.run('new')
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 153, in new
    self.choice_dialog(title=title, message=message, choices=choices, run_next=self.on_wallet_type)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 120, in func_wrapper
    run_next(*out)
  File "...\electrum\electrum\base_wizard.py", line 193, in on_wallet_type
    self.run(action)
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 201, in choose_multisig
    self.multisig_dialog(run_next=on_multisig)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 120, in func_wrapper
    run_next(*out)
  File "...\electrum\electrum\base_wizard.py", line 200, in on_multisig
    self.run('choose_keystore')
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 225, in choose_keystore
    self.choice_dialog(title=title, message=message, choices=choices, run_next=self.run)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 120, in func_wrapper
    run_next(*out)
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 275, in choose_hw_device
    self._choose_hw_device(purpose=purpose, storage=storage)
  File "...\electrum\electrum\base_wizard.py", line 358, in _choose_hw_device
    self.choice_dialog(title=title, message=msg, choices=choices,
  File "...\electrum\electrum\gui\qt\installwizard.py", line 120, in func_wrapper
    run_next(*out)
  File "...\electrum\electrum\base_wizard.py", line 359, in <lambda>
    run_next=lambda *args: self.on_device(*args, purpose=purpose, storage=storage))
  File "...\electrum\electrum\base_wizard.py", line 394, in on_device
    self.derivation_and_script_type_dialog(f)
  File "...\electrum\electrum\base_wizard.py", line 441, in derivation_and_script_type_dialog
    self.derivation_and_script_type_gui_specific_dialog(
  File "...\electrum\electrum\gui\qt\installwizard.py", line 120, in func_wrapper
    run_next(*out)
  File "...\electrum\electrum\base_wizard.py", line 393, in f
    self.run('on_hw_derivation', name, device_info, derivation, script_type)
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 490, in on_hw_derivation
    self.on_keystore(k)
  File "...\electrum\electrum\base_wizard.py", line 592, in on_keystore
    self.run('show_xpub_and_add_cosigners', xpub)
  File "...\electrum\electrum\base_wizard.py", line 115, in run
    f(*args, **kwargs)
  File "...\electrum\electrum\base_wizard.py", line 686, in show_xpub_and_add_cosigners
    self.show_xpub_dialog(xpub=xpub, run_next=lambda x: self.run('choose_keystore'))
  File "...\electrum\electrum\gui\qt\installwizard.py", line 106, in func_wrapper
    out = func(*args, **kwargs)
  File "...\electrum\electrum\gui\qt\installwizard.py", line 700, in show_xpub_dialog
    layout = SeedLayout(xpub, title=msg, icon=False, for_seed_words=False)
  File "...\electrum\electrum\gui\qt\seed_dialog.py", line 108, in __init__
    self.seed_e = ShowQRTextEdit(config=self.config)
AttributeError: 'SeedLayout' object has no attribute 'config'
2020-12-23 17:34:21 +01:00
SomberNight
21f13e21b1 wallet: fix bump_fee and dscancel for "not all inputs ismine" case
we fetch the missing prev txs over network

fixes #6551
fixes #6864
2020-12-20 15:29:41 +01:00
SomberNight
b28b3994c7 qt: move window.get{Open,Save}FileName to util
Sometimes we want its "remember path" behaviour but it does not make sense to
parent the dialog from main window. When so, caller code no longer needs to
get a reference to a main window.

Also rm last usages of get_parent_main_window().
2020-12-20 15:25:35 +01:00
SomberNight
096d853482 qt: rm some usages of get_parent_main_window
instead, pass around the main window or config (whichever is actually needed)

fixes #6342
2020-12-20 15:25:31 +01:00
ThomasV
6daf8b7534 kivy: show exception raised by lnworker.pay. fixes #6495 2020-12-20 11:30:18 +01:00
ThomasV
89a14996ce add method get_node_alias to lnworker 2020-12-19 15:10:15 +01:00
ThomasV
95203b0a55 channels_list: display node_id if node_alias is not available 2020-12-18 14:51:33 +01:00
bitromortac
c377694347 swaps: limit forward amount to receivable amount on lightning 2020-12-17 07:25:48 +01:00
bitromortac
903ad55b0b swaps: disable button if no channel present 2020-12-17 06:50:52 +01:00
SomberNight
ede9b4382a qt swap dialog: attempt at clearer logic (at the cost of more lines)
fixes #6853
2020-12-16 17:17:30 +01:00
SomberNight
f453bfe82e kivy: move "lightning" (gossip) btn inside "channels" dialog
and show toast msg when opening "channels" dialog if lightning
is not available for wallet
2020-12-16 14:22:22 +01:00
ThomasV
06b9d48535 kivy: allow address reuse in imported wallets. (fix #6852) 2020-12-16 12:33:58 +01:00
ThomasV
587ca5dd42 kivy: initialize app.android_backups from config, and show error message if save_backup raises an exception 2020-12-15 15:51:06 +01:00
SomberNight
c81551299e transaction: put full derivation paths into PSBT by default
There are three export options for exporting a PSBT.
The default option previously only put derivation path suffixes for pubkeys
(paths relative to the intermediate xpub), now it puts the full path
(if is known by the keystore).

The "export for hardware device; include xpubs" option works same as before:
it puts both full paths and also global xpubs into the PSBT.
Hence the difference between the default option and the "include xpubs" option
is now only that the latter puts global xpubs into the PSBT.

This change is largely made for user-convenient in mind.
Now exporting a PSBT should be less error-prone: particularly for the
single-signer coldcard with sdcard usage, the default option will now work.

closes #5969
related #5955
2020-12-10 17:39:12 +01:00
ThomasV
8872e43f27 cleanup, remove if statement (follow-up 13b05f64e6) 2020-12-10 17:21:41 +01:00
ThomasV
093a03ebcf Merge pull request #6836 from SomberNight/202012_kivy_fix_paths
kivy: fix some resource path issues
2020-12-10 11:01:02 +01:00
SomberNight
9e45108395 kivy: fix some resource path issues
When running kivy on Linux desktop,
running from git clone, `./run_electrum -g kivy` worked,
but `pip install -e .; electrum -g kivy` did not.
This was due to the relative paths using cwd as base.

see #6835
2020-12-10 07:30:31 +01:00
ThomasV
b6f63e1abf kivy: dismiss wizard dialog before calling go_back 2020-12-09 19:10:51 +01:00
SomberNight
d40bedb2ac also support uppercase bip21 URIs
related https://github.com/btcpayserver/btcpayserver/issues/2110
2020-12-09 16:09:12 +01:00
ghost43
b4cc420d0a Merge pull request #6300 from SomberNight/202006_qt_statusbarbutton
qt StatusBarButton: use QToolButton instead of QPushButton
2020-12-09 12:42:23 +00:00
SomberNight
5b9c972499 qt StatusBarButton: use custom theme for macOS if using default theme 2020-12-09 12:41:19 +01:00
SomberNight
6f14375a68 qt StatusBarButton: use QToolButton instead of QPushButton
related: #6299
2020-12-09 12:15:55 +01:00
ThomasV
07bc4c40ef kivy: add on_dismiss method to crash reporter dialog 2020-12-09 10:22:42 +01:00
ThomasV
9ddb675550 kivy: handle lightning invoices on wallets that do not have lightning. fix #6371 2020-12-09 10:04:49 +01:00
SomberNight
2ebd844b31 qt swap dialog: fix enabling OK button
fixes #6831
2020-12-09 08:20:46 +01:00
ThomasV
6273b4808f kivy: ensure WizardDialog.on_release is not executed more than once (see #6822) 2020-12-08 19:42:21 +01:00
ThomasV
1684b348df Qt: keep pending_invoice logic in main_window (follow-up 56579c2, fixes #5829) 2020-12-08 13:12:57 +01:00
ThomasV
8bdd44edcb kivy: remove redundant declaration 2020-12-08 10:44:59 +01:00
SomberNight
95b08e9961 plugins: remove 'on_new_window' hook 2020-12-08 10:33:43 +01:00
SomberNight
376ee395f8 kivy: (fix) clicking "max" to send would raise for empty wallet
fix #6812
2020-12-08 08:47:13 +01:00
SomberNight
78513affe5 kivy: fix open channel with "max" amt
related #6169

E | gui.kivy.uix.dialogs.lightning_open_channel.LightningOpenChannelDialog | Problem opening channel
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py", line 167, in do_open_channel
    chan, funding_tx = lnworker.open_channel(
  File "/home/user/wspace/electrum/electrum/lnworker.py", line 859, in open_channel
    if funding_sat > LN_MAX_FUNDING_SAT:
TypeError: '>' not supported between instances of 'str' and 'int'
2020-12-07 15:38:10 +01:00
ThomasV
dc810f131d kivy: wizard does not need Factory 2020-12-07 10:53:53 +01:00
ValdikSS
276d8f9a4d Use os._exit() for FORKed child browser opener process. Fixes #6404.
On Linux, when Electrum is executed from Appimage file, to prevent system library
inconsistence for Electrum and web browser and all issues involving that,
Electrum starts web browser and opens web page upon clicking on
'View on block explorer' by fork()'ing the process, unsetting
its custom LD_LIBRARY_PATH environment variable in the child process,
and calling webbrowser.open().

Due to incorrect usage of sys.exit() instead of os._exit() for child process,
Electrum (parent) can't be terminated and endlessly waits for child process upon
exit, while child process does nothing but still exists.

Fix this issue by using os._exit function, which should be used for
child processes (not only in Python).
2020-12-06 20:42:42 +03:00
ThomasV
40fbf3a929 follow-up c66c54a (simplification) 2020-12-06 13:16:17 +01:00
ThomasV
305ca90647 revert a9fc440, use Clock.schedule_interval to set address. Fixes #6810 and #6817 2020-12-06 11:51:15 +01:00
ThomasV
863cc39995 kivy: dismiss invoice_dialog before delete (fix #6816) 2020-12-05 22:18:58 +01:00
ThomasV
2f13e4eb85 kivy: do not save invoice until payment is confirmed by user.
add confirmation screen for lightning payments.
2020-12-05 19:55:55 +01:00
ThomasV
f020125e74 kivy screens: initialize is_max (fix #6813) 2020-12-05 19:48:10 +01:00
ThomasV
56579c282e Qt: do not save pending invoice before the user has confirmed payment 2020-12-05 19:27:54 +01:00
ThomasV
5a5ec81e10 kivy: disable send amount button if lightning invoice has an amount, and fix #6526 2020-12-05 18:26:23 +01:00
ThomasV
64292fd142 fix #4503: in kivy, catch NotEnoughFunds raised on open channel. 2020-12-05 10:27:35 +01:00
ThomasV
8aecbca11c fix #4561 2020-12-04 21:45:33 +01:00
ThomasV
e881908b43 remove unused declaration 2020-12-04 16:31:21 +01:00
ThomasV
5058cf9d22 kivy wizard: if wallet creation is aborted, show message in the wizard and stop the GUI. (see #6796) 2020-12-04 15:16:30 +01:00
ThomasV
13b05f64e6 kivy: split on_wizard_complete in two methods 2020-12-04 11:59:55 +01:00
bitromortac
08698ad607 swaps: fix infinite recursion for max button 2020-12-04 10:22:42 +01:00
ThomasV
3f9d7d8b33 kivy: save password after wallet creation
Previously, operations that require password
would fail until the wallet is reopened
2020-12-03 10:36:45 +01:00
ThomasV
7ce4727507 kivy wizard: do call run() when password dialog is dismissed, it modifies the stack. (see #6582) 2020-12-02 11:23:03 +01:00
ThomasV
2923c00d38 kivy: do not use an event to call on_wizard_complete, initialize self.app in constructor 2020-12-01 13:18:04 +01:00