| @@ -88,12 +88,11 @@ Function {update_transport( void * )} {open return_type void | |||
| handle_midi_input(); | |||
| ui->progress_group->do_callback(); | |||
| ui->progress_group->do_callback(); | |||
| ui->vmetro_widget->update(); | |||
| ui->vmetro_widget->update(); | |||
| if ( transport.rolling ) | |||
| ui->triggers_widget->update(); | |||
| ui->triggers_widget->update(); | |||
| Fl::repeat_timeout( TRANSPORT_POLL_INTERVAL, update_transport ); | |||
| @@ -101,6 +100,7 @@ static int oldstate = -1; | |||
| if ( transport.rolling != oldstate ) | |||
| { | |||
| ui->play_button->label( transport.rolling ? "@square" : "@>" ); | |||
| oldstate = transport.rolling; | |||
| @@ -114,6 +114,7 @@ if ( transport.rolling != oldstate ) | |||
| ui->menu_new->activate(); | |||
| ui->menu_open->activate(); | |||
| } | |||
| } | |||
| if ( nsm && nsm->is_active() ) | |||
| @@ -122,7 +123,7 @@ if ( nsm && nsm->is_active() ) | |||
| { | |||
| ui->menu_new->deactivate(); | |||
| ui->menu_open->deactivate(); | |||
| ui->menu_save_as->deactivate(); | |||
| ui->menu_save_as->deactivate(); | |||
| } | |||
| } | |||
| @@ -130,10 +131,10 @@ if ( nsm && nsm->is_active() ) | |||
| if ( transport.rolling ) | |||
| { | |||
| if ( ui->tabs->value() == ui->pattern_tab ) | |||
| ui->pattern_canvas_widget->draw_playhead(); | |||
| ui->pattern_canvas_widget->redraw_playhead(); | |||
| else | |||
| if ( ui->tabs->value() == ui->phrase_tab ) | |||
| ui->phrase_canvas_widget->draw_playhead(); | |||
| ui->phrase_canvas_widget->redraw_playhead(); | |||
| } | |||
| @@ -264,10 +265,10 @@ if ( maybe_save_song() ) | |||
| label Metronome | |||
| xywh {395 34 461 60} type HORIZONTAL box UP_BOX color 40 selection_color 48 labelsize 33 align 0 resizable | |||
| code0 {\#include "widgets.H"} | |||
| code1 {o->box( FL_NO_BOX );} | |||
| code1 {o->box( FL_FLAT_BOX );} | |||
| class Visual_Metronome | |||
| } {} | |||
| Fl_Pack transport_controls_group {open selected | |||
| Fl_Pack transport_controls_group {open | |||
| xywh {4 32 160 44} type HORIZONTAL | |||
| code0 {o->spacing( 2 );} | |||
| class Fl_Scalepack | |||
| @@ -486,8 +487,8 @@ else | |||
| } | |||
| Fl_Box triggers_widget { | |||
| label Patterns | |||
| xywh {253 125 607 549} box UP_BOX color 72 align 1 resizable | |||
| code0 {o->box( FL_NO_BOX );} | |||
| xywh {253 125 607 549} color 48 align 1 resizable | |||
| code0 {o->color( FL_BACKGROUND_COLOR );} | |||
| class Triggers | |||
| } | |||
| Fl_Group progress_group { | |||
| @@ -516,15 +517,14 @@ if ( playlist->length() ) | |||
| } | |||
| Fl_Group phrase_tab { | |||
| label Phrase open | |||
| xywh {0 102 865 674} color 47 | |||
| xywh {0 102 865 674} color 47 hide | |||
| code0 {update_phrase_widgets();} | |||
| } { | |||
| Fl_Box phrase_canvas_widget { | |||
| label Phrase | |||
| xywh {1 103 863 587} box FLAT_BOX color 37 labelsize 100 align 16 resizable | |||
| code0 {o->set_canvas( phrase_c ); | |||
| phrase_c->signal_pan.connect( sigc::mem_fun( phrase_canvas_widget, &O_Canvas::handle_pan ) );} | |||
| code1 {o->box( FL_NO_BOX );} | |||
| code0 {o->set_canvas( phrase_c );} | |||
| code1 {phrase_c->signal_pan.connect( sigc::mem_fun( phrase_canvas_widget, &O_Canvas::handle_pan ) );} | |||
| class O_Canvas | |||
| } | |||
| Fl_Group {} {open | |||
| @@ -568,16 +568,16 @@ o->maximum( phrase::phrases() );} | |||
| } | |||
| Fl_Group pattern_tab { | |||
| label Pattern open | |||
| xywh {0 102 865 674} color 47 hide | |||
| xywh {0 102 865 674} color 47 | |||
| code0 {update_pattern_widgets();} | |||
| } { | |||
| Fl_Box pattern_canvas_widget { | |||
| label Pattern | |||
| label Pattern selected | |||
| xywh {1 103 863 587} box FLAT_BOX color 37 labelsize 100 align 16 resizable | |||
| code0 {\#include "draw.H"} | |||
| code1 {o->set_canvas( pattern_c ); | |||
| pattern_c->signal_pan.connect( sigc::mem_fun( pattern_canvas_widget, &O_Canvas::handle_pan ) );} | |||
| code1 {o->set_canvas( pattern_c );} | |||
| code2 {\#include "input.H"} | |||
| code3 {pattern_c->signal_pan.connect( sigc::mem_fun( pattern_canvas_widget, &O_Canvas::handle_pan ) );} | |||
| class O_Canvas | |||
| } | |||
| Fl_Group {} {open | |||
| @@ -1147,10 +1147,6 @@ ab.run();} | |||
| label SM | |||
| xywh {825 8 35 15} box ROUNDED_BOX down_box ROUNDED_BOX color 46 selection_color 93 labelfont 3 labelcolor 39 deactivate | |||
| } | |||
| Fl_Box {} { | |||
| label label | |||
| xywh {15 15 35 16} hide resizable | |||
| } | |||
| } | |||
| } | |||
| } | |||
| @@ -1489,13 +1485,11 @@ class O_Canvas {open : {public Fl_Widget} | |||
| } | |||
| decl {bool _border_drawn;} {private local | |||
| } | |||
| decl {uint _flags;} {private local | |||
| } | |||
| Function {O_Canvas( int X, int Y, int W, int H, const char*L=0) : Fl_Widget(X,Y,W,H,L)} {open | |||
| } { | |||
| code {_c = NULL; | |||
| _border_drawn = false; | |||
| _flags = 0;} {} | |||
| box(FL_FLAT_BOX);} {} | |||
| } | |||
| Function {handle( int m )} {open return_type int | |||
| } { | |||
| @@ -1503,7 +1497,7 @@ _flags = 0;} {} | |||
| if ( m == FL_FOCUS || m == FL_UNFOCUS ) | |||
| { | |||
| _border_drawn = false; | |||
| draw_playhead(); | |||
| redraw_playhead(); | |||
| return 1; | |||
| } | |||
| @@ -1553,53 +1547,36 @@ if ( _c ) | |||
| if ( _c ) | |||
| { | |||
| damage( _flags ); | |||
| _flags = 0; | |||
| /* | |||
| /* | |||
| if ( damage() & FL_DAMAGE_ALL ) printf( " damage_all" ); | |||
| if ( damage() & FL_DAMAGE_SCROLL ) printf( " damage_scroll" ); | |||
| if ( damage() & FL_DAMAGE_USER1 ) printf( " damage_user1" ); | |||
| if ( damage() & FL_DAMAGE_USER2 ) printf( " damage_user2" ); | |||
| if ( damage() & FL_DAMAGE_EXPOSE ) printf( " damage_expose" ); | |||
| printf("\\n"); | |||
| */ | |||
| if ( damage() & FL_DAMAGE_EXPOSE ) | |||
| { | |||
| draw_box( FL_FLAT_BOX, x(), y(), w(), h(), canvas_background_color ); | |||
| _c->redraw(); | |||
| return; | |||
| } | |||
| */ | |||
| if ( damage() & (FL_DAMAGE_ALL | FL_DAMAGE_USER2) ) | |||
| if ( damage() & FL_DAMAGE_ALL ) | |||
| { | |||
| draw_box( FL_FLAT_BOX, x(), y(), w(), h(), canvas_background_color ); | |||
| _c->redraw(); | |||
| draw_box( FL_FLAT_BOX, x(), y(), w(), h(), canvas_background_color ); | |||
| _border_drawn = false; | |||
| draw_border(); | |||
| _c->redraw(); | |||
| _c->draw_playhead(); | |||
| } | |||
| if ( damage() & (FL_DAMAGE_ALL | FL_DAMAGE_SCROLL) ) | |||
| { | |||
| else | |||
| { | |||
| if ( damage() & FL_DAMAGE_SCROLL ) | |||
| { | |||
| // optimized draw | |||
| _c->draw(); | |||
| } | |||
| else | |||
| if ( damage() & (FL_DAMAGE_ALL | FL_DAMAGE_USER1) ) | |||
| { | |||
| } | |||
| if ( damage() & FL_DAMAGE_USER1 ) | |||
| { | |||
| // playhead | |||
| _c->draw_playhead(); | |||
| } | |||
| else | |||
| if ( damage() & FL_DAMAGE_ALL ) | |||
| { | |||
| draw_box( FL_FLAT_BOX, x(), y(), w(), h(), canvas_background_color ); | |||
| _border_drawn = false; | |||
| draw_border(); | |||
| _c->redraw(); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| @@ -1612,7 +1589,7 @@ else | |||
| _c->resize( x(), y(), w(), h() ); | |||
| _c->signal_draw.connect( sigc::mem_fun( this, &O_Canvas::draw_notes ) ); | |||
| _c->signal_draw.connect( sigc::mem_fun( this, &O_Canvas::redraw_notes ) ); | |||
| _c->signal_resize.connect( sigc::mem_fun( this, &O_Canvas::clear ) ); | |||
| _c->signal_settings_change.connect( sigc::ptr_fun( &UI::update_canvas_widgets ) ); | |||
| @@ -1624,20 +1601,15 @@ _c->signal_settings_change.connect( sigc::mem_fun( song, &song_settings::set_dir | |||
| } | |||
| Function {clear( void )} {open return_type void | |||
| } { | |||
| code {// parent()->parent()->damage( FL_DAMAGE_ALL, x(), y(), w(), h() ); | |||
| damage( FL_DAMAGE_USER2 ); | |||
| _flags |= FL_DAMAGE_USER2;} {} | |||
| code {redraw();} {} | |||
| } | |||
| Function {draw_notes( void )} {open return_type void | |||
| Function {redraw_notes( void )} {open return_type void | |||
| } { | |||
| code {damage( FL_DAMAGE_SCROLL ); | |||
| // this might be called from within draw(), in which case the above does nothing. | |||
| _flags |= FL_DAMAGE_SCROLL;} {} | |||
| // this might be called from within draw(), in which case the above does nothing.} {} | |||
| } | |||
| Function {draw_playhead( void )} {open return_type void | |||
| Function {redraw_playhead( void )} {open return_type void | |||
| } { | |||
| code {if ( _c && _c->playhead_moved() ) | |||
| { | |||
| @@ -1894,6 +1866,9 @@ redraw();} {} | |||
| } { | |||
| code {++_timer; | |||
| if ( !visible_r() ) | |||
| return; | |||
| if ( ! takesevents() ) | |||
| return; | |||