Changeset 8849:5be9d5bacce7 in orange


Ignore:
Timestamp:
08/30/11 12:54:12 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
e9e9631173d1a3d7ebbf7d83d595e9be57036a7d
Message:

Added a widget box to show errors, warnings (fixes #659).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWWidget.py

    r8042 r8849  
    88 
    99class OWWidget(OWBaseWidget): 
    10     def __init__(self, parent=None, signalManager=None, title="Orange Widget", wantGraph=False, wantStatusBar=False, savePosition=True, wantMainArea=1, noReport=False, showSaveGraph=1, resizingEnabled=1, **args): 
     10    def __init__(self, parent=None, signalManager=None, title="Orange Widget", wantGraph=False, wantStatusBar=False, savePosition=True, wantMainArea=1, noReport=False, showSaveGraph=1, resizingEnabled=1, wantStateInfoWidget=None, **args): 
    1111        """ 
    1212        Initialization 
     
    2929            self.mainArea.layout().setMargin(4) 
    3030            self.mainArea.updateGeometry() 
     31             
    3132        self.controlArea = OWGUI.widgetBox(self.leftWidgetPart, orientation="vertical", margin=4)# if wantMainArea else 1) 
    3233 
     
    4041            self.graphButton = OWGUI.button(self.buttonBackground, self, "&Save Graph") 
    4142            self.graphButton.setAutoDefault(0) 
     43             
     44        if wantStateInfoWidget is None: 
     45            wantStateInfoWidget = self._owShowStatus 
     46             
     47        if wantStateInfoWidget: 
     48            # Widget for error, warnings, info. 
     49            self.widgetStateInfoBox = OWGUI.widgetBox(self.leftWidgetPart, "Widget state") 
     50            self.widgetStateInfo = OWGUI.widgetLabel(self.widgetStateInfoBox, "\n") 
     51            self.widgetStateInfo.setWordWrap(True) 
     52            self.widgetStateInfo.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) 
     53            self.widgetStateInfo.setFixedHeight(self.widgetStateInfo.height()) 
     54            self.widgetStateInfoBox.hide() 
     55            def updateWidgetStateInfo(stateType, id, text): 
     56                html = self.widgetStateToHtml(self._owInfo, self._owWarning, self._owError) 
     57                if html: 
     58                    self.widgetStateInfoBox.show() 
     59                    self.widgetStateInfo.setText(html) 
     60                    self.widgetStateInfo.setToolTip(html) 
     61                else: 
     62                    if not self.widgetStateInfoBox.isVisible(): 
     63                        dHeight = - self.widgetStateInfoBox.height() 
     64                    else: 
     65                        dHeight = 0 
     66                    self.widgetStateInfoBox.hide() 
     67                    self.widgetStateInfo.setText("") 
     68                    self.widgetStateInfo.setToolTip("") 
     69                    width, height = self.width(), self.height() + dHeight 
     70                    QTimer.singleShot(50, lambda :self.resize(width, height)) 
     71                     
     72            self.connect(self, SIGNAL("widgetStateChanged(QString, int, QString)"), updateWidgetStateInfo) 
     73         
    4274 
    4375        self.__reportData = None 
Note: See TracChangeset for help on using the changeset viewer.