Move EventManager to gaphor.core

This commit is contained in:
Arjan Molenaar
2020-04-08 21:48:49 +02:00
parent f4591d7de9
commit f84d7b8e31
27 changed files with 28 additions and 93 deletions

View File

@ -1,8 +1,8 @@
import gaphas
import pytest
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.UML import Diagram
from gaphor.UML.presentation import Presentation

View File

@ -1,8 +1,8 @@
import pytest
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
@pytest.fixture

View File

@ -1,8 +1,8 @@
import pytest
import gaphor.UML as UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
@pytest.fixture

View File

@ -5,8 +5,8 @@ Formatting of UML model elements into text tests.
import pytest
import gaphor.UML.uml2 as UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.UML import model
from gaphor.UML.umlfmt import format
from gaphor.UML.umllex import parse

View File

@ -5,8 +5,8 @@ Parsing of UML model elements from string tests.
import pytest
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.UML.umllex import attribute_pat, operation_pat, parameter_pat

View File

@ -5,6 +5,6 @@ An average module should only need to import this module.
"""
from gaphor.action import action
from gaphor.core.eventmanager import event_handler
from gaphor.i18n import gettext
from gaphor.services.eventmanager import event_handler
from gaphor.transaction import Transaction, transactional

View File

@ -23,7 +23,7 @@ from gaphor.UML.event import ElementCreated, ElementDeleted, ModelFlushed, Model
from gaphor.UML.uml2 import Diagram
if TYPE_CHECKING:
from gaphor.services.eventmanager import EventManager # noqa
from gaphor.core.eventmanager import EventManager # noqa
T = TypeVar("T", bound=Element)

View File

@ -1,9 +1,9 @@
import pytest
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.core.modeling.elementdispatcher import ElementDispatcher, EventWatcher
from gaphor.services.eventmanager import EventManager
from gaphor.tests import TestCase
from gaphor.UML import Element
from gaphor.UML.properties import association

View File

@ -4,8 +4,8 @@ import pytest
from gaphor.application import Session
from gaphor.core import event_handler
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.UML import Parameter
from gaphor.UML.event import (
ElementCreated,

View File

@ -1,9 +1,9 @@
import pytest
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.diagram.general.generalpropertypages import CommentItemPropertyPage
from gaphor.services.eventmanager import EventManager
@pytest.fixture

View File

@ -5,10 +5,10 @@ from gaphas.aspect import ConnectionSink
from gaphas.aspect import Connector as ConnectorAspect
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.diagram.connectors import Connector
from gaphor.misc.xmlwriter import XMLWriter
from gaphor.services.eventmanager import EventManager
from gaphor.storage import storage

View File

@ -1,65 +0,0 @@
"""
Event Manager.
"""
from typing import Optional, Sequence, Type
from generic.event import Event, Handler
from generic.event import Manager as _Manager
from gaphor.abc import Service
def event_handler(*event_types):
"""
Mark a function/method as an event handler for a particular type of event.
"""
def wrapper(func):
func.__event_types__ = event_types
return func
return wrapper
class EventManager(Service):
"""
The Event Manager.
"""
def __init__(self) -> None:
self._events = _Manager()
def shutdown(self) -> None:
pass
def subscribe(self, handler: Handler) -> None:
"""
Register a handler. Handlers are triggered (executed) when specific
events are emitted through the handle() method.
"""
event_types = getattr(handler, "__event_types__", None)
if not event_types:
raise Exception(f"No event types provided for function {handler}")
for et in event_types:
self._events.subscribe(handler, et)
def unsubscribe(self, handler: Handler) -> None:
"""
Unregister a previously registered handler.
"""
event_types = getattr(handler, "__event_types__", None)
if not event_types:
raise Exception(f"No event types provided for function {handler}")
for et in event_types:
self._events.unsubscribe(handler, et)
def handle(self, *events: Event) -> None:
"""
Send event notifications to registered handlers.
"""
for e in events:
self._events.handle(e)

View File

@ -3,8 +3,8 @@ Test the UndoManager.
"""
from gaphor.core import event_handler
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.services.undomanager import UndoManager
from gaphor.tests.testcase import TestCase
from gaphor.transaction import Transaction

View File

@ -3,8 +3,8 @@ from io import StringIO
import pytest
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.storage import storage

View File

@ -1,7 +1,7 @@
import pytest
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.storage import diagramitems
from gaphor.storage.parser import canvas, canvasitem, element
from gaphor.storage.storage import load_elements

