tMessageBoxMixin-related cleanup - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 0ecf2565ce484ab0d79cf902f417a3fb6307f6d1 DIR parent 8bcd13242309d5888c92c7a03db60a42f6573446 HTML Author: Neil Booth <kyuupichan@gmail.com> Date: Wed, 23 Dec 2015 20:05:09 +0900 MessageBoxMixin-related cleanup Diffstat: M gui/qt/__init__.py | 6 +++--- M gui/qt/installwizard.py | 20 ++------------------ M gui/qt/util.py | 58 +++++++++++-------------------- 3 files changed, 26 insertions(+), 58 deletions(-) --- DIR diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py t@@ -64,7 +64,7 @@ class OpenFileEventFilter(QObject): -class ElectrumGui: +class ElectrumGui(MessageBoxMixin): def __init__(self, config, network, plugins): set_language(config.get('language')) t@@ -134,7 +134,7 @@ class ElectrumGui: try: storage = WalletStorage(filename) except Exception as e: - WindowModalDialog.warning(None, _('Error'), str(e)) + self.show_error(str(e)) return if not storage.file_exists: recent = self.config.get('recently_open', []) t@@ -147,7 +147,7 @@ class ElectrumGui: wallet = Wallet(storage) except BaseException as e: traceback.print_exc(file=sys.stdout) - WindowModalDialog.warning(None, _('Warning'), str(e)) + self.show_warning(str(e)) return action = wallet.get_action() # run wizard DIR diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py t@@ -384,22 +384,6 @@ class InstallWizard(WindowModalDialog, MessageBoxMixin): wallet_type = '%dof%d'%(m,n) return wallet_type - def question(self, msg, yes_label=_('OK'), no_label=_('Cancel'), icon=None): - vbox = QVBoxLayout() - self.set_layout(vbox) - if icon: - logo = QLabel() - logo.setPixmap(icon) - vbox.addWidget(logo) - label = QLabel(msg) - label.setWordWrap(True) - vbox.addWidget(label) - vbox.addStretch(1) - vbox.addLayout(Buttons(CancelButton(self, no_label), OkButton(self, yes_label))) - if not self.exec_(): - return None - return True - def show_seed(self, seed, sid): vbox = seed_dialog.show_seed_box_msg(seed, sid) vbox.addLayout(Buttons(CancelButton(self), OkButton(self, _("Next")))) t@@ -418,8 +402,8 @@ class InstallWizard(WindowModalDialog, MessageBoxMixin): path = self.storage.path msg = _("The file '%s' contains an incompletely created wallet.\n" "Do you want to complete its creation now?") % path - if not question(msg): - if question(_("Do you want to delete '%s'?") % path): + if not self.question(msg): + if self.question(_("Do you want to delete '%s'?") % path): os.remove(path) self.show_warning(_('The file was removed')) return DIR diff --git a/gui/qt/util.py b/gui/qt/util.py t@@ -195,24 +195,35 @@ class CancelButton(QPushButton): class MessageBoxMixin: def question(self, msg, parent=None, title=None): Yes, No = QMessageBox.Yes, QMessageBox.No - return WindowModalDialog.question(parent or self, title, msg, - buttons=Yes|No, - defaultButton=No) == Yes + return self.msg_box(QMessageBox.Question, parent or self, title or '', + msg, buttons=Yes|No, defaultButton=No) == Yes def show_warning(self, msg, parent=None, title=None): - return WindowModalDialog.warning(parent or self, - title or _('Warning'), msg) + return self.msg_box(QMessageBox.Warning, parent or self, + title or _('Warning'), msg) def show_error(self, msg, parent=None): - return self.show_warning(msg, parent=parent, title=_('Error')) + return self.msg_box(QMessageBox.Warning, parent or self, + _('Error'), msg) def show_critical(self, msg, parent=None, title=None): - return WindowModalDialog.critical(parent or self, - title or _('Critical Error'), msg) + return self.msg_box(QMessageBox.Critical, parent or self, + title or _('Critical Error'), msg) def show_message(self, msg, parent=None, title=None): - return WindowModalDialog.information(self, title or _('Information'), - msg) + return self.msg_box(QMessageBox.Information, parent or self, + title or _('Information'), msg) + + @staticmethod + def msg_box(icon, parent, title, text, buttons=QMessageBox.Ok, + defaultButton=QMessageBox.NoButton): + # handle e.g. ElectrumGui + if not isinstance(parent, QWidget): + parent = None + d = QMessageBox(icon, title, text, buttons, parent) + d.setWindowModality(Qt.WindowModal) + d.setDefaultButton(defaultButton) + return d.exec_() class WindowModalDialog(QDialog): '''Handy wrapper; window modal dialogs are better for our multi-window t@@ -223,30 +234,6 @@ class WindowModalDialog(QDialog): if title: self.setWindowTitle(title) - @staticmethod - def question(*args, **kwargs): - return WindowModalDialog.msg_box(QMessageBox.Question, *args, **kwargs) - - @staticmethod - def critical(*args, **kwargs): - return WindowModalDialog.msg_box(QMessageBox.Critical, *args, **kwargs) - - @staticmethod - 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): - d = QMessageBox(icon, title, text, buttons, parent) - d.setWindowModality(Qt.WindowModal) - d.setDefaultButton(defaultButton) - return d.exec_() - def line_dialog(parent, title, label, ok_label, default=None): dialog = WindowModalDialog(parent, title) dialog.setMinimumWidth(500) t@@ -276,9 +263,6 @@ def text_dialog(parent, title, label, ok_label, default=None): if dialog.exec_(): return unicode(txt.toPlainText()) -def question(msg): - return QMessageBox.question(None, _('Message'), msg, QMessageBox.Yes | QMessageBox.No, QMessageBox.No) == QMessageBox.Yes - def address_field(addresses): hbox = QHBoxLayout() address_e = QLineEdit()