-Updated UI, clipselector has popup menu

This commit is contained in:
Harry van Haaren 2013-07-25 01:16:29 +01:00
parent 3313e54d96
commit 7c6f09291d
3 changed files with 80 additions and 64 deletions

View file

@ -44,7 +44,7 @@ class ClipState
ClipState() ClipState()
{ {
state = CLIP_EMPTY; state = CLIP_EMPTY;
name = "Clip"; name = "";
} }
ClipState(std::string n) ClipState(std::string n)
{ {
@ -189,7 +189,7 @@ class ClipSelector : public Fl_Button
cairo_move_to( cr, x+clipHeight-1+ 10, drawY + 15 ); cairo_move_to( cr, x+clipHeight-1+ 10, drawY + 15 );
cairo_set_source_rgba( cr, 255 / 255.f, 255 / 255.f , 255 / 255.f , 1 ); cairo_set_source_rgba( cr, 255 / 255.f, 255 / 255.f , 255 / 255.f , 1 );
cairo_set_font_size( cr, 10 ); cairo_set_font_size( cr, 10 );
cairo_show_text( cr, label ); cairo_show_text( cr, clips[i].name.c_str() );
drawY += clipHeight; drawY += clipHeight;
} }
@ -236,32 +236,54 @@ class ClipSelector : public Fl_Button
// handle right clicks: popup menu // handle right clicks: popup menu
if ( Fl::event_state(FL_BUTTON3) ) if ( Fl::event_state(FL_BUTTON3) )
{ {
Fl_Menu_Item rclick_menu[] =
{
{ "Load" },
{ "Duration" },
{ 0 }
};
Fl_Menu_Item *m = (Fl_Menu_Item*) rclick_menu->popup(Fl::event_x(), Fl::event_y(), 0, 0, 0);
if ( !m )
{
return 0;
}
else if ( strcmp(m->label(), "Load") == 0 )
{
fl_choice("Loading...", "OK", NULL, NULL);
clips[clipNum].state = ClipState::CLIP_LOADED;
}
else if ( strcmp(m->label(), "Duration") == 0 )
{
//clips[clipNum].name = "title";
clips[clipNum].state = ClipState::CLIP_QUEUED;
}
} }
else
switch( clips[clipNum].state )
{ {
case ClipState::CLIP_EMPTY: switch( clips[clipNum].state )
clips[clipNum].state = ClipState::CLIP_RECORDING; {
break; case ClipState::CLIP_EMPTY:
case ClipState::CLIP_LOADED: clips[clipNum].state = ClipState::CLIP_RECORDING;
clips[clipNum].state = ClipState::CLIP_QUEUED; break;
break; case ClipState::CLIP_LOADED:
case ClipState::CLIP_QUEUED: clips[clipNum].state = ClipState::CLIP_QUEUED;
clips[clipNum].state = ClipState::CLIP_PLAYING; break;
break; case ClipState::CLIP_QUEUED:
case ClipState::CLIP_PLAYING: clips[clipNum].state = ClipState::CLIP_PLAYING;
clips[clipNum].state = ClipState::CLIP_STOPPING; break;
break; case ClipState::CLIP_PLAYING:
case ClipState::CLIP_RECORDING: clips[clipNum].state = ClipState::CLIP_STOPPING;
clips[clipNum].state = ClipState::CLIP_STOPPING; break;
break; case ClipState::CLIP_RECORDING:
case ClipState::CLIP_STOPPING: clips[clipNum].state = ClipState::CLIP_STOPPING;
clips[clipNum].state = ClipState::CLIP_PLAYING; break;
break; case ClipState::CLIP_STOPPING:
default: clips[clipNum].state = ClipState::CLIP_PLAYING;
printf("Avtk::ClipSelector, warning: unknown clip type\n"); break;
default:
printf("Avtk::ClipSelector, warning: unknown clip type\n");
}
} }
} }
redraw(); redraw();

View file

