Ver Fonte

ENH: Added Methods for loading the cache

Luis Ibanez há 24 anos atrás
pai
commit
43fb9a11b5
1 ficheiros alterados com 126 adições e 1 exclusões
  1. 126 1
      Source/FLTKDialog/CMakeSetupGUIImplementation.cpp

+ 126 - 1
Source/FLTKDialog/CMakeSetupGUIImplementation.cpp

@@ -4,6 +4,8 @@
 #include "Fl/filename.H"
 #include "Fl/fl_ask.H"
 #include "cstring"
+#include "../cmCacheManager.h"
+#include "../cmMakefile.h"
 
 
 
@@ -212,8 +214,131 @@ CMakeSetupGUIImplementation
     return;
   }
 
- fl_message("Building project files ... please wait");
+  SaveCacheFromGUI();
+  
+  fl_message("Building project files ... please wait");
+
+}
+
+
 
+
+/**
+ * Load Cache from disk to GUI
+ */
+void
+CMakeSetupGUIImplementation
+::LoadCacheFromDiskToGUI( void )
+{
+  
+  const char * m_WhereBuild = binaryPathTextInput->value();
+    
+  if( m_WhereBuild != "" )
+    {
+    cmCacheManager::GetInstance()->LoadCache(m_WhereBuild);
+    
+    // Make sure the internal "CMAKE" cache entry is set.
+    const char* cacheValue = cmCacheManager::GetInstance()->GetCacheValue("CMAKE");
+    if(!cacheValue)
+      {
+        // Find our own exectuable.
+        std::string cMakeCMD = "\""+cmSystemTools::GetProgramPath(_pgmptr);
+        cMakeCMD += "/CMakeSetupCMD.exe\"";
+
+        // Save the value in the cache
+        cmCacheManager::GetInstance()->AddCacheEntry("CMAKE",
+						     cMakeCMD.c_str(),
+						     "Path to CMake executable.",
+						     cmCacheManager::INTERNAL);
+      }
+    
+    this->FillCacheGUIFromCacheManager();
+    }
 }
 
 
+
+/**
+ * Save Cache from disk to GUI
+ */
+void
+CMakeSetupGUIImplementation
+::SaveCacheFromGUI( void )
+{
+}
+
+
+/**
+ * Fill Cache GUI from cache manager
+ */
+void
+CMakeSetupGUIImplementation
+::FillCacheGUIFromCacheManager( void )
+{
+  const cmCacheManager::CacheEntryMap &cache =
+    cmCacheManager::GetInstance()->GetCacheMap();
+  for(cmCacheManager::CacheEntryMap::const_iterator i = cache.begin();
+      i != cache.end(); ++i)
+    {
+    const char* key = i->first.c_str();
+    const cmCacheManager::CacheEntry& value = i->second;
+    /*
+    switch(value.m_Type )
+      {
+      case cmCacheManager::BOOL:
+        if(cmCacheManager::GetInstance()->IsOn(key))
+          {
+          m_CacheEntriesList.AddProperty(key,
+                                         "ON",
+                                         value.m_HelpString.c_str(),
+                                         CPropertyList::CHECKBOX,"");
+          }
+        else
+          {
+          m_CacheEntriesList.AddProperty(key,
+                                         "OFF",
+                                         value.m_HelpString.c_str(),
+                                         CPropertyList::CHECKBOX,"");
+          }
+        break;
+      case cmCacheManager::PATH:
+        m_CacheEntriesList.AddProperty(key, 
+                                       value.m_Value.c_str(),
+                                       value.m_HelpString.c_str(),
+                                       CPropertyList::PATH,"");
+        break;
+      case cmCacheManager::FILEPATH:
+        m_CacheEntriesList.AddProperty(key, 
+                                       value.m_Value.c_str(),
+                                       value.m_HelpString.c_str(),
+                                       CPropertyList::FILE,"");
+        break;
+      case cmCacheManager::STRING:
+        m_CacheEntriesList.AddProperty(key,
+                                       value.m_Value.c_str(),
+                                       value.m_HelpString.c_str(),
+                                       CPropertyList::EDIT,"");
+        break;
+      case cmCacheManager::INTERNAL:
+        break;
+      }
+    */
+    }
+  this->UpdateData(false);
+
+}
+
+
+/**
+ * UpdateData
+ */
+void
+CMakeSetupGUIImplementation
+::UpdateData( bool option )
+{
+  dialogWindow->redraw();
+  Fl::check();
+}
+
+
+