From 946f151bfcbbda4e7d4f9d6364808be84546b4ee Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Mon, 11 Feb 2008 08:56:07 +0000 Subject: [PATCH] ctrl-modifying works! --- synceditdata.h | 10 +++++----- trackview.cpp | 43 +++++++++++++++++++++++++++++++++++-------- trackview.h | 3 ++- 3 files changed, 42 insertions(+), 14 deletions(-) diff --git a/synceditdata.h b/synceditdata.h index c89b3c0..180e976 100644 --- a/synceditdata.h +++ b/synceditdata.h @@ -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); diff --git a/trackview.cpp b/trackview.cpp index 5398536..6a364f6 100644 --- a/trackview.cpp +++ b/trackview.cpp @@ -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(); diff --git a/trackview.h b/trackview.h index 2402f9d..8d830ab 100644 --- a/trackview.h +++ b/trackview.h @@ -40,7 +40,8 @@ private: void onReturn(); void onDelete(); - + void bias(float amount); + void copy(); void cut(); void paste();