Browse Source

SimpleConfig: change API of set_key(): "save" is now kwarg-only

master
SomberNight 3 years ago
parent
commit
03ab33f4b2
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 4
      electrum/exchange_rate.py
  2. 8
      electrum/gui/kivy/main_window.py
  3. 10
      electrum/gui/kivy/uix/dialogs/fee_dialog.py
  4. 2
      electrum/gui/kivy/uix/dialogs/settings.py
  5. 10
      electrum/gui/qml/qeconfig.py
  6. 10
      electrum/gui/qml/qetxfinalizer.py
  7. 2
      electrum/gui/qt/__init__.py
  8. 6
      electrum/gui/qt/confirm_tx_dialog.py
  9. 4
      electrum/gui/qt/installwizard.py
  10. 14
      electrum/gui/qt/settings_dialog.py
  11. 6
      electrum/gui/qt/swap_dialog.py
  12. 4
      electrum/gui/qt/util.py
  13. 2
      electrum/gui/text.py
  14. 8
      electrum/network.py
  15. 4
      electrum/plugin.py
  16. 2
      electrum/plugins/trustedcoin/qt.py
  17. 8
      electrum/simple_config.py

4
electrum/exchange_rate.py

@ -599,7 +599,7 @@ class FxThread(ThreadJob, EventListener):
def set_currency(self, ccy: str): def set_currency(self, ccy: str):
self.ccy = ccy self.ccy = ccy
self.config.set_key('currency', ccy, True) self.config.set_key('currency', ccy, save=True)
self.trigger_update() self.trigger_update()
self.on_quotes() self.on_quotes()
@ -611,7 +611,7 @@ class FxThread(ThreadJob, EventListener):
class_ = globals().get(name) or globals().get(DEFAULT_EXCHANGE) class_ = globals().get(name) or globals().get(DEFAULT_EXCHANGE)
self.logger.info(f"using exchange {name}") self.logger.info(f"using exchange {name}")
if self.config_exchange() != name: if self.config_exchange() != name:
self.config.set_key('use_exchange', name, True) self.config.set_key('use_exchange', name, save=True)
assert issubclass(class_, ExchangeBase), f"unexpected type {class_} for {name}" assert issubclass(class_, ExchangeBase), f"unexpected type {class_} for {name}"
self.exchange = class_(self.on_quotes, self.on_history) # type: ExchangeBase self.exchange = class_(self.on_quotes, self.on_history) # type: ExchangeBase
# A new exchange means new fx quotes, initially empty. Force # A new exchange means new fx quotes, initially empty. Force

8
electrum/gui/kivy/main_window.py

@ -196,7 +196,7 @@ class ElectrumWindow(App, Logger, EventListener):
use_gossip = BooleanProperty(False) use_gossip = BooleanProperty(False)
def on_use_gossip(self, instance, x): def on_use_gossip(self, instance, x):
self.electrum_config.set_key('use_gossip', self.use_gossip, True) self.electrum_config.set_key('use_gossip', self.use_gossip, save=True)
if self.network: if self.network:
if self.use_gossip: if self.use_gossip:
self.network.start_gossip() self.network.start_gossip()
@ -206,7 +206,7 @@ class ElectrumWindow(App, Logger, EventListener):
enable_debug_logs = BooleanProperty(False) enable_debug_logs = BooleanProperty(False)
def on_enable_debug_logs(self, instance, x): def on_enable_debug_logs(self, instance, x):
self.electrum_config.set_key('gui_enable_debug_logs', self.enable_debug_logs, True) self.electrum_config.set_key('gui_enable_debug_logs', self.enable_debug_logs, save=True)
use_change = BooleanProperty(False) use_change = BooleanProperty(False)
def on_use_change(self, instance, x): def on_use_change(self, instance, x):
@ -217,11 +217,11 @@ class ElectrumWindow(App, Logger, EventListener):
use_unconfirmed = BooleanProperty(False) use_unconfirmed = BooleanProperty(False)
def on_use_unconfirmed(self, instance, x): def on_use_unconfirmed(self, instance, x):
self.electrum_config.set_key('confirmed_only', not self.use_unconfirmed, True) self.electrum_config.set_key('confirmed_only', not self.use_unconfirmed, save=True)
use_recoverable_channels = BooleanProperty(True) use_recoverable_channels = BooleanProperty(True)
def on_use_recoverable_channels(self, instance, x): def on_use_recoverable_channels(self, instance, x):
self.electrum_config.set_key('use_recoverable_channels', self.use_recoverable_channels, True) self.electrum_config.set_key('use_recoverable_channels', self.use_recoverable_channels, save=True)
def switch_to_send_screen(func): def switch_to_send_screen(func):
# try until send_screen is available # try until send_screen is available

