| @@ -28,6 +28,18 @@ decl {\#include <FL/Fl_Dial.H>} {public local | |||||
| decl {\#include "FL/About_Dialog.H"} {private local | decl {\#include "FL/About_Dialog.H"} {private local | ||||
| } | } | ||||
| decl {class Fl_Scalepack;} {public local | |||||
| } | |||||
| decl {class Fl_Sometimes_Input;} {public local | |||||
| } | |||||
| decl {\#include "FL/Fl_Scalepack.H"} {private local | |||||
| } | |||||
| decl {\#include "FL/Fl_Sometimes_Input.H"} {private local | |||||
| } | |||||
| decl {\#include <FL/Fl_Shared_Image.H>} {private local | decl {\#include <FL/Fl_Shared_Image.H>} {private local | ||||
| } | } | ||||
| @@ -44,7 +56,7 @@ decl {\#include "../NSM.H"} {private local | |||||
| } | } | ||||
| decl {extern NSM_Client *nsm;} {private local | decl {extern NSM_Client *nsm;} {private local | ||||
| } | |||||
| } | |||||
| decl {extern UI *ui;} {private local | decl {extern UI *ui;} {private local | ||||
| } | } | ||||
| @@ -189,11 +201,12 @@ if ( Fl::event() == FL_SHORTCUT && Fl::event_key() == FL_Escape ) | |||||
| return; | return; | ||||
| if ( maybe_save_song() ) | if ( maybe_save_song() ) | ||||
| quit();} open | |||||
| xywh {783 174 865 800} type Double box PLASTIC_UP_BOX color 37 resizable xclass non size_range {600 420 0 0} visible | |||||
| quit();} open selected | |||||
| xywh {365 131 865 805} type Double color 38 resizable | |||||
| code0 {o->color( FL_BACKGROUND_COLOR );} xclass non size_range {700 509 0 0} visible | |||||
| } { | } { | ||||
| Fl_Menu_Bar menu_bar {open | Fl_Menu_Bar menu_bar {open | ||||
| xywh {0 0 869 30} color 37 | |||||
| xywh {0 0 865 30} color 37 | |||||
| } { | } { | ||||
| Submenu {} { | Submenu {} { | ||||
| label {&File} open | label {&File} open | ||||
| @@ -419,9 +432,7 @@ config.follow_playhead = val ? true : false;} | |||||
| } | } | ||||
| MenuItem {} { | MenuItem {} { | ||||
| label {&About} | label {&About} | ||||
| callback { | |||||
| About_Dialog ab( PIXMAP_PATH "/non-sequencer/icon-256x256.png" ); | |||||
| callback {About_Dialog ab( PIXMAP_PATH "/non-sequencer/icon-256x256.png" ); | |||||
| ab.logo_box->label( VERSION ); | ab.logo_box->label( VERSION ); | ||||
| @@ -438,6 +449,142 @@ ab.run();} | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| Fl_Group {} {open | |||||
| xywh {0 30 865 70} | |||||
| } { | |||||
| Fl_Pack {} { | |||||
| label Meter open | |||||
| xywh {220 68 175 27} 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_NO_BOX );} | |||||
| class Visual_Metronome | |||||
| } {} | |||||
| Fl_Pack transport_controls_group {open | |||||
| xywh {10 32 152 42} type HORIZONTAL | |||||
| code0 {o->spacing( 2 );} | |||||
| class Fl_Scalepack | |||||
| } { | |||||
| Fl_Button play_button { | |||||
| label {@>} | |||||
| callback {transport.toggle();} | |||||
| xywh {10 34 43 3} 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 3} 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 3} 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 PLASTIC_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 PLASTIC_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 { | Fl_Tabs tabs { | ||||
| callback {((Fl_Group*)o->value())->child( 0 )->take_focus(); | callback {((Fl_Group*)o->value())->child( 0 )->take_focus(); | ||||
| @@ -459,13 +606,13 @@ else | |||||
| edit_menu->activate(); | edit_menu->activate(); | ||||
| } | } | ||||
| menu_bar->redraw();} open selected | |||||
| xywh {0 76 868 701} color 37 labeltype SHADOW_LABEL labelsize 19 when 1 | |||||
| menu_bar->redraw();} open | |||||
| xywh {0 76 865 701} color 37 labeltype SHADOW_LABEL labelsize 19 when 1 resizable | |||||
| code0 {canvas_background_color = fl_rgb_color( 18, 18, 18 );} | code0 {canvas_background_color = fl_rgb_color( 18, 18, 18 );} | ||||
| } { | } { | ||||
| Fl_Group sequence_tab { | Fl_Group sequence_tab { | ||||
| label Sequence open | label Sequence open | ||||
| xywh {0 98 868 674} color 37 hide resizable | |||||
| xywh {0 98 862 674} color 37 hide resizable | |||||
| code0 {update_sequence_widgets();} | code0 {update_sequence_widgets();} | ||||
| } { | } { | ||||
| Fl_Group {} {open | Fl_Group {} {open | ||||
| @@ -593,7 +740,7 @@ if ( playlist->length() ) | |||||
| } | } | ||||
| Fl_Group phrase_tab { | Fl_Group phrase_tab { | ||||
| label Phrase open | label Phrase open | ||||
| xywh {0 98 868 674} color 37 hide | |||||
| xywh {0 98 865 674} color 37 | |||||
| code0 {update_phrase_widgets();} | code0 {update_phrase_widgets();} | ||||
| } { | } { | ||||
| Fl_Box phrase_canvas_widget { | Fl_Box phrase_canvas_widget { | ||||
| @@ -605,7 +752,7 @@ if ( playlist->length() ) | |||||
| class O_Canvas | class O_Canvas | ||||
| } | } | ||||
| Fl_Group {} {open | Fl_Group {} {open | ||||
| xywh {10 703 854 60} | |||||
| xywh {5 697 859 72} | |||||
| } { | } { | ||||
| Fl_Input phrase_name_field { | Fl_Input phrase_name_field { | ||||
| label {name:} | label {name:} | ||||
| @@ -613,20 +760,23 @@ if ( playlist->length() ) | |||||
| // if the name changed.. | // if the name changed.. | ||||
| update_sequence_widgets();} | update_sequence_widgets();} | ||||
| xywh {10 703 144 25} color 36 align 20 textcolor 32 | |||||
| xywh {5 704 155 24} box ROUNDED_BOX color 49 labelfont 2 labelcolor 55 align 20 textcolor 32 | |||||
| code0 {o->up_box( FL_ROUNDED_BOX );} | |||||
| class Fl_Sometimes_Input | |||||
| } | } | ||||
| Fl_Spinner phrase_number_spinner { | Fl_Spinner phrase_number_spinner { | ||||
| label {Phrase:} | |||||
| callback {phrase *p = ((phrase *)phrase_c->grid())->by_number( o->value() ); | callback {phrase *p = ((phrase *)phrase_c->grid())->by_number( o->value() ); | ||||
| if ( p ) | if ( p ) | ||||
| phrase_c->grid( p ); | phrase_c->grid( p ); | ||||
| o->maximum( phrase::phrases() );} | o->maximum( phrase::phrases() );} | ||||
| xywh {164 703 40 25} color 36 labeltype NO_LABEL when 1 | |||||
| xywh {165 704 55 24} color 36 labelsize 9 align 1 when 1 | |||||
| } | } | ||||
| Fl_Light_Button phrase_mute_button { | Fl_Light_Button phrase_mute_button { | ||||
| label Mute | label Mute | ||||
| xywh {10 740 88 23} color 37 hide | |||||
| xywh {5 740 93 23} color 37 hide | |||||
| } | } | ||||
| Fl_Light_Button phrase_solo_button { | Fl_Light_Button phrase_solo_button { | ||||
| label Solo | label Solo | ||||
| @@ -635,14 +785,14 @@ o->maximum( phrase::phrases() );} | |||||
| Fl_Text_Editor phrase_notes_edit { | Fl_Text_Editor phrase_notes_edit { | ||||
| label {Notes:} | label {Notes:} | ||||
| callback {phrase_c->grid()->notes( o->buffer()->text() );} | callback {phrase_c->grid()->notes( o->buffer()->text() );} | ||||
| xywh {211 713 653 46} selection_color 48 labelsize 12 textcolor 94 resizable | |||||
| xywh {235 709 620 58} selection_color 48 labelsize 12 textcolor 94 resizable | |||||
| code0 {o->buffer( phrase_notes_buffer = new Fl_Text_Buffer );} | code0 {o->buffer( phrase_notes_buffer = new Fl_Text_Buffer );} | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| Fl_Group pattern_tab { | Fl_Group pattern_tab { | ||||
| label Pattern open | label Pattern open | ||||
| xywh {0 98 868 674} color 37 | |||||
| xywh {0 98 865 674} color 37 hide | |||||
| code0 {update_pattern_widgets();} | code0 {update_pattern_widgets();} | ||||
| } { | } { | ||||
| Fl_Box pattern_canvas_widget { | Fl_Box pattern_canvas_widget { | ||||
| @@ -655,21 +805,24 @@ o->maximum( phrase::phrases() );} | |||||
| class O_Canvas | class O_Canvas | ||||
| } | } | ||||
| Fl_Group {} {open | Fl_Group {} {open | ||||
| xywh {4 694 858 77} | |||||
| xywh {0 694 865 78} | |||||
| } { | } { | ||||
| Fl_Input pattern_name_field { | Fl_Input pattern_name_field { | ||||
| label {name:} | label {name:} | ||||
| callback {pattern_c->grid()->name( strdup( o->value() ) );} | callback {pattern_c->grid()->name( strdup( o->value() ) );} | ||||
| xywh {10 703 144 25} color 0 align 20 when 1 textcolor 32 | |||||
| xywh {5 704 155 24} box ROUNDED_BOX color 49 align 20 when 1 textfont 2 textcolor 55 | |||||
| code0 {o->up_box( FL_ROUNDED_BOX );} | |||||
| class Fl_Sometimes_Input | |||||
| } | } | ||||
| Fl_Spinner pattern_number_spinner { | Fl_Spinner pattern_number_spinner { | ||||
| label {Pattern:} | |||||
| callback {pattern *p = ((pattern *)pattern_c->grid())->by_number( o->value() ); | callback {pattern *p = ((pattern *)pattern_c->grid())->by_number( o->value() ); | ||||
| if ( p ) | if ( p ) | ||||
| pattern_c->grid( p ); | pattern_c->grid( p ); | ||||
| o->maximum( pattern::patterns() );} | o->maximum( pattern::patterns() );} | ||||
| xywh {164 703 40 25} color 36 labeltype NO_LABEL when 1 | |||||
| xywh {165 704 55 24} color 36 labelsize 9 align 1 when 1 | |||||
| code0 {o->maximum( 1 );} | code0 {o->maximum( 1 );} | ||||
| code1 {// pattern::signal_create_destroy.connect( sigc::mem_fun( o, static_cast<void (Fl_Spinner::*)(double)>(&Fl_Spinner::maximum) ) );} | code1 {// pattern::signal_create_destroy.connect( sigc::mem_fun( o, static_cast<void (Fl_Spinner::*)(double)>(&Fl_Spinner::maximum) ) );} | ||||
| } | } | ||||
| @@ -682,7 +835,7 @@ g->mode( g->mode() == MUTE ? PLAY : MUTE ); | |||||
| o->value( g->mode() == MUTE ); | o->value( g->mode() == MUTE ); | ||||
| pattern_solo_button->value( 0 );} | pattern_solo_button->value( 0 );} | ||||
| xywh {10 738 90 23} type Normal color 37 | |||||
| xywh {10 738 65 25} type Normal color 37 | |||||
| } | } | ||||
| Fl_Light_Button pattern_solo_button { | Fl_Light_Button pattern_solo_button { | ||||
| label Solo | label Solo | ||||
| @@ -693,16 +846,16 @@ g->mode( g->mode() == SOLO ? PLAY : SOLO ); | |||||
| o->value( g->mode() == SOLO ); | o->value( g->mode() == SOLO ); | ||||
| pattern_mute_button->value( 0 );} | pattern_mute_button->value( 0 );} | ||||
| xywh {110 738 91 23} type Normal color 37 | |||||
| xywh {80 738 65 25} type Normal color 37 | |||||
| } | } | ||||
| Fl_Text_Editor pattern_notes_edit { | Fl_Text_Editor pattern_notes_edit { | ||||
| label {Notes:} | label {Notes:} | ||||
| callback {pattern_c->grid()->notes( o->buffer()->text() );} | callback {pattern_c->grid()->notes( o->buffer()->text() );} | ||||
| xywh {214 713 243 48} selection_color 48 labelsize 12 textcolor 94 resizable | |||||
| xywh {230 713 227 48} selection_color 48 labelsize 12 textcolor 94 resizable | |||||
| code0 {o->buffer( pattern_notes_buffer = new Fl_Text_Buffer );} | code0 {o->buffer( pattern_notes_buffer = new Fl_Text_Buffer );} | ||||
| } | } | ||||
| Fl_Group pattern_settings_group {open | Fl_Group pattern_settings_group {open | ||||
| xywh {458 694 400 77} | |||||
| xywh {458 694 400 78} | |||||
| } { | } { | ||||
| Fl_Spinner pattern_channel_spinner { | Fl_Spinner pattern_channel_spinner { | ||||
| label Channel | label Channel | ||||
| @@ -915,153 +1068,11 @@ pattern_c->changed_mapping();} | |||||
| } | } | ||||
| } | } | ||||
| Fl_Group {} {open | Fl_Group {} {open | ||||
| xywh {0 29 865 67} | |||||
| } { | |||||
| Fl_Pack {} { | |||||
| label Meter open | |||||
| xywh {5 41 200 26} type HORIZONTAL labelsize 9 | |||||
| code0 {o->spacing( 3 );} | |||||
| } { | |||||
| Fl_Box {} { | |||||
| label {BPM:} | |||||
| xywh {5 41 35 26} resizable | |||||
| } | |||||
| Fl_Value_Input {} { | |||||
| callback {transport.set_beats_per_minute( o->value() );} | |||||
| xywh {45 41 55 24} 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 {105 41 26 24} | |||||
| 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 {126 41 19 24} | |||||
| } | |||||
| Fl_Value_Input {} { | |||||
| callback {transport.set_beat_type( o->value() );} | |||||
| xywh {140 41 24 24} | |||||
| 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_Box {} { | |||||
| xywh {165 63 40 4} labeltype NO_LABEL | |||||
| } | |||||
| } | |||||
| Fl_Pack vmetro_widget { | |||||
| label Metronome | |||||
| xywh {210 35 400 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 );} | |||||
| class Visual_Metronome | |||||
| } {} | |||||
| Fl_Pack transport_controls_group { | |||||
| xywh {615 44 139 42} type HORIZONTAL | |||||
| code0 {o->spacing( 2 );} | |||||
| } { | |||||
| Fl_Button play_button { | |||||
| label {@>} | |||||
| callback {transport.toggle();} | |||||
| xywh {665 45 34 41} 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 {709 45 45 41} type Toggle shortcut 0x80072 selection_color 47 labeltype ENGRAVED_LABEL when 1 | |||||
| } | |||||
| Fl_Button home_button { | |||||
| label {@|<} | |||||
| callback {transport.locate( 0 );} | |||||
| xywh {615 45 40 41} 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 {760 40 100 20} box PLASTIC_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 {760 74 100 21} box PLASTIC_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_Box sm_indicator { | |||||
| label SM selected | |||||
| xywh {805 6 50 17} box ROUNDED_BOX color 50 labelcolor 3 deactivate | |||||
| } | |||||
| } | |||||
| Fl_Group {} {open | |||||
| xywh {-1 772 869 33} | |||||
| xywh {0 776 865 31} | |||||
| } { | } { | ||||
| Fl_Box status { | Fl_Box status { | ||||
| label status | label status | ||||
| xywh {0 776 783 25} box UP_BOX align 84 | |||||
| xywh {1 776 782 31} box UP_BOX align 84 | |||||
| code0 {o->label( NULL );} | code0 {o->label( NULL );} | ||||
| } | } | ||||
| Fl_Box transport_state { | Fl_Box transport_state { | ||||
| @@ -1081,7 +1092,7 @@ if ( s != o->label() ) | |||||
| else | else | ||||
| o->color( fl_darker( FL_GREEN ) ); | o->color( fl_darker( FL_GREEN ) ); | ||||
| }} | }} | ||||
| xywh {781 776 87 25} box THIN_UP_BOX align 64 | |||||
| xywh {783 776 82 31} box THIN_UP_BOX align 64 | |||||
| } | } | ||||
| } | } | ||||
| Fl_Group pan_indicators {open | Fl_Group pan_indicators {open | ||||
| @@ -1104,6 +1115,10 @@ if ( s != o->label() ) | |||||
| xywh {460 692 30 18} hide | xywh {460 692 30 18} hide | ||||
| } | } | ||||
| } | } | ||||
| Fl_Box sm_indicator { | |||||
| label SM | |||||
| xywh {810 7 50 13} box ROUNDED_BOX color 50 labelcolor 3 deactivate | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| Function {make_seq_window()} {open | Function {make_seq_window()} {open | ||||
| @@ -1591,8 +1606,7 @@ _flags |= FL_DAMAGE_SCROLL;} {} | |||||
| } | } | ||||
| Function {draw_playhead( void )} {open return_type void | Function {draw_playhead( void )} {open return_type void | ||||
| } { | } { | ||||
| code { | |||||
| if ( _c && _c->playhead_moved() ) | |||||
| code {if ( _c && _c->playhead_moved() ) | |||||
| { | { | ||||
| damage( FL_DAMAGE_USER1 ); | damage( FL_DAMAGE_USER1 ); | ||||
| }} {} | }} {} | ||||