Minor cleanup in keyboard handling
This commit is contained in:
parent
2c580d71f5
commit
afcaf7775d
@ -141,7 +141,6 @@ void Editor_update()
|
|||||||
Emgui_end();
|
Emgui_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static char s_editBuffer[512];
|
static char s_editBuffer[512];
|
||||||
@ -155,87 +154,89 @@ bool Editor_keyDown(int key, int modifiers)
|
|||||||
int active_track = getActiveTrack();
|
int active_track = getActiveTrack();
|
||||||
int row_pos = s_editorData.trackViewInfo.rowPos;
|
int row_pos = s_editorData.trackViewInfo.rowPos;
|
||||||
|
|
||||||
|
if (key == ' ')
|
||||||
|
{
|
||||||
|
// TODO: Don't start playing if we are in edit mode (but space shouldn't be added in edit mode but we still
|
||||||
|
// shouldn't start playing if we do
|
||||||
|
|
||||||
|
RemoteConnection_sendPauseCommand(!paused);
|
||||||
|
Editor_update();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!paused)
|
||||||
|
return false;
|
||||||
|
|
||||||
switch (key)
|
switch (key)
|
||||||
{
|
{
|
||||||
case EMGUI_ARROW_DOWN:
|
case EMGUI_ARROW_DOWN:
|
||||||
{
|
{
|
||||||
if (paused)
|
int row = row_pos;
|
||||||
{
|
|
||||||
int row = row_pos;
|
|
||||||
|
|
||||||
if (modifiers & EDITOR_KEY_ALT)
|
if (modifiers & EDITOR_KEY_ALT)
|
||||||
row += 8;
|
row += 8;
|
||||||
else
|
else
|
||||||
row++;
|
row++;
|
||||||
|
|
||||||
s_editorData.trackViewInfo.rowPos = row;
|
s_editorData.trackViewInfo.rowPos = row;
|
||||||
|
|
||||||
RemoteConnection_sendSetRowCommand(row);
|
RemoteConnection_sendSetRowCommand(row);
|
||||||
handled_key = true;
|
handled_key = true;
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case EMGUI_ARROW_UP:
|
case EMGUI_ARROW_UP:
|
||||||
{
|
{
|
||||||
if (paused)
|
int row = row_pos;
|
||||||
{
|
|
||||||
int row = row_pos;
|
|
||||||
|
|
||||||
if (modifiers & EDITOR_KEY_ALT)
|
if (modifiers & EDITOR_KEY_ALT)
|
||||||
row -= 8;
|
row -= 8;
|
||||||
else
|
else
|
||||||
row--;
|
row--;
|
||||||
|
|
||||||
if (row < 0)
|
if (row < 0)
|
||||||
row = 0;
|
row = 0;
|
||||||
|
|
||||||
if (modifiers & EDITOR_KEY_COMMAND)
|
if (modifiers & EDITOR_KEY_COMMAND)
|
||||||
row = 0;
|
row = 0;
|
||||||
|
|
||||||
s_editorData.trackViewInfo.rowPos = row;
|
s_editorData.trackViewInfo.rowPos = row;
|
||||||
|
|
||||||
|
RemoteConnection_sendSetRowCommand(row);
|
||||||
|
handled_key = true;
|
||||||
|
|
||||||
RemoteConnection_sendSetRowCommand(row);
|
|
||||||
handled_key = true;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case EMGUI_ARROW_LEFT:
|
case EMGUI_ARROW_LEFT:
|
||||||
{
|
{
|
||||||
if (paused)
|
int track = getActiveTrack(); track--;
|
||||||
{
|
|
||||||
int track = getActiveTrack(); track--;
|
|
||||||
|
|
||||||
if (modifiers & EDITOR_KEY_COMMAND)
|
if (modifiers & EDITOR_KEY_COMMAND)
|
||||||
track = 0;
|
track = 0;
|
||||||
|
|
||||||
setActiveTrack(track < 0 ? 0 : track);
|
setActiveTrack(track < 0 ? 0 : track);
|
||||||
|
|
||||||
handled_key = true;
|
handled_key = true;
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case EMGUI_ARROW_RIGHT:
|
case EMGUI_ARROW_RIGHT:
|
||||||
{
|
{
|
||||||
if (paused)
|
int track = getActiveTrack(); track++;
|
||||||
{
|
int track_count = getTrackCount();
|
||||||
int track = getActiveTrack(); track++;
|
|
||||||
int track_count = getTrackCount();
|
|
||||||
|
|
||||||
if (track >= track_count)
|
if (track >= track_count)
|
||||||
track = track_count - 1;
|
track = track_count - 1;
|
||||||
|
|
||||||
if (modifiers & EDITOR_KEY_COMMAND)
|
if (modifiers & EDITOR_KEY_COMMAND)
|
||||||
track = track_count - 1;
|
track = track_count - 1;
|
||||||
|
|
||||||
setActiveTrack(track);
|
setActiveTrack(track);
|
||||||
|
|
||||||
handled_key = true;
|
handled_key = true;
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -245,69 +246,57 @@ bool Editor_keyDown(int key, int modifiers)
|
|||||||
|
|
||||||
// do edit here
|
// do edit here
|
||||||
|
|
||||||
if (paused)
|
if ((key >= '0' && key <= '9') || key == '.' || key == '-')
|
||||||
{
|
{
|
||||||
if ((key >= '0' && key <= '9') || key == '.' || key == '-')
|
if (!is_editing)
|
||||||
{
|
{
|
||||||
if (!is_editing)
|
memset(s_editBuffer, 0, sizeof(s_editBuffer));
|
||||||
{
|
is_editing = true;
|
||||||
memset(s_editBuffer, 0, sizeof(s_editBuffer));
|
|
||||||
is_editing = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
s_editBuffer[strlen(s_editBuffer)] = key;
|
|
||||||
s_editorData.trackData.editText = s_editBuffer;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (is_editing)
|
|
||||||
{
|
|
||||||
struct track_key key;
|
|
||||||
|
|
||||||
key.row = row_pos;
|
|
||||||
key.value = atof(s_editBuffer);
|
|
||||||
key.type = 0;
|
|
||||||
|
|
||||||
struct sync_track* track = tracks[active_track];
|
|
||||||
const char* track_name = track->name;
|
|
||||||
|
|
||||||
sync_set_key(track, &key);
|
|
||||||
|
|
||||||
rlog(R_INFO, "Setting key %f at %d row %d (name %s)\n", key.value, active_track, key.row, track_name);
|
|
||||||
|
|
||||||
RemoteConnection_sendSetKeyCommand(track_name, &key);
|
|
||||||
|
|
||||||
is_editing = false;
|
|
||||||
s_editorData.trackData.editText = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == 'i')
|
s_editBuffer[strlen(s_editBuffer)] = key;
|
||||||
{
|
s_editorData.trackData.editText = s_editBuffer;
|
||||||
struct sync_track* track = tracks[active_track];
|
|
||||||
int row = s_editorData.trackViewInfo.rowPos;
|
|
||||||
|
|
||||||
int idx = key_idx_floor(track, row);
|
return true;
|
||||||
if (idx < 0)
|
}
|
||||||
return false;
|
else if (is_editing)
|
||||||
|
{
|
||||||
|
struct track_key key;
|
||||||
|
|
||||||
// copy and modify
|
key.row = row_pos;
|
||||||
struct track_key newKey = track->keys[idx];
|
key.value = atof(s_editBuffer);
|
||||||
newKey.type = ((newKey.type + 1) % KEY_TYPE_COUNT);
|
key.type = 0;
|
||||||
|
|
||||||
sync_set_key(track, &newKey);
|
struct sync_track* track = tracks[active_track];
|
||||||
|
const char* track_name = track->name;
|
||||||
|
|
||||||
RemoteConnection_sendSetKeyCommand(track->name, &newKey);
|
sync_set_key(track, &key);
|
||||||
|
|
||||||
handled_key = true;
|
rlog(R_INFO, "Setting key %f at %d row %d (name %s)\n", key.value, active_track, key.row, track_name);
|
||||||
}
|
|
||||||
|
RemoteConnection_sendSetKeyCommand(track_name, &key);
|
||||||
|
|
||||||
|
is_editing = false;
|
||||||
|
s_editorData.trackData.editText = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == ' ')
|
if (key == 'i')
|
||||||
{
|
{
|
||||||
// TODO: Don't start playing if we are in edit mode (but space shouldn't be added in edit mode but we still
|
struct sync_track* track = tracks[active_track];
|
||||||
// shouldn't start playing if we do
|
int row = s_editorData.trackViewInfo.rowPos;
|
||||||
|
|
||||||
|
int idx = key_idx_floor(track, row);
|
||||||
|
if (idx < 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// copy and modify
|
||||||
|
struct track_key newKey = track->keys[idx];
|
||||||
|
newKey.type = ((newKey.type + 1) % KEY_TYPE_COUNT);
|
||||||
|
|
||||||
|
sync_set_key(track, &newKey);
|
||||||
|
|
||||||
|
RemoteConnection_sendSetKeyCommand(track->name, &newKey);
|
||||||
|
|
||||||
RemoteConnection_sendPauseCommand(!paused);
|
|
||||||
handled_key = true;
|
handled_key = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user