QScxmlStateMachine

The QScxmlStateMachine class provides an interface to the state machines created from SCXML files. More

Inheritance diagram of PySide2.QtScxml.QScxmlStateMachine

Synopsis

Functions

Slots

Signals

Static functions

Detailed Description

QScxmlStateMachine is an implementation of the State Chart XML (SCXML) .

All states that are defined in the SCXML file are accessible as properties of QScxmlStateMachine . These properties are boolean values and indicate whether the state is active or inactive.

Note

The QScxmlStateMachine needs a QEventLoop to work correctly. The event loop is used to implement the delay attribute for events and to schedule the processing of a state machine when events are received from nested (or parent) state machines.

class PySide2.QtScxml.QScxmlStateMachine(metaObject[, parent=None])
Parameters:
PySide2.QtScxml.QScxmlStateMachine.activeStateNames([compress=true])
Parameters:

compress – bool

Return type:

list of strings

Retrieves a list of state names of all active states.

When a state is active, all its parent states are active by definition. When compress is true (the default), the parent states will be filtered out and only the leaf states will be returned. When it is false , the full list of active states will be returned.

PySide2.QtScxml.QScxmlStateMachine.cancelDelayedEvent(sendId)
Parameters:

sendId – str

Cancels a delayed event with the specified sendId .

