BUG: fix cache updates
This commit is contained in:
parent
818b0e5bc1
commit
37468fad3a
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user