Added support for editing of values
This commit is contained in:
parent
6a46001a6e
commit
0a1f563afb
@ -68,8 +68,12 @@ void Editor_update()
|
||||
Emgui_end();
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static char s_editBuffer[512];
|
||||
static bool is_editing = false;
|
||||
|
||||
bool Editor_keyDown(int key)
|
||||
{
|
||||
bool handled_key = true;
|
||||
@ -83,9 +87,10 @@ bool Editor_keyDown(int key)
|
||||
{
|
||||
int row = ++s_editorData.trackViewInfo.rowPos;
|
||||
RemoteConnection_sendSetRowCommand(row);
|
||||
Editor_update();
|
||||
return true;
|
||||
handled_key = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EMGUI_ARROW_UP:
|
||||
@ -101,9 +106,9 @@ bool Editor_keyDown(int key)
|
||||
}
|
||||
|
||||
RemoteConnection_sendSetRowCommand(row);
|
||||
Editor_update();
|
||||
return true;
|
||||
handled_key = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case EMGUI_ARROW_LEFT:
|
||||
@ -115,9 +120,10 @@ bool Editor_keyDown(int key)
|
||||
if (s_editorData.trackData.activeTrack < 0)
|
||||
s_editorData.trackData.activeTrack = 0;
|
||||
|
||||
Editor_update();
|
||||
return true;
|
||||
handled_key = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case EMGUI_ARROW_RIGHT:
|
||||
@ -125,9 +131,10 @@ bool Editor_keyDown(int key)
|
||||
if (paused)
|
||||
{
|
||||
++s_editorData.trackData.activeTrack;
|
||||
Editor_update();
|
||||
return true;
|
||||
handled_key = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default : handled_key = false; break;
|
||||
@ -135,9 +142,46 @@ bool Editor_keyDown(int key)
|
||||
|
||||
// do edit here
|
||||
|
||||
if (key == '1')
|
||||
if (paused)
|
||||
{
|
||||
return true;
|
||||
if ((key >= '0' && key <= '9') || key == '.' )
|
||||
{
|
||||
if (!is_editing)
|
||||
{
|
||||
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 (key == 13) // return/enter
|
||||
{
|
||||
struct track_key key;
|
||||
|
||||
key.row = s_editorData.trackViewInfo.rowPos;
|
||||
key.value = atof(s_editBuffer);
|
||||
key.type = 0;
|
||||
|
||||
struct sync_track* track = s_editorData.trackData.syncData.tracks[s_editorData.trackData.activeTrack];
|
||||
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, s_editorData.trackData.activeTrack, key.row, track_name);
|
||||
|
||||
RemoteConnection_sendSetKeyCommand(track_name, &key);
|
||||
|
||||
is_editing = false;
|
||||
s_editorData.trackData.editText = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
is_editing = false;
|
||||
s_editorData.trackData.editText = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (key == ' ')
|
||||
@ -146,10 +190,12 @@ bool Editor_keyDown(int key)
|
||||
// shouldn't start playing if we do
|
||||
|
||||
RemoteConnection_sendPauseCommand(!paused);
|
||||
|
||||
return true;
|
||||
handled_key = true;
|
||||
}
|
||||
|
||||
if (handled_key)
|
||||
Editor_update();
|
||||
|
||||
return handled_key;
|
||||
}
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ typedef struct TrackData
|
||||
int order[8192];
|
||||
int orderCount;
|
||||
int activeTrack;
|
||||
char* editText;
|
||||
} TrackData;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -84,7 +84,7 @@ static void renderChannel(struct sync_track* track, int startX, int startY, int
|
||||
value = track->keys[idx].value;
|
||||
snprintf(temp, 256, "% .2f", value);
|
||||
|
||||
Emgui_drawText(temp, offset, y_offset + (font_size / 2), Emgui_color32(255, 255, 255, 255));
|
||||
Emgui_drawText(temp, offset, y_offset - font_size / 2, Emgui_color32(255, 255, 255, 255));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -153,12 +153,19 @@ void TrackView_render(const TrackViewInfo* viewInfo, TrackData* trackData)
|
||||
|
||||
for (i = 0; i < num_tracks; ++i)
|
||||
{
|
||||
renderChannel(syncData->tracks[i], 40 + (i * 128), 42,
|
||||
int x = 40 + (i * 128);
|
||||
|
||||
renderChannel(syncData->tracks[i], x, 42,
|
||||
(start_pos + viewInfo->rowPos),
|
||||
(start_pos + viewInfo->rowPos + 40));
|
||||
|
||||
if (trackData->activeTrack == i)
|
||||
Emgui_fill(Emgui_color32(0xff, 0xff, 0x00, 0x80), 40 + (i * 128), 257, 128, font_size + 2);
|
||||
{
|
||||
Emgui_fill(Emgui_color32(0xff, 0xff, 0x00, 0x80), x, 257, 128, font_size + 2);
|
||||
|
||||
if (trackData->editText)
|
||||
Emgui_drawText(trackData->editText, x, 257, Emgui_color32(255, 255, 255, 255));
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t color = Emgui_color32(127, 127, 127, 56);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user