|
|
@@ -0,0 +1,343 @@
|
|
|
+
|
|
|
+#include "CMakeSetupGUIImplementation.h"
|
|
|
+#include "Fl/fl_file_chooser.H"
|
|
|
+#include "Fl/filename.H"
|
|
|
+#include "Fl/fl_ask.H"
|
|
|
+#include "cstring"
|
|
|
+#include "../cmCacheManager.h"
|
|
|
+#include "../cmMakefile.h"
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Constructor
|
|
|
+ */
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::CMakeSetupGUIImplementation()
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Destructor
|
|
|
+ */
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::~CMakeSetupGUIImplementation()
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Show the graphic interface
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::Show( void )
|
|
|
+{
|
|
|
+ dialogWindow->show();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Hide the graphic interface
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::Close( void )
|
|
|
+{
|
|
|
+ dialogWindow->hide();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Browse for the path to the sources
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::BrowseForSourcePath( void )
|
|
|
+{
|
|
|
+ const char * path =
|
|
|
+ fl_file_chooser(
|
|
|
+ "Path to Sources",
|
|
|
+ "",
|
|
|
+ sourcePathTextInput->value() );
|
|
|
+
|
|
|
+ if( !path )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetSourcePath( path );
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Browse for the path to the binaries
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::BrowseForBinaryPath( void )
|
|
|
+{
|
|
|
+ const char * path =
|
|
|
+ fl_file_chooser(
|
|
|
+ "Path to Binaries",
|
|
|
+ "",
|
|
|
+ binaryPathTextInput->value() );
|
|
|
+
|
|
|
+ if( !path )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SetBinaryPath( path );
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Set the source path
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::SetSourcePath( const char * path )
|
|
|
+{
|
|
|
+ if( VerifySourcePath( path ) )
|
|
|
+ {
|
|
|
+ m_WhereSource = path;
|
|
|
+ sourcePathTextInput->value( path );
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Set the binary path
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::SetBinaryPath( const char * path )
|
|
|
+{
|
|
|
+
|
|
|
+ if( VerifyBinaryPath( path ) )
|
|
|
+ {
|
|
|
+ m_WhereBuild = path;
|
|
|
+ binaryPathTextInput->value( path );
|
|
|
+ }
|
|
|
+
|
|
|
+ LoadCacheFromDiskToGUI();
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Verify the path to binaries
|
|
|
+ */
|
|
|
+bool
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::VerifyBinaryPath( const char * path )
|
|
|
+{
|
|
|
+
|
|
|
+ if( !path || strlen(path)==0 )
|
|
|
+ {
|
|
|
+ fl_alert("Please select the path to the binaries");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if( !filename_isdir( path ) )
|
|
|
+ {
|
|
|
+ fl_alert("%s \n Doesn't exist or is not a directory",path);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Verify the path to sources
|
|
|
+ */
|
|
|
+bool
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::VerifySourcePath( const char * path )
|
|
|
+{
|
|
|
+
|
|
|
+ if( !path || strlen(path)==0 )
|
|
|
+ {
|
|
|
+ fl_alert("Please select the path to the sources");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if( !filename_isdir( path ) )
|
|
|
+ {
|
|
|
+ fl_alert("%s \n Doesn't exist or is not a directory",path);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Build the project files
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::BuildProjectFiles( void )
|
|
|
+{
|
|
|
+
|
|
|
+ // Verify that source path is a valid directory
|
|
|
+ if( !VerifySourcePath( sourcePathTextInput->value() ) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // Verify that binary path is a valid directory
|
|
|
+ if( !VerifyBinaryPath( binaryPathTextInput->value() ) )
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ SaveCacheFromGUI();
|
|
|
+
|
|
|
+ fl_message("Building project files ... please wait");
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Load Cache from disk to GUI
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::LoadCacheFromDiskToGUI( void )
|
|
|
+{
|
|
|
+
|
|
|
+
|
|
|
+ if( m_WhereBuild != "" )
|
|
|
+ {
|
|
|
+ cmCacheManager::GetInstance()->LoadCache( m_WhereBuild.c_str() );
|
|
|
+ this->FillCacheGUIFromCacheManager();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Save Cache from disk to GUI
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::SaveCacheFromGUI( void )
|
|
|
+{
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Fill Cache GUI from cache manager
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::FillCacheGUIFromCacheManager( void )
|
|
|
+{
|
|
|
+
|
|
|
+ // Prepare to add rows to the scroll
|
|
|
+ propertyListPack->begin();
|
|
|
+
|
|
|
+ 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(),
|
|
|
+ fltk::PropertyList::CHECKBOX,"");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_CacheEntriesList.AddProperty(key,
|
|
|
+ "OFF",
|
|
|
+ value.m_HelpString.c_str(),
|
|
|
+ fltk::PropertyList::CHECKBOX,"");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case cmCacheManager::PATH:
|
|
|
+ m_CacheEntriesList.AddProperty(key,
|
|
|
+ value.m_Value.c_str(),
|
|
|
+ value.m_HelpString.c_str(),
|
|
|
+ fltk::PropertyList::PATH,"");
|
|
|
+ break;
|
|
|
+ case cmCacheManager::FILEPATH:
|
|
|
+ m_CacheEntriesList.AddProperty(key,
|
|
|
+ value.m_Value.c_str(),
|
|
|
+ value.m_HelpString.c_str(),
|
|
|
+ fltk::PropertyList::FILE,"");
|
|
|
+ break;
|
|
|
+ case cmCacheManager::STRING:
|
|
|
+ m_CacheEntriesList.AddProperty(key,
|
|
|
+ value.m_Value.c_str(),
|
|
|
+ value.m_HelpString.c_str(),
|
|
|
+ fltk::PropertyList::EDIT,"");
|
|
|
+ break;
|
|
|
+ case cmCacheManager::INTERNAL:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ propertyListPack->end();
|
|
|
+ propertyListPack->init_sizes();
|
|
|
+ cacheValuesScroll->position( 0, 0 );
|
|
|
+
|
|
|
+ this->UpdateData(false);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * UpdateData
|
|
|
+ */
|
|
|
+void
|
|
|
+CMakeSetupGUIImplementation
|
|
|
+::UpdateData( bool option )
|
|
|
+{
|
|
|
+ dialogWindow->redraw();
|
|
|
+ Fl::check();
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|