diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp index 2d4d67fb0c611891efb1fd0309d480b3b1cc1603..f45bedc2b1a96cd4ea653f12e960e184a67d5fea 100644 --- a/Fltk/Callbacks.cpp +++ b/Fltk/Callbacks.cpp @@ -1,4 +1,4 @@ -// $Id: Callbacks.cpp,v 1.325 2005-01-01 19:35:27 geuzaine Exp $ +// $Id: Callbacks.cpp,v 1.326 2005-01-03 07:03:02 geuzaine Exp $ // // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle // @@ -2796,37 +2796,12 @@ void view_toggle_cb(CALLBACK_ARGS) Draw(); } -static int RELOAD_ALL_VIEWS = 0; - -void view_reload_all_cb(CALLBACK_ARGS) +static void _view_reload(int num) { if(!CTX.post.list) return; - RELOAD_ALL_VIEWS = 1; - for(int i = 0; i < List_Nbr(CTX.post.list); i++) - view_reload_cb(NULL, (void *)i); - RELOAD_ALL_VIEWS = 0; - Draw(); -} -void view_reload_visible_cb(CALLBACK_ARGS) -{ - if(!CTX.post.list) - return; - RELOAD_ALL_VIEWS = 1; - for(int i = 0; i < List_Nbr(CTX.post.list); i++) - if(opt_view_visible(i, GMSH_GET, 0)) - view_reload_cb(NULL, (void *)i); - RELOAD_ALL_VIEWS = 0; - Draw(); -} - -void view_reload_cb(CALLBACK_ARGS) -{ - if(!CTX.post.list) - return; - - Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, (long)data); + Post_View *v = *(Post_View **) List_Pointer(CTX.post.list, num); struct stat buf; if(stat(v->FileName, &buf)){ @@ -2838,7 +2813,7 @@ void view_reload_cb(CALLBACK_ARGS) MergeProblem(v->FileName); CTX.post.force_num = 0; - Post_View *v2 = *(Post_View **) List_Pointer(CTX.post.list, (long)data); + Post_View *v2 = *(Post_View **) List_Pointer(CTX.post.list, num); CopyViewOptions(v, v2); // In case the reloaded view has a different number of time steps @@ -2846,9 +2821,37 @@ void view_reload_cb(CALLBACK_ARGS) v2->TimeStep = 0; FreeView(v); +} - if(!RELOAD_ALL_VIEWS) - Draw(); +void view_reload_cb(CALLBACK_ARGS) +{ + _view_reload((long)data); + Draw(); +} + +void view_reload_all_cb(CALLBACK_ARGS) +{ + for(int i = 0; i < List_Nbr(CTX.post.list); i++) + _view_reload(i); + Draw(); +} + +void view_reload_visible_cb(CALLBACK_ARGS) +{ + for(int i = 0; i < List_Nbr(CTX.post.list); i++) + if(opt_view_visible(i, GMSH_GET, 0)) + _view_reload(i); + Draw(); +} + +void view_remove_other_cb(CALLBACK_ARGS) +{ + if(!CTX.post.list) return; + for(int i = List_Nbr(CTX.post.list) - 1; i >= 0; i--) + if(i != (long)data) + RemoveViewByIndex(i); + UpdateViewsInGUI(); + Draw(); } void view_remove_all_cb(CALLBACK_ARGS) diff --git a/Fltk/Callbacks.h b/Fltk/Callbacks.h index 04175ad91cc9a1cf48aaf025bd03ff7f68c16aa5..38ab4c219d46e8a8bde86b180793f3ca561b1db7 100644 --- a/Fltk/Callbacks.h +++ b/Fltk/Callbacks.h @@ -106,6 +106,7 @@ void view_reload_cb(CALLBACK_ARGS) ; void view_reload_all_cb(CALLBACK_ARGS) ; void view_reload_visible_cb(CALLBACK_ARGS) ; void view_remove_cb(CALLBACK_ARGS) ; +void view_remove_other_cb(CALLBACK_ARGS) ; void view_remove_all_cb(CALLBACK_ARGS) ; void view_remove_visible_cb(CALLBACK_ARGS) ; void view_remove_invisible_cb(CALLBACK_ARGS) ; diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp index 74e9a2115eb3d144155c7451aef82ecb458f6036..d5e6707d06c375d322465692d01cc259ba762671 100644 --- a/Fltk/GUI.cpp +++ b/Fltk/GUI.cpp @@ -1,4 +1,4 @@ -// $Id: GUI.cpp,v 1.408 2005-01-01 19:35:28 geuzaine Exp $ +// $Id: GUI.cpp,v 1.409 2005-01-03 07:03:02 geuzaine Exp $ // // Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle // @@ -1147,34 +1147,36 @@ void GUI::set_context(Context_Item * menu_asked, int flag) for(int j = 0; j < 2; j++) { p[j]->add("Reload/View", 0, (Fl_Callback *) view_reload_cb, (void *)nb, 0); + p[j]->add("Reload/Visible Views", 0, + (Fl_Callback *) view_reload_visible_cb, (void *)nb, 0); p[j]->add("Reload/All Views", 0, (Fl_Callback *) view_reload_all_cb, (void *)nb, 0); - p[j]->add("Reload/All Visible Views", 0, - (Fl_Callback *) view_reload_visible_cb, (void *)nb, 0); p[j]->add("Remove/View", FL_Delete, (Fl_Callback *) view_remove_cb, (void *)nb, 0); - p[j]->add("Remove/All Views", 0, - (Fl_Callback *) view_remove_all_cb, (void *)nb, 0); - p[j]->add("Remove/All Visible Views", 0, + p[j]->add("Remove/Other Views", 0, + (Fl_Callback *) view_remove_other_cb, (void *)nb, 0); + p[j]->add("Remove/Visible Views", 0, (Fl_Callback *) view_remove_visible_cb, (void *)nb, 0); - p[j]->add("Remove/All Invisible Views", 0, + p[j]->add("Remove/Invisible Views", 0, (Fl_Callback *) view_remove_invisible_cb, (void *)nb, 0); - p[j]->add("Remove/All Empty Views", 0, + p[j]->add("Remove/Empty Views", 0, (Fl_Callback *) view_remove_empty_cb, (void *)nb, 0); + p[j]->add("Remove/All Views", 0, + (Fl_Callback *) view_remove_all_cb, (void *)nb, 0); p[j]->add("Duplicate/View without Options", 0, (Fl_Callback *) view_duplicate_cb, (void *)nb, 0); p[j]->add("Duplicate/View with Options", 0, (Fl_Callback *) view_duplicate_with_options_cb, (void *)nb, 0); - p[j]->add("Combine/Elements/From All Views", 0, - (Fl_Callback *) view_combine_space_all_cb, (void *)nb, 0); p[j]->add("Combine/Elements/From Visible Views", 0, (Fl_Callback *) view_combine_space_visible_cb, (void *)nb, 0); + p[j]->add("Combine/Elements/From All Views", 0, + (Fl_Callback *) view_combine_space_all_cb, (void *)nb, 0); p[j]->add("Combine/Elements/By View Name", 0, (Fl_Callback *) view_combine_space_by_name_cb, (void *)nb, 0); - p[j]->add("Combine/Time Steps/From All Views", 0, - (Fl_Callback *) view_combine_time_all_cb, (void *)nb, 0); p[j]->add("Combine/Time Steps/From Visible Views", 0, (Fl_Callback *) view_combine_time_visible_cb, (void *)nb, 0); + p[j]->add("Combine/Time Steps/From All Views", 0, + (Fl_Callback *) view_combine_time_all_cb, (void *)nb, 0); p[j]->add("Combine/Time Steps/By View Name", 0, (Fl_Callback *) view_combine_time_by_name_cb, (void *)nb, 0); p[j]->add("Set Visibility/All On", 0,