electrum

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

commit 1c436bbc220c54aa1095ee8c078185da628b4a3a
parent 4d8fcded4b42fd673bbb61f85aa99dc329be28a4
Author: ThomasV <thomasv@electrum.org>
Date:   Tue, 26 May 2020 15:37:55 +0200

move units and amount formatting to simple_config

Diffstat:
Melectrum/gui/kivy/main_window.py | 12+++---------
Melectrum/gui/qt/main_window.py | 17+++++------------
Melectrum/gui/qt/settings_dialog.py | 15+++++++--------
Melectrum/simple_config.py | 33+++++++++++++++++++++++++++++++--
4 files changed, 46 insertions(+), 31 deletions(-)

diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py @@ -258,16 +258,10 @@ class ElectrumWindow(App): self.show_info(_('Payment failed') + '\n\n' + reason) def _get_bu(self): - decimal_point = self.electrum_config.get('decimal_point', DECIMAL_POINT_DEFAULT) - try: - return decimal_point_to_base_unit_name(decimal_point) - except UnknownBaseUnit: - return decimal_point_to_base_unit_name(DECIMAL_POINT_DEFAULT) + return self.electrum_config.get_base_unit() def _set_bu(self, value): - assert value in base_units.keys() - decimal_point = base_unit_name_to_decimal_point(value) - self.electrum_config.set_key('decimal_point', decimal_point, True) + self.electrum_config.set_base_unit(value) self._trigger_update_status() self._trigger_update_history() @@ -279,7 +273,7 @@ class ElectrumWindow(App): self._trigger_update_history() def decimal_point(self): - return base_units[self.base_unit] + return self.electrum_config.get_decimal_point() def btc_to_fiat(self, amount_str): if not amount_str: diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py @@ -192,12 +192,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): self.create_status_bar() self.need_update = threading.Event() - self.decimal_point = config.get('decimal_point', DECIMAL_POINT_DEFAULT) - try: - decimal_point_to_base_unit_name(self.decimal_point) - except UnknownBaseUnit: - self.decimal_point = DECIMAL_POINT_DEFAULT - self.num_zeros = int(config.get('num_zeros', 0)) self.completions = QStringListModel() @@ -859,24 +853,23 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): self.notify_transactions() def format_amount(self, x, is_diff=False, whitespaces=False): - return format_satoshis(x, self.num_zeros, self.decimal_point, is_diff=is_diff, whitespaces=whitespaces) + return self.config.format_amount(x, is_diff=is_diff, whitespaces=whitespaces) def format_amount_and_units(self, amount): - text = self.format_amount(amount) + ' '+ self.base_unit() + text = self.config.format_amount_and_units(amount) x = self.fx.format_amount_and_units(amount) if self.fx else None if text and x: text += ' (%s)'%x return text def format_fee_rate(self, fee_rate): - # fee_rate is in sat/kB - return format_fee_satoshis(fee_rate/1000, num_zeros=self.num_zeros) + ' sat/byte' + return self.config.format_fee_rate(fee_rate) def get_decimal_point(self): - return self.decimal_point + return self.config.get_decimal_point() def base_unit(self): - return decimal_point_to_base_unit_name(self.decimal_point) + return self.config.get_base_unit() def connect_fields(self, window, btc_e, fiat_e, fee_e): diff --git a/electrum/gui/qt/settings_dialog.py b/electrum/gui/qt/settings_dialog.py @@ -33,7 +33,7 @@ from PyQt5.QtWidgets import (QComboBox, QTabWidget, from electrum.i18n import _ from electrum import util, coinchooser, paymentrequest -from electrum.util import base_units_list, base_unit_name_to_decimal_point +from electrum.util import base_units_list from .util import (ColorScheme, WindowModalDialog, HelpLabel, Buttons, CloseButton) @@ -89,14 +89,14 @@ class SettingsDialog(WindowModalDialog): nz_label = HelpLabel(_('Zeros after decimal point') + ':', nz_help) nz = QSpinBox() nz.setMinimum(0) - nz.setMaximum(self.window.decimal_point) - nz.setValue(self.window.num_zeros) + nz.setMaximum(self.config.decimal_point) + nz.setValue(self.config.num_zeros) if not self.config.is_modifiable('num_zeros'): for w in [nz, nz_label]: w.setEnabled(False) def on_nz(): value = nz.value() - if self.window.num_zeros != value: - self.window.num_zeros = value + if self.config.num_zeros != value: + self.config.num_zeros = value self.config.set_key('num_zeros', value, True) self.window.history_list.update() self.window.address_list.update() @@ -209,9 +209,8 @@ you close all your wallet windows. Use this to keep your local watchtower runnin return edits = self.window.amount_e, self.window.receive_amount_e amounts = [edit.get_amount() for edit in edits] - self.window.decimal_point = base_unit_name_to_decimal_point(unit_result) - self.config.set_key('decimal_point', self.window.decimal_point, True) - nz.setMaximum(self.window.decimal_point) + self.config.set_base_unit(unit_result) + nz.setMaximum(self.config.decimal_point) self.window.history_list.update() self.window.request_list.update() self.window.address_list.update() diff --git a/electrum/simple_config.py b/electrum/simple_config.py @@ -13,8 +13,9 @@ from aiorpcx import NetAddress from . import util from . import constants -from .util import (user_dir, make_dir, - NoDynamicFeeEstimates, format_fee_satoshis, quantize_feerate) +from .util import base_units, base_unit_name_to_decimal_point +from .util import format_satoshis, format_fee_satoshis, decimal_point_to_base_unit_name, DECIMAL_POINT_DEFAULT +from .util import user_dir, make_dir, NoDynamicFeeEstimates, quantize_feerate from .i18n import _ from .logging import get_logger, Logger @@ -103,6 +104,14 @@ class SimpleConfig(Logger): self._check_dependent_keys() + # units and formatting + self.decimal_point = self.get('decimal_point', DECIMAL_POINT_DEFAULT) + try: + decimal_point_to_base_unit_name(self.decimal_point) + except UnknownBaseUnit: + self.decimal_point = DECIMAL_POINT_DEFAULT + self.num_zeros = int(self.get('num_zeros', 0)) + def electrum_path(self): # Read electrum_path from command line # Otherwise use the user's default data directory. @@ -604,6 +613,26 @@ class SimpleConfig(Logger): except: pass + def format_amount(self, x, is_diff=False, whitespaces=False): + return format_satoshis(x, self.num_zeros, self.decimal_point, is_diff=is_diff, whitespaces=whitespaces) + + def format_amount_and_units(self, amount): + return self.format_amount(amount) + ' '+ self.base_unit() + + def format_fee_rate(self, fee_rate): + return format_fee_satoshis(fee_rate/1000, num_zeros=self.num_zeros) + ' sat/byte' + + def get_base_unit(self): + return decimal_point_to_base_unit_name(self.decimal_point) + + def set_base_unit(self, unit): + assert unit in base_units.keys() + self.decimal_point = base_unit_name_to_decimal_point(unit) + self.set_key('decimal_point', self.decimal_point, True) + + def get_decimal_point(self): + return self.decimal_point + def read_user_config(path): """Parse and store the user config settings in electrum.conf into user_config[]."""