Commit Graph

1139 Commits

Author SHA1 Message Date
Neil Booth
12f62212ba Move wallet_kinds to the base class
This logic isn't gui-dependent so belongs in wizard.py
2016-01-02 00:35:09 +09:00
Neil Booth
11d135b32d Better install wizard
Break out the workflow logic of the install wizard
into a base class.  This means reimplementing with
full support in a new GUI is now easy; you just provide
ways to request passwords, show messages etc.  The API
is fully documented in the base class.

There are a couple of minor outstanding issues, including that
the old messages shown when recovering a wallet are missing.
I will come back to that.  Ledger wallet might be broken.

Other improvements:

The install wizard code is now easy to follow and understand.
Hardware wallets can now be restored without any need for their
accompanying libraries.
Various bits of trustedcoin were broken and have been fixed.
Many plugin hooks can be removed.  I have only started on this.
2016-01-01 16:48:18 +09:00
Neil Booth
441b695815 Break out logic into a function 2015-12-31 12:16:32 +09:00
Neil Booth
3df8d11f1a Pass the gui object to the install wizard 2015-12-31 12:09:23 +09:00
Neil Booth
bcabfaeccb Move install wizard invocations to one place
Fixes bugs whereby install wizard invoked from the GUI was missing
various things, such as updating recently used list, setting up
timers, etc.
2015-12-31 12:02:16 +09:00
Neil Booth
93d05e8cfe Have close_wallet hook take a wallet. 2015-12-31 10:31:49 +09:00
Neil Booth
1d51335827 Remove need for self.wallet for h/w wallets 2015-12-30 17:03:26 +09:00
Neil Booth
e0aab69e67 Better handling of watching only
Avoid unnecessary message at startup.
It can now be dynamic and menus, title bar update properly.
2015-12-28 22:51:50 +09:00
Neil Booth
8f91af28a5 More cleanup of WaitingDialog
Simplify its interface
2015-12-26 11:18:32 +09:00
Neil Booth
a58c19d7c0 Clean up and fix account adding
As per BIP44, 20 addresses are checked for transactions, not just the
first one.
Show the last account only if used or named.
If all accounts are used, prompt for password to create new one.

