| @@ -42,7 +42,7 @@ public: | |||
| Fl_Input::draw(); | |||
| else | |||
| { | |||
| fl_color( FL_WHITE /* textcolor() */ ); | |||
| fl_color( FL_FOREGROUND_COLOR /* textcolor() */ ); | |||
| fl_font( textfont(), textsize() ); | |||
| fl_draw( value(), x(), y(), w(), h(), FL_ALIGN_CENTER ); | |||
| } | |||
| @@ -65,47 +65,14 @@ public: | |||
| return r; | |||
| case FL_UNFOCUS: | |||
| _editing = false; | |||
| { | |||
| /* lame, but we have to find the next parent | |||
| * with a box in order to clear the background | |||
| * properly */ | |||
| Fl_Group *g = parent(); | |||
| if ( window() ) | |||
| window()->damage( FL_DAMAGE_EXPOSE, x(), y(), w(), h() ); | |||
| for ( ; g; g = g->parent() ) | |||
| { | |||
| switch ( g->box() ) | |||
| { | |||
| case FL_NO_BOX: | |||
| case FL_UP_FRAME: | |||
| case FL_DOWN_FRAME: | |||
| case FL_THIN_UP_FRAME: | |||
| case FL_THIN_DOWN_FRAME: | |||
| case FL_ENGRAVED_FRAME: | |||
| case FL_EMBOSSED_FRAME: | |||
| // case FL_SHADOW_FRAME: | |||
| // case FL_PLASTIC_UP_FRAME: | |||
| // case FL_PLASTIC_DOWN_FRAME: | |||
| // case FL_ROUNDED_FRAME: | |||
| // case FL_OVAL_FRAME: | |||
| continue; | |||
| default: | |||
| break; | |||
| } | |||
| break; | |||
| } | |||
| if ( g ) | |||
| { | |||
| printf( "damaging parent\n" ); | |||
| g->damage( FL_DAMAGE_EXPOSE, x(), y(), w(), h() ); | |||
| } | |||
| } | |||
| redraw(); | |||
| return r; | |||
| default: | |||
| return r; | |||
| } | |||
| } | |||
| }; | |||
| @@ -134,11 +134,11 @@ protected: | |||
| else if ( ! strcmp( s, ":fade-in-type" ) ) | |||
| _fade_in.type = (Fade::fade_type_e)atoi( v ); | |||
| else if ( ! strcmp( s, ":fade-in-duration" ) ) | |||
| _fade_in.length = atol( v ); | |||
| _fade_in.length = atoll( v ); | |||
| else if ( ! strcmp( s, ":fade-out-type" ) ) | |||
| _fade_out.type = (Fade::fade_type_e)atoi( v ); | |||
| else if ( ! strcmp( s, ":fade-out-duration" ) ) | |||
| _fade_out.length = atol( v ); | |||
| _fade_out.length = atoll( v ); | |||
| else if ( ! strcmp( s, ":source" ) ) | |||
| { | |||
| if ( ! ( _clip = Audio_File::from_file( v ) ) ) | |||
| @@ -179,7 +179,7 @@ exit( 0 );} | |||
| xywh {0 0 74 25} | |||
| } { | |||
| MenuItem {} { | |||
| label Home | |||
| label Start | |||
| callback {transport->locate( 0 );} | |||
| xywh {0 0 40 25} shortcut 0xff50 | |||
| } | |||
| @@ -200,6 +200,7 @@ exit( 0 );} | |||
| } | |||
| MenuItem {} { | |||
| label Record | |||
| callback {transport->toggle_record();} selected | |||
| xywh {40 40 40 25} shortcut 0x50072 | |||
| } | |||
| } | |||
| @@ -252,7 +253,7 @@ exit( 0 );} | |||
| } { | |||
| MenuItem {} { | |||
| label Bars | |||
| callback {Timeline::snap_to = Timeline::Bars;} selected | |||
| callback {Timeline::snap_to = Timeline::Bars;} | |||
| xywh {0 0 40 25} type Radio value 1 | |||
| } | |||
| MenuItem {} { | |||
| @@ -465,7 +465,7 @@ Timeline::draw ( void ) | |||
| || | |||
| damage() & FL_DAMAGE_EXPOSE ) | |||
| { | |||
| draw_box( box(), 0, 0, w(), h(), color() ); | |||
| draw_box( box(), 0, 0, w(), h(), this == Fl::focus() ? color() : fl_darker( color() ) ); | |||
| fl_push_clip( 0, rulers->y(), w(), rulers->h() ); | |||
| draw_child( *rulers ); | |||
| @@ -717,8 +717,17 @@ Timeline::handle ( int m ) | |||
| switch ( m ) | |||
| { | |||
| case FL_FOCUS: | |||
| case FL_UNFOCUS: | |||
| redraw(); | |||
| return 1; | |||
| case FL_KEYBOARD: | |||
| case FL_SHORTCUT: | |||
| { | |||
| if ( Fl::event_state() & ( FL_ALT || FL_CTRL || FL_SHIFT ) ) | |||
| /* we don't want any keys with modifiers... */ | |||
| return 0; | |||
| switch ( Fl::event_key() ) | |||
| { | |||
| case FL_Delete: | |||
| @@ -727,14 +736,10 @@ Timeline::handle ( int m ) | |||
| return 1; | |||
| } | |||
| /* case FL_Home: */ | |||
| /* transport->locate( 0 ); */ | |||
| /* return 1; */ | |||
| /* case ' ': */ | |||
| /* transport->toggle(); */ | |||
| /* return 1; */ | |||
| case FL_Home: | |||
| case FL_End: | |||
| /* keep scrollbar from eating these. */ | |||
| return 0; | |||
| case 'p': | |||
| { | |||
| int X = Fl::event_x() - Track::width(); | |||
| @@ -776,6 +781,10 @@ Timeline::handle ( int m ) | |||
| } | |||
| default: | |||
| { | |||
| if ( m == FL_PUSH ) | |||
| Fl::focus( this ); | |||
| int r = Fl_Overlay_Window::handle( m ); | |||
| if ( m != FL_RELEASE && r ) | |||
| @@ -788,7 +797,7 @@ Timeline::handle ( int m ) | |||
| { | |||
| case FL_PUSH: | |||
| { | |||
| take_focus(); | |||
| // take_focus(); | |||
| if ( Fl::event_button1() ) | |||
| { | |||
| @@ -130,10 +130,10 @@ Track::init ( void ) | |||
| o->color( ( Fl_Color ) 53 ); | |||
| { | |||
| Fl_Input *o = name_field = new Fl_Sometimes_Input( 2, 2, 144, 24 ); | |||
| o->color( ( Fl_Color ) 33 ); | |||
| o->color( FL_BACKGROUND_COLOR ); | |||
| o->labeltype( FL_NO_LABEL ); | |||
| o->labelcolor( FL_GRAY0 ); | |||
| o->textcolor( 32 ); | |||
| o->textcolor( FL_FOREGROUND_COLOR ); | |||
| o->callback( cb_input_field, (void*)this ); | |||
| } | |||
| @@ -67,6 +67,17 @@ private: | |||
| public: | |||
| void toggle_record ( void ) | |||
| { | |||
| if ( _record_button->value() ) | |||
| _record_button->value( 0 ); | |||
| else | |||
| _record_button->value( 1 ); | |||
| _record_button->do_callback(); | |||
| } | |||
| Transport ( int X, int Y, int W, int H, const char *L=0 ) | |||
| : Fl_Pack( X, Y, W, H, L ) | |||
| { | |||
| @@ -104,6 +115,18 @@ public: | |||
| end(); | |||
| } | |||
| int | |||
| handle ( int m ) | |||
| { | |||
| /* FIXME: hack to avoid stealing focus */ | |||
| if ( m == FL_FOCUS ) | |||
| return 0; | |||
| else | |||
| return Fl_Pack::handle( m ); | |||
| } | |||
| bool rolling; | |||
| void poll ( void ); | |||