ctrl-modifying works!

This commit is contained in:
Erik Faye-Lund 2008-02-11 08:56:07 +00:00
parent f8c1ec9d6a
commit 946f151bfc
3 changed files with 42 additions and 14 deletions

View File

@ -113,7 +113,7 @@ public:
commands.clear();
}
void addEditCommand(Command *cmd)
void addCommand(Command *cmd)
{
commands.push_back(cmd);
}
@ -175,22 +175,22 @@ public:
}
}
void setKey(int track, int row, float val)
void setKeyFrame(int track, int row, const SyncTrack::KeyFrame &key)
{
SyncTrack &t = getTrack(track);
SyncEditData::Command *cmd;
if (t.isKeyFrame(row))
{
cmd = new EditCommand(track, row, val);
cmd = new EditCommand(track, row, key);
}
else
{
cmd = new InsertCommand(track, row, val);
cmd = new InsertCommand(track, row, key);
}
exec(cmd);
}
void deleteKey(int track, int row)
void deleteKeyFrame(int track, int row)
{
assert(getTrack(track).isKeyFrame(row));
Command *cmd = new DeleteCommand(track, row);

View File

@ -613,7 +613,7 @@ void TrackView::onReturn()
{
if (editString.size() > 0)
{
syncData->setKey(editTrack, editRow, float(_tstof(editString.c_str())));
syncData->setKeyFrame(editTrack, editRow, float(_tstof(editString.c_str())));
editString.clear();
invalidatePos(editTrack, editRow);
@ -626,7 +626,20 @@ void TrackView::onDelete()
SyncTrack &track = syncData->getTrack(editTrack);
if (track.isKeyFrame(editRow))
{
syncData->deleteKey(editTrack, editRow);
syncData->deleteKeyFrame(editTrack, editRow);
invalidatePos(editTrack, editRow);
}
else MessageBeep(0);
}
void TrackView::bias(float amount)
{
SyncTrack &track = syncData->getTrack(editTrack);
if (track.isKeyFrame(editRow))
{
SyncTrack::KeyFrame newKey = *track.getKeyFrame(editRow);
newKey.value += amount;
syncData->setKeyFrame(editTrack, editRow, newKey);
invalidatePos(editTrack, editRow);
}
else MessageBeep(0);
@ -638,14 +651,28 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
{
switch (keyCode)
{
case VK_UP: setEditRow(editRow - 1); break;
case VK_DOWN: setEditRow(editRow + 1); break;
case VK_UP:
if (GetKeyState(VK_CONTROL) < 0) bias(1);
else setEditRow(editRow - 1);
break;
case VK_DOWN:
if (GetKeyState(VK_CONTROL) < 0) bias(-1);
else setEditRow(editRow + 1);
break;
case VK_LEFT: setEditTrack(editTrack - 1); break;
case VK_RIGHT: setEditTrack(editTrack + 1); break;
case VK_PRIOR: setEditRow(editRow - windowRows / 2); break;
case VK_NEXT: setEditRow(editRow + windowRows / 2); break;
case VK_PRIOR:
if (GetKeyState(VK_CONTROL) < 0) bias(10);
else setEditRow(editRow - windowRows / 2);
break;
case VK_NEXT:
if (GetKeyState(VK_CONTROL) < 0) bias(-10);
else setEditRow(editRow + windowRows / 2);
break;
default:
break;
@ -658,7 +685,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
case VK_DELETE: onDelete(); break;
case VK_BACK:
if (editString.size() > 0)
if (!editString.empty())
{
editString.resize(editString.size() - 1);
invalidatePos(editTrack, editRow);
@ -668,7 +695,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
case VK_CANCEL:
case VK_ESCAPE:
if (editString.size() > 0)
if (!editString.empty())
{
// return to old value (i.e don't clear)
editString.clear();

View File

@ -40,7 +40,8 @@ private:
void onReturn();
void onDelete();
void bias(float amount);
void copy();
void cut();
void paste();