editor.common.dispatcher

This module provide global signal toolkit.

Typical usage example:

 1from editor.common.dispatcher import dispatcher
 2
 3def listener1(): print(f'listener1')
 4def listener2(data): print(f'listener2: {data}')
 5def listener3(data, sender): print(f'listener3: {data}, {sender}')
 6
 7dispatcher.connectSignal('foo', listener1)
 8dispatcher.connectSignal('foo', listener2)
 9dispatcher.disconnectSignal('foo', listener2)
10dispatcher.connectSignal('bar', listener2)
11dispatcher.connectSignal('bar', listener3)
12
13sender = 1 # can be any type, sender is just a general identity
14dispatcher.emitSignal('foo', 'test_data', sender)
15dispatcher.emitSignal('bar', 'test_data', sender)

Module Contents

class editor.common.dispatcher.Dispatcher[source]

Bases: PySide6.QtCore.QObject

Handle general global signal stuff.

In most situation, this Dispatcher class do not need be instanced by user. The built-in dispatcher instance is fully meet the needs.

sig[source]

A qt signal attribute, all functions are built on this.

Type:

PySide6.QtCore.Signal(str, any, any)

listenerTable[source]

All connected listerners table.

Type:

dict[str, list[function]]

connectSignal(msg, listener)[source]

Register a listenter of certain message.

Parameters:
  • msg (str) – Message to listener.

  • listener (function) – Called when listenered message emitted.

disconnectSignal(msg, listener)[source]

Unregister a listenter of certain message.

Parameters:
  • msg (str) – Message to remove from.

  • listener (function) – Listener to remove.

emitSignal(msg, data=None, sender=None)[source]

Emit a sinal, will trigger all registered listeners.

Parameters:
  • msg (str) – Message to emit.

  • data (any) – Data to emit with.

  • sender (any) – Indicate emit’s sender.

clear()[source]

Clear all listeners of all messages.

editor.common.dispatcher.dispatcher[source]

Built-in Dispatcher instance.

Type:

Dispatcher