Uranium
Application Framework
|
Public Member Functions | |
def | __init__ |
def | getName (self) |
def | __call__ (self) |
def | getType (self) |
def | emit |
def | connect |
def | disconnect (self, connector) |
def | disconnectAll (self) |
def | __getstate__ (self) |
def | __deepcopy__ (self, memo) |
Static Public Attributes | |
int | Direct = 1 |
int | Auto = 2 |
int | Queued = 3 |
Simple implementation of signals and slots. Signals and slots can be used as a light weight event system. A class can define signals that other classes can connect functions or methods to, called slots. Whenever the signal is called, it will proceed to call the connected slots. To create a signal, create an instance variable of type Signal. Other objects can then use that variable's `connect()` method to connect methods, callable objects or signals to the signal. To emit the signal, call `emit()` on the signal. Arguments can be passed along to the signal, but slots will be required to handle them. When connecting signals to other signals, the connected signal will be emitted whenever the signal is emitted. Signal-slot connections are weak references and as such will not prevent objects from being destroyed. In addition, all slots will be implicitly disconnected when the signal is destroyed. **WARNING** It is imperative that the signals are created as instance variables, otherwise emitting signals will get confused. To help with this, see the SignalEmitter class. Loosely based on http://code.activestate.com/recipes/577980-improved-signalsslots-implementation-in-python/ pylint: disable=wrong-spelling-in-comment :sa SignalEmitter
def UM.Signal.Signal.__call__ | ( | self, | |
None | |||
) |
:exception NotImplementedError:
def UM.Signal.Signal.__deepcopy__ | ( | self, | |
memo | |||
) |
To properly handle deepcopy in combination with __getstate__ Apparently deepcopy uses __getstate__ internally, which is not documented. The reimplementation of __getstate__ then breaks deepcopy. On the other hand, if we do not reimplement it like that, we break pickle. So instead make sure to also reimplement __deepcopy__.
def UM.Signal.Signal.__getstate__ | ( | self | ) |
To support Pickle Since Weak containers cannot be serialized by Pickle we just return an empty dict as state.
def UM.Signal.Signal.disconnect | ( | self, | |
connector | |||
) |
Disconnect from this signal. :param connector: The signal or slot (function) to disconnect.
def UM.Signal.Signal.disconnectAll | ( | self | ) |
Disconnect all connected slots.
def UM.Signal.Signal.getType | ( | self, | |
int | |||
) |
Get type of the signal :return: Direct(1), Auto(2) or Queued(3)