Fixes #1128
2015-12-25 23:34:04 +09:00
Neil Booth
ffd081ac21 Clean up WaitingDialog
Prevent GC so callers don't have to.
2015-12-23 22:10:11 +09:00
Neil Booth
37a49752eb Fix greenaddress modality and centring issues 2015-12-23 20:13:17 +09:00
Neil Booth
0ecf2565ce MessageBoxMixin-related cleanup 2015-12-23 20:05:09 +09:00
Neil Booth
6f4d4b9a1e Modality and centring fixes for QR codes 2015-12-23 18:42:01 +09:00
Neil Booth
9484b6371f More modality fixes and cleanups 2015-12-23 18:31:36 +09:00
Neil Booth
37b474716b Window modality fixes + improved password dialog 2015-12-23 17:32:08 +09:00
Neil Booth
62201b37f5 MacOSX fix
If these lines are the other way round, the buttons don't appear
on MacOSX!
2015-12-23 15:23:35 +09:00
Neil Booth
15e9991e2a Move message box logic to a mixin 2015-12-23 15:10:15 +09:00
Neil Booth
72fdf0cd21 Better error when opening a non-wallet file
Also window modality fixes for __init__.py
2015-12-23 13:54:43 +09:00
Neil Booth
1afb644203 Fix call to get_wallet_folder 2015-12-23 13:42:35 +09:00
Neil Booth
21e4a30371 Modality fixes for critical errors 2015-12-23 13:39:20 +09:00
Neil Booth
57d4b27696 Fix a bunch more modality issues for message boxes 2015-12-23 13:21:13 +09:00
Neil Booth
0a3a0f12cc Make more dialogs window-modal
Also remove some unnecessary imports
2015-12-23 12:20:19 +09:00
Neil Booth
0f431b23eb Make more dialogs window-modal 2015-12-23 11:52:36 +09:00
Neil Booth
4c36987845 Change password QT dialog window modal 2015-12-22 23:09:09 +09:00
Neil Booth
7437746cd2 Network dialog -> window modal
Clean up imports
2015-12-22 22:23:51 +09:00
Neil Booth
5c1828e03d Install wizard -> window-modal, fix missing import 2015-12-22 22:18:59 +09:00
Neil Booth
68da937e89 Address history dialog -> window modal 2015-12-22 22:11:37 +09:00
Neil Booth
d98451f114 Make more dialogs window modal 2015-12-22 22:05:27 +09:00
Neil Booth
6442dd59ad Make two more dialogs window-modal 2015-12-22 08:02:01 +09:00
Neil Booth
44a436e964 Make line_dialog, text_dialog window modal
Move new_wallet and get_wallet_folder from qt/__init__.py
to qt/main_window.py for correct centring and window modality.
2015-12-22 07:55:33 +09:00
Neil Booth
8598f9ef9c Permit sweep of private keys for watch-only wallet
Fixes #1585
Warn user if watching-only.
Introduce new helper class WindowModalDialog and use it in a couple
of places.  This is better than process-modal dialogs for our
multi-window daemon setup.
2015-12-21 23:52:48 +09:00
Neil Booth
2226667437 QT: Stop timer cleanly to avoid exceptions on exit 2015-12-20 16:15:33 +09:00
Neil Booth
e1c0298fc2 Write the wallet less often
This should speed up synchronization / restoration of large wallets.
Wallets are written only when they switch to up_to_date state, or
when stop_threads() is called when closing the daemon, or when
a command line command finishes.
2015-12-20 15:47:46 +09:00
ThomasV
9d3162b1a1 simplify get_label 2015-12-15 12:52:30 +01:00
Neil Booth
e9d0dd578a Put coin selection combo at bottom 2015-12-12 18:26:58 +09:00
Neil Booth
1524fa29af Raise dialog width slightly. 2015-12-12 18:20:49 +09:00
Neil Booth
36aaad392d Fix docstring display. 2015-12-12 18:11:07 +09:00
Neil Booth
34955bd0f5 Show value if available 2015-12-12 17:52:19 +09:00
Neil Booth
f3a7d3f2bf Show amount of inputs too. 2015-12-12 09:41:31 +09:00
ThomasV
0cef063ee2 add payment requests to kivy 2015-12-11 15:21:21 +01:00
Neil Booth
75b3ecee49 Add coin chooser to try and minimize loss of privacy. 2015-12-09 22:20:23 +09:00
ThomasV
84b18e0949 qt: save last active window, not last opened window 2015-12-05 16:53:56 +01:00
ThomasV
e9ee851bb2 fix: set auto_connect in installwizard 2015-12-03 23:50:50 +01:00
ThomasV
6ec610c359 kivy updates 2015-12-02 12:11:28 +01:00
Neil Booth
e190024f73 Only pass a fixed fee if it was user-specified.
Otherwise we inadvertently fix the fee at the prior calculated one,
which isn't what we want
2015-11-29 23:14:40 +09:00
ThomasV
19533dda15 load wallet in ElectrumWindow constructor 2015-11-24 12:10:43 +01:00
ThomasV
f09d80459d fix #1564 2015-11-24 11:13:48 +01:00
ThomasV
ba2c737a21 finish separation between plugins and GUIs 2015-11-24 09:36:42 +01:00
ThomasV
2c0489c809 plugins: separate GUIs using child classes 2015-11-23 14:15:25 +01:00
ThomasV
175fdbcac6 Disentangle plugins and window management; use Qt signals 2015-11-23 09:05:34 +01:00
Neil Booth
53f6fb9876 Add a GC debugger
Add commented-out GC debugging step
2015-11-14 10:47:44 +09:00
Neil Booth
50755d7db3 Use weakref for tabs in QShortCut lambdas
Unfortunately we have no way to directly destroy or remove the
lambdas embedded in the QShortcut objects, so this is the
only solution to avoid leaking references.  As the QShortcut
objects have the window as parent, they are destroyed with the
window so dangling refs to the destroyed window can't happen.

