[commit] r1706 - trunk/GME/Gme
GMESRC Repository Notifications
gme-commit at list.isis.vanderbilt.edu
Mon Nov 28 13:49:04 CST 2011
Author: ksmyth
Date: Mon Nov 28 13:49:04 2011
New Revision: 1706
Log:
Read version number in xme on xme import
Modified:
trunk/GME/Gme/GMEApp.cpp
Modified: trunk/GME/Gme/GMEApp.cpp
==============================================================================
--- trunk/GME/Gme/GMEApp.cpp Mon Nov 28 13:48:53 2011 (r1705)
+++ trunk/GME/Gme/GMEApp.cpp Mon Nov 28 13:49:04 2011 (r1706)
@@ -2034,14 +2034,15 @@
if (newproject) {
CString dataconn;
COMTRY {
- CComBstrObj paradigm, parversion, basename, version;
- CComVariant parguid;
+ CComBstrObj xmeparadigm, xmeparversion, xmebasename, xmeversion;
+ CComVariant xmeparguid, parguid;
- COMTHROW( parser->GetXMLInfo(PutInBstr(fullPath), PutOut(paradigm), PutOut(parversion), &parguid, PutOut(basename), PutOut(version)) );
+ COMTHROW( parser->GetXMLInfo(PutInBstr(fullPath), PutOut(xmeparadigm), PutOut(xmeparversion), &xmeparguid, PutOut(xmebasename), PutOut(xmeversion)) );
+ parguid = xmeparguid;
CMgaOpenDlg opdlg(CMgaOpenDlg::ImportDialog);
if (ftitle.IsEmpty())
- opdlg.SetFileNameHint(PutInCString(basename));
+ opdlg.SetFileNameHint(PutInCString(xmebasename));
else
opdlg.SetFileNameHint(ftitle);
opdlg.SetFolderPathHint(folderPath);
@@ -2055,15 +2056,33 @@
CComPtr<IMgaRegistrar> reg;
COMTHROW( reg.CoCreateInstance(L"Mga.MgaRegistrar") );
CComBstrObj conn;
- HRESULT h1 = reg->QueryParadigm(paradigm, PutOut(conn), &parguid, REGACCESS_PRIORITY);
- CComVariant pg2;
+ HRESULT h1 = reg->QueryParadigm(xmeparadigm, PutOut(conn), &xmeparguid, REGACCESS_PRIORITY);
+ CComVariant regparguid;
conn.Empty();
- HRESULT h2 = reg->QueryParadigm(paradigm, PutOut(conn), &pg2, REGACCESS_PRIORITY);
+ HRESULT h2 = reg->QueryParadigm(xmeparadigm, PutOut(conn), ®parguid, REGACCESS_PRIORITY);
+ CComBstrObj regCurrentVersion;
+ if (SUCCEEDED(h2)) {
+ reg->VersionFromGUID(xmeparadigm, regparguid, ®CurrentVersion.p, REGACCESS_PRIORITY);
+ }
+
+ CComVariant regGuidFromVersion;
+ HRESULT h3GuidFromVersion = E_FAIL;
+ if (xmeparversion.Length() != 0) {
+ h3GuidFromVersion = reg->GUIDFromVersion(xmeparadigm, xmeparversion, ®GuidFromVersion, REGACCESS_PRIORITY);
+ if (SUCCEEDED(h3GuidFromVersion))
+ {
+ xmeparguid = regGuidFromVersion;
+ } else
+ {
+ h1 = E_MGA_PARADIGM_NOTREG;
+ }
+ }
+
TCHAR buf[300];
if(h2 != S_OK) {
ASSERT(h1 != S_OK);
- CString msg = _T("Could not find paradigm paradigm '") + CString(paradigm) + "'";
- if (CString(paradigm) == _T("MetaGME2000"))
+ CString msg = _T("Could not find paradigm paradigm '") + CString(xmeparadigm) + "'";
+ if (CString(xmeparadigm) == _T("MetaGME2000"))
msg += _T("\n (In GME3 the MetaGME2000 paradigm was renamed to MetaGME)");
msg += _T("\nDo you want to import with an other registered paradigm ?");
if (AfxMessageBox(msg ,MB_OKCANCEL) == IDOK) {
@@ -2072,8 +2091,8 @@
if (SUCCEEDED(launcher->MetaDlg(METADLG_NONE))) {
// parguid = true;
parguid.Clear();
- paradigm.Empty();
- COMTHROW( launcher->get_ParadigmName(PutOut(paradigm)) );
+ xmeparadigm.Empty();
+ COMTHROW( launcher->get_ParadigmName(PutOut(xmeparadigm)) );
}
else {
return; // safe before create
@@ -2084,46 +2103,50 @@
}
}
else {
- CComBstrObj parguid1, parguid2;
+ CComBstrObj bstrxmeparguid, bstrregparguid;
GUID gg;
- CopyTo(parguid,gg);
- CopyTo(gg, parguid1);
+ CopyTo(xmeparguid,gg);
+ CopyTo(gg, bstrxmeparguid);
- CopyTo(pg2,gg);
- CopyTo(gg, parguid2);
+ CopyTo(regparguid,gg);
+ CopyTo(gg, bstrregparguid);
if(h1 != S_OK) {
- _stprintf_s(buf, _T("Could not locate paradigm %s\nVersion ID: %s\n")
- _T("Do you want to upgrade to the current version instead?\nCurrent ID: %s"),
- static_cast<const TCHAR*>(paradigm), static_cast<const TCHAR*>(parguid1), static_cast<const TCHAR*>(parguid2));
- if(AfxMessageBox(buf,MB_OKCANCEL | MB_ICONQUESTION) == IDOK) {
- parguid = pg2;
- }
- else {
- AfxMessageBox(_T("Import canceled"));
- return; // safe before create
- }
+ _stprintf_s(buf, _T("Could not locate paradigm %s, version '%s'.\n\n")
+ _T("Do you want to upgrade to the current version ('%s') instead?"),
+ static_cast<const TCHAR*>(xmeparadigm),
+ static_cast<const TCHAR*>(xmeparversion.Length() != 0 ? xmeparversion : bstrxmeparguid),
+ static_cast<const TCHAR*>(regCurrentVersion.Length() != 0 ? regCurrentVersion : bstrregparguid));
+ if(AfxMessageBox(buf, MB_OKCANCEL | MB_ICONQUESTION) == IDOK) {
+ parguid = regparguid;
+ }
+ else {
+ // AfxMessageBox(_T("Import canceled"));
+ return; // safe before create
+ }
}
- else if(parguid1.Compare(parguid2)) {
- _stprintf_s(buf, _T("This model was exported using paradigm %s\nVersion ID: %s\n")
- _T("Do you want to upgrade to the current version?\nCurrent ID: %s"),
- static_cast<const TCHAR*>(paradigm), static_cast<const TCHAR*>(parguid1), static_cast<const TCHAR*>(parguid2));
- int answer = AfxMessageBox(buf,MB_YESNOCANCEL | MB_ICONQUESTION);
- if(answer == IDYES) {
- parguid = pg2;
- }
- else if(answer == IDCANCEL) {
- AfxMessageBox(_T("Import canceled"));
- return; // safe before create
- }
+ else if(bstrxmeparguid.Compare(bstrregparguid)) {
+ _stprintf_s(buf, _T("This model was exported using paradigm %s, version '%s'.\n\n")
+ _T("Do you want to upgrade to the current version ('%s')?"),
+ static_cast<const TCHAR*>(xmeparadigm),
+ static_cast<const TCHAR*>(xmeparversion.Length() != 0 ? xmeparversion : bstrxmeparguid),
+ static_cast<const TCHAR*>(regCurrentVersion.Length() != 0 ? regCurrentVersion : bstrregparguid));
+ int answer = AfxMessageBox(buf,MB_YESNOCANCEL | MB_ICONQUESTION);
+ if(answer == IDYES) {
+ parguid = regparguid;
+ }
+ else if(answer == IDCANCEL) {
+ // AfxMessageBox(_T("Import canceled"));
+ return; // safe before create
+ }
}
}
}
COMTHROW( mgaProject.CoCreateInstance(L"Mga.MgaProject") );
COMTHROW( mgaProject->EnableAutoAddOns(VARIANT_TRUE));
- HRESULT hr = mgaProject->CreateEx(PutInBstr(dataconn), PutInBstr(paradigm), parguid);
+ HRESULT hr = mgaProject->CreateEx(PutInBstr(dataconn), PutInBstr(xmeparadigm), parguid);
if(hr == E_MGA_PARADIGM_NOTREG || hr == E_MGA_PARADIGM_INVALID) {
TCHAR buf[300];
CComBstrObj parguid1;
@@ -2131,7 +2154,7 @@
CopyTo(parguid,gg);
CopyTo(gg, parguid1);
_stprintf_s(buf, _T("Could not open paradigm %s\nVersion ID: %s"),
- static_cast<const TCHAR*>(paradigm), static_cast<const TCHAR*>(parguid1));
+ static_cast<const TCHAR*>(xmeparadigm), static_cast<const TCHAR*>(parguid1));
AfxMessageBox(buf);
}
@@ -2143,7 +2166,7 @@
err += "\nDo you want to create the project without addons?";
if (AfxMessageBox(err, MB_YESNO) == IDYES) {
mgaProject->EnableAutoAddOns(VARIANT_FALSE);
- hr = mgaProject->CreateEx(PutInBstr(dataconn), PutInBstr(paradigm), parguid);
+ hr = mgaProject->CreateEx(PutInBstr(dataconn), PutInBstr(xmeparadigm), parguid);
}
}
COMTHROW(hr);
More information about the gme-commit
mailing list