def test_verifier(self): factory = self.element_factory c = factory.create(UML.Class) p = factory.create(UML.Property) c.ownedAttribute = p assert not orphan_references(factory) # Now create a separate item, not part of the factory: m = UML.Comment(id="acd123") m.annotatedElement = c assert m in c.ownedComment assert orphan_references(factory)
def verify_orphans(self): """Verify that no orphaned elements are saved. This method checks of there are any orphan references in the element factory. If orphans are found, a dialog is displayed asking the user if it is OK to unlink them.""" orphans = verify.orphan_references(self.element_factory) if orphans: main_window = self.main_window dialog = QuestionDialog( _( "The model contains some references" " to items that are not maintained." " Do you want to clean this before" " saving the model?" ), parent=main_window.window, ) answer = dialog.answer dialog.destroy() if not answer: for orphan in orphans: orphan.unlink()
def verify_orphans(self): """Verify that no orphaned elements are saved. This method checks of there are any orphan references in the element factory. If orphans are found, a dialog is displayed asking the user if it is OK to unlink them.""" orphans = verify.orphan_references(self.element_factory) if orphans: main_window = self.main_window dialog = QuestionDialog( _("The model contains some references" " to items that are not maintained." " Do you want to clean this before" " saving the model?"), parent=main_window.window, ) answer = dialog.answer dialog.destroy() if not answer: for orphan in orphans: orphan.unlink()
def _skip_test_copy_paste_undo(self): """ Test if copied data is undoable. """ from gaphor.storage.verify import orphan_references service = CopyService() service.init(Application) # Setting the stage: ci1 = self.create(items.ClassItem, UML.Class) ci2 = self.create(items.ClassItem, UML.Class) a = self.create(items.AssociationItem) self.connect(a, a.head, ci1) self.connect(a, a.tail, ci2) self.assertTrue(a.subject) self.assertTrue(a.head_end.subject) self.assertTrue(a.tail_end.subject) # The act: copy and paste, perform undo afterwards service.copy([ci1, ci2, a]) service.paste(self.diagram) all_items = list(self.diagram.canvas.get_all_items()) self.assertEqual(6, len(all_items)) self.assertFalse(orphan_references(self.element_factory)) self.assertSame(all_items[0].subject, all_items[3].subject) self.assertSame(all_items[1].subject, all_items[4].subject) self.assertSame(all_items[2].subject, all_items[5].subject) undo_manager = self.get_service("undo_manager") undo_manager.undo_transaction() self.assertEqual(3, len(self.diagram.canvas.get_all_items())) self.assertFalse(orphan_references(self.element_factory))
def test_copy_paste_undo(self): """ Test if copied data is undoable. """ from gaphor.storage.verify import orphan_references service = CopyService() service.init(Application) # Setting the stage: ci1 = self.create(items.ClassItem, UML.Class) ci2 = self.create(items.ClassItem, UML.Class) a = self.create(items.AssociationItem) self.connect(a, a.head, ci1) self.connect(a, a.tail, ci2) self.assertTrue(a.subject) self.assertTrue(a.head_end.subject) self.assertTrue(a.tail_end.subject) # The act: copy and paste, perform undo afterwards service.copy([ci1, ci2, a]) service.paste(self.diagram) all_items = list(self.diagram.canvas.get_all_items()) self.assertEquals(6, len(all_items)) self.assertFalse(orphan_references(self.element_factory)) self.assertSame(all_items[0].subject, all_items[3].subject) self.assertSame(all_items[1].subject, all_items[4].subject) self.assertSame(all_items[2].subject, all_items[5].subject) undo_manager = self.get_service('undo_manager') undo_manager.undo_transaction() self.assertEquals(3, len(self.diagram.canvas.get_all_items())) self.assertFalse(orphan_references(self.element_factory))
def _skip_test_copy_paste_undo(self): """ Test if copied data is undoable. """ service = self.service # Setting the stage: ci1 = self.create(ClassItem, UML.Class) ci2 = self.create(ClassItem, UML.Class) a = self.create(AssociationItem) self.connect(a, a.head, ci1) self.connect(a, a.tail, ci2) assert a.subject assert a.head_end.subject assert a.tail_end.subject # The act: copy and paste, perform undo afterwards service.copy([ci1, ci2, a]) service.paste(self.diagram) all_items = list(self.diagram.canvas.get_all_items()) assert 6 == len(all_items) assert not orphan_references(self.element_factory) assert all_items[0].subject is all_items[3].subject assert all_items[1].subject is all_items[4].subject assert all_items[2].subject is all_items[5].subject undo_manager = self.get_service("undo_manager") undo_manager.undo_transaction() assert 3 == len(self.diagram.canvas.get_all_items()) assert not orphan_references(self.element_factory)