summaryrefslogtreecommitdiffstats
path: root/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
diff options
context:
space:
mode:
authorLuis Ibanez <luis.ibanez@kitware.com>2001-10-28 03:47:23 (GMT)
committerLuis Ibanez <luis.ibanez@kitware.com>2001-10-28 03:47:23 (GMT)
commitf90e25894157601d9776f3bf2f04407ce19eebab (patch)
tree24c6cea2286a2028b270c8b9aa25db475e3fd1fd /Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
parent0fb47ad240d3a3a0cb2ff12c5c34aef27095a041 (diff)
downloadCMake-f90e25894157601d9776f3bf2f04407ce19eebab.zip
CMake-f90e25894157601d9776f3bf2f04407ce19eebab.tar.gz
CMake-f90e25894157601d9776f3bf2f04407ce19eebab.tar.bz2
ENH: Updated with respect to MFC CMakeSetup. New cache entries are now
colored in red. The browsers for recent directories only popup if there is at least one in the list.
Diffstat (limited to 'Source/FLTKDialog/CMakeSetupGUIImplementation.cxx')
-rw-r--r--Source/FLTKDialog/CMakeSetupGUIImplementation.cxx170
1 files changed, 147 insertions, 23 deletions
diff --git a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
index 6b47c2c..1961a36 100644
--- a/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
+++ b/Source/FLTKDialog/CMakeSetupGUIImplementation.cxx
@@ -7,8 +7,10 @@
#include "../cmMakefile.h"
#include <iostream>
#include "FLTKPropertyList.h"
+#include "FLTKPropertyItemRow.h"
#include "FL/fl_draw.H"
#include "../cmake.h"
+#include "../cmMakefileGenerator.h"
@@ -308,25 +310,33 @@ CMakeSetupGUIImplementation
*/
void
CMakeSetupGUIImplementation
-::BuildProjectFiles( void )
+::RunCMake( bool generateProjectFiles )
{
- // Take and verify the source path from the GUI
- if( !SetSourcePath( sourcePathTextInput->value() ) )
- {
- return;
- }
-
- // Take and verify the binary path from the GUI
- if( !SetBinaryPath( binaryPathTextInput->value() ) )
- {
- return;
- }
-
+ if(!cmSystemTools::FileExists( m_WhereBuild.c_str() ))
+ {
+ std::string message =
+ "Build directory does not exist, should I create it?\n\n"
+ "Directory: ";
+ message += m_WhereBuild;
+ int userWantToCreateDirectory =
+ fl_ask(message.c_str());
+ if( userWantToCreateDirectory )
+ {
+ cmSystemTools::MakeDirectory( m_WhereBuild.c_str() );
+ }
+ else
+ {
+ fl_alert("Build Project aborted, nothing done.");
+ return;
+ }
+ }
+
// set the wait cursor
fl_cursor(FL_CURSOR_WAIT,FL_BLACK,FL_WHITE);
+
// save the current GUI values to the cache
this->SaveCacheFromGUI();
@@ -348,11 +358,15 @@ CMakeSetupGUIImplementation
arg = "-B";
arg += m_WhereBuild;
args.push_back(arg);
+ arg = "-G";
+ arg += m_GeneratorChoiceString;
+ args.push_back(arg);
// run the generate process
- if(make.Generate(args) != 0)
+ if(make.Generate(args, generateProjectFiles) != 0)
{
cmSystemTools::Error(
"Error in generation process, project files may be invalid");
+ cmSystemTools::ResetErrorOccuredFlag();
}
// update the GUI with any new values in the caused by the
// generation process
@@ -411,14 +425,40 @@ void
CMakeSetupGUIImplementation
::FillCacheGUIFromCacheManager( void )
{
+ int size = m_CacheEntriesList.GetItems().size();
+ bool reverseOrder = false;
+ // if there are already entries in the cache, then
+ // put the new ones in the top, so they show up first
+ if(size)
+ {
+ reverseOrder = true;
+ }
- // Prepare to add rows to the scroll
- m_CacheEntriesList.RemoveAll();
+ // all the current values are not new any more
+ std::set<fltk::PropertyItem*> items = m_CacheEntriesList.GetItems();
+ for(std::set<fltk::PropertyItem*>::iterator i = items.begin();
+ i != items.end(); ++i)
+ {
+ fltk::PropertyItem* item = *i;
+ item->m_NewValue = false;
+ }
+ // Prepare to add rows to the FLTK scroll/pack
propertyListPack->clear();
propertyListPack->begin();
const cmCacheManager::CacheEntryMap &cache =
cmCacheManager::GetInstance()->GetCacheMap();
+ if(cache.size() == 0)
+ {
+ m_OKButton->deactivate();
+ }
+ else
+ {
+ m_OKButton->activate();
+ }
+
+
+
for(cmCacheManager::CacheEntryMap::const_iterator i = cache.begin();
i != cache.end(); ++i)
{
@@ -433,41 +473,58 @@ CMakeSetupGUIImplementation
m_CacheEntriesList.AddProperty(key,
"ON",
value.m_HelpString.c_str(),
- fltk::PropertyList::CHECKBOX,"");
+ fltk::PropertyList::CHECKBOX,"",
+ reverseOrder);
}
else
{
m_CacheEntriesList.AddProperty(key,
"OFF",
value.m_HelpString.c_str(),
- fltk::PropertyList::CHECKBOX,"");
+ fltk::PropertyList::CHECKBOX,"",
+ reverseOrder);
}
break;
case cmCacheManager::PATH:
m_CacheEntriesList.AddProperty(key,
value.m_Value.c_str(),
value.m_HelpString.c_str(),
- fltk::PropertyList::PATH,"");
+ fltk::PropertyList::PATH,"",
+ reverseOrder);
break;
case cmCacheManager::FILEPATH:
m_CacheEntriesList.AddProperty(key,
value.m_Value.c_str(),
value.m_HelpString.c_str(),
- fltk::PropertyList::FILE,"");
+ fltk::PropertyList::FILE,"",
+ reverseOrder);
break;
case cmCacheManager::STRING:
m_CacheEntriesList.AddProperty(key,
value.m_Value.c_str(),
value.m_HelpString.c_str(),
- fltk::PropertyList::EDIT,"");
+ fltk::PropertyList::EDIT,"",
+ reverseOrder);
break;
case cmCacheManager::INTERNAL:
// These entries should not be seen by the user
+ m_CacheEntriesList.RemoveProperty(key);
break;
}
}
+ // Add the old entry to the end of the pack
+ for(std::set<fltk::PropertyItem*>::iterator i = items.begin();
+ i != items.end(); ++i)
+ {
+ fltk::PropertyItem* item = *i;
+ if( !(item->m_NewValue) )
+ {
+ new fltk::PropertyItemRow( item ); // GUI of the old property row
+ }
+ }
+
propertyListPack->end();
propertyListPack->init_sizes();
cacheValuesScroll->position( 0, 0 );
@@ -514,6 +571,10 @@ CMakeSetupGUIImplementation
{
entry->m_Value = item->m_curValue;
}
+ if( item->m_Dirty )
+ {
+ m_CacheEntriesList.SetDirty();
+ }
}
}
@@ -643,7 +704,10 @@ void
CMakeSetupGUIImplementation
::ShowRecentBinaryDirectories( void )
{
- recentBinaryDirectoriesBrowser->Fl_Widget::show();
+ if( recentBinaryDirectoriesBrowser->size() )
+ {
+ recentBinaryDirectoriesBrowser->Fl_Widget::show();
+ }
}
@@ -654,7 +718,10 @@ void
CMakeSetupGUIImplementation
::ShowRecentSourceDirectories( void )
{
- recentSourceDirectoriesBrowser->Fl_Widget::show();
+ if( recentSourceDirectoriesBrowser->size() )
+ {
+ recentSourceDirectoriesBrowser->Fl_Widget::show();
+ }
}
@@ -720,3 +787,60 @@ CMakeSetupGUIImplementation
+/**
+ * Clicked on Configure Button
+ */
+void
+CMakeSetupGUIImplementation
+::ClickOnConfigure( void )
+{
+ this->RunCMake(false);
+}
+
+
+
+
+/**
+ * Clicked on OK Button
+ */
+void
+CMakeSetupGUIImplementation
+::ClickOnOK( void )
+{
+ m_CacheEntriesList.ClearDirty();
+ this->RunCMake(true);
+ cmMakefileGenerator::UnRegisterGenerators();
+ this->Close();
+}
+
+
+
+
+/**
+ * Clicked on Cancel Button
+ */
+void
+CMakeSetupGUIImplementation
+::ClickOnCancel( void )
+{
+ if(m_CacheEntriesList.IsDirty())
+ {
+ int userWantsExitEvenThoughOptionsHaveChanged =
+ fl_ask("You have changed options but not rebuilt, \n"
+ "are you sure you want to exit?");
+ if( userWantsExitEvenThoughOptionsHaveChanged )
+ {
+ this->Close();
+ }
+ }
+ else
+ {
+ this->Close();
+ }
+
+}
+
+
+
+
+