From dbb579878eafcba8f528f22fcf72466c834d9228 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Thu, 16 Aug 2012 10:14:43 +0000
Subject: [PATCH] option to set progress meter step

---
 Common/DefaultOptions.h | 2 ++
 Common/GmshMessage.cpp  | 3 ++-
 Common/GmshMessage.h    | 3 ++-
 Common/OpenFile.h       | 4 ++--
 Common/Options.cpp      | 8 ++++++++
 Common/Options.h        | 1 +
 6 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 4fc98a964c..2fc15bd402 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -556,6 +556,8 @@ StringXNumber GeneralOptions_Number[] = {
     "Polygon offset factor (offset = factor * DZ + r * units)" },
   { F|O, "PolygonOffsetUnits" , opt_general_polygon_offset_units , 1. ,
     "Polygon offset units (offset = factor * DZ + r * units)" },
+  { F|O, "ProgressMeterStep" , opt_general_progress_meter_step , 20. ,
+    "Increment (in percent) of the progress meter bar" },
 
   { F|O, "QuadricSubdivisions" , opt_general_quadric_subdivisions, 6. ,
     "Number of subdivisions used to draw points or lines as spheres or cylinders" },
diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index 9e6ec77266..e31a3029e8 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -447,7 +447,8 @@ void Msg::Debug(const char *fmt, ...)
 
 void Msg::ProgressMeter(int n, int N, bool log, const char *fmt, ...)
 {
-  if(_commRank || _verbosity < 4) return;
+  if(_commRank || _verbosity < 4 ||
+     _progressMeterStep <= 0 || _progressMeterStep >= 100) return;
 
   double percent = 100. * (double)n/(double)N;
 
diff --git a/Common/GmshMessage.h b/Common/GmshMessage.h
index 2ddd4f0bd8..629fe3716c 100644
--- a/Common/GmshMessage.h
+++ b/Common/GmshMessage.h
@@ -70,7 +70,8 @@ class Msg {
   static void StatusBar(int num, bool log, const char *fmt, ...);
   static void Debug(const char *fmt, ...);
   static void ProgressMeter(int n, int N, bool log, const char *fmt, ...);
-  static void SetProgressMeterStep(int step){ _progressMeterStep = (step > 0) ? step : 1; }
+  static void SetProgressMeterStep(int step){ _progressMeterStep = step; }
+  static int GetProgressMeterStep(){ return _progressMeterStep; }
   static void ResetProgressMeter(){ if(!_commRank) _progressMeterCurrent = 0; }
   static double &Timer(std::string str){ return _timers[str]; }
   static void PrintTimers();
diff --git a/Common/OpenFile.h b/Common/OpenFile.h
index abecb416b8..e0060625a0 100644
--- a/Common/OpenFile.h
+++ b/Common/OpenFile.h
@@ -8,8 +8,8 @@
 
 #include <string>
 
-int ParseFile(const std::string & fileName, bool close, bool warnIfMissing=false);
-void ParseString(const std::string & str);
+int ParseFile(const std::string &fileName, bool close, bool warnIfMissing=false);
+void ParseString(const std::string &str);
 void OpenProject(const std::string &filename);
 void OpenProjectMacFinder(const char *fileName);
 int MergeFile(const std::string &fileName, bool warnIfMissing=false);
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 09991224f1..7c10d9e7bb 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -2363,6 +2363,14 @@ double opt_general_verbosity(OPT_ARGS_NUM)
   return Msg::GetVerbosity();
 }
 
+double opt_general_progress_meter_step(OPT_ARGS_NUM)
+{
+  if(action & GMSH_SET){
+    Msg::SetProgressMeterStep((int)val);
+  }
+  return Msg::GetProgressMeterStep();
+}
+
 double opt_general_nopopup(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
diff --git a/Common/Options.h b/Common/Options.h
index 782a6c2aca..6663634df9 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -168,6 +168,7 @@ double opt_general_background_gradient(OPT_ARGS_NUM);
 double opt_general_background_image_position0(OPT_ARGS_NUM);
 double opt_general_background_image_position1(OPT_ARGS_NUM);
 double opt_general_verbosity(OPT_ARGS_NUM);
+double opt_general_progress_meter_step(OPT_ARGS_NUM);
 double opt_general_nopopup(OPT_ARGS_NUM);
 double opt_general_non_modal_windows(OPT_ARGS_NUM);
 double opt_general_terminal(OPT_ARGS_NUM);
-- 
GitLab