This and 91349d109e fix #1549.
2015-11-14 10:35:29 +09:00
Neil Booth
91349d109e Add explanatory comment. 2015-11-13 23:42:46 +09:00
Neil Booth
ae4cfc9f0b Unregister network callbacks from QT gui
Rework the callback system in QT to make this easy, and avoid
leaking window references that prevent the window from being
GC-ed on close
2015-11-13 23:36:29 +09:00
Neil Booth
51ebdc5ce8 Remove another non-existent callback 2015-11-12 15:33:58 +09:00
ThomasV
55fafc35c1 fix json_encode with python console 2015-11-09 16:09:57 +01:00
Neil Booth
7b40b63a3d Refresh all amount edits when units change.
Improved version of prior commit.
2015-11-09 20:06:36 +09:00
ThomasV
386319b015 clear send fields if unit setting is changed 2015-11-08 00:00:11 +01:00
ThomasV
798664e299 remove minimum window size 2015-11-06 17:13:11 +01:00
ThomasV
55494e4224 save window geometry in wallet file, since the GUI can open several windows 2015-11-02 15:53:31 +01:00
ThomasV
4a7c7a6616 installwizard: do not start in offline mode when disconnected (fix #1531) 2015-11-02 12:58:47 +01:00
ThomasV
77d6ee74f9 revert PR #1492. clear clipboard instead 2015-10-31 11:48:37 +01:00
ThomasV
dae9352c18 add warning against printers to seed dialog 2015-10-31 11:03:49 +01:00
ThomasV
b1ab49a282 Merge pull request #1492 from ctrlcctrlv/uncopyable-seed
Make seed uncopyable
2015-10-31 10:59:19 +01:00
ThomasV
2a3c97813d wallet.get_max_amount method, used by qt and kivy 2015-10-30 14:10:41 +01:00
ThomasV
bb7b0884e3 Various fixes for command line. Make 'payto' command require network (fixes #1525) 2015-10-29 11:06:09 +01:00
ThomasV
079cb311ec call wallet.wait_until_synchronized before commands 2015-10-29 05:01:06 +01:00
ThomasV
db0a5f9b31 fix: missing import 2015-10-28 12:10:43 +01:00
ThomasV
5f09ba661a sanitize inputs in network dialog 2015-10-28 12:07:45 +01:00
ThomasV
052d8b236e fix #1494 2015-10-28 10:36:44 +01:00
Neil Booth
41820eec29 Get correct domain in address_dialog
Fixes #1509
Also clean up imports.
2015-10-28 10:55:04 +09:00
ThomasV
26682491b2 generic restore from command line 2015-10-27 14:33:41 +01:00
Neil Booth
97568bedf5 Default to unused address for privkey sweeps
Fixes #1506

- New function wallet.get_unused_addresses
- Have wallet.get_unused_address use it
- Use it for the sweep key dialog
2015-10-26 20:33:35 +09:00
Fredrick Brennan
939ed8fe40 Merge branch 'master' of https://github.com/spesmilo/electrum into uncopyable-seed 2015-10-19 13:29:15 +08:00
Fredrick Brennan
7685758360 Make it so uncopyable seed only affects wizard
Previously it also affected the menu item Wallet->Seed, which is not the
expected or desired behavior.
2015-10-19 13:27:15 +08:00
ThomasV
f8e51e3323 remove themes, check python3 in setup.py 2015-10-18 12:43:20 +02:00
Fredrick Brennan
88ca99c624 Fix context menu when paranoid=False 2015-10-18 16:00:28 +08:00
Fredrick Brennan
b14b5d3dd4 Make seed uncopyable
Other wallets, such as Mycelium, do not allow the user to simply copy
and paste the seed. This is very useful to assure users follow
directions on the next screen, because previously it was easily possible
to just copy the seed and paste it on the next screen. The user's wallet
would work well for a while like this, but without having the seed
written down it's more of a ticking time bomb than a wallet.

I recommend pulling this patch as I have read many cases where users do
not write the seed down, and I believe that the main cause is lack of
friction forcing them to do so.

This patch was inspired by reading this Reddit conversation:

https://www.reddit.com/r/Bitcoin/comments/3p4bq1/electrum_v25/cw380kg

But I'm not a participant in that convo.
2015-10-18 15:42:11 +08:00
ThomasV
de92f1c98f fix #1488: add formerly deleted method 2015-10-17 20:53:33 +02:00
ThomasV
7a060e86b2 minor fix FX plugin 2015-10-17 12:46:05 +02:00
ThomasV
da79f02fc3 rm version_getter 2015-10-17 12:10:28 +02:00
ThomasV
302ce7c15b simplify exchange_rate hooks 2015-10-17 06:26:37 +02:00
ThomasV
dd679ccb27 bug report guidelines 2015-09-30 10:35:22 +02:00
ThomasV
242ee61ef4 restore previously deleted winpos-qt 2015-09-29 11:08:16 +02:00
Neil Booth
5071d75912 Clean up install wizard a little
Also fixes #1462
2015-09-26 17:19:42 +09:00
Neil Booth
cf44e65ba8 Rework resizing of send and receive tabs
Should fix #1458
They now function in essentially the same way.
2015-09-26 12:14:35 +09:00
ThomasV
f63bc61ec4 fix #1461 2015-09-25 17:23:54 +02:00
Joel Stanner
82a75f3949 Remove redundant "in"
For example, this avoids displaying "Request expires in [ in about 24 hours]"
2015-09-23 19:59:42 -07:00
Joel Stanner
cdbee6f4c9 Expiration value typo bug 2015-09-23 19:56:20 -07:00
fireduck64
978dddad80 Make verbage from requests a little more clear 2015-09-22 12:53:50 -07:00
ThomasV
6cec75150c fix docs link 2015-09-19 18:49:12 +02:00
ThomasV
6117c58a59 update documentation hard link 2015-09-18 13:18:29 +02:00
ThomasV
7f7d73a4a9 helper function without decorator: sign_tx_with_password 2015-09-11 17:38:01 +02:00
ThomasV
483cf2286f format_amount_and_units: general method to display amounts and fiat values. fixes #1078 2015-09-11 16:46:37 +02:00
ThomasV
7c4b749340 single dialog for confirmation and password 2015-09-11 16:22:16 +02:00
Neil Booth
c64e8b9885 Only write wallet if necessary 2015-09-10 17:57:50 +09:00
Neil Booth
886192aba7 Make trustedcoin.py multi-window compatible 2015-09-09 17:27:58 +09:00
Neil Booth
0371a3dc32 Don't refresh whilst editing!
It's long been a pet peeve of mine that whilst editing a label,
something would cause Electrum to refresh the widget, such as
an incoming tx or a new block, and you'd lose your edits.
This changes MyTreeWidget so that, if editing, updates are
deferred until editing finishes.
2015-09-09 09:36:35 +09:00
Neil Booth
544b829f6e Rework MyTreeWidget editing
Gets rid of need for EditableItem class.
New callback on_permit_edit to permit widgets to refuse editing.
Restores popup menu on activating a non-editable column behaviour.
2015-09-09 07:38:54 +09:00
ThomasV
533cdde366 right align numerical values in history widget 2015-09-08 12:09:22 +02:00
ThomasV
f3b0d83782 rename 'gui' console variable to 'window' 2015-09-08 09:37:12 +02:00
Neil Booth
39615333c0 Attribute more diagnostic messages 2015-09-06 22:04:44 +09:00
Neil Booth
9b50d1e7bc Fix history headers on plugin load / unload 2015-09-06 21:14:36 +09:00
Neil Booth
93b964f11d Two fixes for main_window.py
- initialize r when getting status text
- fix so settings widgets appear and are enabled
  appropriately
2015-09-06 19:38:44 +09:00
Neil Booth
1d35954541 Fix status bar FX balance display 2015-09-06 14:16:54 +09:00
Neil Booth
34ce6d1821 Updates for exchange_rate plugin
Have AmountEdit return an int if is_int, otherwise a Decimal
Set the tray tooltip unconditionally.
More verbose logging for exchage_rate plugin.
Get rate_float from Coindesk as rate can have commas.
Plugin tracks windows itself, and doesn't create its own
members in the window objects.
Clean up the edit handling.
2015-09-06 13:42:40 +09:00
Neil Booth
9e0e54157e More improvements to exchange_rate plugin
Everything should now update correctly on incoming data from
the exchange server.
2015-09-05 22:47:01 +09:00
ThomasV
24cd18e193 cleanup unneeded array in history widget 2015-09-05 10:09:01 +02:00
ThomasV
1f215ae673 cleanup 2015-09-05 09:35:09 +02:00
ThomasV
015e274dab rework exchange_rate hooks 2015-09-05 09:11:48 +02:00
ThomasV
0ef7320d7d remove forgotten file from lite gui 2015-09-05 08:41:04 +02:00
Neil Booth
9da22000b6 More improvements to exchange_rate plugin
- better historical rate handling, including caching
- grabbing and scanning wallet transactions no longer needed
- fix autosize of fiat column
- more efficient
2015-09-05 14:05:37 +09:00
Neil Booth
317582e9a7 Permit menu editing of address list
Fixes recent addition to #1435
2015-09-04 22:02:22 +09:00
Neil Booth
46067da42f Fix thinko
Fixes #1441
2015-09-04 21:52:36 +09:00
Neil Booth
835bc4e4aa More cleanup now self.window is gone
No need for self.main_window in gui object.
No need for hooks "init_qt" and "close_main_window".
2015-09-04 18:29:52 +09:00
Neil Booth
bbd50ba83c Remove all self.window references from plugins 2015-09-04 18:23:18 +09:00
Neil Booth
8e7bcfeeb9 Update email plugin for multiple windows. 2015-09-04 13:29:33 +09:00
Neil Booth
392335487b Add plugins variable to console 2015-09-04 10:27:28 +09:00
Neil Booth
77a029082a Improved new_window handling.
Remove new_window hook.
Plugin informed of all windows via events when first loaded.
init_qt no longer needed for exchange_rate plugin.
2015-09-04 10:20:52 +09:00
Neil Booth
fcc452d7b0 Fix window closing
Only closing via the menu did it properly.  Closing a window via
the window manager didn't shut the window down at all, because
the code wasn't in the closeEvent handler.
2015-09-04 10:10:44 +09:00
Neil Booth
8ce2a95695 Have plugins object track the window set
No need for self.gui nor init_qt hook any more.  This makes
plugins more independent of window and gui types.
2015-09-04 09:26:35 +09:00
ThomasV
897a5d34ed share contacts and invoices objects between windows 2015-09-03 16:52:40 +02:00
Roman Zeyde
a1586b2bb3 main_window: fix typo at do_process_from_text() 2015-09-03 12:36:23 +03:00
ThomasV
2a889d318b fix: make uri optional in new_window 2015-09-03 11:27:33 +02:00
ThomasV
3cc7c1454b move back URI rewriting to main electrum script 2015-09-03 11:18:35 +02:00
Neil Booth
87cff8e380 Check URI in "electrum" because of ambiguity 2015-09-03 18:07:15 +09:00
Neil Booth
27917af2bf Get URIs working properly for multiple windows 2015-09-03 17:52:41 +09:00
Neil Booth
14cc260092 Remove redundant config argument.
Also don't default path for clarity.
2015-09-03 16:40:48 +09:00
ThomasV
5df03951e5 move window initialization hook inside class 2015-09-03 08:24:05 +02:00
Neil Booth
49797c3094 Create a Plugins class
Encapsulates plugin logic and removes global variable ugliness.
2015-09-03 12:02:03 +09:00
Neil Booth
f2fb856f1c Exchange rate plugin fixes for multiple windows
This should be enough to keep everything working that was working
before.  The plugin itself needs a lot more work to fix existing
bugs and be sane.
2015-09-02 20:40:55 +09:00
ThomasV
992c70a688 detect available hardware wallets before listing them in wizard 2015-09-02 13:08:06 +02:00
ThomasV
280b5c79d2 minor fix 2015-09-02 12:11:52 +02:00
ThomasV
bdb4d3ecb8 move methods calling installwizard to main gui class 2015-09-02 12:05:33 +02:00
ThomasV
4e458b5639 minor fix 2015-09-02 10:09:48 +02:00
ThomasV
0cb8c21130 use wallet path instead of config 2015-09-02 10:06:45 +02:00
Neil Booth
3ac99af7c6 Remove unused variable 2015-09-02 17:00:33 +09:00
ThomasV
93c468504e use the parent config instance when daemon starts a window 2015-09-02 09:55:45 +02:00
ThomasV
3e4d332a4c strip spaces from txid dialog output 2015-09-02 09:15:34 +02:00
Neil Booth
90316d0459 Clean up imports, 2nd attempt 2015-09-02 12:06:11 +09:00
Neil Booth
0fa48b926c Fix system tray icon for multiple wallets
QT doesn't permit dynamic menus for QSystemTrayIcon for some reason
so we need to rebuild it each time the window set changes.
Add a close and hide/show submenu for each wallet.
Double click hides / shows all the wallets.
2015-09-02 11:48:03 +09:00
ThomasV
c33b223cbe Merge branch 'master' of git://github.com/spesmilo/electrum 2015-09-01 12:16:16 +02:00
ThomasV
ce06d92100 open each wallet in a separate window 2015-09-01 12:16:07 +02:00
Neil Booth
2b7a555f0f Unminimize and raise an existing window
if its wallet is requested.
2015-09-01 19:14:25 +09:00
Neil Booth
0fa38074de Fix menu editing 2015-09-01 17:08:12 +09:00
ThomasV
bbe64621ca close wallet when window is closed 2015-09-01 09:35:32 +02:00
ThomasV
f84d873f62 rm unneeded import 2015-09-01 09:01:02 +02:00
ThomasV
d4bba181c2 fix: show tabs in load_wallet 2015-09-01 01:18:02 +02:00
Neil Booth
2d05e7d891 Merge the network and network_proxy 2015-08-31 12:00:38 +09:00