Browse Source

Qt: reorganize settings dialog

patch-4
ThomasV 3 years ago
parent
commit
083205714c
  1. 60
      electrum/gui/qt/settings_dialog.py

60
electrum/gui/qt/settings_dialog.py

@ -59,9 +59,6 @@ class SettingsDialog(WindowModalDialog):
vbox = QVBoxLayout() vbox = QVBoxLayout()
tabs = QTabWidget() tabs = QTabWidget()
gui_widgets = []
tx_widgets = []
oa_widgets = []
# language # language
lang_help = _('Select which language is used in the GUI (after restart).') lang_help = _('Select which language is used in the GUI (after restart).')
@ -83,7 +80,6 @@ class SettingsDialog(WindowModalDialog):
self.config.set_key("language", lang_request, True) self.config.set_key("language", lang_request, True)
self.need_restart = True self.need_restart = True
lang_combo.currentIndexChanged.connect(on_lang) lang_combo.currentIndexChanged.connect(on_lang)
gui_widgets.append((lang_label, lang_combo))
nz_help = _('Number of zeros displayed after the decimal point. For example, if this is set to 2, "1." will be displayed as "1.00"') nz_help = _('Number of zeros displayed after the decimal point. For example, if this is set to 2, "1." will be displayed as "1.00"')
nz_label = HelpLabel(_('Zeros after decimal point') + ':', nz_help) nz_label = HelpLabel(_('Zeros after decimal point') + ':', nz_help)
@ -100,7 +96,6 @@ class SettingsDialog(WindowModalDialog):
self.config.set_key('num_zeros', value, True) self.config.set_key('num_zeros', value, True)
self.window.refresh_tabs() self.window.refresh_tabs()
nz.valueChanged.connect(on_nz) nz.valueChanged.connect(on_nz)
gui_widgets.append((nz_label, nz))
use_rbf = bool(self.config.get('use_rbf', True)) use_rbf = bool(self.config.get('use_rbf', True))
use_rbf_cb = QCheckBox(_('Use Replace-By-Fee')) use_rbf_cb = QCheckBox(_('Use Replace-By-Fee'))
@ -113,7 +108,6 @@ class SettingsDialog(WindowModalDialog):
self.config.set_key('use_rbf', bool(x)) self.config.set_key('use_rbf', bool(x))
batch_rbf_cb.setEnabled(bool(x)) batch_rbf_cb.setEnabled(bool(x))
use_rbf_cb.stateChanged.connect(on_use_rbf) use_rbf_cb.stateChanged.connect(on_use_rbf)
tx_widgets.append((use_rbf_cb, None))
batch_rbf_cb = QCheckBox(_('Batch RBF transactions')) batch_rbf_cb = QCheckBox(_('Batch RBF transactions'))
batch_rbf_cb.setChecked(bool(self.config.get('batch_rbf', False))) batch_rbf_cb.setChecked(bool(self.config.get('batch_rbf', False)))
@ -124,11 +118,8 @@ class SettingsDialog(WindowModalDialog):
def on_batch_rbf(x): def on_batch_rbf(x):
self.config.set_key('batch_rbf', bool(x)) self.config.set_key('batch_rbf', bool(x))
batch_rbf_cb.stateChanged.connect(on_batch_rbf) batch_rbf_cb.stateChanged.connect(on_batch_rbf)
tx_widgets.append((batch_rbf_cb, None))
# lightning # lightning
lightning_widgets = []
help_recov = _(messages.MSG_RECOVERABLE_CHANNELS) help_recov = _(messages.MSG_RECOVERABLE_CHANNELS)
recov_cb = QCheckBox(_("Create recoverable channels")) recov_cb = QCheckBox(_("Create recoverable channels"))
enable_toggle_use_recoverable_channels = bool(self.wallet.lnworker and self.wallet.lnworker.can_have_recoverable_channels()) enable_toggle_use_recoverable_channels = bool(self.wallet.lnworker and self.wallet.lnworker.can_have_recoverable_channels())
@ -138,7 +129,6 @@ class SettingsDialog(WindowModalDialog):
def on_recov_checked(x): def on_recov_checked(x):
self.config.set_key('use_recoverable_channels', bool(x)) self.config.set_key('use_recoverable_channels', bool(x))
recov_cb.stateChanged.connect(on_recov_checked) recov_cb.stateChanged.connect(on_recov_checked)
lightning_widgets.append((recov_cb, None))
help_trampoline = _(messages.MSG_HELP_TRAMPOLINE) help_trampoline = _(messages.MSG_HELP_TRAMPOLINE)
trampoline_cb = QCheckBox(_("Use trampoline routing (disable gossip)")) trampoline_cb = QCheckBox(_("Use trampoline routing (disable gossip)"))
@ -156,7 +146,6 @@ class SettingsDialog(WindowModalDialog):
# FIXME: update all wallet windows # FIXME: update all wallet windows
util.trigger_callback('channels_updated', self.wallet) util.trigger_callback('channels_updated', self.wallet)
trampoline_cb.stateChanged.connect(on_trampoline_checked) trampoline_cb.stateChanged.connect(on_trampoline_checked)
lightning_widgets.append((trampoline_cb, None))
help_remote_wt = ' '.join([ help_remote_wt = ' '.join([
_("A watchtower is a daemon that watches your channels and prevents the other party from stealing funds by broadcasting an old state."), _("A watchtower is a daemon that watches your channels and prevents the other party from stealing funds by broadcasting an old state."),
@ -177,7 +166,6 @@ class SettingsDialog(WindowModalDialog):
url = self.watchtower_url_e.text() or None url = self.watchtower_url_e.text() or None
watchtower_url = self.config.set_key('watchtower_url', url) watchtower_url = self.config.set_key('watchtower_url', url)
self.watchtower_url_e.editingFinished.connect(on_wt_url) self.watchtower_url_e.editingFinished.connect(on_wt_url)
lightning_widgets.append((remote_wt_cb, self.watchtower_url_e))
msg = _('OpenAlias record, used to receive coins and to sign payment requests.') + '\n\n'\ msg = _('OpenAlias record, used to receive coins and to sign payment requests.') + '\n\n'\
+ _('The following alias providers are available:') + '\n'\ + _('The following alias providers are available:') + '\n'\
@ -188,9 +176,8 @@ class SettingsDialog(WindowModalDialog):
self.alias_e = QLineEdit(alias) self.alias_e = QLineEdit(alias)
self.set_alias_color() self.set_alias_color()
self.alias_e.editingFinished.connect(self.on_alias_edit) self.alias_e.editingFinished.connect(self.on_alias_edit)
oa_widgets.append((alias_label, self.alias_e))
msat_cb = QCheckBox(_("Show amounts with msat precision")) msat_cb = QCheckBox(_("Show Lightning amounts with msat precision"))
msat_cb.setChecked(bool(self.config.get('amt_precision_post_satoshi', False))) msat_cb.setChecked(bool(self.config.get('amt_precision_post_satoshi', False)))
def on_msat_checked(v): def on_msat_checked(v):
prec = 3 if v == Qt.Checked else 0 prec = 3 if v == Qt.Checked else 0
@ -199,7 +186,6 @@ class SettingsDialog(WindowModalDialog):
self.config.set_key('amt_precision_post_satoshi', prec) self.config.set_key('amt_precision_post_satoshi', prec)
self.window.refresh_tabs() self.window.refresh_tabs()
msat_cb.stateChanged.connect(on_msat_checked) msat_cb.stateChanged.connect(on_msat_checked)
lightning_widgets.append((msat_cb, None))
# units # units
units = base_units_list units = base_units_list
@ -223,7 +209,6 @@ class SettingsDialog(WindowModalDialog):
edit.setAmount(amount) edit.setAmount(amount)
self.window.update_status() self.window.update_status()
unit_combo.currentIndexChanged.connect(lambda x: on_unit(x, nz)) unit_combo.currentIndexChanged.connect(lambda x: on_unit(x, nz))
gui_widgets.append((unit_label, unit_combo))
thousandsep_cb = QCheckBox(_("Add thousand separators to bitcoin amounts")) thousandsep_cb = QCheckBox(_("Add thousand separators to bitcoin amounts"))
thousandsep_cb.setChecked(bool(self.config.get('amt_add_thousands_sep', False))) thousandsep_cb.setChecked(bool(self.config.get('amt_add_thousands_sep', False)))
@ -234,7 +219,6 @@ class SettingsDialog(WindowModalDialog):
self.config.set_key('amt_add_thousands_sep', checked) self.config.set_key('amt_add_thousands_sep', checked)
self.window.refresh_tabs() self.window.refresh_tabs()
thousandsep_cb.stateChanged.connect(on_set_thousandsep) thousandsep_cb.stateChanged.connect(on_set_thousandsep)
gui_widgets.append((thousandsep_cb, None))
qr_combo = QComboBox() qr_combo = QComboBox()
qr_combo.addItem("Default", "default") qr_combo.addItem("Default", "default")
@ -249,7 +233,6 @@ class SettingsDialog(WindowModalDialog):
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), True)
qr_combo.currentIndexChanged.connect(on_video_device) qr_combo.currentIndexChanged.connect(on_video_device)
gui_widgets.append((qr_label, qr_combo))
colortheme_combo = QComboBox() colortheme_combo = QComboBox()
colortheme_combo.addItem(_('Light'), 'default') colortheme_combo.addItem(_('Light'), 'default')
@ -262,14 +245,12 @@ class SettingsDialog(WindowModalDialog):
#self.window.gui_object.reload_app_stylesheet() #self.window.gui_object.reload_app_stylesheet()
self.need_restart = True self.need_restart = True
colortheme_combo.currentIndexChanged.connect(on_colortheme) colortheme_combo.currentIndexChanged.connect(on_colortheme)
gui_widgets.append((colortheme_label, colortheme_combo))
updatecheck_cb = QCheckBox(_("Automatically check for software updates")) updatecheck_cb = QCheckBox(_("Automatically check for software updates"))
updatecheck_cb.setChecked(bool(self.config.get('check_updates', False))) updatecheck_cb.setChecked(bool(self.config.get('check_updates', False)))
def on_set_updatecheck(v): def on_set_updatecheck(v):
self.config.set_key('check_updates', v == Qt.Checked, save=True) self.config.set_key('check_updates', v == Qt.Checked, save=True)
updatecheck_cb.stateChanged.connect(on_set_updatecheck) updatecheck_cb.stateChanged.connect(on_set_updatecheck)
gui_widgets.append((updatecheck_cb, None))
filelogging_cb = QCheckBox(_("Write logs to file")) filelogging_cb = QCheckBox(_("Write logs to file"))
filelogging_cb.setChecked(bool(self.config.get('log_to_file', False))) filelogging_cb.setChecked(bool(self.config.get('log_to_file', False)))
@ -278,7 +259,6 @@ class SettingsDialog(WindowModalDialog):
self.need_restart = True self.need_restart = True
filelogging_cb.stateChanged.connect(on_set_filelogging) filelogging_cb.stateChanged.connect(on_set_filelogging)
filelogging_cb.setToolTip(_('Debug logs can be persisted to disk. These are useful for troubleshooting.')) filelogging_cb.setToolTip(_('Debug logs can be persisted to disk. These are useful for troubleshooting.'))
gui_widgets.append((filelogging_cb, None))
preview_cb = QCheckBox(_('Advanced preview')) preview_cb = QCheckBox(_('Advanced preview'))
preview_cb.setChecked(bool(self.config.get('advanced_preview', False))) preview_cb.setChecked(bool(self.config.get('advanced_preview', False)))
@ -286,7 +266,6 @@ class SettingsDialog(WindowModalDialog):
def on_preview(x): def on_preview(x):
self.config.set_key('advanced_preview', x == Qt.Checked) self.config.set_key('advanced_preview', x == Qt.Checked)
preview_cb.stateChanged.connect(on_preview) preview_cb.stateChanged.connect(on_preview)
tx_widgets.append((preview_cb, None))
usechange_cb = QCheckBox(_('Use change addresses')) usechange_cb = QCheckBox(_('Use change addresses'))
usechange_cb.setChecked(self.window.wallet.use_change) usechange_cb.setChecked(self.window.wallet.use_change)
@ -299,7 +278,6 @@ class SettingsDialog(WindowModalDialog):
multiple_cb.setEnabled(self.window.wallet.use_change) multiple_cb.setEnabled(self.window.wallet.use_change)
usechange_cb.stateChanged.connect(on_usechange) usechange_cb.stateChanged.connect(on_usechange)
usechange_cb.setToolTip(_('Using change addresses makes it more difficult for other people to track your transactions.')) usechange_cb.setToolTip(_('Using change addresses makes it more difficult for other people to track your transactions.'))
tx_widgets.append((usechange_cb, None))
def on_multiple(x): def on_multiple(x):
multiple = x == Qt.Checked multiple = x == Qt.Checked
@ -316,7 +294,6 @@ class SettingsDialog(WindowModalDialog):
])) ]))
multiple_cb.setChecked(multiple_change) multiple_cb.setChecked(multiple_change)
multiple_cb.stateChanged.connect(on_multiple) multiple_cb.stateChanged.connect(on_multiple)
tx_widgets.append((multiple_cb, None))
def fmt_docs(key, klass): def fmt_docs(key, klass):
lines = [ln.lstrip(" ") for ln in klass.__doc__.split("\n")] lines = [ln.lstrip(" ") for ln in klass.__doc__.split("\n")]
@ -336,7 +313,6 @@ class SettingsDialog(WindowModalDialog):
chooser_name = choosers[chooser_combo.currentIndex()] chooser_name = choosers[chooser_combo.currentIndex()]
self.config.set_key('coin_chooser', chooser_name) self.config.set_key('coin_chooser', chooser_name)
chooser_combo.currentIndexChanged.connect(on_chooser) chooser_combo.currentIndexChanged.connect(on_chooser)
tx_widgets.append((chooser_label, chooser_combo))
def on_unconf(x): def on_unconf(x):
self.config.set_key('confirmed_only', bool(x)) self.config.set_key('confirmed_only', bool(x))
@ -345,7 +321,6 @@ class SettingsDialog(WindowModalDialog):
unconf_cb.setToolTip(_('Spend only confirmed inputs.')) unconf_cb.setToolTip(_('Spend only confirmed inputs.'))
unconf_cb.setChecked(conf_only) unconf_cb.setChecked(conf_only)
unconf_cb.stateChanged.connect(on_unconf) unconf_cb.stateChanged.connect(on_unconf)
tx_widgets.append((unconf_cb, None))
def on_outrounding(x): def on_outrounding(x):
self.config.set_key('coin_chooser_output_rounding', bool(x)) self.config.set_key('coin_chooser_output_rounding', bool(x))
@ -357,7 +332,6 @@ class SettingsDialog(WindowModalDialog):
_('If enabled, at most 100 satoshis might be lost due to this, per transaction.')) _('If enabled, at most 100 satoshis might be lost due to this, per transaction.'))
outrounding_cb.setChecked(enable_outrounding) outrounding_cb.setChecked(enable_outrounding)
outrounding_cb.stateChanged.connect(on_outrounding) outrounding_cb.stateChanged.connect(on_outrounding)
tx_widgets.append((outrounding_cb, None))
block_explorers = sorted(util.block_explorer_info().keys()) block_explorers = sorted(util.block_explorer_info().keys())
BLOCK_EX_CUSTOM_ITEM = _("Custom URL") BLOCK_EX_CUSTOM_ITEM = _("Custom URL")
@ -398,7 +372,6 @@ class SettingsDialog(WindowModalDialog):
block_ex_hbox.addWidget(block_ex_custom_e) block_ex_hbox.addWidget(block_ex_custom_e)
block_ex_hbox_w = QWidget() block_ex_hbox_w = QWidget()
block_ex_hbox_w.setLayout(block_ex_hbox) block_ex_hbox_w.setLayout(block_ex_hbox)
tx_widgets.append((block_ex_label, block_ex_hbox_w))
# Fiat Currency # Fiat Currency
hist_checkbox = QCheckBox() hist_checkbox = QCheckBox()
@ -492,19 +465,46 @@ class SettingsDialog(WindowModalDialog):
fiat_address_checkbox.stateChanged.connect(on_fiat_address) fiat_address_checkbox.stateChanged.connect(on_fiat_address)
ex_combo.currentIndexChanged.connect(on_exchange) ex_combo.currentIndexChanged.connect(on_exchange)
gui_widgets = []
gui_widgets.append((lang_label, lang_combo))
gui_widgets.append((colortheme_label, colortheme_combo))
gui_widgets.append((unit_label, unit_combo))
gui_widgets.append((nz_label, nz))
gui_widgets.append((msat_cb, None))
gui_widgets.append((thousandsep_cb, None))
tx_widgets = []
tx_widgets.append((usechange_cb, None))
tx_widgets.append((use_rbf_cb, None))
tx_widgets.append((batch_rbf_cb, None))
tx_widgets.append((preview_cb, None))
tx_widgets.append((unconf_cb, None))
tx_widgets.append((multiple_cb, None))
tx_widgets.append((outrounding_cb, None))
if len(choosers) > 1:
tx_widgets.append((chooser_label, chooser_combo))
tx_widgets.append((block_ex_label, block_ex_hbox_w))
lightning_widgets = []
lightning_widgets.append((recov_cb, None))
lightning_widgets.append((trampoline_cb, None))
lightning_widgets.append((remote_wt_cb, self.watchtower_url_e))
fiat_widgets = [] fiat_widgets = []
fiat_widgets.append((QLabel(_('Fiat currency')), ccy_combo)) fiat_widgets.append((QLabel(_('Fiat currency')), ccy_combo))
fiat_widgets.append((QLabel(_('Source')), ex_combo)) fiat_widgets.append((QLabel(_('Source')), ex_combo))
fiat_widgets.append((QLabel(_('Show history rates')), hist_checkbox)) fiat_widgets.append((QLabel(_('Show history rates')), hist_checkbox))
fiat_widgets.append((QLabel(_('Show capital gains in history')), hist_capgains_checkbox)) fiat_widgets.append((QLabel(_('Show capital gains in history')), hist_capgains_checkbox))
fiat_widgets.append((QLabel(_('Show Fiat balance for addresses')), fiat_address_checkbox)) fiat_widgets.append((QLabel(_('Show Fiat balance for addresses')), fiat_address_checkbox))
misc_widgets = []
misc_widgets.append((updatecheck_cb, None))
misc_widgets.append((filelogging_cb, None))
misc_widgets.append((alias_label, self.alias_e))
misc_widgets.append((qr_label, qr_combo))
tabs_info = [ tabs_info = [
(gui_widgets, _('General')), (gui_widgets, _('Appearance')),
(tx_widgets, _('Transactions')), (tx_widgets, _('Transactions')),
(lightning_widgets, _('Lightning')), (lightning_widgets, _('Lightning')),
(fiat_widgets, _('Fiat')), (fiat_widgets, _('Fiat')),
(oa_widgets, _('OpenAlias')), (misc_widgets, _('Misc')),
] ]
for widgets, name in tabs_info: for widgets, name in tabs_info:
tab = QWidget() tab = QWidget()

Loading…
Cancel
Save