Sistema de eventos#
El sistema de eventos de Gaphor proporciona una API para manejar eventos y suscribirse a eventos.
En Gaphor gestionamos las suscripciones a los manejadores de eventos a través del servicio EventManager
. Gaphor está altamente orientado a eventos:
Los cambios en el modelo cargado se emiten como eventos
Los cambios en los diagramas se emiten como eventos
Los cambios en la interfaz de usuario se emiten como eventos
Aunque Gaphor depende en gran medida de GTK para su interfaz de usuario, Gaphor usa su propio despachador de eventos. Los eventos se pueden estructurar en jerarquías. Por ejemplo, un evento AttributeUpdated
es un subtipo de ElementUpdated
. Si estamos interesados en todos los cambios en los elementos, también podemos registrar ElementUpdated
y recibir todos los eventos AttributeUpdated
también.
- class gaphor.core.eventmanager.EventManager[fuente]#
El gestor de eventos.
- handle(*events: object) None [fuente]#
Enviar notificaciones de eventos a los manejadores registrados.
- priority_subscribe(handler: Callable[[object], None]) None [fuente]#
Registrar un manejador.
Los manejadores de prioridad se ejecutan directamente. No deben lanzar otros eventos, porque eso puede causar un problema en el orden de ejecución.
Es básicamente para asegurarse de que todos los eventos son registrados por el gestor de deshacer.
Bajo el capó los eventos son manejados por la librería Generic. Para obtener más información sobre cómo la biblioteca Generic gestiona los eventos, consulte la documentación de Generic.