diff --git a/Fltk/onelabGroup.cpp b/Fltk/onelabGroup.cpp
index 3a622abd9d2a156654463007fa011ca0a6fa8541..d5110e28a06bccbaad1fc102f3c0689a56915435 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());