BUG: fix cache updates

This commit is contained in:
Bill Hoffman 2001-04-24 13:32:31 -04:00
parent 818b0e5bc1
commit 37468fad3a
3 changed files with 29 additions and 8 deletions

View File

@ -96,6 +96,7 @@ CMakeSetupDialog::CMakeSetupDialog(CWnd* pParent /*=NULL*/)
m_WhereSource = startPath; m_WhereSource = startPath;
this->LoadFromRegistry(); this->LoadFromRegistry();
m_InitMakefile = false; m_InitMakefile = false;
m_GUIInitialized = false;
this->InitMakefile(); this->InitMakefile();
} }
@ -104,7 +105,13 @@ void CMakeSetupDialog::InitMakefile()
{ {
if(m_InitMakefile) if(m_InitMakefile)
{ {
return; // if no change in source or build then
// do not re-init the m_Makefile
if(m_WhereSource == m_WhereSourceLast
&& m_WhereBuild == m_WhereBuildLast)
{
return;
}
} }
if(m_WhereBuild == "") if(m_WhereBuild == "")
{ {
@ -114,6 +121,10 @@ void CMakeSetupDialog::InitMakefile()
{ {
return; return;
} }
// save the values for these so we can detect
// when the GUI has changed them
m_WhereBuildLast = m_WhereBuild;
m_WhereSourceLast = m_WhereSource;
m_InitMakefile = true; m_InitMakefile = true;
// set up the cmMakefile member // set up the cmMakefile member
m_Makefile.SetMakefileGenerator(new cmMSProjectGenerator); m_Makefile.SetMakefileGenerator(new cmMSProjectGenerator);
@ -128,6 +139,11 @@ void CMakeSetupDialog::InitMakefile()
m_Makefile.MakeStartDirectoriesCurrent(); m_Makefile.MakeStartDirectoriesCurrent();
// Create a string for the cache file // Create a string for the cache file
cmCacheManager::GetInstance()->LoadCache(&m_Makefile); cmCacheManager::GetInstance()->LoadCache(&m_Makefile);
// if the GUI is already up, then reset it to the loaded cache
if(m_GUIInitialized)
{
this->FillCacheEditorFromCacheManager();
}
} }
void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX) void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX)
@ -187,6 +203,7 @@ BEGIN_MESSAGE_MAP(CMakeSetupDialog, CDialog)
{ {
this->FillCacheEditorFromCacheManager(); this->FillCacheEditorFromCacheManager();
} }
m_GUIInitialized = true;
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control
} }
@ -365,9 +382,11 @@ void CMakeSetupDialog::LoadFromRegistry()
void CMakeSetupDialog::OnBuildProjects() void CMakeSetupDialog::OnBuildProjects()
{ {
::SetCursor(LoadCursor(NULL, IDC_WAIT));
// get all the info from the screen // get all the info from the screen
this->UpdateData(); this->UpdateData();
::SetCursor(LoadCursor(NULL, IDC_WAIT)); // re-init the m_Makefile
this->InitMakefile();
// copy the GUI cache values into the cache manager // copy the GUI cache values into the cache manager
this->FillCacheManagerFromCacheEditor(); this->FillCacheManagerFromCacheEditor();
CString makefileIn = m_WhereSource; CString makefileIn = m_WhereSource;
@ -438,16 +457,17 @@ void CMakeSetupDialog::FillCacheManagerFromCacheEditor()
for(std::list<CPropertyItem*>::iterator i = items.begin(); for(std::list<CPropertyItem*>::iterator i = items.begin();
i != items.end(); ++i) i != items.end(); ++i)
{ {
CPropertyItem* item = *i;
// check to see if the editor has removed the cache entry // check to see if the editor has removed the cache entry
if((*i)->m_Removed) if(item->m_Removed)
{ {
cmCacheManager::GetInstance()->RemoveCacheEntry((*i)->m_propName); cmCacheManager::GetInstance()->RemoveCacheEntry((*i)->m_propName);
} }
else else
{ {
cmCacheManager::CacheEntryMap::iterator p = cmCacheManager::CacheEntryMap::iterator p =
cache.find((const char*)(*i)->m_propName); cache.find((const char*)item->m_propName);
(*p).second.m_Value = (*i)->m_curValue; (*p).second.m_Value = item->m_curValue;
} }
} }
} }

View File

@ -31,8 +31,11 @@ protected:
enum { IDD = IDD_CMakeSetupDialog_DIALOG }; enum { IDD = IDD_CMakeSetupDialog_DIALOG };
cmMakefile m_Makefile; cmMakefile m_Makefile;
bool m_InitMakefile; bool m_InitMakefile;
bool m_GUIInitialized;
CString m_WhereSource; CString m_WhereSource;
CString m_WhereBuild; CString m_WhereBuild;
CString m_WhereSourceLast;
CString m_WhereBuildLast;
CPropertyList m_CacheEntriesList; CPropertyList m_CacheEntriesList;
//}}AFX_DATA //}}AFX_DATA

View File

@ -144,10 +144,8 @@ int CPropertyList::AddProperty(const char* name,
} }
} }
// if it is not found, then create a new one // if it is not found, then create a new one
int nIndex = AddString(_T(""));
pItem = new CPropertyItem(name, value, type, comboItems); pItem = new CPropertyItem(name, value, type, comboItems);
SetItemDataPtr(nIndex,pItem); return this->AddPropItem(pItem);
return nIndex;
} }
int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct) int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct)