Some GUI improvements and fix the way dirty is being set, so that if there are no cache values, dirty is not set

This commit is contained in:
Andy Cedilnik 2002-09-24 16:20:44 -04:00
parent a863d65561
commit 8d14221f7e
2 changed files with 54 additions and 14 deletions

View File

@ -27,12 +27,12 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
{ {
cmSystemTools::SetErrorCallback(cmMainFrame::MessageCallback, this); cmSystemTools::SetErrorCallback(cmMainFrame::MessageCallback, this);
this->m_Clean = false; this->m_Clean = true;
this->m_BuildPathChanged = false; this->m_BuildPathChanged = false;
this->m_WhereSource = ""; this->m_WhereSource = "";
this->m_WhereBuild = ""; this->m_WhereBuild = "";
this->m_CMakeInstance = 0; this->m_CMakeInstance = new cmake; // force a register of generators
this->m_Update = false; this->m_Update = false;
this->m_Valid = false; this->m_Valid = false;
this->m_EntryRemoved = false; this->m_EntryRemoved = false;
@ -59,6 +59,7 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
wxFlexGridSizer* tgrid = new wxFlexGridSizer(7, 2, 2); wxFlexGridSizer* tgrid = new wxFlexGridSizer(7, 2, 2);
tgrid->AddGrowableCol(2); tgrid->AddGrowableCol(2);
tgrid->AddGrowableCol(6);
this->m_TopGrid = tgrid; this->m_TopGrid = tgrid;
@ -66,7 +67,9 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
this->m_PathSource = new wxComboBox(this->m_MainPanel, -1, "PathSource"); this->m_PathSource = new wxComboBox(this->m_MainPanel, -1, "PathSource");
this->m_BrowseSource = new wxButton(this->m_MainPanel, -1, "Browse..."); this->m_BrowseSource = new wxButton(this->m_MainPanel, -1, "Browse...");
this->m_GeneratorFrame = new wxBoxSizer(wxHORIZONTAL); tgrid = new wxFlexGridSizer(3, 2, 2);
tgrid->AddGrowableCol(2);
this->m_GeneratorFrame = tgrid;
this->m_BuildFor = new wxStaticText(this->m_MainPanel, -1, "Build For:"); this->m_BuildFor = new wxStaticText(this->m_MainPanel, -1, "Build For:");
this->m_GeneratorMenu = new wxComboBox(this->m_MainPanel, -1, "Generator", this->m_GeneratorMenu = new wxComboBox(this->m_MainPanel, -1, "Generator",
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
@ -74,7 +77,7 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
this->m_GeneratorFrame->Add(this->m_BuildFor, 0, wxALIGN_LEFT); this->m_GeneratorFrame->Add(this->m_BuildFor, 0, wxALIGN_LEFT);
this->m_GeneratorFrame->Add(5,5,0); this->m_GeneratorFrame->Add(5,5,0);
this->m_GeneratorFrame->Add(this->m_GeneratorMenu, 1, wxGROW | wxALL ); this->m_GeneratorFrame->Add(this->m_GeneratorMenu, 1, wxGROW | wxLEFT | wxRIGHT );
this->m_TextBinary = new wxStaticText(this->m_MainPanel, -1, this->m_TextBinary = new wxStaticText(this->m_MainPanel, -1,
"Where to build the binaries:"); "Where to build the binaries:");
@ -89,7 +92,7 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
this->m_TopGrid->Add(5, 5, 0); this->m_TopGrid->Add(5, 5, 0);
this->m_TopGrid->Add(this->m_BrowseSource, 1, 0); this->m_TopGrid->Add(this->m_BrowseSource, 1, 0);
this->m_TopGrid->Add(5, 5, 0); this->m_TopGrid->Add(5, 5, 0);
this->m_TopGrid->Add(this->m_GeneratorFrame, 1, 0); this->m_TopGrid->Add(this->m_GeneratorFrame, 1, wxGROW | wxLEFT | wxRIGHT);
this->m_TopGrid->Add(this->m_TextBinary, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL); this->m_TopGrid->Add(this->m_TextBinary, 1, wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL);
this->m_TopGrid->Add(5, 5, 0); this->m_TopGrid->Add(5, 5, 0);
this->m_TopGrid->Add(this->m_PathBinary, 1, wxGROW | wxLEFT | wxRIGHT ); this->m_TopGrid->Add(this->m_PathBinary, 1, wxGROW | wxLEFT | wxRIGHT );
@ -206,11 +209,11 @@ cmMainFrame::cmMainFrame(const wxString& title, const wxSize& size)
this->ConnectEvent( this->m_PathSource, wxEVT_COMMAND_COMBOBOX_SELECTED, this->ConnectEvent( this->m_PathSource, wxEVT_COMMAND_COMBOBOX_SELECTED,
(wxObjectEventFunction) &cmMainFrame::OnSourceSelected ); (wxObjectEventFunction) &cmMainFrame::OnSourceSelected );
this->ConnectEvent( this->m_PathSource, wxEVT_COMMAND_TEXT_UPDATED, this->ConnectEvent( this->m_PathSource, wxEVT_COMMAND_TEXT_UPDATED,
(wxObjectEventFunction) &cmMainFrame::OnSourceSelected ); (wxObjectEventFunction) &cmMainFrame::OnSourceUpdated );
this->ConnectEvent( this->m_PathBinary, wxEVT_COMMAND_COMBOBOX_SELECTED, this->ConnectEvent( this->m_PathBinary, wxEVT_COMMAND_COMBOBOX_SELECTED,
(wxObjectEventFunction) &cmMainFrame::OnBinarySelected ); (wxObjectEventFunction) &cmMainFrame::OnBinarySelected );
this->ConnectEvent( this->m_PathBinary, wxEVT_COMMAND_TEXT_UPDATED, this->ConnectEvent( this->m_PathBinary, wxEVT_COMMAND_TEXT_UPDATED,
(wxObjectEventFunction) &cmMainFrame::OnBinarySelected ); (wxObjectEventFunction) &cmMainFrame::OnBinaryUpdated );
this->ConnectEvent( this->m_GeneratorMenu, wxEVT_COMMAND_COMBOBOX_SELECTED, this->ConnectEvent( this->m_GeneratorMenu, wxEVT_COMMAND_COMBOBOX_SELECTED,
(wxObjectEventFunction) &cmMainFrame::OnGeneratorSelected ); (wxObjectEventFunction) &cmMainFrame::OnGeneratorSelected );
this->ConnectEvent( this->m_GeneratorMenu, wxEVT_COMMAND_TEXT_UPDATED, this->ConnectEvent( this->m_GeneratorMenu, wxEVT_COMMAND_TEXT_UPDATED,
@ -482,7 +485,7 @@ void cmMainFrame::OnHelp(wxCommandEvent&)
void cmMainFrame::OnPropertyChanged(wxEvent& event) void cmMainFrame::OnPropertyChanged(wxEvent& event)
{ {
this->SetDirty();
wxControl* eobject = static_cast<wxControl*>(event.GetEventObject()); wxControl* eobject = static_cast<wxControl*>(event.GetEventObject());
if ( eobject && eobject->GetClientData() ) if ( eobject && eobject->GetClientData() )
{ {
@ -494,7 +497,6 @@ void cmMainFrame::OnPropertyChanged(wxEvent& event)
void cmMainFrame::OnResize(wxSizeEvent& event) void cmMainFrame::OnResize(wxSizeEvent& event)
{ {
this->wxFrame::OnSize(event); this->wxFrame::OnSize(event);
// Expand inner pannel when window resizes // Expand inner pannel when window resizes
this->ResizeInternal(); this->ResizeInternal();
@ -559,7 +561,6 @@ void cmMainFrame::Initialize(cmCommandLineInfo* cmdInfo)
this->m_PathToExecutable = cmdInfo->GetPathToExecutable(); this->m_PathToExecutable = cmdInfo->GetPathToExecutable();
this->LoadFromRegistry(); this->LoadFromRegistry();
this->m_CMakeInstance = new cmake; // force a register of generators
std::vector<std::string> names; std::vector<std::string> names;
this->m_CMakeInstance->GetRegisteredGenerators(names); this->m_CMakeInstance->GetRegisteredGenerators(names);
for(std::vector<std::string>::iterator i = names.begin(); for(std::vector<std::string>::iterator i = names.begin();
@ -728,6 +729,19 @@ void cmMainFrame::UpdateSourceBuildMenus()
void cmMainFrame::RunCMake(bool generateProjectFiles) void cmMainFrame::RunCMake(bool generateProjectFiles)
{ {
if(std::string(this->m_GeneratorMenu->GetValue().c_str()) == "Borland Makefiles")
{
std::string bindir = this->GetBinaryDir();
if ( bindir.find("-") != bindir.npos )
{
std::string message =
"The Borland command line tools do not support path names\n"
"that have - in them. Please re-name your output directory\n"
"and use _ instead of -.";
wxMessageBox(message.c_str(), "CMake Error", wxICON_ERROR | wxOK );
return;
}
}
if(!cmSystemTools::FileExists(this->GetBinaryDir().c_str())) if(!cmSystemTools::FileExists(this->GetBinaryDir().c_str()))
{ {
std::string message = std::string message =
@ -778,7 +792,8 @@ void cmMainFrame::RunCMake(bool generateProjectFiles)
this->m_CMakeInstance->SetHomeOutputDirectory(this->GetBinaryDir().c_str()); this->m_CMakeInstance->SetHomeOutputDirectory(this->GetBinaryDir().c_str());
this->m_CMakeInstance->SetStartOutputDirectory(this->GetBinaryDir().c_str()); this->m_CMakeInstance->SetStartOutputDirectory(this->GetBinaryDir().c_str());
this->m_CMakeInstance->SetGlobalGenerator( this->m_CMakeInstance->SetGlobalGenerator(
this-> m_CMakeInstance->CreateGlobalGenerator(this->m_GeneratorMenu->GetValue())); this-> m_CMakeInstance->CreateGlobalGenerator(
this->m_GeneratorMenu->GetValue().c_str()));
this->m_CMakeInstance->SetCMakeCommand(this->m_PathToExecutable.c_str()); this->m_CMakeInstance->SetCMakeCommand(this->m_PathToExecutable.c_str());
this->m_CMakeInstance->LoadCache(); this->m_CMakeInstance->LoadCache();
if(this->m_CMakeInstance->Configure() != 0) if(this->m_CMakeInstance->Configure() != 0)
@ -980,6 +995,14 @@ void cmMainFrame::UpdateCacheValuesDisplay()
this->m_CacheValuesPanel->SetBackgroundColour(*wxWHITE); this->m_CacheValuesPanel->SetBackgroundColour(*wxWHITE);
} }
if ( this->m_Valid )
{
this->ClearDirty();
}
else
{
this->SetDirty();
}
int max = 0; int max = 0;
int count = 0; int count = 0;
wxSize size1 = this->m_CacheValuesPanel->GetSize(); wxSize size1 = this->m_CacheValuesPanel->GetSize();
@ -1038,6 +1061,7 @@ void cmMainFrame::UpdateCacheValuesDisplay()
else else
{ {
this->m_CacheValuesPanel->SetBackgroundColour(*wxWHITE); this->m_CacheValuesPanel->SetBackgroundColour(*wxWHITE);
this->ClearDirty();
} }
this->m_CacheValuesSizer->Layout(); this->m_CacheValuesSizer->Layout();
@ -1167,14 +1191,14 @@ void cmMainFrame::ClearCache()
} }
void cmMainFrame::OnBinarySelected(wxCommandEvent&) void cmMainFrame::OnBinarySelected(wxCommandEvent& e)
{ {
if ( this->BuildDirectoryChanged() ) if ( this->BuildDirectoryChanged() )
{ {
this->m_WhereBuild = this->GetBinaryDir(); this->m_WhereBuild = this->GetBinaryDir();
this->ChangeWhereBuild(); this->ChangeWhereBuild();
} }
//this->OnConfigure(e);
} }
void cmMainFrame::OnSourceSelected(wxCommandEvent&) void cmMainFrame::OnSourceSelected(wxCommandEvent&)
@ -1395,3 +1419,16 @@ void cmMainFrame::CursorNormal(bool s)
} }
} }
void cmMainFrame::OnSourceUpdated(wxCommandEvent& event)
{
this->OnSourceSelected(event);
}
void cmMainFrame::OnBinaryUpdated(wxCommandEvent& event)
{
if ( this->BuildDirectoryChanged() )
{
this->m_WhereBuild = this->GetBinaryDir();
this->ChangeWhereBuild();
}
}

View File

@ -56,8 +56,10 @@ public:
void OnHelp(wxCommandEvent& event); void OnHelp(wxCommandEvent& event);
void OnBrowseSource(wxCommandEvent& event); void OnBrowseSource(wxCommandEvent& event);
void OnSourceSelected(wxCommandEvent& event); void OnSourceSelected(wxCommandEvent& event);
void OnSourceUpdated(wxCommandEvent& event);
void OnBrowseBinary(wxCommandEvent& event); void OnBrowseBinary(wxCommandEvent& event);
void OnBinarySelected(wxCommandEvent& event); void OnBinarySelected(wxCommandEvent& event);
void OnBinaryUpdated(wxCommandEvent& event);
void OnShowAdvancedValues(wxCommandEvent& event); void OnShowAdvancedValues(wxCommandEvent& event);
void OnResize(wxSizeEvent& event); void OnResize(wxSizeEvent& event);
void OnPropertyChanged(wxEvent& event); void OnPropertyChanged(wxEvent& event);
@ -115,8 +117,9 @@ private:
// update source and binary menus. // update source and binary menus.
void UpdateSourceBuildMenus(); void UpdateSourceBuildMenus();
// Check wether cache is dirty. // Check wether cache is dirty.
bool IsDirty() { return !this->m_Clean; } bool IsDirty() { return !this->m_Clean; }
void SetDirty() { this->m_Clean = false; }
void ClearDirty() { this->m_Clean = true; } void ClearDirty() { this->m_Clean = true; }
// Run the CMake // Run the CMake