Browse Source

Allow track channel configuration to be adjusted in the GUI.

tags/non-daw-v1.1.0
Jonathan Moore Liles 17 years ago
parent
commit
b199cfadd8
1 changed files with 56 additions and 0 deletions
  1. +56
    -0
      Timeline/Track.C

+ 56
- 0
Timeline/Track.C View File

@@ -28,6 +28,7 @@
#include "Port.H"

#include "../FL/Fl_Sometimes_Input.H"
#include <FL/fl_ask.H>

void
Track::cb_input_field ( Fl_Widget *w, void *v )
@@ -384,6 +385,61 @@ Track::handle ( int m )

return 1;
}
case FL_PUSH:
{
int X = Fl::event_x();
int Y = Fl::event_y();

if ( Fl::event_button3() && X < Track::width() )
{
int c = output.size();

/* context menu */
Fl_Menu_Item menu[] =
{
{ "Type", 0, 0, 0, FL_SUBMENU },
{ "Mono", 0, 0, 0, FL_MENU_RADIO | ( c == 1 ? FL_MENU_VALUE : 0 ) },
{ "Stereo", 0, 0, 0, FL_MENU_RADIO | ( c == 2 ? FL_MENU_VALUE : 0 ) },
{ "Quad", 0, 0, 0, FL_MENU_RADIO | ( c == 4 ? FL_MENU_VALUE : 0 ) },
{ "...", 0, 0, 0, FL_MENU_RADIO | ( c == 3 || c > 4 ? FL_MENU_VALUE : 0 ) },
{ 0 },
{ 0 },
};

const Fl_Menu_Item *r = menu->popup( X, Y, "Track" );

if ( r )
{
if ( r < &menu[ 4 ] )
{
int c = r - &menu[1];
int ca[] = { 1, 2, 4 };

configure_inputs( ca[ c ] );
configure_outputs( ca[ c ] );
}
else
{
if ( r == &menu[ 4 ] )
{
const char *s = fl_input( "How many channels?", "3" );

int c = atoi( s );

if ( c <= 0 || c > 10 )
fl_alert( "Invalid number of channels." );
else
{
configure_inputs( c );
configure_outputs( c );
}
}
}
}

}
}

default:
return Fl_Group::handle( m );



Loading…
Cancel
Save