diff --git a/Timeline/settings.C b/Timeline/Fl_Menu_Settings.C similarity index 85% rename from Timeline/settings.C rename to Timeline/Fl_Menu_Settings.C index df705da..91e1a30 100644 --- a/Timeline/settings.C +++ b/Timeline/Fl_Menu_Settings.C @@ -17,14 +17,14 @@ /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /*******************************************************************************/ -#include "settings.H" +#include "Fl_Menu_Settings.H" #include /* code to dump and restore (portions of) an Fl_Menu_ */ void -remove_ampersands ( char *str, int n ) +Fl_Menu_Settings::remove_ampersands ( char *str, int n ) { char *d = str; char *s = str; @@ -43,24 +43,24 @@ remove_ampersands ( char *str, int n ) *d = '\0'; } -int -item_pathname_x ( Fl_Menu_ *menu, char *path, int n, Fl_Menu_Item *item ) -{ - menu->item_pathname( path, n, item ); - - remove_ampersands( path, n ); -} - void -indent ( FILE *fp, int n ) +Fl_Menu_Settings::indent ( FILE *fp, int n ) { while ( n-- ) fprintf( fp, "\t" ); } +int +Fl_Menu_Settings::item_pathname_x ( char *path, int n, Fl_Menu_Item *item ) +{ + Fl_Menu_::item_pathname( path, n, item ); + + remove_ampersands( path, n ); +} + /** dump options from submenu /menu/ of menubar /bar/ to file /fp/ */ Fl_Menu_Item * -dump ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, FILE *fp, int depth ) +Fl_Menu_Settings::dump ( Fl_Menu_ *bar, Fl_Menu_Item *menu, FILE *fp, int depth ) { static char path[256]; Fl_Menu_Item *m = menu; @@ -86,7 +86,7 @@ dump ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, FILE *fp, int depth ) is_radio = true; // bar->item_pathname( path, sizeof( path ) - 1, m ); - item_pathname_x( bar, path, sizeof( path ) - 1, m ); + item_pathname_x( path, sizeof( path ) - 1, m ); if ( m->flags & FL_MENU_TOGGLE || m->flags & FL_MENU_RADIO ) @@ -119,13 +119,18 @@ dump ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, FILE *fp, int depth ) return m; } -void -dump_to_file ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, const char *name ) +int +Fl_Menu_Settings::dump ( Fl_Menu_Item *item, const char *name ) { FILE *fp = fopen( name, "w" ); - dump( bar, menu, fp, 0 ); + if ( ! fp ) + return false; + + dump( this, item, fp, 0 ); fclose( fp ); + + return true; } diff --git a/Timeline/settings.H b/Timeline/Fl_Menu_Settings.H similarity index 79% rename from Timeline/settings.H rename to Timeline/Fl_Menu_Settings.H index 2d8ba98..30d1105 100644 --- a/Timeline/settings.H +++ b/Timeline/Fl_Menu_Settings.H @@ -18,10 +18,19 @@ /*******************************************************************************/ -#include -#include +#include #include -Fl_Menu_Item * dump ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, FILE *fp ); +class Fl_Menu_Settings : public Fl_Menu_ +{ -void dump_to_file ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, const char *name ); + void remove_ampersands ( char *str, int n ); + void indent ( FILE *fp, int n ); + Fl_Menu_Item * dump ( Fl_Menu_ *bar, Fl_Menu_Item *menu, FILE *fp, int depth ); + +public: + + int item_pathname_x ( char *path, int n, Fl_Menu_Item *item ); + int dump ( Fl_Menu_Item *item, const char *name ); + +}; diff --git a/Timeline/Makefile b/Timeline/Makefile index 93da82f..d29d855 100644 --- a/Timeline/Makefile +++ b/Timeline/Makefile @@ -3,7 +3,7 @@ SRCS= \ Waveform.C \ Region.C \ main.C \ - settings.C \ + Fl_Menu_Settings.C \ TLE.C \ Sequence.C \ Audio_Sequence.C \ diff --git a/Timeline/TLE.fl b/Timeline/TLE.fl index f2f7763..e558948 100644 --- a/Timeline/TLE.fl +++ b/Timeline/TLE.fl @@ -4,7 +4,7 @@ header_name {.H} code_name {.C} decl {const float STATUS_UPDATE_FREQ = 0.5f;} {} -decl {\#include "settings.H"} {} +decl {\#include "Fl_Menu_Settings.H"} {} decl {\#include "Timeline.H"} {} @@ -98,7 +98,7 @@ Loggable::compact();} } MenuItem {} { label Dump - callback {dump_to_file( menubar, options_menu, "foo.state" );} selected + callback {((Fl_Menu_Settings*)menubar)->dump( options_menu, "foo.state" );} selected xywh {0 0 40 25} } }