Ignore:
Timestamp:
07/02/13 15:23:49 (10 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Refactored widget state messages handling.

Moved the resposibility for handling messages (OWBaseWidget.widgetStateChanged)
to WidgetsScheme.

Added support for messages in base SchemeNode class.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/scheme/node.py

    r11419 r11614  
    99from PyQt4.QtCore import pyqtSignal as Signal 
    1010from PyQt4.QtCore import pyqtProperty as Property 
     11 
     12 
     13class UserMessage(object): 
     14    """ 
     15    A user message that should be displayed in a scheme view. 
     16 
     17    Paramaters 
     18    ---------- 
     19    contents : str 
     20        Message text. 
     21    severity : int 
     22        Message severity. 
     23    message_id : A hashable object 
     24        Message id. 
     25    data : dict 
     26        A dictionary with optional extra data. 
     27 
     28    """ 
     29    #: Severity flags 
     30    Info, Warning, Error = 1, 2, 3 
     31 
     32    def __init__(self, contents, severity=Info, message_id=None, data={}): 
     33        self.contents = contents 
     34        self.severity = severity 
     35        self.message_id = message_id 
     36        self.data = dict(data) 
    1137 
    1238 
     
    4268        self.__progress = -1 
    4369        self.__processing_state = 0 
     70        self.__state_messages = {} 
    4471        self.properties = properties or {} 
    4572 
     
    167194                        fget=tool_tip) 
    168195 
     196    def set_state_message(self, message): 
     197        """ 
     198        Set a message to be displayed by a scheme view for this node. 
     199        """ 
     200        if message.message_id in self.__state_messages and \ 
     201                not message.contents: 
     202            del self.__state_messages[message.message_id] 
     203 
     204        self.__state_messages[message.message_id] = message 
     205 
     206        self.state_message_changed.emit(message) 
     207 
     208    #: The node's state message has changed 
     209    state_message_changed = Signal(UserMessage) 
     210 
    169211    def __str__(self): 
    170212        return u"SchemeNode(description_id=%s, title=%r, ...)" % \ 
Note: See TracChangeset for help on using the changeset viewer.