| @@ -3,6 +3,7 @@ SRCS= \ | |||||
| Waveform.C \ | Waveform.C \ | ||||
| Region.C \ | Region.C \ | ||||
| main.C \ | main.C \ | ||||
| settings.C \ | |||||
| TLE.C \ | TLE.C \ | ||||
| Sequence.C \ | Sequence.C \ | ||||
| Audio_Sequence.C \ | Audio_Sequence.C \ | ||||
| @@ -4,6 +4,8 @@ header_name {.H} | |||||
| code_name {.C} | code_name {.C} | ||||
| decl {const float STATUS_UPDATE_FREQ = 0.5f;} {} | decl {const float STATUS_UPDATE_FREQ = 0.5f;} {} | ||||
| decl {\#include "settings.H"} {} | |||||
| decl {\#include "Timeline.H"} {} | decl {\#include "Timeline.H"} {} | ||||
| decl {\#include "Engine.H"} {} | decl {\#include "Engine.H"} {} | ||||
| @@ -51,7 +53,7 @@ Fl::add_timeout( STATUS_UPDATE_FREQ, update_cb, this );} {} | |||||
| xywh {522 141 1024 768} type Double resizable xclass {Non-DAW} visible | xywh {522 141 1024 768} type Double resizable xclass {Non-DAW} visible | ||||
| } { | } { | ||||
| Fl_Menu_Bar menubar { | Fl_Menu_Bar menubar { | ||||
| label {capture:\\nfoo} | |||||
| label {capture:\\nfoo} open | |||||
| xywh {0 0 1024 25} | xywh {0 0 1024 25} | ||||
| } { | } { | ||||
| Submenu {} { | Submenu {} { | ||||
| @@ -94,6 +96,11 @@ Loggable::compact();} | |||||
| callback {exit( 0 );} | callback {exit( 0 );} | ||||
| xywh {40 40 40 25} shortcut 0x40071 | xywh {40 40 40 25} shortcut 0x40071 | ||||
| } | } | ||||
| MenuItem {} { | |||||
| label Dump | |||||
| callback {dump_to_file( menubar, options_menu, "foo.state" );} selected | |||||
| xywh {0 0 40 25} | |||||
| } | |||||
| } | } | ||||
| Submenu {} { | Submenu {} { | ||||
| label {&Edit} open | label {&Edit} open | ||||
| @@ -176,7 +183,7 @@ Loggable::compact();} | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| Submenu {} { | |||||
| Submenu options_menu { | |||||
| label {&Options} open | label {&Options} open | ||||
| xywh {0 0 74 25} divider | xywh {0 0 74 25} divider | ||||
| } { | } { | ||||
| @@ -300,7 +307,7 @@ Fl::scheme( Fl::scheme() );} | |||||
| Fl_Group {} {open | Fl_Group {} {open | ||||
| xywh {0 23 1024 48} | xywh {0 23 1024 48} | ||||
| } { | } { | ||||
| Fl_Pack {} {open selected | |||||
| Fl_Pack {} {open | |||||
| xywh {0 23 473 46} type HORIZONTAL | xywh {0 23 473 46} type HORIZONTAL | ||||
| code0 {o->spacing( 10 );} | code0 {o->spacing( 10 );} | ||||
| } { | } { | ||||
| @@ -0,0 +1,131 @@ | |||||
| /*******************************************************************************/ | |||||
| /* Copyright (C) 2008 Jonathan Moore Liles */ | |||||
| /* */ | |||||
| /* This program is free software; you can redistribute it and/or modify it */ | |||||
| /* under the terms of the GNU General Public License as published by the */ | |||||
| /* Free Software Foundation; either version 2 of the License, or (at your */ | |||||
| /* option) any later version. */ | |||||
| /* */ | |||||
| /* This program is distributed in the hope that it will be useful, but WITHOUT */ | |||||
| /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ | |||||
| /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ | |||||
| /* more details. */ | |||||
| /* */ | |||||
| /* You should have received a copy of the GNU General Public License along */ | |||||
| /* with This program; see the file COPYING. If not,write to the Free Software */ | |||||
| /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||||
| /*******************************************************************************/ | |||||
| #include "settings.H" | |||||
| #include <string.h> | |||||
| /* code to dump and restore (portions of) an Fl_Menu_ */ | |||||
| void | |||||
| remove_ampersands ( char *str, int n ) | |||||
| { | |||||
| char *d = str; | |||||
| char *s = str; | |||||
| while ( n-- ) | |||||
| { | |||||
| if ( *s == '&' ) | |||||
| { | |||||
| ++s; | |||||
| continue; | |||||
| } | |||||
| *(d++) = *(s++); | |||||
| } | |||||
| *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 ) | |||||
| { | |||||
| while ( n-- ) | |||||
| fprintf( fp, "\t" ); | |||||
| } | |||||
| /** 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 ) | |||||
| { | |||||
| static char path[256]; | |||||
| Fl_Menu_Item *m = menu; | |||||
| for ( ; m->text; ++m ) | |||||
| { | |||||
| bool is_radio = false; | |||||
| if ( m->flags & FL_SUBMENU ) | |||||
| { | |||||
| strcpy( path, m->text ); | |||||
| remove_ampersands( path, sizeof( path ) - 1 ); | |||||
| indent( fp, depth ); | |||||
| fprintf( fp, "%s\n", path ); | |||||
| /* recurse */ | |||||
| m = dump( bar, ++m, fp, depth + 1 ); | |||||
| continue; | |||||
| } | |||||
| if ( m->flags & FL_MENU_RADIO ) | |||||
| is_radio = true; | |||||
| // bar->item_pathname( path, sizeof( path ) - 1, m ); | |||||
| item_pathname_x( bar, path, sizeof( path ) - 1, m ); | |||||
| if ( m->flags & FL_MENU_TOGGLE || m->flags & FL_MENU_RADIO ) | |||||
| { | |||||
| if ( ! is_radio ) | |||||
| { | |||||
| indent( fp, depth ); | |||||
| fprintf( fp, "%s\n", rindex( path, '/' ) + 1 ); | |||||
| indent( fp, depth + 1 ); | |||||
| fprintf( fp, "%s\n", m->flags & FL_MENU_VALUE ? "true" : "false" ); | |||||
| } | |||||
| else if ( m->flags & FL_MENU_VALUE ) | |||||
| { | |||||
| indent( fp, depth ); | |||||
| *rindex( path, '/' ) = '\0'; | |||||
| fprintf( fp, "%s\n", rindex( path, '/' ) + 1 ); | |||||
| indent( fp, depth + 1 ); | |||||
| fprintf( fp, "%s\n", path + strlen( path ) + 1 ); | |||||
| } | |||||
| } | |||||
| } | |||||
| return m; | |||||
| } | |||||
| void | |||||
| dump_to_file ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, const char *name ) | |||||
| { | |||||
| FILE *fp = fopen( name, "w" ); | |||||
| dump( bar, menu, fp, 0 ); | |||||
| fclose( fp ); | |||||
| } | |||||
| @@ -0,0 +1,27 @@ | |||||
| /*******************************************************************************/ | |||||
| /* Copyright (C) 2008 Jonathan Moore Liles */ | |||||
| /* */ | |||||
| /* This program is free software; you can redistribute it and/or modify it */ | |||||
| /* under the terms of the GNU General Public License as published by the */ | |||||
| /* Free Software Foundation; either version 2 of the License, or (at your */ | |||||
| /* option) any later version. */ | |||||
| /* */ | |||||
| /* This program is distributed in the hope that it will be useful, but WITHOUT */ | |||||
| /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */ | |||||
| /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for */ | |||||
| /* more details. */ | |||||
| /* */ | |||||
| /* You should have received a copy of the GNU General Public License along */ | |||||
| /* with This program; see the file COPYING. If not,write to the Free Software */ | |||||
| /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |||||
| /*******************************************************************************/ | |||||
| #include <FL/Fl_Menu.H> | |||||
| #include <FL/Fl_Menu_Bar.H> | |||||
| #include <stdio.h> | |||||
| Fl_Menu_Item * dump ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, FILE *fp ); | |||||
| void dump_to_file ( Fl_Menu_Bar *bar, Fl_Menu_Item *menu, const char *name ); | |||||