Move message box logic to a mixin

This commit is contained in:
Neil Booth 2015-12-23 15:10:15 +09:00
parent 72fdf0cd21
commit 15e9991e2a
5 changed files with 33 additions and 34 deletions

View File

@ -62,7 +62,7 @@ class CosignWidget(QWidget):
class InstallWizard(WindowModalDialog):
class InstallWizard(WindowModalDialog, MessageBoxMixin):
def __init__(self, app, config, network, storage):
title = 'Electrum' + ' - ' + _('Install Wizard')
@ -157,7 +157,7 @@ class InstallWizard(WindowModalDialog):
if not r:
return
if prepare_seed(r) != prepare_seed(seed):
QMessageBox.warning(None, _('Error'), _('Incorrect seed'), _('OK'))
self.show_error(_('Incorrect seed'))
return False
else:
return True
@ -421,8 +421,7 @@ class InstallWizard(WindowModalDialog):
if not question(msg):
if question(_("Do you want to delete '%s'?") % path):
os.remove(path)
QMessageBox.information(self, _('Warning'),
_('The file was removed'), _('OK'))
self.show_warning(_('The file was removed'))
return
return
self.show()
@ -434,7 +433,7 @@ class InstallWizard(WindowModalDialog):
wallet = self.run_wallet_type(action, wallet_type)
except BaseException as e:
traceback.print_exc(file=sys.stdout)
QMessageBox.information(None, _('Error'), str(e), _('OK'))
self.show_error(str(e))
return
return wallet
@ -527,7 +526,7 @@ class InstallWizard(WindowModalDialog):
if self.config.get('server') is None:
self.network_dialog()
else:
QMessageBox.information(None, _('Warning'), _('You are offline'), _('OK'))
self.show_warning(_('You are offline'))
# start wallet threads
@ -539,7 +538,7 @@ class InstallWizard(WindowModalDialog):
msg = _("Recovery successful") if wallet.is_found() else _("No transactions found for this seed")
else:
msg = _("This wallet was restored offline. It may contain more addresses than displayed.")
QMessageBox.information(None, _('Information'), msg, _('OK'))
self.show_message(msg)
return wallet

View File

@ -102,7 +102,7 @@ expiration_values = [
class ElectrumWindow(QMainWindow, PrintError):
class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
def __init__(self, gui_object, wallet):
QMainWindow.__init__(self)
@ -338,7 +338,7 @@ class ElectrumWindow(QMainWindow, PrintError):
if new_path != path:
try:
shutil.copy2(path, new_path)
QMessageBox.information(None,"Wallet backup created", _("A copy of your wallet file was created in")+" '%s'" % str(new_path))
self.show_message(_("A copy of your wallet file was created in")+" '%s'" % str(new_path), title=_("Wallet backup created"))
except (IOError, os.error), reason:
self.show_critical(_("Electrum was unable to copy your wallet file to the specified location.") + "\n" + str(reason), title=_("Unable to create backup"))
@ -458,7 +458,7 @@ class ElectrumWindow(QMainWindow, PrintError):
_("Before reporting a bug, upgrade to the most recent version of Electrum (latest release or git HEAD), and include the version number in your report."),
_("Try to explain not only what the bug is, but how it occurs.")
])
QMessageBox.information(self, "Electrum - " + _("Reporting Bugs"), msg)
self.show_message(msg, title="Electrum - " + _("Reporting Bugs"))
def notify_transactions(self):
if not self.network or not self.network.is_connected():
@ -1318,7 +1318,7 @@ class ElectrumWindow(QMainWindow, PrintError):
if status:
if tx_desc is not None and tx.is_complete():
self.wallet.set_label(tx.hash(), tx_desc)
QMessageBox.information(parent, '', _('Payment sent.') + '\n' + msg, _('OK'))
self.show_message(_('Payment sent.') + '\n' + msg, parent=parent)
self.invoices_list.update()
self.do_clear()
else:
@ -1971,7 +1971,7 @@ class ElectrumWindow(QMainWindow, PrintError):
@protected
def show_seed_dialog(self, password):
if not self.wallet.has_seed():
QMessageBox.information(self, _('Message'), _('This wallet has no seed'), _('OK'))
self.show_message(_('This wallet has no seed'))
return
try:
@ -2158,19 +2158,6 @@ class ElectrumWindow(QMainWindow, PrintError):
def question(self, msg):
return QMessageBox.question(self, _('Message'), msg, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes
def show_message(self, msg):
QMessageBox.information(self, _('Message'), msg, _('OK'))
def show_warning(self, msg, parent=None, title=None):
WindowModalDialog.warning(parent or self, title or _('Warning'), msg)
def show_error(self, msg, parent=None):
self.show_warning(msg, parent=parent, title=_('Error'))
def show_critical(self, msg, parent=None, title=None):
WindowModalDialog.critical(parent or self,
title or _('Critical Error'), msg)
def password_dialog(self, msg=None, parent=None):
if parent == None:
parent = self
@ -2376,7 +2363,7 @@ class ElectrumWindow(QMainWindow, PrintError):
f.close()
for key, value in json.loads(data).items():
self.wallet.set_label(key, value)
QMessageBox.information(None, _("Labels imported"), _("Your labels were imported from")+" '%s'" % str(labelsFile))
self.show_message(_("Your labels were imported from") + " '%s'" % str(labelsFile))
except (IOError, os.error) as reason:
self.show_critical(_("Electrum was unable to import your labels.") + "\n" + str(reason))
@ -2388,7 +2375,7 @@ class ElectrumWindow(QMainWindow, PrintError):
if fileName:
with open(fileName, 'w+') as f:
json.dump(labels, f)
QMessageBox.information(None, _("Labels exported"), _("Your labels where exported to")+" '%s'" % str(fileName))
self.show_message(_("Your labels where exported to") + " '%s'" % str(fileName))
except (IOError, os.error), reason:
self.show_critical(_("Electrum was unable to export your labels.") + "\n" + str(reason))
@ -2417,7 +2404,7 @@ class ElectrumWindow(QMainWindow, PrintError):
export_error_label = _("Electrum was unable to produce a transaction export.")
self.show_critical(export_error_label + "\n" + str(reason), title=_("Unable to export history"))
return
QMessageBox.information(self,_("History exported"), _("Your wallet history has been successfully exported."))
self.show_message(_("Your wallet history has been successfully exported."))
def do_export_history(self, wallet, fileName, is_csv):
@ -2530,7 +2517,7 @@ class ElectrumWindow(QMainWindow, PrintError):
else:
addrlist.append(addr)
if addrlist:
QMessageBox.information(self, _('Information'), _("The following addresses were added") + ':\n' + '\n'.join(addrlist))
self.show_message(_("The following addresses were added") + ':\n' + '\n'.join(addrlist))
if badkeys:
self.show_critical(_("The following inputs could not be imported") + ':\n'+ '\n'.join(badkeys))
self.address_list.update()

View File

@ -192,6 +192,20 @@ class CancelButton(QPushButton):
QPushButton.__init__(self, label or _("Cancel"))
self.clicked.connect(dialog.reject)
class MessageBoxMixin:
def show_warning(self, msg, parent=None, title=None):
WindowModalDialog.warning(parent or self, title or _('Warning'), msg)
def show_error(self, msg, parent=None):
self.show_warning(msg, parent=parent, title=_('Error'))
def show_critical(self, msg, parent=None, title=None):
WindowModalDialog.critical(parent or self,
title or _('Critical Error'), msg)
def show_message(self, msg, parent=None, title=None):
WindowModalDialog.information(self, title or _('Information'), msg)
class WindowModalDialog(QDialog):
'''Handy wrapper; window modal dialogs are better for our multi-window
daemon model as other wallet windows can still be accessed.'''
@ -209,6 +223,10 @@ class WindowModalDialog(QDialog):
def warning(*args, **kwargs):
return WindowModalDialog.msg_box(QMessageBox.Warning, *args, **kwargs)
@staticmethod
def information(*args, **kwargs):
return WindowModalDialog.msg_box(QMessageBox.Information, *args, **kwargs)
@staticmethod
def msg_box(icon, parent, title, text, buttons=QMessageBox.Ok,
defaultButton=QMessageBox.NoButton):

View File

@ -2,7 +2,6 @@ from PyQt4.Qt import QApplication, QMessageBox, QDialog, QInputDialog, QLineEdit
import PyQt4.QtCore as QtCore
import threading
from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog
from electrum.plugins import BasePlugin, hook
from ledger import LedgerPlugin

View File

@ -194,7 +194,3 @@ class Plugin(TrezorPlugin):
layout.addWidget(current_label_label,3,0)
layout.addWidget(change_label_button,3,1)
d.exec_()