@@ -3512,9 +3512,9 @@ bool LibraryWidget::saveTextLibraryTreeItem(LibraryTreeItem *pLibraryTreeItem)
35123512bool LibraryWidget::saveMetaModelLibraryTreeItem (LibraryTreeItem *pLibraryTreeItem)
35133513{
35143514 if (pLibraryTreeItem->getFileName ().isEmpty ()) {
3515- return saveAsMetaModelLibraryTreeItem (pLibraryTreeItem);
3515+ return saveAsMetaModelLibraryTreeItem (pLibraryTreeItem);
35163516 } else {
3517- return saveMetaModelLibraryTreeItem (pLibraryTreeItem, pLibraryTreeItem->getFileName ());
3517+ return saveMetaModelLibraryTreeItem (pLibraryTreeItem, pLibraryTreeItem->getFileName ());
35183518 }
35193519}
35203520
@@ -3530,9 +3530,9 @@ bool LibraryWidget::saveAsMetaModelLibraryTreeItem(LibraryTreeItem *pLibraryTree
35303530 QString name = pLibraryTreeItem->getName ();
35313531 fileName = StringHandler::getSaveFileName (this , QString (Helper::applicationName).append (" - " ).append (tr (" Save File" )), NULL ,
35323532 Helper::xmlFileTypes, NULL , " xml" , &name);
3533- if (fileName.isEmpty ()) // if user press ESC
3533+ if (fileName.isEmpty ()) { // if user press ESC
35343534 return false ;
3535-
3535+ }
35363536 return saveMetaModelLibraryTreeItem (pLibraryTreeItem, fileName);
35373537}
35383538
@@ -3553,11 +3553,13 @@ bool LibraryWidget::saveMetaModelLibraryTreeItem(LibraryTreeItem *pLibraryTreeIt
35533553 file.close ();
35543554 /* mark the file as saved and update the labels. */
35553555 pLibraryTreeItem->setIsSaved (true );
3556+ QString oldMetaModelFile = pLibraryTreeItem->getFileName ();
35563557 pLibraryTreeItem->setFileName (fileName);
35573558 if (pLibraryTreeItem->getModelWidget ()) {
35583559 pLibraryTreeItem->getModelWidget ()->setWindowTitle (pLibraryTreeItem->getNameStructure ());
35593560 pLibraryTreeItem->getModelWidget ()->setModelFilePathLabel (fileName);
35603561 }
3562+ mpLibraryTreeModel->updateLibraryTreeItem (pLibraryTreeItem);
35613563 // Create folders for the submodels and copy there source file in them.
35623564 MetaModelEditor *pMetaModelEditor = dynamic_cast <MetaModelEditor*>(pLibraryTreeItem->getModelWidget ()->getEditor ());
35633565 GraphicsView *pGraphicsView = pLibraryTreeItem->getModelWidget ()->getDiagramGraphicsView ();
@@ -3566,30 +3568,33 @@ bool LibraryWidget::saveMetaModelLibraryTreeItem(LibraryTreeItem *pLibraryTreeIt
35663568 QDomElement subModel = subModels.at (i).toElement ();
35673569 QString directoryName = subModel.attribute (" Name" );
35683570 Component *pComponent = pGraphicsView->getComponentObject (directoryName);
3569- if (pComponent) {
3570- // create directory for submodel
3571- QFileInfo fileInfo (fileName);
3572- QString directoryPath = fileInfo.absoluteDir ().absolutePath () + " /" + directoryName;
3573- if (!QDir ().exists (directoryPath)) {
3574- QDir ().mkpath (directoryPath);
3575- }
3576- // copy the submodel file to the created directory
3577- QString modelFile = pComponent->getLibraryTreeItem ()->getFileName ();
3578- QFileInfo modelFileInfo (modelFile);
3579- QString newFileName = directoryPath + " /" + modelFileInfo.fileName ();
3580- if (modelFileInfo.absoluteFilePath ().compare (newFileName) != 0 ) {
3581- // first try to remove the file because QFile::copy will not override the file.
3582- QFile::remove (newFileName);
3583- }
3584- QFile::copy (modelFileInfo.absoluteFilePath (), newFileName);
3571+ QString modelFile;
3572+ if (pComponent && pComponent->getLibraryTreeItem ()) {
3573+ modelFile = pComponent->getLibraryTreeItem ()->getFileName ();
3574+ } else {
3575+ QFileInfo fileInfo (oldMetaModelFile);
3576+ modelFile = QString (" %1/%2/%3" ).arg (fileInfo.absolutePath ()).arg (directoryName).arg (subModel.attribute (" ModelFile" ));
3577+ }
3578+ // create directory for submodel
3579+ QFileInfo fileInfo (fileName);
3580+ QString directoryPath = fileInfo.absoluteDir ().absolutePath () + " /" + directoryName;
3581+ if (!QDir ().exists (directoryPath)) {
3582+ QDir ().mkpath (directoryPath);
3583+ }
3584+ // copy the submodel file to the created directory
3585+ QFileInfo modelFileInfo (modelFile);
3586+ QString newFileName = directoryPath + " /" + modelFileInfo.fileName ();
3587+ if (modelFileInfo.absoluteFilePath ().compare (newFileName) != 0 ) {
3588+ // first try to remove the file because QFile::copy will not override the file.
3589+ QFile::remove (newFileName);
35853590 }
3591+ QFile::copy (modelFileInfo.absoluteFilePath (), newFileName);
35863592 }
35873593 } else {
35883594 QMessageBox::information (this , Helper::applicationName + " - " + Helper::error, GUIMessages::getMessage (GUIMessages::ERROR_OCCURRED)
35893595 .arg (GUIMessages::getMessage (GUIMessages::UNABLE_TO_SAVE_FILE).arg (file.errorString ())), Helper::ok);
35903596 return false ;
35913597 }
3592- getMainWindow ()->addRecentFile (pLibraryTreeItem->getFileName (), Helper::utf8);
35933598 return true ;
35943599}
35953600
0 commit comments