more key-adjust modifiers! and negative values!
This commit is contained in:
parent
3a5a1a6c5a
commit
8566ec1002
@ -5,20 +5,23 @@
|
|||||||
#define IDR_ACCELERATOR 101
|
#define IDR_ACCELERATOR 101
|
||||||
#define IDR_MENU 102
|
#define IDR_MENU 102
|
||||||
#define IDD_SETROWS 103
|
#define IDD_SETROWS 103
|
||||||
|
#define IDD_BIASSELECTION 104
|
||||||
#define IDC_EDIT 1002
|
#define IDC_EDIT 1002
|
||||||
#define IDC_SETROWS_EDIT 1002
|
#define IDC_SETROWS_EDIT 1002
|
||||||
|
#define IDC_BIASSELECTION_EDIT 1003
|
||||||
#define ID_FILE 40001
|
#define ID_FILE 40001
|
||||||
#define ID_FILE_EXIT 40002
|
#define ID_FILE_EXIT 40002
|
||||||
#define ID_EDIT 40003
|
#define ID_EDIT 40003
|
||||||
#define ID_EDIT_SETROWS 40007
|
#define ID_EDIT_SETROWS 40007
|
||||||
|
#define ID_EDIT_BIAS 40008
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 104
|
#define _APS_NEXT_RESOURCE_VALUE 104
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40008
|
#define _APS_NEXT_COMMAND_VALUE 40011
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
#define _APS_NEXT_CONTROL_VALUE 1004
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -186,18 +186,6 @@ public:
|
|||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void setKeyFrame(int track, int row, const SyncTrack::KeyFrame &key)
|
|
||||||
{
|
|
||||||
SyncEditData::Command *cmd = getSetKeyFrameCommand(track, row, key);
|
|
||||||
exec(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
void deleteKeyFrame(int track, int row)
|
|
||||||
{
|
|
||||||
assert(getTrack(track).isKeyFrame(row));
|
|
||||||
Command *cmd = new DeleteCommand(track, row);
|
|
||||||
exec(cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|||||||
@ -14,6 +14,7 @@ HWND trackViewWin;
|
|||||||
HWND statusBarWin;
|
HWND statusBarWin;
|
||||||
|
|
||||||
#define WM_SETROWS (WM_USER+1)
|
#define WM_SETROWS (WM_USER+1)
|
||||||
|
#define WM_BIASSELECTION (WM_USER+2)
|
||||||
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
|
|
||||||
@ -21,6 +22,10 @@ static LRESULT CALLBACK setRowsDialogProc(HWND hDlg, UINT message, WPARAM wParam
|
|||||||
{
|
{
|
||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
|
/* case WM_CHAR:
|
||||||
|
printf("char: %d %d\n", wParam, lParam);
|
||||||
|
break; */
|
||||||
|
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
{
|
{
|
||||||
int *rows = (int*)lParam;
|
int *rows = (int*)lParam;
|
||||||
@ -31,7 +36,8 @@ static LRESULT CALLBACK setRowsDialogProc(HWND hDlg, UINT message, WPARAM wParam
|
|||||||
_sntprintf_s(temp, 256, _T("%d"), *rows);
|
_sntprintf_s(temp, 256, _T("%d"), *rows);
|
||||||
|
|
||||||
/* set initial row count */
|
/* set initial row count */
|
||||||
SetWindowText(GetDlgItem(hDlg, IDC_SETROWS_EDIT), temp);
|
SetDlgItemText(hDlg, IDC_SETROWS_EDIT, temp);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -40,7 +46,7 @@ static LRESULT CALLBACK setRowsDialogProc(HWND hDlg, UINT message, WPARAM wParam
|
|||||||
{
|
{
|
||||||
/* get value */
|
/* get value */
|
||||||
TCHAR temp[256];
|
TCHAR temp[256];
|
||||||
GetWindowText(GetDlgItem(hDlg, IDC_SETROWS_EDIT), temp, 256);
|
GetDlgItemText(hDlg, IDC_SETROWS_EDIT, temp, 256);
|
||||||
int result = _tstoi(temp);
|
int result = _tstoi(temp);
|
||||||
|
|
||||||
/* update editor */
|
/* update editor */
|
||||||
@ -53,6 +59,54 @@ static LRESULT CALLBACK setRowsDialogProc(HWND hDlg, UINT message, WPARAM wParam
|
|||||||
else if(LOWORD(wParam)== IDCANCEL)
|
else if(LOWORD(wParam)== IDCANCEL)
|
||||||
{
|
{
|
||||||
EndDialog( hDlg, LOWORD(wParam));
|
EndDialog( hDlg, LOWORD(wParam));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_CLOSE:
|
||||||
|
EndDialog(hDlg, LOWORD(wParam));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static LRESULT CALLBACK biasSelectionDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
|
{
|
||||||
|
switch (message)
|
||||||
|
{
|
||||||
|
case WM_INITDIALOG:
|
||||||
|
{
|
||||||
|
int *intialBias = (int*)lParam;
|
||||||
|
assert(NULL != intialBias);
|
||||||
|
|
||||||
|
/* create bias-string */
|
||||||
|
TCHAR temp[256];
|
||||||
|
_sntprintf_s(temp, 256, _T("%d"), *intialBias);
|
||||||
|
|
||||||
|
/* set initial bias */
|
||||||
|
SetDlgItemText(hDlg, IDC_SETROWS_EDIT, temp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case WM_COMMAND:
|
||||||
|
if (LOWORD(wParam) == IDOK)
|
||||||
|
{
|
||||||
|
/* get value */
|
||||||
|
TCHAR temp[256];
|
||||||
|
GetDlgItemText(hDlg, IDC_BIASSELECTION_EDIT, temp, 256);
|
||||||
|
int bias = _tstoi(temp);
|
||||||
|
|
||||||
|
/* update editor */
|
||||||
|
SendMessage(GetParent(hDlg), WM_BIASSELECTION, 0, LPARAM(bias));
|
||||||
|
|
||||||
|
/* end dialog */
|
||||||
|
EndDialog(hDlg, LOWORD(wParam));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else if(LOWORD(wParam)== IDCANCEL)
|
||||||
|
{
|
||||||
|
EndDialog( hDlg, LOWORD(wParam));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -113,12 +167,21 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
case WM_SETROWS:
|
case WM_SETROWS:
|
||||||
printf("rows: %d\n", int(lParam));
|
printf("rows: %d\n", int(lParam));
|
||||||
trackView->setRows(int(lParam));
|
trackView->setRows(int(lParam));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_BIASSELECTION:
|
||||||
|
trackView->editBiasValue(float(lParam));
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
switch (LOWORD(wParam))
|
switch (LOWORD(wParam))
|
||||||
{
|
{
|
||||||
case ID_FILE_SAVE: /* meh.*/ break;
|
case ID_FILE_SAVE:
|
||||||
|
case ID_FILE_SAVE_AS:
|
||||||
|
case ID_FILE_OPEN:
|
||||||
|
MessageBox(trackViewWin, "Not implemented", NULL, MB_OK | MB_ICONERROR);
|
||||||
|
break;
|
||||||
|
|
||||||
case ID_FILE_EXIT: PostQuitMessage(0); break;
|
case ID_FILE_EXIT: PostQuitMessage(0); break;
|
||||||
case ID_EDIT_UNDO: SendMessage(trackViewWin, WM_UNDO, 0, 0); break;
|
case ID_EDIT_UNDO: SendMessage(trackViewWin, WM_UNDO, 0, 0); break;
|
||||||
case ID_EDIT_REDO: SendMessage(trackViewWin, WM_REDO, 0, 0); break;
|
case ID_EDIT_REDO: SendMessage(trackViewWin, WM_REDO, 0, 0); break;
|
||||||
@ -132,15 +195,17 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
|||||||
int rows = trackView->getRows();
|
int rows = trackView->getRows();
|
||||||
INT_PTR result = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_SETROWS), hwnd, (DLGPROC)setRowsDialogProc, (LPARAM)&rows);
|
INT_PTR result = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_SETROWS), hwnd, (DLGPROC)setRowsDialogProc, (LPARAM)&rows);
|
||||||
if (FAILED(result)) MessageBox(NULL, _T("unable to create dialog box"), NULL, MB_OK);
|
if (FAILED(result)) MessageBox(NULL, _T("unable to create dialog box"), NULL, MB_OK);
|
||||||
if (IDOK == result)
|
|
||||||
{
|
|
||||||
printf("result: %d\n", result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case ID_EDIT_BIAS:
|
||||||
printf("cmd %d %d\n", wParam, lParam);
|
{
|
||||||
|
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||||
|
int initialBias = 0;
|
||||||
|
INT_PTR result = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_BIASSELECTION), hwnd, (DLGPROC)biasSelectionDialogProc, (LPARAM)&initialBias);
|
||||||
|
if (FAILED(result)) MessageBox(NULL, _T("unable to create dialog box"), NULL, MB_OK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@ -57,8 +57,9 @@ BEGIN
|
|||||||
"C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT
|
"C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT
|
||||||
"X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT
|
"X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT
|
||||||
"V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT
|
"V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT
|
||||||
"Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT
|
|
||||||
"Z", ID_EDIT_REDO, VIRTKEY, SHIFT, CONTROL, NOINVERT
|
"Z", ID_EDIT_REDO, VIRTKEY, SHIFT, CONTROL, NOINVERT
|
||||||
|
"Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT
|
||||||
|
"B", ID_EDIT_BIAS, VIRTKEY, CONTROL, NOINVERT
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
@ -86,6 +87,8 @@ BEGIN
|
|||||||
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
||||||
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
||||||
MENUITEM SEPARATOR
|
MENUITEM SEPARATOR
|
||||||
|
MENUITEM "&Bias Selection\tCtrl+B", ID_EDIT_BIAS
|
||||||
|
MENUITEM SEPARATOR
|
||||||
MENUITEM "Set Rows", ID_EDIT_SETROWS
|
MENUITEM "Set Rows", ID_EDIT_SETROWS
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
@ -105,6 +108,15 @@ BEGIN
|
|||||||
DEFPUSHBUTTON "OK",IDOK,72,6,50,14
|
DEFPUSHBUTTON "OK",IDOK,72,6,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDD_BIASSELECTION DIALOGEX 0, 0, 129, 27
|
||||||
|
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Bias Selection"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
EDITTEXT IDC_BIASSELECTION_EDIT,7,6,59,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,72,6,50,14
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
@ -121,6 +133,14 @@ BEGIN
|
|||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 20
|
BOTTOMMARGIN, 20
|
||||||
END
|
END
|
||||||
|
|
||||||
|
IDD_BIASSELECTION, DIALOG
|
||||||
|
BEGIN
|
||||||
|
LEFTMARGIN, 7
|
||||||
|
RIGHTMARGIN, 122
|
||||||
|
TOPMARGIN, 7
|
||||||
|
BOTTOMMARGIN, 20
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
|||||||
108
trackview.cpp
108
trackview.cpp
@ -265,11 +265,11 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
|||||||
|
|
||||||
/* format the text */
|
/* format the text */
|
||||||
if (drawEditString) _sntprintf_s(temp, 256, editString.c_str());
|
if (drawEditString) _sntprintf_s(temp, 256, editString.c_str());
|
||||||
else if (!key) _sntprintf_s(temp, 256, _T("---"));
|
else if (!key) _sntprintf_s(temp, 256, _T(" ---"));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
float val = track.getKeyFrame(row)->value;
|
float val = track.getKeyFrame(row)->value;
|
||||||
_sntprintf_s(temp, 256, _T("%.2f"), val);
|
_sntprintf_s(temp, 256, _T("% .2f"), val);
|
||||||
}
|
}
|
||||||
|
|
||||||
COLORREF oldCol;
|
COLORREF oldCol;
|
||||||
@ -324,7 +324,6 @@ void TrackView::editCopy()
|
|||||||
int selectRight = max(selectStartTrack, selectStopTrack);
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
int selectTop = min(selectStartRow, selectStopRow);
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
int selectBottom = max(selectStartRow, selectStopRow);
|
int selectBottom = max(selectStartRow, selectStopRow);
|
||||||
printf("copying:\n");
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
struct CopyEntry
|
struct CopyEntry
|
||||||
@ -367,15 +366,13 @@ void TrackView::editCopy()
|
|||||||
ce.track = localTrack;
|
ce.track = localTrack;
|
||||||
ce.row = localRow;
|
ce.row = localRow;
|
||||||
ce.keyFrame = *keyFrame;
|
ce.keyFrame = *keyFrame;
|
||||||
|
|
||||||
copyEntries.push_back(ce);
|
copyEntries.push_back(ce);
|
||||||
sprintf(temp, "%.2f\t", keyFrame->value);
|
sprintf(temp, "%.2f\t", keyFrame->value);
|
||||||
}
|
}
|
||||||
else sprintf(temp, "--- \t");
|
else sprintf(temp, "--- \t");
|
||||||
copyString += temp;
|
copyString += temp;
|
||||||
printf("(%d %d) = %s", localTrack, localRow, temp);
|
|
||||||
}
|
}
|
||||||
puts("");
|
|
||||||
copyString += "\n";
|
copyString += "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,7 +383,6 @@ void TrackView::editCopy()
|
|||||||
HGLOBAL hmem = GlobalAlloc(GMEM_MOVEABLE, sizeof(int) * 3 + sizeof(CopyEntry) * copyEntries.size());
|
HGLOBAL hmem = GlobalAlloc(GMEM_MOVEABLE, sizeof(int) * 3 + sizeof(CopyEntry) * copyEntries.size());
|
||||||
char *clipbuf = (char *)GlobalLock(hmem);
|
char *clipbuf = (char *)GlobalLock(hmem);
|
||||||
|
|
||||||
printf("%d %d, size: %d\n", buffer_width, buffer_height, buffer_size);
|
|
||||||
// copy data
|
// copy data
|
||||||
memcpy(clipbuf + 0, &buffer_width, sizeof(int));
|
memcpy(clipbuf + 0, &buffer_width, sizeof(int));
|
||||||
memcpy(clipbuf + sizeof(int), &buffer_height, sizeof(int));
|
memcpy(clipbuf + sizeof(int), &buffer_height, sizeof(int));
|
||||||
@ -437,7 +433,6 @@ void TrackView::editPaste()
|
|||||||
|
|
||||||
if (buffer_size > 0)
|
if (buffer_size > 0)
|
||||||
{
|
{
|
||||||
printf("%d %d, size: %d\n", buffer_width, buffer_height, buffer_size);
|
|
||||||
char *src = clipbuf + 2 * sizeof(int) + sizeof(size_t);
|
char *src = clipbuf + 2 * sizeof(int) + sizeof(size_t);
|
||||||
|
|
||||||
SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
|
SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
|
||||||
@ -445,7 +440,6 @@ void TrackView::editPaste()
|
|||||||
{
|
{
|
||||||
struct CopyEntry ce;
|
struct CopyEntry ce;
|
||||||
memcpy(&ce, src, sizeof(CopyEntry));
|
memcpy(&ce, src, sizeof(CopyEntry));
|
||||||
printf("%d,%d = %f\n", ce.track, ce.row, ce.keyFrame.value);
|
|
||||||
|
|
||||||
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack + ce.track, editRow + ce.row, ce.keyFrame);
|
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack + ce.track, editRow + ce.row, ce.keyFrame);
|
||||||
multiCmd->addCommand(cmd);
|
multiCmd->addCommand(cmd);
|
||||||
@ -680,11 +674,18 @@ LRESULT TrackView::onHScroll(UINT sbCode, int /*newPos*/)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::editSetValue()
|
void TrackView::editEnterValue()
|
||||||
{
|
{
|
||||||
if (editString.size() > 0)
|
if (editString.size() > 0)
|
||||||
{
|
{
|
||||||
syncData->setKeyFrame(editTrack, editRow, float(_tstof(editString.c_str())));
|
SyncTrack &t = syncData->getTrack(editTrack);
|
||||||
|
|
||||||
|
SyncTrack::KeyFrame newKey;
|
||||||
|
if (t.isKeyFrame(editRow)) newKey = *t.getKeyFrame(editRow); // copy old key
|
||||||
|
newKey.value = float(_tstof(editString.c_str())); // modify value
|
||||||
|
|
||||||
|
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack, editRow, newKey);
|
||||||
|
syncData->exec(cmd);
|
||||||
|
|
||||||
editString.clear();
|
editString.clear();
|
||||||
invalidatePos(editTrack, editRow);
|
invalidatePos(editTrack, editRow);
|
||||||
@ -698,7 +699,6 @@ void TrackView::editDelete()
|
|||||||
int selectRight = max(selectStartTrack, selectStopTrack);
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
int selectTop = min(selectStartRow, selectStopRow);
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
int selectBottom = max(selectStartRow, selectStopRow);
|
int selectBottom = max(selectStartRow, selectStopRow);
|
||||||
printf("deleting\n");
|
|
||||||
|
|
||||||
SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
|
SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
|
||||||
for (int track = selectLeft; track <= selectRight; ++track)
|
for (int track = selectLeft; track <= selectRight; ++track)
|
||||||
@ -726,17 +726,54 @@ void TrackView::editDelete()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::bias(float amount)
|
void TrackView::editBiasValue(float amount)
|
||||||
{
|
{
|
||||||
SyncTrack &track = syncData->getTrack(editTrack);
|
int selectLeft = min(selectStartTrack, selectStopTrack);
|
||||||
|
int selectRight = max(selectStartTrack, selectStopTrack);
|
||||||
|
int selectTop = min(selectStartRow, selectStopRow);
|
||||||
|
int selectBottom = max(selectStartRow, selectStopRow);
|
||||||
|
|
||||||
|
SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
|
||||||
|
for (int track = selectLeft; track <= selectRight; ++track)
|
||||||
|
{
|
||||||
|
SyncTrack &t = syncData->getTrack(track);
|
||||||
|
for (int row = selectTop; row <= selectBottom; ++row)
|
||||||
|
{
|
||||||
|
if (t.isKeyFrame(row))
|
||||||
|
{
|
||||||
|
SyncTrack::KeyFrame newKey = *t.getKeyFrame(row); // copy old key
|
||||||
|
newKey.value += amount; // modify value
|
||||||
|
|
||||||
|
// add sub-command
|
||||||
|
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(track, row, newKey);
|
||||||
|
multiCmd->addCommand(cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 == multiCmd->getSize())
|
||||||
|
{
|
||||||
|
MessageBeep(0);
|
||||||
|
delete multiCmd;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
syncData->exec(multiCmd);
|
||||||
|
invalidateRange(selectLeft, selectRight, selectTop, selectBottom);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SyncTrack &track = syncData->getTrack(editTrack);
|
||||||
if (track.isKeyFrame(editRow))
|
if (track.isKeyFrame(editRow))
|
||||||
{
|
{
|
||||||
SyncTrack::KeyFrame newKey = *track.getKeyFrame(editRow);
|
SyncTrack::KeyFrame newKey = *track.getKeyFrame(editRow);
|
||||||
newKey.value += amount;
|
newKey.value += amount;
|
||||||
syncData->setKeyFrame(editTrack, editRow, newKey);
|
|
||||||
|
SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack, editRow, newKey);
|
||||||
|
syncData->exec(cmd);
|
||||||
|
|
||||||
invalidatePos(editTrack, editRow);
|
invalidatePos(editTrack, editRow);
|
||||||
}
|
}
|
||||||
else MessageBeep(0);
|
else MessageBeep(0); */
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
||||||
@ -746,12 +783,22 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
{
|
{
|
||||||
case VK_UP:
|
case VK_UP:
|
||||||
if (GetKeyState(VK_CONTROL) < 0) bias(1);
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
|
{
|
||||||
|
float bias = 1.0f;
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0) bias = 0.1f;
|
||||||
|
editBiasValue(bias);
|
||||||
|
}
|
||||||
else setEditRow(editRow - 1);
|
else setEditRow(editRow - 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_DOWN:
|
case VK_DOWN:
|
||||||
if (GetKeyState(VK_CONTROL) < 0) bias(-1);
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
|
{
|
||||||
|
float bias = 1.0f;
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0) bias = 0.1f;
|
||||||
|
editBiasValue(-bias);
|
||||||
|
}
|
||||||
else setEditRow(editRow + 1);
|
else setEditRow(editRow + 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -759,12 +806,22 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
case VK_RIGHT: setEditTrack(editTrack + 1); break;
|
case VK_RIGHT: setEditTrack(editTrack + 1); break;
|
||||||
|
|
||||||
case VK_PRIOR:
|
case VK_PRIOR:
|
||||||
if (GetKeyState(VK_CONTROL) < 0) bias(10);
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
|
{
|
||||||
|
float bias = 10.0f;
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0) bias = 100.0f;
|
||||||
|
editBiasValue(bias);
|
||||||
|
}
|
||||||
else setEditRow(editRow - windowRows / 2);
|
else setEditRow(editRow - windowRows / 2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VK_NEXT:
|
case VK_NEXT:
|
||||||
if (GetKeyState(VK_CONTROL) < 0) bias(-10);
|
if (GetKeyState(VK_CONTROL) < 0)
|
||||||
|
{
|
||||||
|
float bias = 10.0f;
|
||||||
|
if (GetKeyState(VK_SHIFT) < 0) bias = 100.0f;
|
||||||
|
editBiasValue(-bias);
|
||||||
|
}
|
||||||
else setEditRow(editRow + windowRows / 2);
|
else setEditRow(editRow + windowRows / 2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -775,7 +832,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
|
|
||||||
switch (keyCode)
|
switch (keyCode)
|
||||||
{
|
{
|
||||||
case VK_RETURN: editSetValue(); break;
|
case VK_RETURN: editEnterValue(); break;
|
||||||
case VK_DELETE: editDelete(); break;
|
case VK_DELETE: editDelete(); break;
|
||||||
|
|
||||||
case VK_BACK:
|
case VK_BACK:
|
||||||
@ -803,7 +860,6 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
|
|||||||
|
|
||||||
LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
||||||
{
|
{
|
||||||
printf("char: \"%c\" (%d) - flags: %x\n", char(keyCode), keyCode, flags);
|
|
||||||
switch (char(keyCode))
|
switch (char(keyCode))
|
||||||
{
|
{
|
||||||
case '.':
|
case '.':
|
||||||
@ -813,6 +869,13 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
|||||||
MessageBeep(0);
|
MessageBeep(0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case '-':
|
||||||
|
if (editString.empty())
|
||||||
|
{
|
||||||
|
editString.push_back(char(keyCode));
|
||||||
|
invalidatePos(editTrack, editRow);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case '0':
|
case '0':
|
||||||
case '1':
|
case '1':
|
||||||
@ -825,7 +888,6 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
|||||||
case '8':
|
case '8':
|
||||||
case '9':
|
case '9':
|
||||||
editString.push_back(char(keyCode));
|
editString.push_back(char(keyCode));
|
||||||
printf("accepted: %c - %s\n", char(keyCode), editString.c_str());
|
|
||||||
invalidatePos(editTrack, editRow);
|
invalidatePos(editTrack, editRow);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,6 +23,7 @@ public:
|
|||||||
|
|
||||||
void setRows(int rows);
|
void setRows(int rows);
|
||||||
int getRows() const { return rows; }
|
int getRows() const { return rows; }
|
||||||
|
void editBiasValue(float amount);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// some nasty hackery to forward the window messages
|
// some nasty hackery to forward the window messages
|
||||||
@ -38,9 +39,7 @@ private:
|
|||||||
LRESULT onKeyDown(UINT keyCode, UINT flags);
|
LRESULT onKeyDown(UINT keyCode, UINT flags);
|
||||||
LRESULT onChar(UINT keyCode, UINT flags);
|
LRESULT onChar(UINT keyCode, UINT flags);
|
||||||
|
|
||||||
void editSetValue();
|
void editEnterValue();
|
||||||
void bias(float amount);
|
|
||||||
|
|
||||||
void editDelete();
|
void editDelete();
|
||||||
void editCopy();
|
void editCopy();
|
||||||
void editCut();
|
void editCut();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user