Source code for orangecanvas.scheme.events

"""
Workflow Events
---------------

Here defined are events dispatched to and from an Scheme workflow
instance.

"""
import typing

from AnyQt.QtCore import QEvent

from typing import Any

if typing.TYPE_CHECKING:
    from orangecanvas.scheme import SchemeLink, SchemeNode, BaseSchemeAnnotation

__all__ = [
    "WorkflowEvent", "NodeEvent", "LinkEvent", "AnnotationEvent",
    "WorkflowEnvChanged"
]


[docs]class WorkflowEvent(QEvent): #: Delivered to Scheme when a node has been added NodeAdded = QEvent.Type(QEvent.registerEventType()) #: Delivered to Scheme when a node has been removed NodeRemoved = QEvent.Type(QEvent.registerEventType()) #: A Link has been added to the scheme LinkAdded = QEvent.Type(QEvent.registerEventType()) #: A Link has been removed from the scheme LinkRemoved = QEvent.Type(QEvent.registerEventType()) #: An input Link has been added to a node InputLinkAdded = QEvent.Type(QEvent.registerEventType()) #: An output Link has been added to a node OutputLinkAdded = QEvent.Type(QEvent.registerEventType()) #: An input Link has been removed from a node InputLinkRemoved = QEvent.Type(QEvent.registerEventType()) #: An output Link has been removed from a node OutputLinkRemoved = QEvent.Type(QEvent.registerEventType()) #: Node's (runtime) state has changed NodeStateChange = QEvent.Type(QEvent.registerEventType()) #: Link's (runtime) state has changed LinkStateChange = QEvent.Type(QEvent.registerEventType()) #: Request for Node's runtime initialization (e.g. #: load required data, establish connection, ...) NodeInitialize = QEvent.Type(QEvent.registerEventType()) #: Restore the node from serialized state NodeRestore = QEvent.Type(QEvent.registerEventType()) NodeSaveStateRequest = QEvent.Type(QEvent.registerEventType()) #: Node user activate request (e.g. on double click in the #: canvas GUI) NodeActivateRequest = QEvent.Type(QEvent.registerEventType()) # Workflow runtime changed (Running/Paused/Stopped, ...) RuntimeStateChange = QEvent.Type(QEvent.registerEventType()) #: Workflow resource changed (e.g. work directory, env variable) WorkflowResourceChange = QEvent.Type(QEvent.registerEventType()) WorkflowEnvironmentChange = WorkflowResourceChange #: Workflow is about to close. WorkflowAboutToClose = QEvent.Type(QEvent.registerEventType()) WorkflowClose = QEvent.Type(QEvent.registerEventType()) AnnotationAdded = QEvent.Type(QEvent.registerEventType()) AnnotationRemoved = QEvent.Type(QEvent.registerEventType()) AnnotationChange = QEvent.Type(QEvent.registerEventType()) #: Request activation (show and raise) of the window containing #: the workflow view ActivateParentRequest = QEvent.Type(QEvent.registerEventType())
[docs]class NodeEvent(WorkflowEvent): def __init__(self, etype, node): # type: (QEvent.Type, SchemeNode) -> None super().__init__(etype) self.__node = node def node(self): # type: () -> SchemeNode """ Return ------ node : SchemeNode The node instance. """ return self.__node
[docs]class LinkEvent(WorkflowEvent): def __init__(self, etype, link): # type: (QEvent.Type, SchemeLink) -> None super().__init__(etype) self.__link = link def link(self): # type: () -> SchemeLink """ Return ------ link : SchemeLink The link instance. """ return self.__link
[docs]class AnnotationEvent(WorkflowEvent): def __init__(self, etype, annotation): # type: (QEvent.Type, BaseSchemeAnnotation) -> None super().__init__(etype) self.__annotation = annotation def annotation(self): # type: () -> BaseSchemeAnnotation """ Return ------ annotation : BaseSchemeAnnotation The annotation instance. """ return self.__annotation
[docs]class WorkflowEnvChanged(WorkflowEvent): """ An event notifying the receiver of a workflow environment change. See Also -------- Scheme.runtime_env """ def __init__(self, name, newValue, oldValue): super().__init__(WorkflowEvent.WorkflowEnvironmentChange) self.__name = name self.__oldValue = oldValue self.__newValue = newValue def name(self): # type: () -> str """ The name of the environment property. """ return self.__name def oldValue(self): # type: () -> Any """ The old value. """ return self.__oldValue def newValue(self): # type: () -> Any """ The new value. """ return self.__newValue