fix fee ui: offline case

This commit is contained in:
SomberNight 2017-12-30 01:10:20 +01:00
parent 9d4dd20b23
commit 6f954090e6
3 changed files with 24 additions and 8 deletions

View File

@ -44,7 +44,7 @@ from electrum.plugins import run_hook
from electrum.i18n import _
from electrum.util import (format_time, format_satoshis, PrintError,
format_satoshis_plain, NotEnoughFunds,
UserCancelled)
UserCancelled, NoDynamicFeeEstimates)
from electrum import Transaction
from electrum import util, bitcoin, commands, coinchooser
from electrum import paymentrequest
@ -1068,7 +1068,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
else:
self.config.set_key('fee_per_kb', fee_rate, False)
self.feerate_e.setAmount(fee_rate // 1000)
if fee_rate:
self.feerate_e.setAmount(fee_rate // 1000)
self.fee_e.setModified(False)
self.fee_slider.activate()
@ -1098,6 +1099,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.size_e = TxSizeLabel()
self.size_e.setAlignment(Qt.AlignCenter)
self.size_e.setAmount(0)
self.size_e.setFixedWidth(140)
self.size_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
self.feerate_e = FeerateEdit(lambda: 2 if self.fee_unit else 0)
@ -1242,17 +1244,24 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
if not outputs:
_type, addr = self.get_payto_or_dummy()
outputs = [(_type, addr, amount)]
try:
is_sweep = bool(self.tx_external_keypairs)
tx = self.wallet.make_unsigned_transaction(
is_sweep = bool(self.tx_external_keypairs)
make_tx = lambda fee_est: \
self.wallet.make_unsigned_transaction(
self.get_coins(), outputs, self.config,
fixed_fee=fee_estimator, is_sweep=is_sweep)
fixed_fee=fee_est, is_sweep=is_sweep)
try:
tx = make_tx(fee_estimator)
self.not_enough_funds = False
except NotEnoughFunds:
self.not_enough_funds = True
if not freeze_fee:
self.fee_e.setAmount(None)
return
except NoDynamicFeeEstimates:
tx = make_tx(0)
size = tx.estimated_size()
self.size_e.setAmount(size)
return
except BaseException:
traceback.print_exc(file=sys.stderr)
return

View File

@ -47,6 +47,12 @@ def normalize_version(v):
class NotEnoughFunds(Exception): pass
class NoDynamicFeeEstimates(Exception):
def __str__(self):
return _('Dynamic fee estimates not available')
class InvalidPassword(Exception):
def __str__(self):
return _("Incorrect password")

View File

@ -42,7 +42,8 @@ from numbers import Number
import sys
from .i18n import _
from .util import NotEnoughFunds, PrintError, UserCancelled, profiler, format_satoshis
from .util import (NotEnoughFunds, PrintError, UserCancelled, profiler,
format_satoshis, NoDynamicFeeEstimates)
from .bitcoin import *
from .version import *
@ -884,7 +885,7 @@ class Abstract_Wallet(PrintError):
raise NotEnoughFunds()
if fixed_fee is None and config.fee_per_kb() is None:
raise BaseException('Dynamic fee estimates not available')
raise NoDynamicFeeEstimates()
for item in inputs:
self.add_input_info(item)