def element_factory(): event_manager = EventManager() event_manager.subscribe(handler) clear_events() factory = ElementFactory(event_manager) yield factory clear_events()
def test_uml_associations(self): from gaphor.core.modeling.event import AssociationUpdated from gaphor.core.modeling.properties import association, derivedunion from gaphor.UML import Element event_manager = EventManager() undo_manager = UndoManager(event_manager) element_factory = ElementFactory(event_manager) class A(Element): is_unlinked = False def unlink(self): self.is_unlinked = True Element.unlink(self) A.a1 = association("a1", A, upper=1) A.a2 = association("a2", A, upper=1) A.b1 = association("b1", A, upper="*") A.b2 = association("b2", A, upper="*") A.b3 = association("b3", A, upper=1) A.derived_a = derivedunion("derived_a", A, 0, 1, A.a1, A.a2) A.derived_b = derivedunion("derived_b", A, 0, "*", A.b1, A.b2, A.b3) events = [] @event_handler(AssociationUpdated) def handler(event, events=events): events.append(event) event_manager.subscribe(handler) try: a = element_factory.create(A) undo_manager.begin_transaction() a.a1 = element_factory.create(A) undo_manager.commit_transaction() assert ( len(events) == 2 ), events # both AssociationSet and DerivedSet events assert events[0].property is A.a1 assert undo_manager.can_undo() undo_manager.undo_transaction() assert not undo_manager.can_undo() assert undo_manager.can_redo() assert len(events) == 4, events assert events[2].property is A.a1 finally: event_manager.unsubscribe(handler) undo_manager.shutdown()
def __init__(self, event_manager: EventManager, element_factory: ElementFactory): self.event_manager = event_manager self.element_factory = element_factory self.model = Gtk.TreeStore.new([object]) event_manager.subscribe(self.refresh) event_manager.subscribe(self._on_element_create) event_manager.subscribe(self._on_element_delete) event_manager.subscribe(self._on_association_set) event_manager.subscribe(self._on_attribute_change)
def event_manager(): event_manager = EventManager() event_manager.subscribe(handle_begins) event_manager.subscribe(handle_commits) event_manager.subscribe(handle_rollback) del begins[:] del commits[:] del rollbacks[:] yield event_manager event_manager.unsubscribe(handle_begins) event_manager.unsubscribe(handle_commits) event_manager.unsubscribe(handle_rollback)