10
electrum/gui/kivy/uix/dialogs/fee_dialog.py

@ -99,15 +99,15 @@ class FeeSliderDialog:
def save_config(self): def save_config(self):
value = int(self.slider.value) value = int(self.slider.value)
dynfees, mempool = self.get_method() dynfees, mempool = self.get_method()
self.config.set_key('dynamic_fees', dynfees, False) self.config.set_key('dynamic_fees', dynfees, save=False)
self.config.set_key('mempool_fees', mempool, False) self.config.set_key('mempool_fees', mempool, save=False)
if dynfees: if dynfees:
if mempool: if mempool:
self.config.set_key('depth_level', value, True) self.config.set_key('depth_level', value, save=True)
else: else:
self.config.set_key('fee_level', value, True) self.config.set_key('fee_level', value, save=True)
else: else:
self.config.set_key('fee_per_kb', self.config.static_fee(value), True) self.config.set_key('fee_per_kb', self.config.static_fee(value), save=True)
def update_text(self): def update_text(self):
pass pass

2
electrum/gui/kivy/uix/dialogs/settings.py

@ -159,7 +159,7 @@ class SettingsDialog(Factory.Popup):
if self._language_dialog is None: if self._language_dialog is None:
l = self.config.get('language') or '' l = self.config.get('language') or ''
def cb(key): def cb(key):
self.config.set_key("language", key, True) self.config.set_key("language", key, save=True)
item.lang = self.get_language_name() item.lang = self.get_language_name()
self.app.language = key self.app.language = key
self._language_dialog = ChoiceDialog(_('Language'), languages, l, cb) self._language_dialog = ChoiceDialog(_('Language'), languages, l, cb)

10
electrum/gui/qml/qeconfig.py

@ -55,7 +55,7 @@ class QEConfig(AuthMixin, QObject):
@autoConnect.setter @autoConnect.setter
def autoConnect(self, auto_connect): def autoConnect(self, auto_connect):
self.config.set_key('auto_connect', auto_connect, True) self.config.set_key('auto_connect', auto_connect, save=True)
self.autoConnectChanged.emit() self.autoConnectChanged.emit()
# auto_connect is actually a tri-state, expose the undefined case # auto_connect is actually a tri-state, expose the undefined case
@ -70,7 +70,7 @@ class QEConfig(AuthMixin, QObject):
@manualServer.setter @manualServer.setter
def manualServer(self, oneserver): def manualServer(self, oneserver):
self.config.set_key('oneserver', oneserver, True) self.config.set_key('oneserver', oneserver, save=True)
self.manualServerChanged.emit() self.manualServerChanged.emit()
baseUnitChanged = pyqtSignal() baseUnitChanged = pyqtSignal()
@ -113,7 +113,7 @@ class QEConfig(AuthMixin, QObject):
@spendUnconfirmed.setter @spendUnconfirmed.setter
def spendUnconfirmed(self, checked): def spendUnconfirmed(self, checked):
self.config.set_key('confirmed_only', not checked, True) self.config.set_key('confirmed_only', not checked, save=True)
self.spendUnconfirmedChanged.emit() self.spendUnconfirmedChanged.emit()
requestExpiryChanged = pyqtSignal() requestExpiryChanged = pyqtSignal()
@ -136,12 +136,12 @@ class QEConfig(AuthMixin, QObject):
if pin_code == '': if pin_code == '':
self.pinCodeRemoveAuth() self.pinCodeRemoveAuth()
else: else:
self.config.set_key('pin_code', pin_code, True) self.config.set_key('pin_code', pin_code, save=True)
self.pinCodeChanged.emit() self.pinCodeChanged.emit()
@auth_protect(method='wallet') @auth_protect(method='wallet')
def pinCodeRemoveAuth(self): def pinCodeRemoveAuth(self):
self.config.set_key('pin_code', '', True) self.config.set_key('pin_code', '', save=True)
self.pinCodeChanged.emit() self.pinCodeChanged.emit()
useGossipChanged = pyqtSignal() useGossipChanged = pyqtSignal()

10
electrum/gui/qml/qetxfinalizer.py

