URI: 
       tmove units and amount formatting to simple_config - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 1c436bbc220c54aa1095ee8c078185da628b4a3a
   DIR parent 4d8fcded4b42fd673bbb61f85aa99dc329be28a4
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 26 May 2020 15:37:55 +0200
       
       move units and amount formatting to simple_config
       
       Diffstat:
         M electrum/gui/kivy/main_window.py    |      12 +++---------
         M electrum/gui/qt/main_window.py      |      17 +++++------------
         M electrum/gui/qt/settings_dialog.py  |      15 +++++++--------
         M electrum/simple_config.py           |      33 +++++++++++++++++++++++++++++--
       
       4 files changed, 46 insertions(+), 31 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py
       t@@ -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()
        
       t@@ -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:
   DIR diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py
       t@@ -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()
        
       t@@ -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):
        
   DIR diff --git a/electrum/gui/qt/settings_dialog.py b/electrum/gui/qt/settings_dialog.py
       t@@ -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)
       t@@ -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()
       t@@ -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()
   DIR diff --git a/electrum/simple_config.py b/electrum/simple_config.py
       t@@ -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
        
       t@@ -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.
       t@@ -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[]."""