track-reordering works \o/
This commit is contained in:
parent
a244529a4f
commit
aa65670383
@ -26,7 +26,11 @@ bool SyncDocument::load(const std::string &fileName)
|
|||||||
|
|
||||||
// look up track-name, create it if it doesn't exist
|
// look up track-name, create it if it doesn't exist
|
||||||
int trackIndex = getTrackIndex(name);
|
int trackIndex = getTrackIndex(name);
|
||||||
if (0 > trackIndex) trackIndex = int(createTrack(name));
|
if (0 > trackIndex)
|
||||||
|
{
|
||||||
|
trackIndex = int(createTrack(name));
|
||||||
|
trackOrder.push_back(trackIndex);
|
||||||
|
}
|
||||||
|
|
||||||
MSXML2::IXMLDOMNodeListPtr rowNodes = trackNode->GetchildNodes();
|
MSXML2::IXMLDOMNodeListPtr rowNodes = trackNode->GetchildNodes();
|
||||||
for (int i = 0; i < rowNodes->Getlength(); ++i)
|
for (int i = 0; i < rowNodes->Getlength(); ++i)
|
||||||
@ -65,6 +69,7 @@ bool SyncDocument::load(const std::string &fileName)
|
|||||||
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
MessageBox(NULL, temp, NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -267,7 +267,8 @@ public:
|
|||||||
|
|
||||||
size_t getTrackIndexFromPos(size_t track) const
|
size_t getTrackIndexFromPos(size_t track) const
|
||||||
{
|
{
|
||||||
return track;
|
assert(track < trackOrder.size());
|
||||||
|
return trackOrder[track];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool load(const std::string &fileName);
|
bool load(const std::string &fileName);
|
||||||
@ -277,6 +278,8 @@ public:
|
|||||||
std::map<size_t, size_t> clientRemap;
|
std::map<size_t, size_t> clientRemap;
|
||||||
bool clientPaused;
|
bool clientPaused;
|
||||||
|
|
||||||
|
std::vector<size_t> trackOrder;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::stack<Command*> undoStack;
|
std::stack<Command*> undoStack;
|
||||||
std::stack<Command*> redoStack;
|
std::stack<Command*> redoStack;
|
||||||
|
|||||||
@ -524,7 +524,11 @@ int _tmain(int argc, _TCHAR* argv[])
|
|||||||
|
|
||||||
// find track
|
// find track
|
||||||
int serverIndex = document.getTrackIndex(trackName);
|
int serverIndex = document.getTrackIndex(trackName);
|
||||||
if (0 > serverIndex) serverIndex = int(document.createTrack(trackName));
|
if (0 > serverIndex)
|
||||||
|
{
|
||||||
|
serverIndex = int(document.createTrack(trackName));
|
||||||
|
document.trackOrder.push_back(serverIndex);
|
||||||
|
}
|
||||||
|
|
||||||
// setup remap
|
// setup remap
|
||||||
document.clientRemap[serverIndex] = clientIndex;
|
document.clientRemap[serverIndex] = clientIndex;
|
||||||
|
|||||||
@ -867,8 +867,21 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
else setEditRow(editRow + 1);
|
else setEditRow(editRow + 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_LEFT: setEditTrack(editTrack - 1); break;
|
case VK_LEFT:
|
||||||
case VK_RIGHT: setEditTrack(editTrack + 1); break;
|
if (GetKeyState(VK_CONTROL) < 0 && 0 < editTrack)
|
||||||
|
{
|
||||||
|
std::swap(document->trackOrder[editTrack], document->trackOrder[editTrack - 1]);
|
||||||
|
}
|
||||||
|
setEditTrack(editTrack - 1);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VK_RIGHT:
|
||||||
|
if (GetKeyState(VK_CONTROL) < 0 && document->trackOrder.size() > editTrack + 1)
|
||||||
|
{
|
||||||
|
std::swap(document->trackOrder[editTrack], document->trackOrder[editTrack + 1]);
|
||||||
|
}
|
||||||
|
setEditTrack(editTrack + 1);
|
||||||
|
break;
|
||||||
|
|
||||||
case VK_PRIOR:
|
case VK_PRIOR:
|
||||||
if (GetKeyState(VK_CONTROL) < 0)
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user