Support saving of instrument definitions.

This commit is contained in:
Jonathan Moore Liles 2008-02-11 22:06:00 -06:00
parent 00354529c7
commit 846413fee8
3 changed files with 25 additions and 5 deletions

View File

@ -137,7 +137,7 @@ if ( Fl::event() == FL_SHORTCUT && Fl::event_key() == FL_Escape )
if ( maybe_save_song() ) if ( maybe_save_song() )
quit();} open quit();} open
xywh {773 244 869 801} type Single box PLASTIC_UP_BOX color 37 resizable xclass non size_range {869 801 0 0} visible xywh {699 154 869 801} type Single box PLASTIC_UP_BOX color 37 resizable xclass non size_range {869 801 0 0} visible
} { } {
Fl_Menu_Bar {} {open Fl_Menu_Bar {} {open
xywh {0 0 869 30} color 37 xywh {0 0 869 30} color 37
@ -1017,7 +1017,7 @@ You should have received a copy of the GNU General Public License along with thi
Function {make_randomization_dialog()} {} { Function {make_randomization_dialog()} {} {
Fl_Window randomization_dialog { Fl_Window randomization_dialog {
label {Randomization Settings} open label {Randomization Settings} open
xywh {740 128 342 98} type Double xywh {656 39 342 98} type Double
code0 {// feel->value( )} code0 {// feel->value( )}
code1 {probability->value( song.random.probability );} non_modal visible code1 {probability->value( song.random.probability );} non_modal visible
} { } {
@ -1054,7 +1054,7 @@ You should have received a copy of the GNU General Public License along with thi
} { } {
Fl_Window instrument_edit_dialog { Fl_Window instrument_edit_dialog {
label {Instrument Edit} open label {Instrument Edit} open
xywh {669 299 338 191} type Double modal visible xywh {1006 27 338 191} type Double modal visible
} { } {
Fl_Box {} { Fl_Box {} {
label {Instrument Row} label {Instrument Row}
@ -1062,7 +1062,7 @@ You should have received a copy of the GNU General Public License along with thi
} }
Fl_Input instrument_name_field { Fl_Input instrument_name_field {
label Name label Name
callback {instrument_edit_dialog->hide();} selected callback {instrument_edit_dialog->hide();}
xywh {10 70 321 25} selection_color 48 align 1 when 8 textcolor 32 xywh {10 70 321 25} selection_color 48 align 1 when 8 textcolor 32
} }
Fl_Value_Slider instrument_volume_slider { Fl_Value_Slider instrument_volume_slider {
@ -1311,7 +1311,11 @@ while( instrument_edit_dialog->shown() )
Fl::wait(); Fl::wait();
i->note_name( n, strdup( instrument_name_field->value() ) ); i->note_name( n, strdup( instrument_name_field->value() ) );
i->velocity( n, instrument_volume_slider->value() );} {} i->velocity( n, instrument_volume_slider->value() );
i->save();} {selected
}
} }
} }

View File

@ -101,12 +101,16 @@ Instrument::note_name ( int n, char *s )
free( _map[ n ].name ); free( _map[ n ].name );
_map[ n ].name = s; _map[ n ].name = s;
_dirty = true;
} }
void void
Instrument::velocity ( int n, int v ) Instrument::velocity ( int n, int v )
{ {
_map[ n ].velocity = v; _map[ n ].velocity = v;
_dirty = true;
} }
/* Should only be passed NOTE ON/OFF events! */ /* Should only be passed NOTE ON/OFF events! */
@ -219,6 +223,15 @@ Instrument::write ( const char *s ) const
return true; return true;
} }
void
Instrument::save ( void ) const
{
if ( _dirty )
write( _name );
_dirty = false;
}
static int static int
instrument_filter ( const struct dirent *d ) instrument_filter ( const struct dirent *d )
{ {

View File

@ -36,6 +36,7 @@ class Instrument
char *_name; char *_name;
int _height; int _height;
mutable bool _dirty;
struct i_map _map[128]; /* note / velocity mappings */ struct i_map _map[128]; /* note / velocity mappings */
@ -60,4 +61,6 @@ public:
const char * name ( void ) const; const char * name ( void ) const;
int velocity ( int n ) const; int velocity ( int n ) const;
void save ( void ) const;
}; };