@ -110,15 +110,15 @@ class FeeSlider(QObject):
def save_config(self): def save_config(self):
value = int(self._sliderPos) value = int(self._sliderPos)
dynfees, mempool = self.get_method() dynfees, mempool = self.get_method()
self._config.set_key('dynamic_fees', dynfees, False) self._config.set_key('dynamic_fees', dynfees, save=False)
self._config.set_key('mempool_fees', mempool, False) self._config.set_key('mempool_fees', mempool, save=False)
if dynfees: if dynfees:
if mempool: if mempool:
self._config.set_key('depth_level', value, True) self._config.set_key('depth_level', value, save=True)
else: else:
self._config.set_key('fee_level', value, True) self._config.set_key('fee_level', value, save=True)
else: else:
self._config.set_key('fee_per_kb', self._config.static_fee(value), True) self._config.set_key('fee_per_kb', self._config.static_fee(value), save=True)
self.update_target() self.update_target()
self.update() self.update()

2
electrum/gui/qt/__init__.py

@ -219,7 +219,7 @@ class ElectrumGui(BaseElectrumGui, Logger):
if not self.tray: if not self.tray:
return return
self.dark_icon = not self.dark_icon self.dark_icon = not self.dark_icon
self.config.set_key("dark_icon", self.dark_icon, True) self.config.set_key("dark_icon", self.dark_icon, save=True)
self.tray.setIcon(self.tray_icon()) self.tray.setIcon(self.tray_icon())
def tray_activated(self, reason): def tray_activated(self, reason):

6
electrum/gui/qt/confirm_tx_dialog.py

@ -127,11 +127,11 @@ class TxEditor(WindowModalDialog):
def set_fee_config(self, dyn, pos, fee_rate): def set_fee_config(self, dyn, pos, fee_rate):
if dyn: if dyn:
if self.config.use_mempool_fees(): if self.config.use_mempool_fees():
self.config.set_key('depth_level', pos, False) self.config.set_key('depth_level', pos, save=False)
else: else:
self.config.set_key('fee_level', pos, False) self.config.set_key('fee_level', pos, save=False)
else: else:
self.config.set_key('fee_per_kb', fee_rate, False) self.config.set_key('fee_per_kb', fee_rate, save=False)
def update_tx(self, *, fallback_to_zero_fee: bool = False): def update_tx(self, *, fallback_to_zero_fee: bool = False):
# expected to set self.tx, self.message and self.error # expected to set self.tx, self.message and self.error

4
electrum/gui/qt/installwizard.py

@ -746,10 +746,10 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
nlayout = NetworkChoiceLayout(network, self.config, wizard=True) nlayout = NetworkChoiceLayout(network, self.config, wizard=True)
if self.exec_layout(nlayout.layout()): if self.exec_layout(nlayout.layout()):
nlayout.accept() nlayout.accept()
self.config.set_key('auto_connect', network.auto_connect, True) self.config.set_key('auto_connect', network.auto_connect, save=True)
else: else:
network.auto_connect = True network.auto_connect = True
self.config.set_key('auto_connect', True, True) self.config.set_key('auto_connect', True, save=True)
@wizard_dialog @wizard_dialog
def multisig_dialog(self, run_next): def multisig_dialog(self, run_next):

14
electrum/gui/qt/settings_dialog.py

