From 5d021a2b4c036c898b65b474aafd336194d869a2 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 29 Apr 2014 08:44:16 +0000
Subject: [PATCH] GmshOption "Reset" to reset db + PViews + previous GModels

---
 Fltk/onelabGroup.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index 3a622abd9d..d5110e28a0 100644
--- a/Fltk/onelabGroup.cpp
+++ b/Fltk/onelabGroup.cpp
@@ -807,7 +807,7 @@ void onelab_cb(Fl_Widget *w, void *data)
     }
 
     std::string fileName = "onelab.db";
-    // add user defined tag, if any 
+    // add user defined tag, if any
     std::vector<onelab::string> ps;
     onelab::server::instance()->get(ps,"0Metamodel/9Tag");
     if(ps.size()){
@@ -1314,6 +1314,15 @@ static void setGmshOption(T &n)
     FlGui::instance()->rebuildTree(false);
     return;
   }
+  if(opt == "Reset"){ // reset db + models except current one
+    resetDb(false);
+    for(int i = PView::list.size() - 1; i >= 0; i--)
+      delete PView::list[i];
+    for(int i = GModel::list.size() - 1; i >= 0; i--)
+      if(GModel::list[i] != GModel::current()) delete GModel::list[i];
+    FlGui::instance()->rebuildTree(false);
+    return;
+  }
   std::string::size_type dot = opt.find('.');
   if(dot == std::string::npos) return;
   GmshSetOption(opt.substr(0, dot), opt.substr(dot + 1), n.getValue());
-- 
GitLab