Source code for schrodinger.ui.sequencealignment.dialogs

"""
Implementation of common dialog boxes used by multiple sequence viewer,
such as error dialog, warning dialog, query dialog. This module can be
also safely used in text mode.
TODO: Separate gui code and text code

Copyright Schrodinger, LLC. All rights reserved.

"""

# Contributors: Piotr Rotkiewicz

from schrodinger.Qt import QtCore
from schrodinger.Qt import QtGui
from schrodinger.Qt import QtWidgets

from . import utils

_PARENT_WIDGET = None


[docs]def set_parent_widget(parent): global _PARENT_WIDGET _PARENT_WIDGET = parent
[docs]def warning_dialog(title, text): """ Displays a warning dialog. """ if QtCore.QCoreApplication.instance(): return QtWidgets.QMessageBox.warning(_PARENT_WIDGET, title, text) else: print("WARNING:", text, "\n")
[docs]def error_dialog(title, text): """ Displays an error dialog. """ if QtCore and QtCore.QCoreApplication.instance() and QtGui: return QtWidgets.QMessageBox.critical(_PARENT_WIDGET, title, text) else: utils.print_error(text)
[docs]def string_input_dialog(title, label, text): """ Displays a text input dialog. """ if QtCore and QtCore.QCoreApplication.instance() and QtGui: return (QtWidgets.QInputDialog.getText(_PARENT_WIDGET, title, label, text=text))
[docs]def question_dialog(title, text, buttons=["yes", "no", "cancel"]): # noqa: M511 """ Displays a question dialog. """ qt_buttons = QtWidgets.QMessageBox.Yes if "no" in buttons: qt_buttons |= QtWidgets.QMessageBox.No if "cancel" in buttons: qt_buttons |= QtWidgets.QMessageBox.Cancel result = QtWidgets.QMessageBox.question(_PARENT_WIDGET, title, text, qt_buttons) if result == QtWidgets.QMessageBox.Yes: return "yes" elif result == QtWidgets.QMessageBox.No: return "no" else: return "cancel"