From 889b7443fedfcaee1028b7a6feeec59edd4688d5 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 23 Mar 2015 21:42:00 +0000
Subject: [PATCH] tweak dark scheme

---
 Common/GmshMessage.cpp | 19 +++++++++++++------
 Fltk/FlGui.cpp         | 18 +++++++++---------
 Fltk/FlGui.h           |  2 --
 3 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index dcc5efbc79..d61c5b525d 100644
--- a/Common/GmshMessage.cpp
+++ b/Common/GmshMessage.cpp
@@ -278,7 +278,8 @@ void Msg::Fatal(const char *fmt, ...)
     std::string tmp = std::string("@C1@.") + "Fatal   : " + str;
     FlGui::instance()->addMessage(tmp.c_str());
     if(_firstError.empty()) _firstError = str;
-    FlGui::instance()->setLastStatus(FL_RED);
+    FlGui::instance()->setLastStatus
+      (CTX::instance()->guiColorScheme ? FL_DARK_RED : FL_RED);
     FlGui::instance()->saveMessages
       ((CTX::instance()->homeDir + CTX::instance()->errorFileName).c_str());
     fl_alert("A fatal error has occurred which will force Gmsh to abort.\n"
@@ -323,10 +324,12 @@ void Msg::Error(const char *fmt, ...)
 #if defined(HAVE_FLTK)
   if(FlGui::available()){
     if(FlGui::instance()->in_main_thread()) FlGui::instance()->check();
-    std::string tmp = std::string("@C1@.") + "Error   : " + str;
+    std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.")
+      + "Error   : " + str;
     FlGui::instance()->addMessage(tmp.c_str());
     if(_firstError.empty()) _firstError = str;
-    FlGui::instance()->setLastStatus(FL_RED);
+    FlGui::instance()->setLastStatus
+      (CTX::instance()->guiColorScheme ? FL_DARK_RED : FL_RED);
   }
 #endif
 
@@ -362,7 +365,8 @@ void Msg::Warning(const char *fmt, ...)
 #if defined(HAVE_FLTK)
   if(FlGui::available()){
     if(FlGui::instance()->in_main_thread()) FlGui::instance()->check();
-    std::string tmp = std::string("@C5@.") + "Warning : " + str;
+    std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@.")
+      + "Warning : " + str;
     FlGui::instance()->addMessage(tmp.c_str());
     if(_firstWarning.empty()) _firstWarning = str;
     FlGui::instance()->setLastStatus();
@@ -445,7 +449,8 @@ void Msg::Direct(const char *fmt, ...)
   {
     if(FlGui::available()){
       if(FlGui::instance()->in_main_thread()) FlGui::instance()->check();
-      std::string tmp = std::string("@C4@.") + str;
+      std::string tmp = std::string(CTX::instance()->guiColorScheme ? "@B136@." : "@C4@.")
+        + str;
       FlGui::instance()->addMessage(tmp.c_str());
     }
   }
@@ -632,7 +637,9 @@ void Msg::PrintErrorCounter(const char *title)
 
 #if defined(HAVE_FLTK)
   if(FlGui::available()){
-    std::string col = _errorCount ? "@C1@." : "@C5@.";
+    std::string col = _errorCount ?
+      std::string(CTX::instance()->guiColorScheme ? "@B72@." : "@C1@.") :
+      std::string(CTX::instance()->guiColorScheme ? "@B152@." : "@C5@.");
     FlGui::instance()->addMessage((col + prefix + line).c_str());
     FlGui::instance()->addMessage((col + prefix + title).c_str());
     FlGui::instance()->addMessage((col + prefix + warn).c_str());
diff --git a/Fltk/FlGui.cpp b/Fltk/FlGui.cpp
index 7f7940eb23..142a2c89e3 100644
--- a/Fltk/FlGui.cpp
+++ b/Fltk/FlGui.cpp
@@ -986,10 +986,16 @@ void FlGui::setStatus(const std::string &msg, bool opengl)
 void FlGui::setLastStatus(int col)
 {
   for(unsigned int i = 0; i < graph.size(); i++){
-    if(col >= 0 && graph[0]->getMessageHeight() < FL_NORMAL_SIZE)
-      graph[i]->getProgress()->labelcolor(col);
-    else
+    if(col >= 0 && graph[0]->getMessageHeight() < FL_NORMAL_SIZE){
+      if(CTX::instance()->guiColorScheme) // dark
+        graph[i]->getProgress()->color(col);
+      else
+        graph[i]->getProgress()->labelcolor(col);
+    }
+    else{
+      graph[i]->getProgress()->color(FL_BACKGROUND_COLOR);
       graph[i]->getProgress()->labelcolor(FL_FOREGROUND_COLOR);
+    }
   }
   setStatus(_lastStatus);
 }
@@ -1007,12 +1013,6 @@ void FlGui::setProgress(const std::string &msg, double val, double min, double m
   setStatus(msg);
 }
 
-void FlGui::setProgressColor(int col)
-{
-  for(unsigned int i = 0; i < FlGui::instance()->graph.size(); i++)
-    FlGui::instance()->graph[i]->getProgress()->labelcolor(col);
-}
-
 void FlGui::storeCurrentWindowsInfo()
 {
   CTX::instance()->glPosition[0] = graph[0]->getWindow()->x();
diff --git a/Fltk/FlGui.h b/Fltk/FlGui.h
index b474ce757b..cd37b4d728 100644
--- a/Fltk/FlGui.h
+++ b/Fltk/FlGui.h
@@ -123,8 +123,6 @@ class FlGui{
   void setLastStatus(int col=-1);
   // display status message and update progress bar
   void setProgress(const std::string &msg, double val, double min, double max);
-  // set color of progress message
-  void setProgressColor(int col);
   // create the window for physical context dependant definitions
   void callForSolverPlugin(int dim);
   // add line in message console
-- 
GitLab