electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit d40c12c9490f59be6bea15f46d9ca0072f936ac3
parent a48a7951a791e8de52c76c0fea6e94cd80de9c99
Author: ThomasV <thomasv@gitorious>
Date:   Sun, 24 May 2015 09:26:28 +0200

check gui when loading plugins

Diffstat:
Melectrum | 12++++++------
Mlib/plugins.py | 7+++++--
Mplugins/__init__.py | 33++++++++++++++++++++-------------
3 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/electrum b/electrum @@ -222,14 +222,14 @@ if __name__ == '__main__': else: cmd = args[0] + gui_name = config.get('gui', 'qt') if cmd == 'gui' else 'cmdline' + if gui_name in ['lite', 'classic']: + gui_name = 'qt' + # initialize plugins. - # FIXME: check gui - init_plugins(config, is_bundle or is_local or is_android, cmd=='gui') + init_plugins(config, is_bundle or is_local or is_android, gui_name) - if cmd == 'gui': - gui_name = config.get('gui', 'classic') - if gui_name in ['lite', 'classic']: - gui_name = 'qt' + if gui_name != 'cmdline': try: gui = __import__('electrum_gui.' + gui_name, fromlist=['electrum_gui']) except ImportError: diff --git a/lib/plugins.py b/lib/plugins.py @@ -24,7 +24,7 @@ import pkgutil from util import * from i18n import _ -from util import print_error +from util import print_error, profiler plugins = {} descriptions = [] @@ -49,7 +49,8 @@ def is_available(name, w): return True -def init_plugins(config, is_local, is_gui): +@profiler +def init_plugins(config, is_local, gui_name): global plugins, descriptions, loader if is_local: fp, pathname, description = imp.find_module('plugins') @@ -73,6 +74,8 @@ def init_plugins(config, is_local, is_gui): descriptions = electrum_plugins.descriptions for item in descriptions: name = item['name'] + if gui_name not in item.get('available_for', []): + continue if item.get('registers_wallet_type'): register_wallet_type(name) if not config.get('use_' + name): diff --git a/plugins/__init__.py b/plugins/__init__.py @@ -25,7 +25,7 @@ descriptions = [ 'description': ('Provides support for air-gapped transaction signing.\n\n' 'Requires http://github.com/romanz/amodem/'), 'requires': ['amodem'], - 'GUI': ['qt'] + 'available_for': ['qt'], }, { 'name': 'btchipwallet', @@ -33,7 +33,8 @@ descriptions = [ 'description': _('Provides support for BTChip hardware wallet') + '\n\n' + _('Requires github.com/btchip/btchip-python'), 'requires': ['btchip'], 'requires_wallet_type': ['btchip'], - 'registers_wallet_type': True + 'registers_wallet_type': True, + 'available_for': ['qt'], }, { 'name': 'cosigner_pool', @@ -43,29 +44,33 @@ descriptions = [ _("It sends and receives partially signed transactions from/to your cosigner wallet."), _("Transactions are encrypted and stored on a remote server.") ]), - 'GUI': ['qt'], - 'requires_wallet_type': ['2of2', '2of3'] + 'requires_wallet_type': ['2of2', '2of3'], + 'available_for': ['qt'], }, { 'name': 'exchange_rate', 'fullname': _("Exchange rates"), - 'description': """exchange rates, retrieved from blockchain.info, CoinDesk, or Coinbase""" + 'description': """exchange rates, retrieved from blockchain.info, CoinDesk, or Coinbase""", + 'available_for': ['qt'], }, { 'name': 'greenaddress_instant', 'fullname': 'GreenAddress instant', - 'description': _("Allows validating if your transactions have instant confirmations by GreenAddress") + 'description': _("Allows validating if your transactions have instant confirmations by GreenAddress"), + 'available_for': ['qt'], }, { 'name': 'labels', 'fullname': _('LabelSync'), - 'description': '%s\n\n%s' % (_("The new and improved LabelSync plugin. This can sync your labels across multiple Electrum installs by using a remote database to save your data. Labels, transactions ids and addresses are encrypted before they are sent to the remote server."), _("The label sync's server software is open-source as well and can be found on github.com/maran/electrum-sync-server")) + 'description': '%s\n\n%s' % (_("The new and improved LabelSync plugin. This can sync your labels across multiple Electrum installs by using a remote database to save your data. Labels, transactions ids and addresses are encrypted before they are sent to the remote server."), _("The label sync's server software is open-source as well and can be found on github.com/maran/electrum-sync-server")), + 'available_for': ['qt'] }, { 'name': 'openalias', 'fullname': 'OpenAlias', 'description': 'Allow for payments to OpenAlias addresses.\nRequires dnspython', - 'requires': ['dns'] + 'requires': ['dns'], + 'available_for': ['qt'] }, { 'name': 'plot', @@ -75,16 +80,17 @@ descriptions = [ _("Warning: Requires matplotlib library.") ]), 'requires': ['matplotlib'], - 'GUI': ['qt'] + 'available_for': ['qt'], }, { 'name':'trezor', 'fullname': 'Trezor Wallet', 'description': 'Provides support for Trezor hardware wallet\n\nRequires github.com/trezor/python-trezor', - 'GUI': ['qt'], + 'available_for': ['qt'], 'requires': ['trezorlib'], 'requires_wallet_type': ['trezor'], - 'registers_wallet_type': True + 'registers_wallet_type': True, + 'available_for': ['qt', 'cmdline'] }, { 'name': 'trustedcoin', @@ -94,13 +100,14 @@ descriptions = [ _("For more information, visit"), " <a href=\"https://api.trustedcoin.com/#/electrum-help\">https://api.trustedcoin.com/#/electrum-help</a>" ]), - 'GUI': ['none', 'qt'], 'requires_wallet_type': ['2fa'], - 'registers_wallet_type': True + 'registers_wallet_type': True, + 'available_for': ['qt', 'cmdline'], }, { 'name': 'virtualkeyboard', 'fullname': 'Virtual Keyboard', 'description': '%s\n%s' % (_("Add an optional virtual keyboard to the password dialog."), _("Warning: do not use this if it makes you pick a weaker password.")), + 'available_for': ['qt'], } ]