Changeset 11773:41d75ac844c9 in orange


Ignore:
Timestamp:
11/26/13 14:50:48 (5 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Initialize the SchemeNode state messages on widget initialization.

Location:
Orange/OrangeCanvas
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/scene.py

    r11614 r11773  
    326326        item.setProgress(node.progress) 
    327327        item.setProcessingState(node.processing_state) 
     328        for message in node.state_messages(): 
     329            item.setStateMessage(message) 
    328330 
    329331        self.__item_for_node[node] = item 
  • Orange/OrangeCanvas/scheme/node.py

    r11614 r11773  
    194194                        fget=tool_tip) 
    195195 
     196    #: The node's state message has changed 
     197    state_message_changed = Signal(UserMessage) 
     198 
    196199    def set_state_message(self, message): 
    197200        """ 
     
    203206 
    204207        self.__state_messages[message.message_id] = message 
    205  
    206208        self.state_message_changed.emit(message) 
    207209 
    208     #: The node's state message has changed 
    209     state_message_changed = Signal(UserMessage) 
     210    def state_messages(self): 
     211        """ 
     212        Return a list of all state messages. 
     213        """ 
     214        return self.__state_messages.values() 
    210215 
    211216    def __str__(self): 
  • Orange/OrangeCanvas/scheme/widgetsscheme.py

    r11772 r11773  
    184184        self.__widget_for_node[node] = widget 
    185185        self.__node_for_widget[widget] = node 
     186 
     187        self.__initialize_widget_state(node, widget) 
    186188 
    187189        self.widget_for_node_added.emit(node, widget) 
     
    344346            QCoreApplication.sendEvent(self.scheme(), event) 
    345347 
     348    def __initialize_widget_state(self, node, widget): 
     349        """ 
     350        Initialize the tracked info/warning/error message state. 
     351        """ 
     352        for message_type, state in widget.widgetState.items(): 
     353            for message_id, message_value in state.items(): 
     354                message = user_message_from_state( 
     355                    widget, message_type, message_id, message_value) 
     356 
     357                node.set_state_message(message) 
     358 
    346359    def __on_widget_state_changed(self, message_type, message_id, 
    347360                                  message_value): 
     
    361374            pass 
    362375        else: 
    363             message_type = str(message_type) 
    364             if message_type == "Info": 
    365                 contents = widget.widgetStateToHtml(True, False, False) 
    366                 level = UserMessage.Info 
    367             elif message_type == "Warning": 
    368                 contents = widget.widgetStateToHtml(False, True, False) 
    369                 level = UserMessage.Warning 
    370             elif message_type == "Error": 
    371                 contents = widget.widgetStateToHtml(False, False, True) 
    372                 level = UserMessage.Error 
    373             else: 
    374                 raise ValueError("Invalid message_type: %r" % message_type) 
    375  
    376             if not contents: 
    377                 contents = None 
    378  
    379             message = UserMessage(contents, severity=level, 
    380                                   message_id=message_type, 
    381                                   data={"content-type": "text/html"}) 
     376            message = user_message_from_state( 
     377                widget, str(message_type), message_id, message_value) 
     378 
    382379            node.set_state_message(message) 
    383380 
     
    458455            widget.deleteLater() 
    459456            del self.__widget_processing_state[widget] 
     457 
     458 
     459def user_message_from_state(widget, message_type, message_id, message_value): 
     460    message_type = str(message_type) 
     461    if message_type == "Info": 
     462        contents = widget.widgetStateToHtml(True, False, False) 
     463        level = UserMessage.Info 
     464    elif message_type == "Warning": 
     465        contents = widget.widgetStateToHtml(False, True, False) 
     466        level = UserMessage.Warning 
     467    elif message_type == "Error": 
     468        contents = widget.widgetStateToHtml(False, False, True) 
     469        level = UserMessage.Error 
     470    else: 
     471        raise ValueError("Invalid message_type: %r" % message_type) 
     472 
     473    if not contents: 
     474        contents = None 
     475 
     476    message = UserMessage(contents, severity=level, 
     477                          message_id=message_type, 
     478                          data={"content-type": "text/html"}) 
     479    return message 
    460480 
    461481 
Note: See TracChangeset for help on using the changeset viewer.