diff --git a/gui/gui_classic.py b/gui/gui_classic.py index dc7bc966..75da35e2 100644 --- a/gui/gui_classic.py +++ b/gui/gui_classic.py @@ -226,7 +226,6 @@ class StatusBarButton(QPushButton): - def waiting_dialog(f): s = Timer() @@ -248,19 +247,35 @@ def waiting_dialog(f): w.destroy() -def ok_cancel_buttons(dialog): +def ok_cancel_buttons(dialog, ok_label=_("OK") ): hbox = QHBoxLayout() hbox.addStretch(1) - b = QPushButton("Cancel") + b = QPushButton(_("Cancel")) hbox.addWidget(b) b.clicked.connect(dialog.reject) - b = QPushButton("OK") + b = QPushButton(ok_label) hbox.addWidget(b) b.clicked.connect(dialog.accept) b.setDefault(True) return hbox +def text_dialog(parent, title, label, ok_label): + dialog = QDialog(parent) + dialog.setMinimumWidth(500) + dialog.setWindowTitle(title) + dialog.setModal(1) + l = QVBoxLayout() + dialog.setLayout(l) + l.addWidget(QLabel(label)) + txt = QTextEdit() + l.addWidget(txt) + l.addLayout(ok_cancel_buttons(dialog, ok_label)) + if dialog.exec_(): + return unicode(txt.toPlainText()) + + + default_column_widths = { "history":[40,140,350,140], "contacts":[350,330], "receive":[[370],[370,200,130]] } @@ -1729,23 +1744,10 @@ class ElectrumWindow(QMainWindow): self.show_message("There was a problem sending your transaction:\n %s" % (result_message)) def do_process_from_text(self): - dialog = QDialog(self) - dialog.setMinimumWidth(500) - dialog.setWindowTitle(_('Input raw transaction')) - dialog.setModal(1) - l = QVBoxLayout() - dialog.setLayout(l) - l.addWidget(QLabel(_("Transaction:"))) - txt = QTextEdit() - l.addWidget(txt) - - ok_button = QPushButton(_("Load transaction")) - ok_button.setDefault(True) - ok_button.clicked.connect(dialog.accept) - l.addWidget(ok_button) - - dialog.exec_() - tx_dict = self.tx_dict_from_text(unicode(txt.toPlainText())) + text = text_dialog(self, _('Input raw transaction'), _("Transaction:"), _("Load transaction")) + if not text: + return + tx_dict = self.tx_dict_from_text(text) if tx_dict: self.create_process_transaction_window(tx_dict) @@ -1858,19 +1860,28 @@ class ElectrumWindow(QMainWindow): + _('Are you sure you understand what you are doing?'), 3, 4) if r == 4: return - text, ok = QInputDialog.getText(self, _('Import private key'), _('Private Key') + ':') - if not ok: return - sec = str(text).strip() - try: - addr = self.wallet.import_key(sec, password) - if not addr: - QMessageBox.critical(None, _("Unable to import key"), "error") + text = text_dialog(self, _('Import private keys'), _("Enter private keys")+':', _("Import")) + if not text: return + + text = str(text).split() + badkeys = [] + addrlist = [] + for key in text: + try: + addr = self.wallet.import_key(key, password) + except BaseException as e: + badkeys.append(key) + continue + if not addr: + badkeys.append(key) else: - QMessageBox.information(None, _("Key imported"), addr) - self.update_receive_tab() - self.update_history_tab() - except BaseException as e: - QMessageBox.critical(None, _("Unable to import key"), str(e)) + addrlist.append(addr) + if addrlist: + QMessageBox.information(self, _('Information'), _("The following addresses were added") + ':\n' + '\n'.join(addrlist)) + if badkeys: + QMessageBox.critical(self, _('Error'), _("The following inputs could not be imported") + ':\n'+ '\n'.join(badkeys)) + self.update_receive_tab() + self.update_history_tab() def settings_dialog(self):