Ignore:
Timestamp:
11/28/12 17:57:08 (17 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Moved widget actions definitions into SchemeEditWidget.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/gui/utils.py

    r11170 r11208  
    55import os 
    66import sys 
     7import traceback 
    78 
    89from contextlib import contextmanager 
    910 
    1011from PyQt4.QtGui import ( 
    11     QWidget, QGradient, QLinearGradient, QRadialGradient, QBrush, QPainter, 
    12     QStyleOption, QStyle 
     12    QWidget, QMessageBox, QGradient, QLinearGradient, QRadialGradient, QBrush, 
     13    QPainter, QStyleOption, QStyle 
    1314) 
    1415 
     
    3839    finally: 
    3940        qobject.blockSignals(old_state) 
     41 
     42 
     43@contextmanager 
     44def disabled(qobject): 
     45    """Disables a disablable QObject instance. 
     46    """ 
     47    if not (hasattr(qobject, "setEnabled") and hasattr(qobject, "isEnabled")): 
     48        raise TypeError("%r does not have 'enabled' property" % qobject) 
     49 
     50    old_state = qobject.isEnabled() 
     51    qobject.setEnabled(False) 
     52    try: 
     53        yield 
     54    finally: 
     55        qobject.setEnabled(old_state) 
    4056 
    4157 
     
    147163        brush.setColor(brush.color().darker(factor)) 
    148164        return brush 
     165 
     166 
     167def message_critical(text, title=None, informative_text=None, details=None, 
     168                     buttons=None, default_button=None, exc_info=False, 
     169                     parent=None): 
     170    """Show a critical message. 
     171    """ 
     172    if not text: 
     173        text = "An unexpected error occurred." 
     174 
     175    if title is None: 
     176        title = "Error" 
     177 
     178    return message(QMessageBox.Critical, text, title, informative_text, 
     179                   details, buttons, default_button, exc_info, parent) 
     180 
     181 
     182def message_warning(text, title=None, informative_text=None, details=None, 
     183                    buttons=None, default_button=None, exc_info=False, 
     184                    parent=None): 
     185    """Show a warning message. 
     186    """ 
     187    if not text: 
     188        import random 
     189        text_candidates = ["Death could come at any moment.", 
     190                           "Murphy lurks about. Remember to save frequently." 
     191                           ] 
     192        text = random.choice(text_candidates) 
     193 
     194    if title is not None: 
     195        title = "Warning" 
     196 
     197    return message(QMessageBox.Warning, text, title, informative_text, 
     198                   details, buttons, default_button, exc_info, parent) 
     199 
     200 
     201def message_information(text, title=None, informative_text=None, details=None, 
     202                        buttons=None, default_button=None, exc_info=False, 
     203                        parent=None): 
     204    """Show an information message box. 
     205    """ 
     206    if title is None: 
     207        title = "Information" 
     208    if not text: 
     209        text = "I am not a number." 
     210 
     211    return message(QMessageBox.Information, text, title, informative_text, 
     212                   details, buttons, default_button, exc_info, parent) 
     213 
     214 
     215def message_question(text, title, informative_text=None, details=None, 
     216                     buttons=None, default_button=None, exc_info=False, 
     217                     parent=None): 
     218    """Show an message box asking the user to select some 
     219    predefined course of action (set by buttons argument). 
     220 
     221    """ 
     222    return message(QMessageBox.Question, text, title, informative_text, 
     223                   details, buttons, default_button, exc_info, parent) 
     224 
     225 
     226def message(icon, text, title=None, informative_text=None, details=None, 
     227            buttons=None, default_button=None, exc_info=False, parent=None): 
     228    """Show a message helper function. 
     229    """ 
     230    if title is None: 
     231        title = "Message" 
     232    if not text: 
     233        text = "I am neither a postman nor a doctor." 
     234 
     235    if buttons is None: 
     236        buttons = QMessageBox.Ok 
     237 
     238    if details is None and exc_info: 
     239        details = traceback.format_exc(limit=20) 
     240 
     241    mbox = QMessageBox(icon, title, text, buttons, parent) 
     242 
     243    if informative_text: 
     244        mbox.setInformativeText(informative_text) 
     245 
     246    if details: 
     247        mbox.setDetailedText(details) 
     248 
     249    if default_button is not None: 
     250        mbox.setDefaultButton(default_button) 
     251 
     252    return mbox.exec_() 
Note: See TracChangeset for help on using the changeset viewer.