SimpleConfig: change API of set_key(): "save" is now kwarg-only
This commit is contained in:
@@ -599,7 +599,7 @@ class FxThread(ThreadJob, EventListener):
|
||||
|
||||
def set_currency(self, ccy: str):
|
||||
self.ccy = ccy
|
||||
self.config.set_key('currency', ccy, True)
|
||||
self.config.set_key('currency', ccy, save=True)
|
||||
self.trigger_update()
|
||||
self.on_quotes()
|
||||
|
||||
@@ -611,7 +611,7 @@ class FxThread(ThreadJob, EventListener):
|
||||
class_ = globals().get(name) or globals().get(DEFAULT_EXCHANGE)
|
||||
self.logger.info(f"using 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}"
|
||||
self.exchange = class_(self.on_quotes, self.on_history) # type: ExchangeBase
|
||||
# A new exchange means new fx quotes, initially empty. Force
|
||||
|
||||
@@ -196,7 +196,7 @@ class ElectrumWindow(App, Logger, EventListener):
|
||||
|
||||
use_gossip = BooleanProperty(False)
|
||||
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.use_gossip:
|
||||
self.network.start_gossip()
|
||||
@@ -206,7 +206,7 @@ class ElectrumWindow(App, Logger, EventListener):
|
||||
|
||||
enable_debug_logs = BooleanProperty(False)
|
||||
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)
|
||||
def on_use_change(self, instance, x):
|
||||
@@ -217,11 +217,11 @@ class ElectrumWindow(App, Logger, EventListener):
|
||||
|
||||
use_unconfirmed = BooleanProperty(False)
|
||||
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)
|
||||
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):
|
||||
# try until send_screen is available
|
||||
|
||||
@@ -99,15 +99,15 @@ class FeeSliderDialog:
|
||||
def save_config(self):
|
||||
value = int(self.slider.value)
|
||||
dynfees, mempool = self.get_method()
|
||||
self.config.set_key('dynamic_fees', dynfees, False)
|
||||
self.config.set_key('mempool_fees', mempool, False)
|
||||
self.config.set_key('dynamic_fees', dynfees, save=False)
|
||||
self.config.set_key('mempool_fees', mempool, save=False)
|
||||
if dynfees:
|
||||
if mempool:
|
||||
self.config.set_key('depth_level', value, True)
|
||||
self.config.set_key('depth_level', value, save=True)
|
||||
else:
|
||||
self.config.set_key('fee_level', value, True)
|
||||
self.config.set_key('fee_level', value, save=True)
|
||||
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):
|
||||
pass
|
||||
|
||||
@@ -159,7 +159,7 @@ class SettingsDialog(Factory.Popup):
|
||||
if self._language_dialog is None:
|
||||
l = self.config.get('language') or ''
|
||||
def cb(key):
|
||||
self.config.set_key("language", key, True)
|
||||
self.config.set_key("language", key, save=True)
|
||||
item.lang = self.get_language_name()
|
||||
self.app.language = key
|
||||
self._language_dialog = ChoiceDialog(_('Language'), languages, l, cb)
|
||||
|
||||
@@ -55,7 +55,7 @@ class QEConfig(AuthMixin, QObject):
|
||||
|
||||
@autoConnect.setter
|
||||
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()
|
||||
|
||||
# auto_connect is actually a tri-state, expose the undefined case
|
||||
@@ -70,7 +70,7 @@ class QEConfig(AuthMixin, QObject):
|
||||
|
||||
@manualServer.setter
|
||||
def manualServer(self, oneserver):
|
||||
self.config.set_key('oneserver', oneserver, True)
|
||||
self.config.set_key('oneserver', oneserver, save=True)
|
||||
self.manualServerChanged.emit()
|
||||
|
||||
baseUnitChanged = pyqtSignal()
|
||||
@@ -113,7 +113,7 @@ class QEConfig(AuthMixin, QObject):
|
||||
|
||||
@spendUnconfirmed.setter
|
||||
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()
|
||||
|
||||
requestExpiryChanged = pyqtSignal()
|
||||
@@ -136,12 +136,12 @@ class QEConfig(AuthMixin, QObject):
|
||||
if pin_code == '':
|
||||
self.pinCodeRemoveAuth()
|
||||
else:
|
||||
self.config.set_key('pin_code', pin_code, True)
|
||||
self.config.set_key('pin_code', pin_code, save=True)
|
||||
self.pinCodeChanged.emit()
|
||||
|
||||
@auth_protect(method='wallet')
|
||||
def pinCodeRemoveAuth(self):
|
||||
self.config.set_key('pin_code', '', True)
|
||||
self.config.set_key('pin_code', '', save=True)
|
||||
self.pinCodeChanged.emit()
|
||||
|
||||
useGossipChanged = pyqtSignal()
|
||||
|
||||
@@ -110,15 +110,15 @@ class FeeSlider(QObject):
|
||||
def save_config(self):
|
||||
value = int(self._sliderPos)
|
||||
dynfees, mempool = self.get_method()
|
||||
self._config.set_key('dynamic_fees', dynfees, False)
|
||||
self._config.set_key('mempool_fees', mempool, False)
|
||||
self._config.set_key('dynamic_fees', dynfees, save=False)
|
||||
self._config.set_key('mempool_fees', mempool, save=False)
|
||||
if dynfees:
|
||||
if mempool:
|
||||
self._config.set_key('depth_level', value, True)
|
||||
self._config.set_key('depth_level', value, save=True)
|
||||
else:
|
||||
self._config.set_key('fee_level', value, True)
|
||||
self._config.set_key('fee_level', value, save=True)
|
||||
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()
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ class ElectrumGui(BaseElectrumGui, Logger):
|
||||
if not self.tray:
|
||||
return
|
||||
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())
|
||||
|
||||
def tray_activated(self, reason):
|
||||
|
||||
@@ -127,11 +127,11 @@ class TxEditor(WindowModalDialog):
|
||||
def set_fee_config(self, dyn, pos, fee_rate):
|
||||
if dyn:
|
||||
if self.config.use_mempool_fees():
|
||||
self.config.set_key('depth_level', pos, False)
|
||||
self.config.set_key('depth_level', pos, save=False)
|
||||
else:
|
||||
self.config.set_key('fee_level', pos, False)
|
||||
self.config.set_key('fee_level', pos, save=False)
|
||||
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):
|
||||
# expected to set self.tx, self.message and self.error
|
||||
|
||||
@@ -746,10 +746,10 @@ class InstallWizard(QDialog, MessageBoxMixin, BaseWizard):
|
||||
nlayout = NetworkChoiceLayout(network, self.config, wizard=True)
|
||||
if self.exec_layout(nlayout.layout()):
|
||||
nlayout.accept()
|
||||
self.config.set_key('auto_connect', network.auto_connect, True)
|
||||
self.config.set_key('auto_connect', network.auto_connect, save=True)
|
||||
else:
|
||||
network.auto_connect = True
|
||||
self.config.set_key('auto_connect', True, True)
|
||||
self.config.set_key('auto_connect', True, save=True)
|
||||
|
||||
@wizard_dialog
|
||||
def multisig_dialog(self, run_next):
|
||||
|
||||
@@ -83,7 +83,7 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
def on_lang(x):
|
||||
lang_request = list(languages.keys())[lang_combo.currentIndex()]
|
||||
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
|
||||
lang_combo.currentIndexChanged.connect(on_lang)
|
||||
|
||||
@@ -99,7 +99,7 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
value = nz.value()
|
||||
if 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.update_status_signal.emit()
|
||||
nz.valueChanged.connect(on_nz)
|
||||
@@ -211,7 +211,7 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
qr_combo.addItem(cam_desc, cam_path)
|
||||
index = qr_combo.findData(self.config.get("video_device"))
|
||||
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)
|
||||
|
||||
colortheme_combo = QComboBox()
|
||||
@@ -221,7 +221,7 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
colortheme_combo.setCurrentIndex(index)
|
||||
colortheme_label = QLabel(_('Color theme') + ':')
|
||||
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
|
||||
colortheme_combo.currentIndexChanged.connect(on_colortheme)
|
||||
|
||||
@@ -279,8 +279,8 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
on_be_edit()
|
||||
else:
|
||||
be_result = block_explorers[block_ex_combo.currentIndex()]
|
||||
self.config.set_key('block_explorer_custom', None, False)
|
||||
self.config.set_key('block_explorer', be_result, True)
|
||||
self.config.set_key('block_explorer_custom', None, save=False)
|
||||
self.config.set_key('block_explorer', be_result, save=True)
|
||||
showhide_block_ex_custom_e()
|
||||
block_ex_combo.currentIndexChanged.connect(on_be_combo)
|
||||
def on_be_edit():
|
||||
@@ -429,7 +429,7 @@ class SettingsDialog(QDialog, QtEventListener):
|
||||
def on_alias_edit(self):
|
||||
self.alias_e.setStyleSheet("")
|
||||
alias = str(self.alias_e.text())
|
||||
self.config.set_key('alias', alias, True)
|
||||
self.config.set_key('alias', alias, save=True)
|
||||
if alias:
|
||||
self.wallet.contacts.fetch_openalias(self.config)
|
||||
|
||||
|
||||
@@ -138,11 +138,11 @@ class SwapDialog(WindowModalDialog, QtEventListener):
|
||||
def fee_slider_callback(self, dyn, pos, fee_rate):
|
||||
if dyn:
|
||||
if self.config.use_mempool_fees():
|
||||
self.config.set_key('depth_level', pos, False)
|
||||
self.config.set_key('depth_level', pos, save=False)
|
||||
else:
|
||||
self.config.set_key('fee_level', pos, False)
|
||||
self.config.set_key('fee_level', pos, save=False)
|
||||
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:
|
||||
self.on_recv_edited()
|
||||
else:
|
||||
|
||||
@@ -1051,7 +1051,7 @@ def getOpenFileName(*, parent, title, filter="", config: 'SimpleConfig') -> Opti
|
||||
directory = config.get('io_dir', os.path.expanduser('~'))
|
||||
fileName, __ = QFileDialog.getOpenFileName(parent, title, directory, filter)
|
||||
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
|
||||
|
||||
|
||||
@@ -1082,7 +1082,7 @@ def getSaveFileName(
|
||||
|
||||
selected_path = file_dialog.selectedFiles()[0]
|
||||
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
|
||||
|
||||
|
||||
|
||||
@@ -747,7 +747,7 @@ class ElectrumGui(BaseElectrumGui, EventListener):
|
||||
if out:
|
||||
if out.get('Default fee'):
|
||||
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):
|
||||
out = self.run_dialog('Password', [
|
||||
|
||||
@@ -628,10 +628,10 @@ class Network(Logger, NetworkRetryManager[ServerAddr]):
|
||||
int(proxy['port'])
|
||||
except Exception:
|
||||
return
|
||||
self.config.set_key('auto_connect', net_params.auto_connect, False)
|
||||
self.config.set_key('oneserver', net_params.oneserver, False)
|
||||
self.config.set_key('proxy', proxy_str, False)
|
||||
self.config.set_key('server', str(server), True)
|
||||
self.config.set_key('auto_connect', net_params.auto_connect, save=False)
|
||||
self.config.set_key('oneserver', net_params.oneserver, save=False)
|
||||
self.config.set_key('proxy', proxy_str, save=False)
|
||||
self.config.set_key('server', str(server), save=True)
|
||||
# abort if changes were not allowed by config
|
||||
if self.config.get('server') != str(server) \
|
||||
or self.config.get('proxy') != proxy_str \
|
||||
|
||||
@@ -132,14 +132,14 @@ class Plugins(DaemonThread):
|
||||
self.remove_jobs(plugin.thread_jobs())
|
||||
|
||||
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)
|
||||
if p:
|
||||
return p
|
||||
return self.load_plugin(name)
|
||||
|
||||
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)
|
||||
if not p:
|
||||
return
|
||||
|
||||
@@ -208,7 +208,7 @@ class Plugin(TrustedCoinPlugin):
|
||||
grid.addWidget(QLabel(window.format_amount(v/k) + ' ' + window.base_unit() + "/tx"), i, 1)
|
||||
b = QRadioButton()
|
||||
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)
|
||||
i += 1
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ class SimpleConfig(Logger):
|
||||
updated = True
|
||||
return updated
|
||||
|
||||
def set_key(self, key, value, save=True):
|
||||
def set_key(self, key, value, *, save=True):
|
||||
if not self.is_modifiable(key):
|
||||
self.logger.warning(f"not changing config key '{key}' set on the command line")
|
||||
return
|
||||
@@ -168,9 +168,9 @@ class SimpleConfig(Logger):
|
||||
except Exception:
|
||||
self.logger.info(f"json error: cannot save {repr(key)} ({repr(value)})")
|
||||
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:
|
||||
if value is not None:
|
||||
self.user_config[key] = value
|
||||
@@ -709,7 +709,7 @@ class SimpleConfig(Logger):
|
||||
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)
|
||||
self.set_key('decimal_point', self.decimal_point, save=True)
|
||||
|
||||
def get_decimal_point(self):
|
||||
return self.decimal_point
|
||||
|
||||
Reference in New Issue
Block a user