tweak version mismatch test, update Features5 docs
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mwindow.C
index c1cd79f6119ff4e027a804bc7d828b2ae72d9d80..3f67230e63885819780485acc3f7acde9f09b8ab 100644 (file)
@@ -2007,6 +2007,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__);
                                break;
                        }
                        if( strcmp(cin_version, CINELERRA_VERSION) &&
+                           strcmp(cin_version, "Unify") &&
                            strcmp(cin_version, "5.1") ) {
                                char string[BCTEXTLEN];
                                snprintf(string, sizeof(string),
@@ -2856,6 +2857,74 @@ void MWindow::show_lwindow()
        gui->mainmenu->show_lwindow->set_checked(1);
 }
 
+void MWindow::restore_windows()
+{
+       if( !session->show_vwindow ) {
+               for( int i=0, n=vwindows.size(); i<n; ++i ) {
+                       VWindow *vwindow = vwindows[i];
+                       if( !vwindow || !vwindow->is_running() ) continue;
+                       vwindow->gui->lock_window("MWindow::restore_windows");
+                       vwindow->gui->close(1);
+                       vwindow->gui->unlock_window();
+               }
+       }
+       else
+               show_vwindow();
+
+       if( !session->show_awindow && !awindow->gui->is_hidden() ) {
+               awindow->gui->lock_window("MWindow::restore_windows");
+               awindow->gui->close_event();
+               awindow->gui->unlock_window();
+       }
+       else if( session->show_awindow && awindow->gui->is_hidden() )
+               show_awindow();
+
+       if( !session->show_cwindow && !cwindow->gui->is_hidden() ) {
+               cwindow->gui->lock_window("MWindow::restore_windows");
+               cwindow->hide_window();
+               cwindow->gui->unlock_window();
+       }
+       else if( session->show_cwindow && cwindow->gui->is_hidden() )
+               cwindow->show_window();
+
+       if( !session->show_gwindow && !gwindow->gui->is_hidden() ) {
+               gwindow->gui->lock_window("MWindow::restore_windows");
+               gwindow->gui->close_event();
+               gwindow->gui->unlock_window();
+       }
+       else if( session->show_gwindow && gwindow->gui->is_hidden() )
+               show_gwindow();
+
+       if( !session->show_lwindow && !lwindow->gui->is_hidden() ) {
+               lwindow->gui->lock_window("MWindow::restore_windows");
+               lwindow->gui->close_event();
+               lwindow->gui->unlock_window();
+       }
+       else if( session->show_lwindow && lwindow->gui->is_hidden() )
+               show_lwindow();
+
+       gui->focus();
+}
+
+void MWindow::save_layout(int no)
+{
+       char layout_path[BCTEXTLEN];
+       snprintf(layout_path, sizeof(layout_path), "%s/" LAYOUT_FILE,
+               File::get_config_path(), no);
+       session->save_file(layout_path);
+}
+
+void MWindow::load_layout(int no)
+{
+       char layout_path[BCTEXTLEN];
+       snprintf(layout_path, sizeof(layout_path), "%s/" LAYOUT_FILE,
+               File::get_config_path(), no);
+       session->load_file(layout_path);
+       restore_windows();
+       gui->default_positions();
+       save_defaults();
+}
+
 int MWindow::tile_windows(int window_config)
 {
        int need_reload = 0;