URI: 
       tcheck gui when loading plugins - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit d40c12c9490f59be6bea15f46d9ca0072f936ac3
   DIR parent a48a7951a791e8de52c76c0fea6e94cd80de9c99
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sun, 24 May 2015 09:26:28 +0200
       
       check gui when loading plugins
       
       Diffstat:
         M electrum                            |      12 ++++++------
         M lib/plugins.py                      |       7 +++++--
         M plugins/__init__.py                 |      33 +++++++++++++++++++------------
       
       3 files changed, 31 insertions(+), 21 deletions(-)
       ---
   DIR diff --git a/electrum b/electrum
       t@@ -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:
   DIR diff --git a/lib/plugins.py b/lib/plugins.py
       t@@ -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 = []
       t@@ -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')
       t@@ -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):
   DIR diff --git a/plugins/__init__.py b/plugins/__init__.py
       t@@ -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',
       t@@ -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',
       t@@ -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',
       t@@ -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',
       t@@ -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'],
            }
        ]