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