@ -7,6 +7,7 @@
#include <FL/Fl.H> #include <FL/Fl.H>
#include <FL/Fl_Group.H> #include <FL/Fl_Group.H>
#include <FL/Fl_Slider.H> #include <FL/Fl_Slider.H>
#include <FL/Fl_Progress.H>
#include "avtk/avtk_dial.h" #include "avtk/avtk_dial.h"
#include "avtk/avtk_button.h" #include "avtk/avtk_button.h"
@ -61,22 +62,16 @@ class GMasterTrack : public Fl_Group
clipSel(x + 5, y + 26 + 102, 140, 294,"Testing"), clipSel(x + 5, y + 26 + 102, 140, 294,"Testing"),
volBox(x+5, y+522+2, 140, 172, ""),
tapTempo(x + 25 + 22, y + 475 + 26, 44, 44,"Tap"), source(x+5, y+26, 140, 100, "Audio IN"),
/* fxBox(x+5, y+ 421, 140, 100, ""),
button2(x + 5, y + 44, 100, 18,"Play"),
button3(x + 5, y + 64, 100, 18,"Stop"), tapTempo(x + 25 + 52, y + 450 + 26, 66, 30,"Tap"),
button4(x + 5, y + 84, 48, 18,"-"), metronomeButton(x + 7,y + 450 + 26, 66, 30,"Metro"),
button5(x +57, y + 84, 48, 18,"+"),
button6(x + 5, y +104, 18, 18,"6"), dial1(x+54, y + 420, 44, 44, "BPM"),
*/
metronomeButton(x + 5,y + 424 + 26,140,30,"Metro"),
dial1(x+25-22, y +465 + 26, 44, 44, "BPM"),
/*
dial2(x+45, y +155, 24, 24, "B"),
dial3(x+75, y +155, 24, 24, "C")
*/
volume(x+108, y +530, 36, 150, "Vol") volume(x+108, y +530, 36, 150, "Vol")
{ {
ID = privateID++; ID = privateID++;
@ -85,13 +80,19 @@ class GMasterTrack : public Fl_Group
volume.amplitude( 0.75, 0.8 ); volume.amplitude( 0.75, 0.8 );
/* volBox.maximum(1.0f);
button2.callback( gmastertrack_button_callback, &ID ); volBox.minimum(0.0f);
button3.callback( gmastertrack_button_callback, &ID ); volBox.color( FL_BLACK );
button4.callback( gmastertrack_button_callback, &ID ); volBox.selection_color( FL_BLUE );
button5.callback( gmastertrack_button_callback, &ID ); fxBox.maximum(1.0f);
button6.callback( gmastertrack_button_callback, &ID ); fxBox.minimum(0.0f);
*/ fxBox.color( FL_BLACK );
fxBox.selection_color( FL_BLUE );
source.maximum(1.0f);
source.minimum(0.0f);
source.color( FL_BLACK );
source.selection_color( FL_BLUE );
metronomeButton.callback( gmastertrack_button_callback, 0 ); metronomeButton.callback( gmastertrack_button_callback, 0 );
dial1.callback( gmastertrack_button_callback, 0 ); dial1.callback( gmastertrack_button_callback, 0 );
@ -113,21 +114,14 @@ class GMasterTrack : public Fl_Group
Avtk::ClipSelector clipSel; Avtk::ClipSelector clipSel;
Fl_Progress source;
Fl_Progress volBox;
Fl_Progress fxBox;
Avtk::Button tapTempo; Avtk::Button tapTempo;
/*
Avtk::Button button2;
Avtk::Button button3;
Avtk::Button button4;
Avtk::Button button5;
Avtk::Button button6;
*/
Avtk::LightButton metronomeButton; Avtk::LightButton metronomeButton;
Avtk::Dial dial1; Avtk::Dial dial1;
/*
Avtk::Dial dial2;
Avtk::Dial dial3;
*/
Avtk::Volume volume; Avtk::Volume volume;

View file

@ -58,7 +58,7 @@ class GTrack : public Fl_Group
clipSel(x + 5, y + 26 + 102, 100, 294,""), clipSel(x + 5, y + 26 + 102, 100, 294,""),
volBox(x+5, y+522+2, 100, 250, ""), volBox(x+5, y+522+2, 100, 172, ""),
/* /*
button1(x + 5, y + 324 + 102, 100, 18,"Rec"), button1(x + 5, y + 324 + 102, 100, 18,"Rec"),
@ -69,17 +69,17 @@ class GTrack : public Fl_Group
button6(x + 5, y + 404 + 102, 100, 18,"Load"), button6(x + 5, y + 404 + 102, 100, 18,"Load"),
*/ */
volume(x+66, y +526, 36, 160, "Vol"), volume(x+66, y +527, 36, 150, "Vol"),
dial1(x+25, y +452 + 102, 24, 24, "REV"), dial1(x+22, y +440 + 100, 30, 30, "Rev"),
dial2(x+25, y +452 + 152, 24, 24, "SC"), dial2(x+22, y +440 + 150, 30, 30, "S-C"),
dial3(x+25, y +452 + 202, 24, 24, "POST"), dial3(x+22, y +440 + 200, 30, 30, "P-S"),
progress(x+5, y+ 26, 100, 100, "Source UI"), progress(x+5, y+ 26, 100, 100, "Source UI"),
//unit(x+5, y+200+26, 100, 100, "Unit"), //unit(x+5, y+200+26, 100, 100, "Unit"),
fx(x+5, y+ 422, 100, 100, "FX") fx(x+5, y+ 421, 100, 100, "FX")
{ {
ID = privateID++; ID = privateID++;
/* /*