/** * Calls UMLDoc::signalUMLObjectCreated() if m_BaseType affords * doing so. */ void UMLObject::maybeSignalObjectCreated() { if (!m_bCreationWasSignalled && m_BaseType != ot_Stereotype && m_BaseType != ot_Association && m_BaseType != ot_Role) { m_bCreationWasSignalled = true; UMLDoc* umldoc = UMLApp::app()->document(); umldoc->signalUMLObjectCreated(this); } }
/** * Creates a Unique Constraint for this Entity. * @param name an optional name * @return the UniqueConstraint created */ UMLUniqueConstraint* UMLEntity::createUniqueConstraint(const QString &name ) { Uml::IDType id = UniqueID::gen(); QString currentName; if (name.isNull()) { /** * @todo check parameter */ currentName = uniqChildName(UMLObject::ot_UniqueConstraint); } else { currentName = name; } UMLUniqueConstraint* newUniqueConstraint = new UMLUniqueConstraint(this, currentName, id); int button = KDialog::Accepted; bool goodName = false; //check for name.isNull() stops dialog being shown //when creating attribute via list view while (button == KDialog::Accepted && !goodName && name.isNull()) { QPointer<UMLUniqueConstraintDialog> dialog = new UMLUniqueConstraintDialog(0, newUniqueConstraint); button = dialog->exec(); QString name = newUniqueConstraint->name(); if (name.length() == 0) { KMessageBox::error(0, i18n("That is an invalid name."), i18n("Invalid Name")); } else if ( findChildObject(name) != NULL ) { KMessageBox::error(0, i18n("That name is already being used."), i18n("Not a Unique Name")); } else { goodName = true; } delete dialog; } if (button != KDialog::Accepted) { delete newUniqueConstraint; return NULL; } addConstraint(newUniqueConstraint); UMLDoc *umldoc = UMLApp::app()->document(); umldoc->signalUMLObjectCreated(newUniqueConstraint); emitModified(); return newUniqueConstraint; }
// Create the UMLObject void CmdCreateUMLObject::redo() { // This object was removed from it's package when it was deleted // so add it back to it's package ( if it belonged to one ) UMLPackage *pkg = m_obj->umlPackage(); if (pkg) { // add this object to its parent package pkg->addObject(m_obj); } else { // object does not belong to any package } UMLDoc *doc = UMLApp::app()->document(); doc->signalUMLObjectCreated(m_obj); }
/** * Create an UMLAttribute. * @param name an optional name for the attribute * @param type an optional type object for the attribute * @param vis the visibility of the attribute * @param iv the initial value for the attribute * @return the just created attribute or null */ UMLAttribute* UMLEntity::createAttribute(const QString &name /*= QString()*/, UMLObject *type /*= 0*/, Uml::Visibility vis /* = Uml::Visibility::Private*/, const QString& iv /* = QString()*/) { Uml::IDType id = UniqueID::gen(); QString currentName; if (name.isNull()) { currentName = uniqChildName(UMLObject::ot_EntityAttribute); } else { currentName = name; } UMLEntityAttribute* newAttribute = new UMLEntityAttribute(this, currentName, id, vis, type, iv); int button = KDialog::Accepted; bool goodName = false; //check for name.isNull() stops dialog being shown //when creating attribute via list view while (button == KDialog::Accepted && !goodName && name.isNull()) { QPointer<UMLEntityAttributeDialog> dialog = new UMLEntityAttributeDialog(0, newAttribute); button = dialog->exec(); QString name = newAttribute->name(); if (name.length() == 0) { KMessageBox::error(0, i18n("That is an invalid name."), i18n("Invalid Name")); } else if ( findChildObject(name) != NULL ) { KMessageBox::error(0, i18n("That name is already being used."), i18n("Not a Unique Name")); } else { goodName = true; } delete dialog; } if (button != KDialog::Accepted) { delete newAttribute; return 0; } addEntityAttribute(newAttribute); UMLDoc *umldoc = UMLApp::app()->document(); umldoc->signalUMLObjectCreated(newAttribute); return newAttribute; }
/** * Create the UMLObject. */ void CmdCreateUMLObject::redo() { // This object was removed from its package when it was deleted // so add it back to its package (if it belonged to one) if (m_package) { if (m_package->baseType() != UMLObject::ot_Association) { // add this object to its parent package m_package->addObject(m_obj); } else uError() << "Try to use an unsupported Association as parent"; } // The first call to redo, the object was created and signalled by the // caller (umlscene). On subsequent calls we use the "umlobject created" // signal to update Umbrello with the re-added object. if (m_skipSignal) { m_skipSignal = false; } else { UMLDoc *doc = UMLApp::app()->document(); doc->signalUMLObjectCreated(m_obj); } }