some changes in cachemanager and singletons
This commit is contained in:
parent
7ebbc4399c
commit
e8d0e8088f
|
@ -96,8 +96,6 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
cmSystemTools::DisableRunCommandOutput();
|
cmSystemTools::DisableRunCommandOutput();
|
||||||
|
|
||||||
cmCacheManager::GetInstance()->LoadCache(cacheDir.c_str());
|
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
cmCursesForm::DebugStart();
|
cmCursesForm::DebugStart();
|
||||||
|
@ -128,6 +126,7 @@ int main(int argc, char** argv)
|
||||||
cmCursesMainForm* myform;
|
cmCursesMainForm* myform;
|
||||||
|
|
||||||
myform = new cmCursesMainForm(args, x);
|
myform = new cmCursesMainForm(args, x);
|
||||||
|
myform->LoadCache(cacheDir.c_str());
|
||||||
|
|
||||||
cmSystemTools::SetErrorCallback(CMakeErrorHandler);
|
cmSystemTools::SetErrorCallback(CMakeErrorHandler);
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ cmCursesMainForm::cmCursesMainForm(std::vector<std::string> const& args,
|
||||||
m_HelpMessage.push_back("Welcome to ccmake, curses based user interface for CMake.");
|
m_HelpMessage.push_back("Welcome to ccmake, curses based user interface for CMake.");
|
||||||
m_HelpMessage.push_back("");
|
m_HelpMessage.push_back("");
|
||||||
m_HelpMessage.push_back(s_ConstHelpMessage);
|
m_HelpMessage.push_back(s_ConstHelpMessage);
|
||||||
|
m_CMakeInstance = new cmake;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmCursesMainForm::~cmCursesMainForm()
|
cmCursesMainForm::~cmCursesMainForm()
|
||||||
|
@ -68,6 +69,11 @@ cmCursesMainForm::~cmCursesMainForm()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete m_Entries;
|
delete m_Entries;
|
||||||
|
if (this->m_CMakeInstance)
|
||||||
|
{
|
||||||
|
delete this->m_CMakeInstance;
|
||||||
|
this->m_CMakeInstance = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if a cache entry is in the list of entries in the ui.
|
// See if a cache entry is in the list of entries in the ui.
|
||||||
|
@ -97,12 +103,12 @@ void cmCursesMainForm::InitializeUI()
|
||||||
// which contain labels, entries and new entry markers
|
// which contain labels, entries and new entry markers
|
||||||
std::vector<cmCursesCacheEntryComposite*>* newEntries =
|
std::vector<cmCursesCacheEntryComposite*>* newEntries =
|
||||||
new std::vector<cmCursesCacheEntryComposite*>;
|
new std::vector<cmCursesCacheEntryComposite*>;
|
||||||
newEntries->reserve(cmCacheManager::GetInstance()->GetSize());
|
newEntries->reserve(this->m_CMakeInstance->GetCacheManager()->GetSize());
|
||||||
|
|
||||||
// Count non-internal and non-static entries
|
// Count non-internal and non-static entries
|
||||||
int count=0;
|
int count=0;
|
||||||
for(cmCacheManager::CacheIterator i =
|
for(cmCacheManager::CacheIterator i =
|
||||||
cmCacheManager::GetInstance()->NewIterator();
|
this->m_CMakeInstance->GetCacheManager()->NewIterator();
|
||||||
!i.IsAtEnd(); i.Next())
|
!i.IsAtEnd(); i.Next())
|
||||||
{
|
{
|
||||||
const cmCacheManager::CacheEntry& value = i.GetEntry();
|
const cmCacheManager::CacheEntry& value = i.GetEntry();
|
||||||
|
@ -130,7 +136,7 @@ void cmCursesMainForm::InitializeUI()
|
||||||
|
|
||||||
// First add entries which are new
|
// First add entries which are new
|
||||||
for(cmCacheManager::CacheIterator i =
|
for(cmCacheManager::CacheIterator i =
|
||||||
cmCacheManager::GetInstance()->NewIterator();
|
this->m_CMakeInstance->GetCacheManager()->NewIterator();
|
||||||
!i.IsAtEnd(); i.Next())
|
!i.IsAtEnd(); i.Next())
|
||||||
{
|
{
|
||||||
const char* key = i.GetName();
|
const char* key = i.GetName();
|
||||||
|
@ -152,7 +158,7 @@ void cmCursesMainForm::InitializeUI()
|
||||||
|
|
||||||
// then add entries which are old
|
// then add entries which are old
|
||||||
for(cmCacheManager::CacheIterator i =
|
for(cmCacheManager::CacheIterator i =
|
||||||
cmCacheManager::GetInstance()->NewIterator();
|
this->m_CMakeInstance->GetCacheManager()->NewIterator();
|
||||||
!i.IsAtEnd(); i.Next())
|
!i.IsAtEnd(); i.Next())
|
||||||
{
|
{
|
||||||
const char* key = i.GetName();
|
const char* key = i.GetName();
|
||||||
|
@ -212,7 +218,8 @@ void cmCursesMainForm::RePost()
|
||||||
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
||||||
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
||||||
{
|
{
|
||||||
if (!m_AdvancedMode && cmCacheManager::GetInstance()->IsAdvanced(
|
if (!m_AdvancedMode &&
|
||||||
|
this->m_CMakeInstance->GetCacheManager()->IsAdvanced(
|
||||||
(*it)->GetValue()))
|
(*it)->GetValue()))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -230,8 +237,8 @@ void cmCursesMainForm::RePost()
|
||||||
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
||||||
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
||||||
{
|
{
|
||||||
if (!m_AdvancedMode && cmCacheManager::GetInstance()->IsAdvanced(
|
if (!m_AdvancedMode &&
|
||||||
(*it)->GetValue()))
|
this->m_CMakeInstance->GetCacheManager()->IsAdvanced((*it)->GetValue()))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -289,7 +296,7 @@ void cmCursesMainForm::Render(int left, int top, int width, int height)
|
||||||
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
||||||
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
||||||
{
|
{
|
||||||
if (!m_AdvancedMode && cmCacheManager::GetInstance()->IsAdvanced(
|
if (!m_AdvancedMode && this->m_CMakeInstance->GetCacheManager()->IsAdvanced(
|
||||||
(*it)->GetValue()))
|
(*it)->GetValue()))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -305,7 +312,7 @@ void cmCursesMainForm::Render(int left, int top, int width, int height)
|
||||||
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
std::vector<cmCursesCacheEntryComposite*>::iterator it;
|
||||||
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
for (it = m_Entries->begin(); it != m_Entries->end(); ++it)
|
||||||
{
|
{
|
||||||
if (!m_AdvancedMode && cmCacheManager::GetInstance()->IsAdvanced(
|
if (!m_AdvancedMode && this->m_CMakeInstance->GetCacheManager()->IsAdvanced(
|
||||||
(*it)->GetValue()))
|
(*it)->GetValue()))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -438,7 +445,7 @@ void cmCursesMainForm::UpdateStatusBar()
|
||||||
char help[128];
|
char help[128];
|
||||||
const char* helpString;
|
const char* helpString;
|
||||||
cmCacheManager::CacheEntry *entry =
|
cmCacheManager::CacheEntry *entry =
|
||||||
cmCacheManager::GetInstance()->GetCacheEntry(curField);
|
this->m_CMakeInstance->GetCacheManager()->GetCacheEntry(curField);
|
||||||
if (entry)
|
if (entry)
|
||||||
{
|
{
|
||||||
helpString = entry->m_HelpString.c_str();
|
helpString = entry->m_HelpString.c_str();
|
||||||
|
@ -526,12 +533,20 @@ int cmCursesMainForm::RunCMake(bool generateMakefiles)
|
||||||
refresh();
|
refresh();
|
||||||
endwin();
|
endwin();
|
||||||
std::cerr << "Running CMake, please wait...\n\r";
|
std::cerr << "Running CMake, please wait...\n\r";
|
||||||
|
|
||||||
|
// free the old cmake and create a new one here
|
||||||
|
if (this->m_CMakeInstance)
|
||||||
|
{
|
||||||
|
delete this->m_CMakeInstance;
|
||||||
|
this->m_CMakeInstance = 0;
|
||||||
|
}
|
||||||
|
this->m_CMakeInstance = new cmake;
|
||||||
|
|
||||||
// always save the current gui values to disk
|
// always save the current gui values to disk
|
||||||
this->FillCacheManagerFromUI();
|
this->FillCacheManagerFromUI();
|
||||||
cmCacheManager::GetInstance()->SaveCache(cmSystemTools::GetCurrentWorkingDirectory().c_str());
|
this->m_CMakeInstance->GetCacheManager()->SaveCache(
|
||||||
|
cmSystemTools::GetCurrentWorkingDirectory().c_str());
|
||||||
|
|
||||||
// create a cmake object
|
|
||||||
cmake make;
|
|
||||||
// create the arguments for the cmake object
|
// create the arguments for the cmake object
|
||||||
std::string whereCMake = cmSystemTools::GetProgramPath(m_Args[0].c_str());
|
std::string whereCMake = cmSystemTools::GetProgramPath(m_Args[0].c_str());
|
||||||
whereCMake += "/cmake";
|
whereCMake += "/cmake";
|
||||||
|
@ -543,7 +558,7 @@ int cmCursesMainForm::RunCMake(bool generateMakefiles)
|
||||||
|
|
||||||
// run the generate process
|
// run the generate process
|
||||||
m_OkToGenerate = true;
|
m_OkToGenerate = true;
|
||||||
int retVal = make.Generate(m_Args, generateMakefiles);
|
int retVal = this->m_CMakeInstance->Generate(m_Args, generateMakefiles);
|
||||||
|
|
||||||
initscr(); /* Initialization */
|
initscr(); /* Initialization */
|
||||||
noecho(); /* Echo off */
|
noecho(); /* Echo off */
|
||||||
|
@ -617,7 +632,7 @@ void cmCursesMainForm::FillCacheManagerFromUI()
|
||||||
for(int i=0; i < size; i++)
|
for(int i=0; i < size; i++)
|
||||||
{
|
{
|
||||||
cmCacheManager::CacheEntry *entry =
|
cmCacheManager::CacheEntry *entry =
|
||||||
cmCacheManager::GetInstance()->GetCacheEntry(
|
this->m_CMakeInstance->GetCacheManager()->GetCacheEntry(
|
||||||
(*m_Entries)[i]->m_Key.c_str());
|
(*m_Entries)[i]->m_Key.c_str());
|
||||||
if (entry)
|
if (entry)
|
||||||
{
|
{
|
||||||
|
@ -761,7 +776,7 @@ void cmCursesMainForm::HandleInput()
|
||||||
const char* curField = lbl->GetValue();
|
const char* curField = lbl->GetValue();
|
||||||
const char* helpString=0;
|
const char* helpString=0;
|
||||||
cmCacheManager::CacheEntry *entry =
|
cmCacheManager::CacheEntry *entry =
|
||||||
cmCacheManager::GetInstance()->GetCacheEntry(curField);
|
this->m_CMakeInstance->GetCacheManager()->GetCacheEntry(curField);
|
||||||
if (entry)
|
if (entry)
|
||||||
{
|
{
|
||||||
helpString = entry->m_HelpString.c_str();
|
helpString = entry->m_HelpString.c_str();
|
||||||
|
@ -854,7 +869,7 @@ void cmCursesMainForm::HandleInput()
|
||||||
// (index always corresponds to the value field)
|
// (index always corresponds to the value field)
|
||||||
cmCursesWidget* lbl = reinterpret_cast<cmCursesWidget*>(field_userptr(
|
cmCursesWidget* lbl = reinterpret_cast<cmCursesWidget*>(field_userptr(
|
||||||
m_Fields[index-2]));
|
m_Fields[index-2]));
|
||||||
cmCacheManager::GetInstance()->RemoveCacheEntry(lbl->GetValue());
|
this->m_CMakeInstance->GetCacheManager()->RemoveCacheEntry(lbl->GetValue());
|
||||||
|
|
||||||
std::string nextVal;
|
std::string nextVal;
|
||||||
if (nextCur)
|
if (nextCur)
|
||||||
|
@ -893,6 +908,14 @@ void cmCursesMainForm::HandleInput()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmCursesMainForm::LoadCache(const char *dir)
|
||||||
|
|
||||||
|
{
|
||||||
|
m_CMakeInstance->GetCacheManager()->LoadCache(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const char* cmCursesMainForm::s_ConstHelpMessage =
|
const char* cmCursesMainForm::s_ConstHelpMessage =
|
||||||
"CMake is used to configure and generate build files for software projects. "
|
"CMake is used to configure and generate build files for software projects. "
|
||||||
"The basic steps for configuring a project with ccmake are as follows:\n\n"
|
"The basic steps for configuring a project with ccmake are as follows:\n\n"
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include "cmCursesStandardIncludes.h"
|
#include "cmCursesStandardIncludes.h"
|
||||||
|
|
||||||
class cmCursesCacheEntryComposite;
|
class cmCursesCacheEntryComposite;
|
||||||
|
class cmake;
|
||||||
|
|
||||||
/** \class cmCursesMainForm
|
/** \class cmCursesMainForm
|
||||||
* \brief The main page of ccmake
|
* \brief The main page of ccmake
|
||||||
|
@ -87,6 +88,11 @@ public:
|
||||||
*/
|
*/
|
||||||
int RunCMake(bool generateMakefiles);
|
int RunCMake(bool generateMakefiles);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used by main program
|
||||||
|
*/
|
||||||
|
void LoadCache(const char *dir);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
cmCursesMainForm(const cmCursesMainForm& from);
|
cmCursesMainForm(const cmCursesMainForm& from);
|
||||||
void operator=(const cmCursesMainForm&);
|
void operator=(const cmCursesMainForm&);
|
||||||
|
@ -130,6 +136,7 @@ protected:
|
||||||
int m_NumberOfPages;
|
int m_NumberOfPages;
|
||||||
|
|
||||||
int m_InitialWidth;
|
int m_InitialWidth;
|
||||||
|
cmake *m_CMakeInstance;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __cmCursesMainForm_h
|
#endif // __cmCursesMainForm_h
|
||||||
|
|
Loading…
Reference in New Issue