View File

@ -1,6 +1,6 @@
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.storage.verify import orphan_references

View File

@ -3,8 +3,8 @@
from unittest import TestCase
from gaphor.core import event_handler
from gaphor.core.eventmanager import EventManager
from gaphor.event import TransactionBegin, TransactionCommit, TransactionRollback
from gaphor.services.eventmanager import EventManager
from gaphor.transaction import Transaction, TransactionError
begins = []

View File

@ -43,8 +43,8 @@ class Transaction:
"""
The transaction. On start and end of a transaction an event is emitted.
>>> import gaphor.services.eventmanager
>>> event_manager = gaphor.services.eventmanager.EventManager()
>>> import gaphor.core.eventmanager
>>> event_manager = gaphor.core.eventmanager.EventManager()
Transactions can be nested. If the outermost transaction is committed or
rolled back, an event is emitted.

View File

@ -28,7 +28,7 @@ from gaphor.UML.event import (
if TYPE_CHECKING:
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.core.eventmanager import EventManager
# The following items will be shown in the treeview, although they
# are UML.Namespace elements.

View File

@ -2,9 +2,9 @@ import pytest
from gi.repository import Gtk
from gaphor import UML
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.diagram.diagramtoolbox import TOOLBOX_ACTIONS
from gaphor.services.eventmanager import EventManager
from gaphor.services.properties import Properties
from gaphor.tests.testcase import TestCase
from gaphor.ui.diagrampage import DiagramPage

View File

@ -1,7 +1,7 @@
import pytest
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.services.eventmanager import EventManager
from gaphor.ui.elementeditor import ElementEditor
from gaphor.ui.mainwindow import Diagrams

View File

@ -1,6 +1,6 @@
import pytest
import gaphor.services.eventmanager
import gaphor.core.eventmanager
import gaphor.UML as UML
from gaphor.core.modeling import ElementFactory
from gaphor.ui.namespace import Namespace
@ -8,7 +8,7 @@ from gaphor.ui.namespace import Namespace
@pytest.fixture
def event_manager():
return gaphor.services.eventmanager.EventManager()
return gaphor.core.eventmanager.EventManager()
@pytest.fixture

View File

@ -3,7 +3,7 @@ import pathlib
import pytest
from gi.repository import GLib
from gaphor.services.eventmanager import EventManager
from gaphor.core.eventmanager import EventManager
from gaphor.ui.event import FileLoaded
from gaphor.ui.recentfiles import RecentFiles

View File

@ -10,9 +10,9 @@ from gi.repository import Gdk, GLib, Gtk
from gaphor.abc import ActionProvider
from gaphor.core import gettext
from gaphor.core.eventmanager import event_handler
from gaphor.diagram.diagramtoolbox import ToolDef
from gaphor.diagram.diagramtoolbox_actions import toolbox_actions
from gaphor.services.eventmanager import event_handler
from gaphor.ui.abc import UIComponent
from gaphor.ui.event import ProfileSelectionChanged

View File

@ -67,7 +67,7 @@ gaphorconvert = 'gaphor.tools.gaphorconvert:main'
[tool.poetry.plugins."gaphor.services"]
"component_registry" = "gaphor.services.componentregistry:ComponentRegistry"
"event_manager" = "gaphor.services.eventmanager:EventManager"
"event_manager" = "gaphor.core.eventmanager:EventManager"
"properties" = "gaphor.services.properties:Properties"
"undo_manager" = "gaphor.services.undomanager:UndoManager"
"element_factory" = "gaphor.core.modeling:ElementFactory"

View File

@ -4,9 +4,9 @@ from gaphas.aspect import ConnectionSink, Connector
from gaphor import UML
from gaphor.application import Application
from gaphor.core import transactional
from gaphor.core.eventmanager import EventManager
from gaphor.core.modeling import ElementFactory
from gaphor.diagram.classes import AssociationItem, ClassItem
from gaphor.services.eventmanager import EventManager
from gaphor.services.undomanager import UndoManager

View File

@ -7,7 +7,7 @@ if __name__ == "__main__":
from gaphor.plugins.xmiexport import XMIExport
from gaphor.services.componentregistry import ComponentRegistry
from gaphor.services.copyservice import CopyService
from gaphor.services.eventmanager import EventManager
from gaphor.core.eventmanager import EventManager
from gaphor.services.helpservice import HelpService
from gaphor.services.properties import Properties
from gaphor.services.sanitizerservice import SanitizerService