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.

shutdown() None[fuente]#

Apagar los servicios, liberar recursos.

subscribe(handler: Callable[[object], None]) None[fuente]#

Registrar un manejador.

Los manejadores se accionan (ejecutan) cuando se emiten eventos específicos a través del método handle().

unsubscribe(handler: Callable[[object], None]) None[fuente]#

Anula el registro de un manipulador previamente registrado.

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.