From b0f543826fcde3fd8ec227d993c32a94b39f4a69 Mon Sep 17 00:00:00 2001 From: thomasv Date: Thu, 3 Jan 2013 12:23:59 +0100 Subject: [PATCH] improved settings dialog using tabs --- lib/gui_qt.py | 66 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 25 deletions(-) diff --git a/lib/gui_qt.py b/lib/gui_qt.py index 6e37239b..676f1235 100644 --- a/lib/gui_qt.py +++ b/lib/gui_qt.py @@ -1489,6 +1489,7 @@ class ElectrumWindow(QMainWindow): def settings_dialog(self): d = QDialog(self) + d.setWindowTitle(_('Electrum Settings')) d.setModal(1) vbox = QVBoxLayout() msg = _('Here are the settings of your wallet.') + '\n'\ @@ -1498,46 +1499,60 @@ class ElectrumWindow(QMainWindow): label.setFixedWidth(250) label.setWordWrap(True) label.setAlignment(Qt.AlignJustify) + + tabs = QTabWidget(self) + vbox.addWidget(tabs) + vbox.addWidget(label) - grid = QGridLayout() - grid.setSpacing(8) - vbox.addLayout(grid) + tab = QWidget() + grid_wallet = QGridLayout(tab) + grid_wallet.setColumnStretch(0,1) + tabs.addTab(tab, _('Wallet') ) + + tab2 = QWidget() + grid_ui = QGridLayout(tab2) + grid_ui.setColumnStretch(0,1) + tabs.addTab(tab2, _('Display') ) fee_label = QLabel(_('Transaction fee')) - grid.addWidget(fee_label, 2, 0) + grid_wallet.addWidget(fee_label, 2, 0) fee_e = QLineEdit() fee_e.setText("%s"% str( Decimal( self.wallet.fee)/100000000 ) ) - grid.addWidget(fee_e, 2, 1) + grid_wallet.addWidget(fee_e, 2, 1) msg = _('Fee per transaction input. Transactions involving multiple inputs tend to require a higher fee.') + ' ' \ + _('Recommended value') + ': 0.001' - grid.addWidget(HelpButton(msg), 2, 2) + grid_wallet.addWidget(HelpButton(msg), 2, 2) fee_e.textChanged.connect(lambda: numbify(fee_e,False)) if not self.config.is_modifiable('fee'): for w in [fee_e, fee_label]: w.setEnabled(False) nz_label = QLabel(_('Display zeros')) - grid.addWidget(nz_label, 3, 0) + grid_ui.addWidget(nz_label, 3, 0) nz_e = QLineEdit() nz_e.setText("%d"% self.wallet.num_zeros) - grid.addWidget(nz_e, 3, 1) + grid_ui.addWidget(nz_e, 3, 1) msg = _('Number of zeros displayed after the decimal point. For example, if this is set to 2, "1." will be displayed as "1.00"') - grid.addWidget(HelpButton(msg), 3, 2) + grid_ui.addWidget(HelpButton(msg), 3, 2) nz_e.textChanged.connect(lambda: numbify(nz_e,True)) if not self.config.is_modifiable('num_zeros'): for w in [nz_e, nz_label]: w.setEnabled(False) - usechange_cb = QCheckBox(_('Use change addresses')) - grid.addWidget(usechange_cb, 5, 0) - usechange_cb.setChecked(self.wallet.use_change) - grid.addWidget(HelpButton(_('Using change addresses makes it more difficult for other people to track your transactions. ')), 5, 2) - if not self.config.is_modifiable('use_change'): usechange_cb.setEnabled(False) + + usechange_label = QLabel(_('Use change addresses')) + grid_wallet.addWidget(usechange_label, 5, 0) + usechange_combo = QComboBox() + usechange_combo.addItems(['Yes', 'No']) + usechange_combo.setCurrentIndex(not self.wallet.use_change) + grid_wallet.addWidget(usechange_combo, 5, 1) + grid_wallet.addWidget(HelpButton(_('Using change addresses makes it more difficult for other people to track your transactions. ')), 5, 2) + if not self.config.is_modifiable('use_change'): usechange_combo.setEnabled(False) gap_label = QLabel(_('Gap limit')) - grid.addWidget(gap_label, 6, 0) + grid_wallet.addWidget(gap_label, 6, 0) gap_e = QLineEdit() gap_e.setText("%d"% self.wallet.gap_limit) - grid.addWidget(gap_e, 6, 1) + grid_wallet.addWidget(gap_e, 6, 1) msg = _('The gap limit is the maximal number of contiguous unused addresses in your sequence of receiving addresses.') + '\n' \ + _('You may increase it if you need more receiving addresses.') + '\n\n' \ + _('Your current gap limit is') + ': %d'%self.wallet.gap_limit + '\n' \ @@ -1545,25 +1560,25 @@ class ElectrumWindow(QMainWindow): + _('Warning') + ': ' \ + _('The gap limit parameter must be provided in order to recover your wallet from seed.') + ' ' \ + _('Do not modify it if you do not understand what you are doing, or if you expect to recover your wallet without knowing it!') + '\n\n' - grid.addWidget(HelpButton(msg), 6, 2) + grid_wallet.addWidget(HelpButton(msg), 6, 2) gap_e.textChanged.connect(lambda: numbify(nz_e,True)) if not self.config.is_modifiable('gap_limit'): for w in [gap_e, gap_label]: w.setEnabled(False) gui_label=QLabel(_('Default GUI') + ':') - grid.addWidget(gui_label , 7, 0) + grid_ui.addWidget(gui_label , 7, 0) gui_combo = QComboBox() gui_combo.addItems(['Lite', 'Classic', 'Gtk', 'Text']) index = gui_combo.findText(self.config.get("gui","classic").capitalize()) if index==-1: index = 1 gui_combo.setCurrentIndex(index) - grid.addWidget(gui_combo, 7, 1) - grid.addWidget(HelpButton(_('Select which GUI mode to use at start up. ')), 7, 2) + grid_ui.addWidget(gui_combo, 7, 1) + grid_ui.addWidget(HelpButton(_('Select which GUI mode to use at start up. ')), 7, 2) if not self.config.is_modifiable('gui'): for w in [gui_combo, gui_label]: w.setEnabled(False) lang_label=QLabel(_('Language') + ':') - grid.addWidget(lang_label , 8, 0) + grid_ui.addWidget(lang_label , 8, 0) lang_combo = QComboBox() languages = ['', 'br', 'cs', 'de', 'eo', 'en', 'es', 'fr', 'it', 'lv', 'nl', 'ru', 'sl', 'vi', 'zh'] lang_combo.addItems(languages) @@ -1572,8 +1587,8 @@ class ElectrumWindow(QMainWindow): except: index = 0 lang_combo.setCurrentIndex(index) - grid.addWidget(lang_combo, 8, 1) - grid.addWidget(HelpButton(_('Select which language is used in the GUI (after restart). ')), 8, 2) + grid_ui.addWidget(lang_combo, 8, 1) + grid_ui.addWidget(HelpButton(_('Select which language is used in the GUI (after restart). ')), 8, 2) if not self.config.is_modifiable('language'): for w in [lang_combo, lang_label]: w.setEnabled(False) @@ -1608,8 +1623,9 @@ class ElectrumWindow(QMainWindow): self.update_history_tab() self.update_receive_tab() - if self.wallet.use_change != usechange_cb.isChecked(): - self.wallet.use_change = usechange_cb.isChecked() + usechange_result = usechange_combo.currentIndex() == 0 + if self.wallet.use_change != usechange_result: + self.wallet.use_change = usechange_result self.config.set_key('use_change', self.wallet.use_change, True) try: