| @@ -226,6 +226,133 @@ if ( maybe_save_song() ) | |||
| xywh {798 131 865 805} type Double color 47 resizable | |||
| code0 {o->color( FL_BACKGROUND_COLOR );} xclass non size_range {700 509 0 0} visible | |||
| } { | |||
| Fl_Group {} {open | |||
| xywh {0 30 865 70} box FLAT_BOX | |||
| } { | |||
| Fl_Value_Input {} { | |||
| label BPM | |||
| callback {transport.set_beats_per_minute( o->value() );} | |||
| xywh {389 47 45 25} labelsize 9 align 1 when 8 | |||
| code1 {transport.signal_tempo_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code2 {o->value( transport.beats_per_minute );} | |||
| } | |||
| Fl_Value_Input {} { | |||
| callback {transport.set_beats_per_bar( o->value() );} | |||
| xywh {444 47 26 25} | |||
| code0 {transport.signal_bpb_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code1 {o->value( transport.beats_per_bar );} | |||
| } | |||
| Fl_Box {} { | |||
| label {/} | |||
| xywh {469 47 19 25} | |||
| } | |||
| Fl_Value_Input {} { | |||
| callback {transport.set_beat_type( o->value() );} | |||
| xywh {489 47 24 25} | |||
| code0 {transport.signal_beat_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code1 {o->value( transport.beat_type );} | |||
| } | |||
| Fl_Pack vmetro_widget { | |||
| label Metronome | |||
| xywh {520 35 336 59} type HORIZONTAL box UP_BOX color 40 selection_color 48 labelsize 33 align 0 resizable | |||
| code0 {\#include "widgets.H"} | |||
| code1 {o->box( FL_FLAT_BOX );} | |||
| class Visual_Metronome | |||
| } {} | |||
| Fl_Pack transport_controls_group {open | |||
| xywh {4 32 156 42} type HORIZONTAL | |||
| code0 {o->spacing( 2 );} | |||
| class Fl_Scalepack | |||
| } { | |||
| Fl_Button play_button { | |||
| label {@>} | |||
| callback {transport.toggle();} | |||
| xywh {10 34 43 38} shortcut 0x20 labeltype ENGRAVED_LABEL | |||
| } | |||
| Fl_Button rec_button { | |||
| label {@circle} | |||
| callback {transport.recording = o->value(); | |||
| if ( o->value() ) | |||
| { | |||
| if ( config.record_mode == NEW ) | |||
| { | |||
| pattern *p = new pattern; | |||
| p->length( -1 ); | |||
| pattern_c->grid( p ); | |||
| } | |||
| ((pattern*)pattern_c->grid())->record( 0 ); | |||
| o->labelcolor( FL_RED ); | |||
| } | |||
| else | |||
| { | |||
| pattern::recording()->record_stop(); | |||
| o->labelcolor( FL_WHITE ); | |||
| }} | |||
| xywh {60 34 43 38} type Toggle shortcut 0x80072 selection_color 47 labeltype ENGRAVED_LABEL when 1 | |||
| } | |||
| Fl_Button home_button { | |||
| label {@|<} | |||
| callback {transport.locate( 0 );} | |||
| xywh {110 34 43 38} shortcut 0xff50 labeltype ENGRAVED_LABEL | |||
| } | |||
| } | |||
| Fl_Choice record_mode_menu { | |||
| label {&Record Mode} | |||
| callback {if ( ! transport.recording ) | |||
| config.record_mode = (record_mode_e)o->value(); | |||
| else | |||
| o->value( config.record_mode );} open | |||
| xywh {170 47 100 25} box DOWN_BOX down_box BORDER_BOX color 37 labelsize 9 align 1 | |||
| } { | |||
| MenuItem {} { | |||
| label Merge | |||
| xywh {15 15 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Overwrite | |||
| xywh {25 25 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Layer | |||
| xywh {35 35 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label New | |||
| xywh {45 45 40 25} | |||
| } | |||
| } | |||
| Fl_Choice playback_mode_menu { | |||
| label {Playback &Mode} open | |||
| xywh {279 47 100 25} box DOWN_BOX down_box BORDER_BOX color 37 labelsize 9 align 1 | |||
| } { | |||
| MenuItem {} { | |||
| label Pattern | |||
| callback {song.play_mode = PATTERN;} | |||
| xywh {5 5 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Sequence | |||
| callback {song.play_mode = SEQUENCE;} | |||
| xywh {15 15 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Trigger | |||
| callback {song.play_mode = TRIGGER;} | |||
| xywh {25 25 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Queue | |||
| callback {song.play_mode = QUEUE;} | |||
| xywh {0 0 40 24} | |||
| } | |||
| } | |||
| } | |||
| Fl_Tabs tabs { | |||
| callback {((Fl_Group*)o->value())->child( 0 )->take_focus(); | |||
| @@ -247,13 +374,13 @@ else | |||
| edit_menu->activate(); | |||
| } | |||
| menu_bar->redraw();} | |||
| xywh {0 79 865 698} color 37 labeltype SHADOW_LABEL labelsize 19 when 1 resizable | |||
| menu_bar->redraw();} open | |||
| xywh {0 79 865 698} box BORDER_BOX color 47 labeltype SHADOW_LABEL labelsize 19 when 1 resizable | |||
| code0 {canvas_background_color = fl_rgb_color( 18, 18, 18 );} | |||
| } { | |||
| Fl_Group sequence_tab { | |||
| label Sequence open | |||
| xywh {0 102 865 674} color 37 hide resizable | |||
| xywh {0 102 865 674} box FLAT_BOX color 37 hide resizable | |||
| code0 {update_sequence_widgets();} | |||
| } { | |||
| Fl_Group {} {open | |||
| @@ -381,7 +508,7 @@ if ( playlist->length() ) | |||
| } | |||
| Fl_Group phrase_tab { | |||
| label Phrase open | |||
| xywh {0 102 865 674} color 47 hide | |||
| xywh {0 102 865 674} box FLAT_BOX color 47 hide | |||
| code0 {update_phrase_widgets();} | |||
| } { | |||
| Fl_Box phrase_canvas_widget { | |||
| @@ -392,7 +519,7 @@ if ( playlist->length() ) | |||
| class O_Canvas | |||
| } | |||
| Fl_Group {} {open | |||
| xywh {5 697 856 72} | |||
| xywh {5 697 856 77} box FLAT_BOX color 47 | |||
| } { | |||
| Fl_Input phrase_name_field { | |||
| label {name:} | |||
| @@ -432,7 +559,7 @@ o->maximum( phrase::phrases() );} | |||
| } | |||
| Fl_Group pattern_tab { | |||
| label Pattern open | |||
| xywh {0 102 865 674} color 47 | |||
| xywh {0 102 865 674} box FLAT_BOX color 47 | |||
| code0 {update_pattern_widgets();} | |||
| } { | |||
| Fl_Box pattern_canvas_widget { | |||
| @@ -445,7 +572,7 @@ o->maximum( phrase::phrases() );} | |||
| class O_Canvas | |||
| } | |||
| Fl_Group {} {open | |||
| xywh {0 694 862 78} color 47 | |||
| xywh {0 694 862 78} box FLAT_BOX color 47 | |||
| } { | |||
| Fl_Input pattern_name_field { | |||
| label {name:} | |||
| @@ -707,142 +834,6 @@ pattern_c->changed_mapping();} | |||
| } | |||
| } | |||
| } | |||
| Fl_Group {} { | |||
| xywh {0 30 865 70} | |||
| } { | |||
| Fl_Pack {} { | |||
| label Meter open | |||
| xywh {214 72 175 25} type HORIZONTAL labeltype NO_LABEL labelsize 9 align 0 | |||
| code0 {o->spacing( 3 );} | |||
| } { | |||
| Fl_Box {} { | |||
| label {BPM:} | |||
| xywh {220 68 35 27} resizable | |||
| } | |||
| Fl_Value_Input {} { | |||
| callback {transport.set_beats_per_minute( o->value() );} | |||
| xywh {265 68 55 27} when 8 | |||
| code1 {transport.signal_tempo_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code2 {o->value( transport.beats_per_minute );} | |||
| } | |||
| Fl_Value_Input {} { | |||
| callback {transport.set_beats_per_bar( o->value() );} | |||
| xywh {325 68 26 27} | |||
| code0 {transport.signal_bpb_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code1 {o->value( transport.beats_per_bar );} | |||
| } | |||
| Fl_Box {} { | |||
| label {/} | |||
| xywh {346 68 19 27} | |||
| } | |||
| Fl_Value_Input {} { | |||
| callback {transport.set_beat_type( o->value() );} | |||
| xywh {365 68 24 27} | |||
| code0 {transport.signal_beat_change.connect( sigc::mem_fun( o, static_cast<int (Fl_Valuator::*)(double)>(&Fl_Valuator::value) ) );} | |||
| code1 {o->value( transport.beat_type );} | |||
| } | |||
| } | |||
| Fl_Pack vmetro_widget { | |||
| 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_FLAT_BOX );} | |||
| class Visual_Metronome | |||
| } {} | |||
| Fl_Pack transport_controls_group {open | |||
| xywh {4 32 160 44} type HORIZONTAL | |||
| code0 {o->spacing( 2 );} | |||
| class Fl_Scalepack | |||
| } { | |||
| Fl_Button play_button { | |||
| label {@>} | |||
| callback {transport.toggle();} | |||
| xywh {10 34 43 40} shortcut 0x20 labeltype ENGRAVED_LABEL | |||
| } | |||
| Fl_Button rec_button { | |||
| label {@circle} | |||
| callback {transport.recording = o->value(); | |||
| if ( o->value() ) | |||
| { | |||
| if ( config.record_mode == NEW ) | |||
| { | |||
| pattern *p = new pattern; | |||
| p->length( -1 ); | |||
| pattern_c->grid( p ); | |||
| } | |||
| ((pattern*)pattern_c->grid())->record( 0 ); | |||
| o->labelcolor( FL_RED ); | |||
| } | |||
| else | |||
| { | |||
| pattern::recording()->record_stop(); | |||
| o->labelcolor( FL_WHITE ); | |||
| }} | |||
| xywh {60 34 43 40} type Toggle shortcut 0x80072 selection_color 47 labeltype ENGRAVED_LABEL when 1 | |||
| } | |||
| Fl_Button home_button { | |||
| label {@|<} | |||
| callback {transport.locate( 0 );} | |||
| xywh {110 34 43 40} shortcut 0xff50 labeltype ENGRAVED_LABEL | |||
| } | |||
| } | |||
| Fl_Choice record_mode_menu { | |||
| label {&Record Mode} | |||
| callback {if ( ! transport.recording ) | |||
| config.record_mode = (record_mode_e)o->value(); | |||
| else | |||
| o->value( config.record_mode );} open | |||
| xywh {171 41 100 27} box DOWN_BOX down_box BORDER_BOX color 37 labelsize 9 align 1 | |||
| } { | |||
| MenuItem {} { | |||
| label Merge | |||
| xywh {15 15 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Overwrite | |||
| xywh {25 25 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Layer | |||
| xywh {35 35 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label New | |||
| xywh {45 45 40 25} | |||
| } | |||
| } | |||
| Fl_Choice playback_mode_menu { | |||
| label {Playback &Mode} open | |||
| xywh {285 41 100 26} box DOWN_BOX down_box BORDER_BOX color 37 labelsize 9 align 1 | |||
| } { | |||
| MenuItem {} { | |||
| label Pattern | |||
| callback {song.play_mode = PATTERN;} | |||
| xywh {5 5 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Sequence | |||
| callback {song.play_mode = SEQUENCE;} | |||
| xywh {15 15 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Trigger | |||
| callback {song.play_mode = TRIGGER;} | |||
| xywh {25 25 40 25} | |||
| } | |||
| MenuItem {} { | |||
| label Queue | |||
| callback {song.play_mode = QUEUE;} | |||
| xywh {0 0 40 24} | |||
| } | |||
| } | |||
| } | |||
| Fl_Group {} {open | |||
| xywh {0 776 865 31} | |||
| } { | |||