@ -83,7 +83,7 @@ class SettingsDialog(QDialog, QtEventListener):
def on_lang(x): def on_lang(x):
lang_request = list(languages.keys())[lang_combo.currentIndex()] lang_request = list(languages.keys())[lang_combo.currentIndex()]
if lang_request != self.config.get('language'): if lang_request != self.config.get('language'):
self.config.set_key("language", lang_request, True) self.config.set_key("language", lang_request, save=True)
self.need_restart = True self.need_restart = True
lang_combo.currentIndexChanged.connect(on_lang) lang_combo.currentIndexChanged.connect(on_lang)
@ -99,7 +99,7 @@ class SettingsDialog(QDialog, QtEventListener):
value = nz.value() value = nz.value()
if self.config.num_zeros != value: if self.config.num_zeros != value:
self.config.num_zeros = value self.config.num_zeros = value
self.config.set_key('num_zeros', value, True) self.config.set_key('num_zeros', value, save=True)
self.app.refresh_tabs_signal.emit() self.app.refresh_tabs_signal.emit()
self.app.update_status_signal.emit() self.app.update_status_signal.emit()
nz.valueChanged.connect(on_nz) nz.valueChanged.connect(on_nz)
@ -211,7 +211,7 @@ class SettingsDialog(QDialog, QtEventListener):
qr_combo.addItem(cam_desc, cam_path) qr_combo.addItem(cam_desc, cam_path)
index = qr_combo.findData(self.config.get("video_device")) index = qr_combo.findData(self.config.get("video_device"))
qr_combo.setCurrentIndex(index) qr_combo.setCurrentIndex(index)
on_video_device = lambda x: self.config.set_key("video_device", qr_combo.itemData(x), True) on_video_device = lambda x: self.config.set_key("video_device", qr_combo.itemData(x), save=True)
qr_combo.currentIndexChanged.connect(on_video_device) qr_combo.currentIndexChanged.connect(on_video_device)
colortheme_combo = QComboBox() colortheme_combo = QComboBox()
@ -221,7 +221,7 @@ class SettingsDialog(QDialog, QtEventListener):
colortheme_combo.setCurrentIndex(index) colortheme_combo.setCurrentIndex(index)
colortheme_label = QLabel(_('Color theme') + ':') colortheme_label = QLabel(_('Color theme') + ':')
def on_colortheme(x): def on_colortheme(x):
self.config.set_key('qt_gui_color_theme', colortheme_combo.itemData(x), True) self.config.set_key('qt_gui_color_theme', colortheme_combo.itemData(x), save=True)
self.need_restart = True self.need_restart = True
colortheme_combo.currentIndexChanged.connect(on_colortheme) colortheme_combo.currentIndexChanged.connect(on_colortheme)
@ -279,8 +279,8 @@ class SettingsDialog(QDialog, QtEventListener):
on_be_edit() on_be_edit()
else: else:
be_result = block_explorers[block_ex_combo.currentIndex()] be_result = block_explorers[block_ex_combo.currentIndex()]
self.config.set_key('block_explorer_custom', None, False) self.config.set_key('block_explorer_custom', None, save=False)
self.config.set_key('block_explorer', be_result, True) self.config.set_key('block_explorer', be_result, save=True)
showhide_block_ex_custom_e() showhide_block_ex_custom_e()
block_ex_combo.currentIndexChanged.connect(on_be_combo) block_ex_combo.currentIndexChanged.connect(on_be_combo)
def on_be_edit(): def on_be_edit():
@ -429,7 +429,7 @@ class SettingsDialog(QDialog, QtEventListener):
def on_alias_edit(self): def on_alias_edit(self):
self.alias_e.setStyleSheet("") self.alias_e.setStyleSheet("")
alias = str(self.alias_e.text()) alias = str(self.alias_e.text())
self.config.set_key('alias', alias, True) self.config.set_key('alias', alias, save=True)
if alias: if alias:
self.wallet.contacts.fetch_openalias(self.config) self.wallet.contacts.fetch_openalias(self.config)

6
electrum/gui/qt/swap_dialog.py

@ -138,11 +138,11 @@ class SwapDialog(WindowModalDialog, QtEventListener):
def fee_slider_callback(self, dyn, pos, fee_rate): def fee_slider_callback(self, dyn, pos, fee_rate):
if dyn: if dyn:
if self.config.use_mempool_fees(): if self.config.use_mempool_fees():
self.config.set_key('depth_level', pos, False) self.config.set_key('depth_level', pos, save=False)
else: else:
self.config.set_key('fee_level', pos, False) self.config.set_key('fee_level', pos, save=False)
else: else:
self.config.set_key('fee_per_kb', fee_rate, False) self.config.set_key('fee_per_kb', fee_rate, save=False)
if self.send_follows: if self.send_follows:
self.on_recv_edited() self.on_recv_edited()
else: else:

4
electrum/gui/qt/util.py

