coinchooser methods should not belong in wallet class

This commit is contained in:
ThomasV 2016-03-10 16:37:45 +01:00
parent d9c567446c
commit bca0f31fca
4 changed files with 21 additions and 21 deletions

View File

@ -8,6 +8,7 @@ from electrum.i18n import languages
from electrum_gui.kivy.i18n import _ from electrum_gui.kivy.i18n import _
from electrum.plugins import run_hook from electrum.plugins import run_hook
from electrum.bitcoin import RECOMMENDED_FEE from electrum.bitcoin import RECOMMENDED_FEE
from electrum import coinchooser
from choice_dialog import ChoiceDialog from choice_dialog import ChoiceDialog
@ -157,13 +158,12 @@ class SettingsDialog(Factory.Popup):
self._unit_dialog.open() self._unit_dialog.open()
def coinselect_status(self): def coinselect_status(self):
return self.app.wallet.coin_chooser_name(self.app.electrum_config) return coinchooser.get_name(self.app.electrum_config)
def coinselect_dialog(self, item, dt): def coinselect_dialog(self, item, dt):
if self._coinselect_dialog is None: if self._coinselect_dialog is None:
from electrum import COIN_CHOOSERS choosers = sorted(coinchooser.COIN_CHOOSERS.keys())
choosers = sorted(COIN_CHOOSERS.keys()) chooser_name = coinchooser.get_name(self.config)
chooser_name = self.app.wallet.coin_chooser_name(self.config)
def cb(text): def cb(text):
self.config.set_key('coin_chooser', text) self.config.set_key('coin_chooser', text)
item.status = text item.status = text

View File

@ -49,8 +49,8 @@ from electrum.util import (block_explorer, block_explorer_info, format_time,
format_satoshis_plain, NotEnoughFunds, StoreDict, format_satoshis_plain, NotEnoughFunds, StoreDict,
UserCancelled) UserCancelled)
from electrum import Transaction, mnemonic from electrum import Transaction, mnemonic
from electrum import util, bitcoin, commands from electrum import util, bitcoin, commands, coinchooser
from electrum import SimpleConfig, COIN_CHOOSERS, paymentrequest from electrum import SimpleConfig, paymentrequest
from electrum.wallet import Wallet, BIP32_RD_Wallet, Multisig_Wallet from electrum.wallet import Wallet, BIP32_RD_Wallet, Multisig_Wallet
from amountedit import BTCAmountEdit, MyLineEdit, BTCkBEdit from amountedit import BTCAmountEdit, MyLineEdit, BTCkBEdit
@ -2845,10 +2845,10 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
lines = [ln.lstrip(" ") for ln in klass.__doc__.split("\n")] lines = [ln.lstrip(" ") for ln in klass.__doc__.split("\n")]
return '\n'.join([key, "", " ".join(lines)]) return '\n'.join([key, "", " ".join(lines)])
choosers = sorted(COIN_CHOOSERS.keys()) choosers = sorted(coinchooser.COIN_CHOOSERS.keys())
chooser_name = self.wallet.coin_chooser_name(self.config) chooser_name = coinchooser.get_name(self.config)
msg = _('Choose coin (UTXO) selection method. The following are available:\n\n') msg = _('Choose coin (UTXO) selection method. The following are available:\n\n')
msg += '\n\n'.join(fmt_docs(*item) for item in COIN_CHOOSERS.items()) msg += '\n\n'.join(fmt_docs(*item) for item in coinchooser.COIN_CHOOSERS.items())
chooser_label = HelpLabel(_('Coin selection') + ':', msg) chooser_label = HelpLabel(_('Coin selection') + ':', msg)
chooser_combo = QComboBox() chooser_combo = QComboBox()
chooser_combo.addItems(choosers) chooser_combo.addItems(choosers)

View File

@ -308,3 +308,13 @@ class CoinChooserPrivacy(CoinChooserRandom):
COIN_CHOOSERS = {'Priority': CoinChooserOldestFirst, COIN_CHOOSERS = {'Priority': CoinChooserOldestFirst,
'Privacy': CoinChooserPrivacy} 'Privacy': CoinChooserPrivacy}
def get_name(config):
kind = config.get('coin_chooser')
if not kind in COIN_CHOOSERS:
kind = 'Priority'
return kind
def get_coin_chooser(config):
klass = COIN_CHOOSERS[get_name(config)]
return klass()

View File

@ -47,7 +47,7 @@ from version import *
from transaction import Transaction from transaction import Transaction
from plugins import run_hook from plugins import run_hook
import bitcoin import bitcoin
from coinchooser import COIN_CHOOSERS import coinchooser
from synchronizer import Synchronizer from synchronizer import Synchronizer
from verifier import SPV from verifier import SPV
from mnemonic import Mnemonic from mnemonic import Mnemonic
@ -921,16 +921,6 @@ class Abstract_Wallet(PrintError):
# this method can be overloaded # this method can be overloaded
return tx.get_fee() return tx.get_fee()
def coin_chooser_name(self, config):
kind = config.get('coin_chooser')
if not kind in COIN_CHOOSERS:
kind = 'Priority'
return kind
def coin_chooser(self, config):
klass = COIN_CHOOSERS[self.coin_chooser_name(config)]
return klass()
def make_unsigned_transaction(self, coins, outputs, config, fixed_fee=None, change_addr=None): def make_unsigned_transaction(self, coins, outputs, config, fixed_fee=None, change_addr=None):
# check outputs # check outputs
for type, data, value in outputs: for type, data, value in outputs:
@ -975,7 +965,7 @@ class Abstract_Wallet(PrintError):
# Let the coin chooser select the coins to spend # Let the coin chooser select the coins to spend
max_change = self.max_change_outputs if self.multiple_change else 1 max_change = self.max_change_outputs if self.multiple_change else 1
coin_chooser = self.coin_chooser(config) coin_chooser = coinchooser.get_coin_chooser(config)
tx = coin_chooser.make_tx(coins, outputs, change_addrs[:max_change], tx = coin_chooser.make_tx(coins, outputs, change_addrs[:max_change],
fee_estimator, dust_threshold) fee_estimator, dust_threshold)