added loading-support
This commit is contained in:
parent
712339041a
commit
f49cc1ab73
@ -254,10 +254,9 @@ public:
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void load(const std::string &fileName)
|
bool load(const std::string &fileName)
|
||||||
{
|
{
|
||||||
MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
|
MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
doc->load(fileName.c_str());
|
doc->load(fileName.c_str());
|
||||||
@ -298,7 +297,63 @@ public:
|
|||||||
char temp[256];
|
char temp[256];
|
||||||
_snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
|
_snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
|
||||||
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool save(const std::string &fileName)
|
||||||
|
{
|
||||||
|
MSXML2::IXMLDOMDocumentPtr doc(MSXML2::CLSID_DOMDocument);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_variant_t varNodeType((short)MSXML2::NODE_ELEMENT);
|
||||||
|
MSXML2::IXMLDOMNodePtr rootNode = doc->createNode(varNodeType, _T("tracks"), _T(""));
|
||||||
|
doc->appendChild(rootNode);
|
||||||
|
|
||||||
|
sync::Data::TrackContainer::iterator iter;
|
||||||
|
for (iter = tracks.begin(); iter != tracks.end(); ++iter)
|
||||||
|
{
|
||||||
|
size_t index = iter->second;
|
||||||
|
const sync::Track &track = getTrack(index);
|
||||||
|
|
||||||
|
MSXML2::IXMLDOMElementPtr trackElem = doc->createElement(_T("track"));
|
||||||
|
trackElem->setAttribute(_T("name"), iter->first.c_str());
|
||||||
|
rootNode->appendChild(trackElem);
|
||||||
|
|
||||||
|
sync::Track::KeyFrameContainer::const_iterator it;
|
||||||
|
for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it)
|
||||||
|
{
|
||||||
|
char temp[256];
|
||||||
|
size_t row = it->first;
|
||||||
|
float value = it->second.value;
|
||||||
|
char interpolationType = char(it->second.interpolationType);
|
||||||
|
|
||||||
|
MSXML2::IXMLDOMElementPtr keyElem = doc->createElement(_T("key"));
|
||||||
|
|
||||||
|
_snprintf(temp, 256, "%d", row);
|
||||||
|
keyElem->setAttribute(_T("row"), temp);
|
||||||
|
|
||||||
|
_snprintf(temp, 256, "%f", value);
|
||||||
|
keyElem->setAttribute(_T("value"), temp);
|
||||||
|
|
||||||
|
_snprintf(temp, 256, "%d", interpolationType);
|
||||||
|
keyElem->setAttribute(_T("interpolation"), temp);
|
||||||
|
|
||||||
|
trackElem->appendChild(keyElem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
doc->save(fileName.c_str());
|
||||||
|
}
|
||||||
|
catch(_com_error &e)
|
||||||
|
{
|
||||||
|
char temp[256];
|
||||||
|
_snprintf(temp, 256, "Error loading: %s\n", (const char*)_bstr_t(e.Description()));
|
||||||
|
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
SOCKET clientSocket;
|
SOCKET clientSocket;
|
||||||
|
|||||||
@ -949,11 +949,12 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 's':
|
case 's':
|
||||||
|
document->save("test.rocket");
|
||||||
document->sendSaveCommand();
|
document->sendSaveCommand();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'l':
|
case 'l':
|
||||||
document->load("test.xml");
|
document->load("test.rocket");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|||||||
@ -191,8 +191,6 @@ void ClientDevice::saveTracks()
|
|||||||
for (iter = syncData.tracks.begin(); iter != syncData.tracks.end(); ++iter)
|
for (iter = syncData.tracks.begin(); iter != syncData.tracks.end(); ++iter)
|
||||||
{
|
{
|
||||||
size_t index = iter->second;
|
size_t index = iter->second;
|
||||||
|
|
||||||
assert(index < syncData.getTrackCount());
|
|
||||||
const sync::Track &track = syncData.getTrack(index);
|
const sync::Track &track = syncData.getTrack(index);
|
||||||
saveTrack(track, getTrackFileName(iter->first));
|
saveTrack(track, getTrackFileName(iter->first));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user