@ -1051,7 +1051,7 @@ def getOpenFileName(*, parent, title, filter="", config: 'SimpleConfig') -> Opti
directory = config.get('io_dir', os.path.expanduser('~')) directory = config.get('io_dir', os.path.expanduser('~'))
fileName, __ = QFileDialog.getOpenFileName(parent, title, directory, filter) fileName, __ = QFileDialog.getOpenFileName(parent, title, directory, filter)
if fileName and directory != os.path.dirname(fileName): if fileName and directory != os.path.dirname(fileName):
config.set_key('io_dir', os.path.dirname(fileName), True) config.set_key('io_dir', os.path.dirname(fileName), save=True)
return fileName return fileName
@ -1082,7 +1082,7 @@ def getSaveFileName(
selected_path = file_dialog.selectedFiles()[0] selected_path = file_dialog.selectedFiles()[0]
if selected_path and directory != os.path.dirname(selected_path): if selected_path and directory != os.path.dirname(selected_path):
config.set_key('io_dir', os.path.dirname(selected_path), True) config.set_key('io_dir', os.path.dirname(selected_path), save=True)
return selected_path return selected_path

2
electrum/gui/text.py

@ -747,7 +747,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
if out: if out:
if out.get('Default fee'): if out.get('Default fee'):
fee = int(Decimal(out['Default fee']) * COIN) fee = int(Decimal(out['Default fee']) * COIN)
self.config.set_key('fee_per_kb', fee, True) self.config.set_key('fee_per_kb', fee, save=True)
def password_dialog(self): def password_dialog(self):
out = self.run_dialog('Password', [ out = self.run_dialog('Password', [

8
electrum/network.py

@ -628,10 +628,10 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
int(proxy['port']) int(proxy['port'])
except Exception: except Exception:
return return
self.config.set_key('auto_connect', net_params.auto_connect, False) self.config.set_key('auto_connect', net_params.auto_connect, save=False)
self.config.set_key('oneserver', net_params.oneserver, False) self.config.set_key('oneserver', net_params.oneserver, save=False)
self.config.set_key('proxy', proxy_str, False) self.config.set_key('proxy', proxy_str, save=False)
self.config.set_key('server', str(server), True) self.config.set_key('server', str(server), save=True)
# abort if changes were not allowed by config # abort if changes were not allowed by config
if self.config.get('server') != str(server) \ if self.config.get('server') != str(server) \
or self.config.get('proxy') != proxy_str \ or self.config.get('proxy') != proxy_str \

4
electrum/plugin.py

@ -132,14 +132,14 @@ class Plugins(DaemonThread):
self.remove_jobs(plugin.thread_jobs()) self.remove_jobs(plugin.thread_jobs())
def enable(self, name: str) -> 'BasePlugin': def enable(self, name: str) -> 'BasePlugin':
self.config.set_key('use_' + name, True, True) self.config.set_key('use_' + name, True, save=True)
p = self.get(name) p = self.get(name)
if p: if p:
return p return p
return self.load_plugin(name) return self.load_plugin(name)
def disable(self, name: str) -> None: def disable(self, name: str) -> None:
self.config.set_key('use_' + name, False, True) self.config.set_key('use_' + name, False, save=True)
p = self.get(name) p = self.get(name)
if not p: if not p:
return return

2
electrum/plugins/trustedcoin/qt.py

@ -208,7 +208,7 @@ class Plugin(TrustedCoinPlugin):
grid.addWidget(QLabel(window.format_amount(v/k) + ' ' + window.base_unit() + "/tx"), i, 1) grid.addWidget(QLabel(window.format_amount(v/k) + ' ' + window.base_unit() + "/tx"), i, 1)
b = QRadioButton() b = QRadioButton()
b.setChecked(k == n_prepay) b.setChecked(k == n_prepay)
b.clicked.connect(lambda b, k=k: self.config.set_key('trustedcoin_prepay', k, True)) b.clicked.connect(lambda b, k=k: self.config.set_key('trustedcoin_prepay', k, save=True))
grid.addWidget(b, i, 2) grid.addWidget(b, i, 2)
i += 1 i += 1

8
electrum/simple_config.py

@ -158,7 +158,7 @@ class SimpleConfig(Logger):
updated = True updated = True
return updated return updated
def set_key(self, key, value, save=True): def set_key(self, key, value, *, save=True):
if not self.is_modifiable(key): if not self.is_modifiable(key):
self.logger.warning(f"not changing config key '{key}' set on the command line") self.logger.warning(f"not changing config key '{key}' set on the command line")
return return
@ -168,9 +168,9 @@ class SimpleConfig(Logger):
except Exception: except Exception:
self.logger.info(f"json error: cannot save {repr(key)} ({repr(value)})") self.logger.info(f"json error: cannot save {repr(key)} ({repr(value)})")
return return
self._set_key_in_user_config(key, value, save) self._set_key_in_user_config(key, value, save=save)
def _set_key_in_user_config(self, key, value, save=True): def _set_key_in_user_config(self, key, value, *, save=True):
with self.lock: with self.lock:
if value is not None: if value is not None:
self.user_config[key] = value self.user_config[key] = value
@ -709,7 +709,7 @@ class SimpleConfig(Logger):
def set_base_unit(self, unit): def set_base_unit(self, unit):
assert unit in base_units.keys() assert unit in base_units.keys()
self.decimal_point = base_unit_name_to_decimal_point(unit) self.decimal_point = base_unit_name_to_decimal_point(unit)
self.set_key('decimal_point', self.decimal_point, True) self.set_key('decimal_point', self.decimal_point, save=True)
def get_decimal_point(self): def get_decimal_point(self):
return self.decimal_point return self.decimal_point

Loading…
Cancel
Save