diff --git a/mixer/src/Mixer.C b/mixer/src/Mixer.C index b61b6bc..7812de8 100644 --- a/mixer/src/Mixer.C +++ b/mixer/src/Mixer.C @@ -172,6 +172,31 @@ Mixer::redraw_windows ( void ) w->redraw(); } +void Mixer::command_new ( void ) +{ + DMESSAGE( "New project" ); + + char *default_path; + + read_line( user_config_dir, "default_path", &default_path ); + + char *path = new_project_chooser( &default_path ); + + if ( path ) + { + if ( ! Project::create( path, NULL ) ) + fl_alert( "Error creating project!" ); + free( path ); + } + + update_menu(); + + if ( default_path ) + { + write_line( user_config_dir, "default_path", default_path ); + free( default_path ); + } +} void Mixer::cb_menu(Fl_Widget* o) { Fl_Menu_Bar *menu = (Fl_Menu_Bar*)o; @@ -185,29 +210,7 @@ void Mixer::cb_menu(Fl_Widget* o) { if (! strcmp( picked, "&Project/&New") ) { - DMESSAGE( "New project" ); - - char *default_path; - - read_line( user_config_dir, "default_path", &default_path ); - - char *path = new_project_chooser( &default_path ); - - if ( path ) - { - if ( ! Project::create( path, NULL ) ) - fl_alert( "Error creating project!" ); - free( path ); - } - - update_menu(); - - if ( default_path ) - { - write_line( user_config_dir, "default_path", default_path ); - free( default_path ); - } - + command_new(); } else if (! strcmp( picked, "&Project/&Open" ) ) { @@ -709,21 +712,6 @@ Mixer::save_options ( void ) void Mixer::update_menu ( void ) { - bool b = Project::open(); - - if ( b ) - { - ((Fl_Menu_Item*)menubar->find_item( "&Mixer" ))->flags &= ~FL_MENU_INACTIVE; - ((Fl_Menu_Item*)menubar->find_item( "&Project/&Save" ))->flags &= ~FL_MENU_INACTIVE; - mixer_strips->activate(); - } - else - { - ((Fl_Menu_Item*)menubar->find_item( "&Mixer" ))->flags |= FL_MENU_INACTIVE; - ((Fl_Menu_Item*)menubar->find_item( "&Project/&Save" ))->flags |= FL_MENU_INACTIVE; - mixer_strips->deactivate(); - } - project_name->label( Project::name() ); } @@ -736,6 +724,12 @@ Mixer::update_menu ( void ) bool Mixer::command_save ( void ) { + if ( ! Project::open() ) + { + command_new(); + update_menu(); + } + return Project::save(); } diff --git a/mixer/src/Mixer.H b/mixer/src/Mixer.H index 05fb464..47f5d03 100644 --- a/mixer/src/Mixer.H +++ b/mixer/src/Mixer.H @@ -110,6 +110,7 @@ public: public: + void command_new ( void ); bool command_save ( void ); bool command_load ( const char *path, const char *display_name = 0 ); bool command_new ( const char *path, const char *display_name = 0 );