new architecture
This commit is contained in:
parent
b0fa5117bf
commit
2c7e9b3b59
|
@ -133,7 +133,7 @@ int main(int argc, char** argv)
|
||||||
cmCursesForm::CurrentForm = myform;
|
cmCursesForm::CurrentForm = myform;
|
||||||
|
|
||||||
myform->InitializeUI();
|
myform->InitializeUI();
|
||||||
if (myform->RunCMake(false) == 0 )
|
if (myform->Configure() == 0 )
|
||||||
{
|
{
|
||||||
myform->Render(1, 1, x, y);
|
myform->Render(1, 1, x, y);
|
||||||
myform->HandleInput();
|
myform->HandleInput();
|
||||||
|
|
|
@ -79,8 +79,8 @@ void cmCursesLongMessageForm::UpdateStatusBar()
|
||||||
|
|
||||||
char version[cmCursesMainForm::MAX_WIDTH];
|
char version[cmCursesMainForm::MAX_WIDTH];
|
||||||
char vertmp[128];
|
char vertmp[128];
|
||||||
sprintf(vertmp,"CMake Version %d.%d - %s", cmMakefile::GetMajorVersion(),
|
sprintf(vertmp,"CMake Version %d.%d - %s", cmake::GetMajorVersion(),
|
||||||
cmMakefile::GetMinorVersion(),cmMakefile::GetReleaseVersion());
|
cmake::GetMinorVersion(),cmake::GetReleaseVersion());
|
||||||
int sideSpace = (width-strlen(vertmp));
|
int sideSpace = (width-strlen(vertmp));
|
||||||
for(int i=0; i<sideSpace; i++) { version[i] = ' '; }
|
for(int i=0; i<sideSpace; i++) { version[i] = ' '; }
|
||||||
sprintf(version+sideSpace, "%s", vertmp);
|
sprintf(version+sideSpace, "%s", vertmp);
|
||||||
|
|
|
@ -47,6 +47,12 @@ cmCursesMainForm::cmCursesMainForm(std::vector<std::string> const& args,
|
||||||
m_HelpMessage.push_back("");
|
m_HelpMessage.push_back("");
|
||||||
m_HelpMessage.push_back(s_ConstHelpMessage);
|
m_HelpMessage.push_back(s_ConstHelpMessage);
|
||||||
m_CMakeInstance = new cmake;
|
m_CMakeInstance = new cmake;
|
||||||
|
|
||||||
|
// create the arguments for the cmake object
|
||||||
|
std::string whereCMake = cmSystemTools::GetProgramPath(m_Args[0].c_str());
|
||||||
|
whereCMake += "/cmake";
|
||||||
|
m_Args[0] = whereCMake;
|
||||||
|
m_CMakeInstance->SetArgs(m_Args);
|
||||||
}
|
}
|
||||||
|
|
||||||
cmCursesMainForm::~cmCursesMainForm()
|
cmCursesMainForm::~cmCursesMainForm()
|
||||||
|
@ -362,11 +368,15 @@ void cmCursesMainForm::PrintKeys()
|
||||||
cw = reinterpret_cast<cmCursesWidget*>(field_userptr(currentField));
|
cw = reinterpret_cast<cmCursesWidget*>(field_userptr(currentField));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cw && cw->PrintKeys())
|
if (cw)
|
||||||
{
|
{
|
||||||
|
cw->PrintKeys();
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
// {
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
char firstLine[512], secondLine[512], thirdLine[512];
|
char firstLine[512], secondLine[512], thirdLine[512];
|
||||||
if (m_OkToGenerate)
|
if (m_OkToGenerate)
|
||||||
{
|
{
|
||||||
|
@ -374,7 +384,7 @@ void cmCursesMainForm::PrintKeys()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sprintf(firstLine, "Press [c] to configure");
|
sprintf(firstLine, "Press [c] to configure ");
|
||||||
}
|
}
|
||||||
if (m_AdvancedMode)
|
if (m_AdvancedMode)
|
||||||
{
|
{
|
||||||
|
@ -404,7 +414,7 @@ void cmCursesMainForm::PrintKeys()
|
||||||
curses_move(0,65-strlen(firstLine)-1);
|
curses_move(0,65-strlen(firstLine)-1);
|
||||||
printw(firstLine);
|
printw(firstLine);
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
|
|
||||||
pos_form_cursor(m_Form);
|
pos_form_cursor(m_Form);
|
||||||
|
|
||||||
|
@ -504,8 +514,8 @@ void cmCursesMainForm::UpdateStatusBar()
|
||||||
// We want to display this on the right
|
// We want to display this on the right
|
||||||
char version[cmCursesMainForm::MAX_WIDTH];
|
char version[cmCursesMainForm::MAX_WIDTH];
|
||||||
char vertmp[128];
|
char vertmp[128];
|
||||||
sprintf(vertmp,"CMake Version %d.%d - %s", cmMakefile::GetMajorVersion(),
|
sprintf(vertmp,"CMake Version %d.%d - %s", cmake::GetMajorVersion(),
|
||||||
cmMakefile::GetMinorVersion(),cmMakefile::GetReleaseVersion());
|
cmake::GetMinorVersion(),cmake::GetReleaseVersion());
|
||||||
int sideSpace = (width-strlen(vertmp));
|
int sideSpace = (width-strlen(vertmp));
|
||||||
for(i=0; i<sideSpace; i++) { version[i] = ' '; }
|
for(i=0; i<sideSpace; i++) { version[i] = ' '; }
|
||||||
sprintf(version+sideSpace, "%s", vertmp);
|
sprintf(version+sideSpace, "%s", vertmp);
|
||||||
|
@ -521,7 +531,7 @@ void cmCursesMainForm::UpdateStatusBar()
|
||||||
pos_form_cursor(m_Form);
|
pos_form_cursor(m_Form);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmCursesMainForm::RunCMake(bool generateMakefiles)
|
int cmCursesMainForm::Configure()
|
||||||
{
|
{
|
||||||
|
|
||||||
int x,y;
|
int x,y;
|
||||||
|
@ -532,33 +542,21 @@ int cmCursesMainForm::RunCMake(bool generateMakefiles)
|
||||||
touchwin(stdscr);
|
touchwin(stdscr);
|
||||||
refresh();
|
refresh();
|
||||||
endwin();
|
endwin();
|
||||||
std::cerr << "Running CMake, please wait...\n\r";
|
std::cerr << "Configuring, 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();
|
||||||
this->m_CMakeInstance->GetCacheManager()->SaveCache(
|
this->m_CMakeInstance->GetCacheManager()->SaveCache(
|
||||||
cmSystemTools::GetCurrentWorkingDirectory().c_str());
|
cmSystemTools::GetCurrentWorkingDirectory().c_str());
|
||||||
|
|
||||||
// create the arguments for the cmake object
|
|
||||||
std::string whereCMake = cmSystemTools::GetProgramPath(m_Args[0].c_str());
|
|
||||||
whereCMake += "/cmake";
|
|
||||||
|
|
||||||
m_Args[0] = whereCMake;
|
|
||||||
|
|
||||||
// Get rid of previous errors
|
// Get rid of previous errors
|
||||||
m_Errors = std::vector<std::string>();
|
m_Errors = std::vector<std::string>();
|
||||||
|
|
||||||
// run the generate process
|
// run the generate process
|
||||||
m_OkToGenerate = true;
|
m_OkToGenerate = true;
|
||||||
int retVal = this->m_CMakeInstance->Generate(m_Args, generateMakefiles);
|
int retVal = this->m_CMakeInstance->Configure(m_Args[0].c_str(), &m_Args);
|
||||||
|
|
||||||
initscr(); /* Initialization */
|
initscr(); /* Initialization */
|
||||||
noecho(); /* Echo off */
|
noecho(); /* Echo off */
|
||||||
|
@ -592,6 +590,63 @@ int cmCursesMainForm::RunCMake(bool generateMakefiles)
|
||||||
this->Render(1,1,x,y);
|
this->Render(1,1,x,y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this->InitializeUI();
|
||||||
|
this->Render(1, 1, x, y);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cmCursesMainForm::Generate()
|
||||||
|
{
|
||||||
|
m_CMakeInstance->Generate();
|
||||||
|
|
||||||
|
int x,y;
|
||||||
|
getmaxyx(stdscr, y, x);
|
||||||
|
|
||||||
|
curses_clear();
|
||||||
|
curses_move(1,1);
|
||||||
|
touchwin(stdscr);
|
||||||
|
refresh();
|
||||||
|
endwin();
|
||||||
|
std::cerr << "Generating, please wait...\n\r";
|
||||||
|
|
||||||
|
// Get rid of previous errors
|
||||||
|
m_Errors = std::vector<std::string>();
|
||||||
|
|
||||||
|
// run the generate process
|
||||||
|
int retVal = this->m_CMakeInstance->Generate();
|
||||||
|
|
||||||
|
initscr(); /* Initialization */
|
||||||
|
noecho(); /* Echo off */
|
||||||
|
cbreak(); /* nl- or cr not needed */
|
||||||
|
keypad(stdscr,TRUE); /* Use key symbols as
|
||||||
|
KEY_DOWN*/
|
||||||
|
|
||||||
|
if( retVal != 0 || !m_Errors.empty())
|
||||||
|
{
|
||||||
|
// see if there was an error
|
||||||
|
if(cmSystemTools::GetErrorOccuredFlag())
|
||||||
|
{
|
||||||
|
m_OkToGenerate = false;
|
||||||
|
}
|
||||||
|
// reset error condition
|
||||||
|
cmSystemTools::ResetErrorOccuredFlag();
|
||||||
|
int x,y;
|
||||||
|
getmaxyx(stdscr, y, x);
|
||||||
|
cmCursesLongMessageForm* msgs = new cmCursesLongMessageForm(m_Errors,
|
||||||
|
"Errors which during last pass.");
|
||||||
|
CurrentForm = msgs;
|
||||||
|
msgs->Render(1,1,x,y);
|
||||||
|
msgs->HandleInput();
|
||||||
|
// If they typed the wrong source directory, we report
|
||||||
|
// an error and exit
|
||||||
|
if ( retVal == -2 )
|
||||||
|
{
|
||||||
|
return retVal;
|
||||||
|
}
|
||||||
|
CurrentForm = this;
|
||||||
|
this->Render(1,1,x,y);
|
||||||
|
}
|
||||||
|
|
||||||
this->InitializeUI();
|
this->InitializeUI();
|
||||||
this->Render(1, 1, x, y);
|
this->Render(1, 1, x, y);
|
||||||
|
@ -693,7 +748,19 @@ void cmCursesMainForm::HandleInput()
|
||||||
currentField));
|
currentField));
|
||||||
|
|
||||||
// Ask the current widget if it wants to handle input
|
// Ask the current widget if it wants to handle input
|
||||||
if (!currentWidget || !currentWidget->HandleInput(key, this, stdscr))
|
bool widgetHandled;
|
||||||
|
|
||||||
|
if (currentWidget)
|
||||||
|
{
|
||||||
|
widgetHandled = currentWidget->HandleInput(key, this, stdscr);
|
||||||
|
if (widgetHandled)
|
||||||
|
{
|
||||||
|
m_OkToGenerate = false;
|
||||||
|
this->UpdateStatusBar();
|
||||||
|
this->PrintKeys();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!currentWidget || !widgetHandled)
|
||||||
{
|
{
|
||||||
// If the current widget does not want to handle input,
|
// If the current widget does not want to handle input,
|
||||||
// we handle it.
|
// we handle it.
|
||||||
|
@ -762,7 +829,7 @@ void cmCursesMainForm::HandleInput()
|
||||||
// configure
|
// configure
|
||||||
else if ( key == 'c' )
|
else if ( key == 'c' )
|
||||||
{
|
{
|
||||||
this->RunCMake(false);
|
this->Configure();
|
||||||
}
|
}
|
||||||
// display help
|
// display help
|
||||||
else if ( key == 'h' )
|
else if ( key == 'h' )
|
||||||
|
@ -834,13 +901,14 @@ void cmCursesMainForm::HandleInput()
|
||||||
{
|
{
|
||||||
if ( m_OkToGenerate )
|
if ( m_OkToGenerate )
|
||||||
{
|
{
|
||||||
this->RunCMake(true);
|
this->Generate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// delete cache entry
|
// delete cache entry
|
||||||
else if ( key == 'd' )
|
else if ( key == 'd' )
|
||||||
{
|
{
|
||||||
|
m_OkToGenerate = false;
|
||||||
FIELD* cur = current_field(m_Form);
|
FIELD* cur = current_field(m_Form);
|
||||||
int index = field_index(cur);
|
int index = field_index(cur);
|
||||||
|
|
||||||
|
|
|
@ -84,9 +84,14 @@ public:
|
||||||
virtual void AddError(const char* message, const char* title);
|
virtual void AddError(const char* message, const char* title);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to run cmake.
|
* Used to do a configure.
|
||||||
*/
|
*/
|
||||||
int RunCMake(bool generateMakefiles);
|
int Configure();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to generate
|
||||||
|
*/
|
||||||
|
int Generate();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by main program
|
* Used by main program
|
||||||
|
|
Loading…
Reference in New Issue