Mixer: Save settings for 'Rows' with project.

Closes #48.
This commit is contained in:
Jonathan Moore Liles 2013-05-13 18:02:01 -07:00
parent d4f96fe762
commit 5e958416cd
2 changed files with 73 additions and 6 deletions

View File

@ -189,6 +189,8 @@ void Mixer::command_new ( void )
free( path );
}
load_project_settings();
update_menu();
if ( default_path )
@ -208,6 +210,8 @@ void Mixer::cb_menu(Fl_Widget* o) {
menu->item_pathname( picked, sizeof( picked ) );
DMESSAGE( "Picked %s", picked );
if (! strcmp( picked, "&Project/&New") )
{
command_new();
@ -265,18 +269,22 @@ void Mixer::cb_menu(Fl_Widget* o) {
fl_alert( "%s", "Failed to import strip!" );
}
}
else if (! strcmp( picked, "&Mixer/&Rows/One") )
else if (! strcmp( picked, "&Project/Se&ttings/&Rows/One") )
{
rows( 1 );
}
else if (! strcmp( picked, "&Mixer/&Rows/Two") )
else if (! strcmp( picked, "&Project/Se&ttings/&Rows/Two") )
{
rows( 2 );
}
else if (! strcmp( picked, "&Mixer/&Rows/Three") )
else if (! strcmp( picked, "&Project/Se&ttings/&Rows/Three") )
{
rows( 3 );
}
else if (! strcmp( picked, "&Project/Se&ttings/Make Default") )
{
save_default_project_settings();
}
else if (! strcmp( picked, "&View/&Theme") )
{
fl_theme_chooser();
@ -366,6 +374,52 @@ progress_cb ( int p, void *v )
}
}
void
Mixer::save_default_project_settings ( void )
{
char path[256];
snprintf( path, sizeof( path ), "%s/%s", user_config_dir, ".default_project_settings" );
((Fl_Menu_Settings*)menubar)->dump( menubar->find_item( "&Project/Se&ttings" ), path );
}
void
Mixer::load_default_project_settings ( void )
{
char path[256];
snprintf( path, sizeof( path ), "%s/%s", user_config_dir, ".default_project_settings" );
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), path );
}
void
Mixer::reset_project_settings ( void )
{
rows(1);
load_default_project_settings();
}
void
Mixer::save_project_settings ( void )
{
if ( ! Project::open() )
return;
((Fl_Menu_Settings*)menubar)->dump( menubar->find_item( "&Project/Se&ttings" ), "options" );
}
void
Mixer::load_project_settings ( void )
{
reset_project_settings();
if ( Project::open() )
((Fl_Menu_Settings*)menubar)->load( menubar->find_item( "&Project/Se&ttings" ), "options" );
update_menu();
}
Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) :
Fl_Group( X, Y, W, H, L )
{
@ -380,14 +434,15 @@ Mixer::Mixer ( int X, int Y, int W, int H, const char *L ) :
{ Fl_Menu_Bar *o = menubar = new Fl_Menu_Bar( X, Y, W, 24 );
o->add( "&Project/&New" );
o->add( "&Project/&Open" );
o->add( "&Project/Se&ttings/&Rows/One", '1', 0, 0, FL_MENU_RADIO | FL_MENU_VALUE );
o->add( "&Project/Se&ttings/&Rows/Two", '2', 0, 0, FL_MENU_RADIO );
o->add( "&Project/Se&ttings/&Rows/Three", '3', 0, 0, FL_MENU_RADIO );
o->add( "&Project/Se&ttings/Make Default", 0,0,0);
o->add( "&Project/&Save", FL_CTRL + 's', 0, 0 );
o->add( "&Project/&Quit", FL_CTRL + 'q', 0, 0 );
o->add( "&Mixer/&Add Strip", 'a', 0, 0 );
o->add( "&Mixer/Add &N Strips" );
o->add( "&Mixer/&Import Strip" );
o->add( "&Mixer/&Rows/One", '1', 0, 0 );
o->add( "&Mixer/&Rows/Two", '2', 0, 0 );
o->add( "&Mixer/&Rows/Three", '3', 0, 0 );
o->add( "&View/&Theme", 0, 0, 0 );
o->add( "_&Options/&Display/&Knobs/&Arc", 0, 0, 0, FL_MENU_RADIO );
o->add( "_&Options/&Display/&Knobs/&Burnished", 0, 0, 0, FL_MENU_RADIO );
@ -730,6 +785,8 @@ Mixer::command_save ( void )
update_menu();
}
save_project_settings();
return Project::save();
}
@ -747,6 +804,8 @@ Mixer::command_load ( const char *path, const char *display_name )
if ( display_name )
Project::name( display_name );
load_project_settings();
update_menu();
mixer->activate();
@ -763,6 +822,8 @@ Mixer::command_new ( const char *path, const char *display_name )
if ( display_name )
Project::name( display_name );
load_project_settings();
update_menu();
return true;

View File

@ -108,6 +108,12 @@ public:
void say_hello ( void );
void save_default_project_settings ( void );
void load_default_project_settings ( void );
void reset_project_settings ( void );
void save_project_settings ( void );
void load_project_settings ( void );
public:
void command_new ( void );