PySide2.QtScxml.QScxmlStateMachine.connectToEvent(scxmlEventSpec, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

PySide2.QtCore.QMetaObject.Connection

PySide2.QtScxml.QScxmlStateMachine.connectToState(scxmlStateName, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

PySide2.QtCore.QMetaObject.Connection

PySide2.QtScxml.QScxmlStateMachine.dataModel()
Return type:

PySide2.QtScxml.QScxmlDataModel

This property holds The data model to be used for this state machine..

SCXML data models are described in SCXML Specification - 5 Data Model and Data Manipulation . For more information about supported data models, see SCXML Compliance .

Changing the data model when the state machine has been initialized is not specified in the SCXML standard and leads to undefined behavior.

PySide2.QtScxml.QScxmlStateMachine.dataModelChanged(model)
Parameters:

modelPySide2.QtScxml.QScxmlDataModel

PySide2.QtScxml.QScxmlStateMachine.finished()
static PySide2.QtScxml.QScxmlStateMachine.fromData(data[, fileName=""])
Parameters:
Return type:

PySide2.QtScxml.QScxmlStateMachine

Creates a state machine by reading from the QIODevice specified by data .

This method will always return a state machine. If errors occur while reading the SCXML file, fileName , the state machine cannot be started. The errors can be retrieved by calling the parseErrors() method.

See also

parseErrors()

static PySide2.QtScxml.QScxmlStateMachine.fromFile(fileName)
Parameters:

fileName – str

Return type:

PySide2.QtScxml.QScxmlStateMachine

Creates a state machine from the SCXML file specified by fileName .

This method will always return a state machine. If errors occur while reading the SCXML file, the state machine cannot be started. The errors can be retrieved by calling the parseErrors() method.

See also

parseErrors()

PySide2.QtScxml.QScxmlStateMachine.init()
Return type:

bool

Initializes the state machine.

State machine initialization consists of calling setup() , setting the initial values for <data> elements, and executing any <script> tags of the <scxml> tag. The initial data values are taken from the initialValues property.

Returns false if parse errors occur or if any of the initialization steps fail. Returns true otherwise.

PySide2.QtScxml.QScxmlStateMachine.initialValues()
Return type:

This property holds The initial values to be used for setting up the data model..

PySide2.QtScxml.QScxmlStateMachine.initialValuesChanged(initialValues)
Parameters:

initialValues

PySide2.QtScxml.QScxmlStateMachine.initializedChanged(initialized)
Parameters:

initialized – bool

PySide2.QtScxml.QScxmlStateMachine.invokedServices()
Return type:

This property holds A list of SCXML services that were invoked from the main state machine (possibly recursively)..

PySide2.QtScxml.QScxmlStateMachine.invokedServicesChanged(invokedServices)
Parameters:

invokedServices

PySide2.QtScxml.QScxmlStateMachine.isActive(scxmlStateName)
Parameters:

scxmlStateName – str

Return type:

bool

PySide2.QtScxml.QScxmlStateMachine.isActive(stateIndex)
Parameters:

stateIndex – int

Return type:

bool

Returns true if the state with the ID stateIndex is active.

This method is part of the interface to the compiled representation of SCXML state machines. It should only be used internally and by state machines compiled from SCXML documents.

PySide2.QtScxml.QScxmlStateMachine.isDispatchableTarget(target)
Parameters:

target – str

Return type:

bool

Returns true if a message to target can be dispatched by this state machine.

Valid targets are:

  • #_parent for the parent state machine if the current state machine is started by <invoke>

  • #_internal for the current state machine

  • #_scxml_sessionid, where sessionid is the session ID of the current state machine

  • #_servicename, where servicename is the ID or name of a service started with <invoke> by this state machine

PySide2.QtScxml.QScxmlStateMachine.isInitialized()
Return type:

bool

This property holds Whether the state machine has been initialized..

It is true if the state machine has been initialized, false otherwise.

PySide2.QtScxml.QScxmlStateMachine.isInvoked()
Return type:

bool

This property holds Whether the state machine was invoked from an outer state machine..

true when the state machine was started as a service with the <invoke> element, false otherwise.

PySide2.QtScxml.QScxmlStateMachine.isRunning()
Return type:

bool

This property holds the running state of this state machine.

See also

start()

PySide2.QtScxml.QScxmlStateMachine.loader()
Return type:

PySide2.QtScxml.QScxmlCompiler.Loader

This property holds The loader that is currently used to resolve and load URIs for the state machine..

PySide2.QtScxml.QScxmlStateMachine.loaderChanged(loader)
Parameters:

loaderPySide2.QtScxml.QScxmlCompiler.Loader

PySide2.QtScxml.QScxmlStateMachine.log(label, msg)
Parameters:
  • label – str

  • msg – str

PySide2.QtScxml.QScxmlStateMachine.name()
Return type:

str

This property holds The name of the state machine as set by the name attribute of the <scxml> tag..

PySide2.QtScxml.QScxmlStateMachine.parseErrors()
Return type:

This property holds The list of parse errors that occurred while creating a state machine from an SCXML file..

PySide2.QtScxml.QScxmlStateMachine.reachedStableState()
PySide2.QtScxml.QScxmlStateMachine.runningChanged(running)
Parameters:

running – bool

PySide2.QtScxml.QScxmlStateMachine.sessionId()
Return type:

str

This property holds The session ID of the current state machine..

The session ID is used for message routing between parent and child state machines. If a state machine is started by an <invoke> element, any event it sends will have the invokeid field set to the session ID. The state machine will use the origin of an event (which is set by the target or targetexpr attribute in a <send> element) to dispatch messages to the correct child state machine.

See also

invokeId()

PySide2.QtScxml.QScxmlStateMachine.setDataModel(model)
Parameters:

modelPySide2.QtScxml.QScxmlDataModel

This property holds The data model to be used for this state machine..

SCXML data models are described in SCXML Specification - 5 Data Model and Data Manipulation . For more information about supported data models, see SCXML Compliance .

Changing the data model when the state machine has been initialized is not specified in the SCXML standard and leads to undefined behavior.

PySide2.QtScxml.QScxmlStateMachine.setInitialValues(initialValues)
Parameters:

initialValues

This property holds The initial values to be used for setting up the data model..

PySide2.QtScxml.QScxmlStateMachine.setLoader(loader)
Parameters:

loaderPySide2.QtScxml.QScxmlCompiler.Loader

This property holds The loader that is currently used to resolve and load URIs for the state machine..

PySide2.QtScxml.QScxmlStateMachine.setRunning(running)
Parameters:

running – bool

This property holds the running state of this state machine.

See also

start()

PySide2.QtScxml.QScxmlStateMachine.setTableData(tableData)
Parameters:

tableDataPySide2.QtScxml.QScxmlTableData

This property holds The table data that is used when generating C++ from an SCXML file..

The class implementing the state machine will use this property to assign the generated table data. The state machine does not assume ownership of the table data.

PySide2.QtScxml.QScxmlStateMachine.start()

Starts this state machine. The machine will reset its configuration and transition to the initial state. When a final top-level state is entered, the machine will emit the finished() signal.

Note

A state machine will not run without a running event loop, such as the main application event loop started with exec() or exec() .

PySide2.QtScxml.QScxmlStateMachine.stateNames([compress=true])
Parameters:

compress – bool

Return type:

list of strings

Retrieves a list of state names of all states.

When compress is true (the default), the states that contain child states will be filtered out and only the leaf states will be returned. When it is false , the full list of all states will be returned.

The returned list does not contain the states of possible nested state machines.

Note

The order of the state names in the list is the order in which the states occurred in the SCXML document.

PySide2.QtScxml.QScxmlStateMachine.stop()

Stops this state machine. The machine will not execute any further state transitions. Its running property is set to false .

PySide2.QtScxml.QScxmlStateMachine.submitEvent(event)
Parameters:

eventPySide2.QtScxml.QScxmlEvent

Submits the SCXML event event to the internal or external event queue depending on the priority of the event.

When a delay is set, the event will be queued for delivery after the timeout has passed. The state machine takes ownership of event and deletes it after processing.

PySide2.QtScxml.QScxmlStateMachine.submitEvent(eventName)
Parameters:

eventName – str

PySide2.QtScxml.QScxmlStateMachine.submitEvent(eventName, data)
Parameters:
  • eventName – str

  • data – object

A utility method to create and submit an external event with the specified eventName as the name and data as the payload data.

PySide2.QtScxml.QScxmlStateMachine.tableData()
Return type:

PySide2.QtScxml.QScxmlTableData

This property holds The table data that is used when generating C++ from an SCXML file..

The class implementing the state machine will use this property to assign the generated table data. The state machine does not assume ownership of the table data.

PySide2.QtScxml.QScxmlStateMachine.tableDataChanged(tableData)
Parameters:

tableDataPySide2.QtScxml.QScxmlTableData