summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2001-09-25 18:39:32 (GMT)
committerKen Martin <ken.martin@kitware.com>2001-09-25 18:39:32 (GMT)
commit1c283ee037adcf7d1036ee1ed346a481ab4c2cc5 (patch)
treec9c54bec3fe55f1151bd0c2e3f49ddfc8fde3bd4
parentb502515ad1a41b6487d3883db0c133f6e4fe4fe4 (diff)
downloadCMake-1c283ee037adcf7d1036ee1ed346a481ab4c2cc5.zip
CMake-1c283ee037adcf7d1036ee1ed346a481ab4c2cc5.tar.gz
CMake-1c283ee037adcf7d1036ee1ed346a481ab4c2cc5.tar.bz2
improved registry handling
-rw-r--r--Source/MFCDialog/CMakeSetupDialog.cpp151
1 files changed, 91 insertions, 60 deletions
diff --git a/Source/MFCDialog/CMakeSetupDialog.cpp b/Source/MFCDialog/CMakeSetupDialog.cpp
index 520cdfd..af13b7d 100644
--- a/Source/MFCDialog/CMakeSetupDialog.cpp
+++ b/Source/MFCDialog/CMakeSetupDialog.cpp
@@ -71,10 +71,10 @@ CMakeSetupDialog::CMakeSetupDialog(const CMakeCommandLineInfo& cmdInfo,
m_RegistryKey = "Software\\Kitware\\CMakeSetup\\Settings\\StartPath";
//{{AFX_DATA_INIT(CMakeSetupDialog)
- m_WhereSource = cmdInfo.m_WhereSource;
- m_WhereBuild = cmdInfo.m_WhereBuild;
- m_GeneratorChoiceString = _T("");
- //}}AFX_DATA_INIT
+ m_WhereSource = cmdInfo.m_WhereSource;
+ m_WhereBuild = cmdInfo.m_WhereBuild;
+ m_GeneratorChoiceString = _T("");
+ //}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_BuildPathChanged = false;
@@ -271,49 +271,80 @@ void CMakeSetupDialog::SaveToRegistry()
}
else
{
- // load some values
+ // save some values
CString regvalue;
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource","C:\\");
+ this->ReadRegistryValue(hKey, &(regvalue),"WhereSource1","C:\\");
+ int shiftEnd = 9;
if(m_WhereSource != regvalue)
{
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource3","");
- RegSetValueEx(hKey, _T("WhereSource4"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource2","");
- RegSetValueEx(hKey, _T("WhereSource3"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource","");
- RegSetValueEx(hKey, _T("WhereSource2"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- RegSetValueEx(hKey, _T("WhereSource"), 0, REG_SZ,
+ char keyName[1024];
+ char keyName2[1024];
+ int i;
+ for (i = 2; i < 10; ++i)
+ {
+ regvalue = "";
+ sprintf(keyName,"WhereSource%i",i);
+ this->ReadRegistryValue(hKey, &(regvalue),keyName,"");
+ // check for short circuit, if the new value is already in
+ // the list then we stop
+ if (m_WhereSource == regvalue)
+ {
+ shiftEnd = i - 1;
+ }
+ }
+
+ for (i = shiftEnd; i; --i)
+ {
+ regvalue = "";
+ sprintf(keyName,"WhereSource%i",i);
+ sprintf(keyName2,"WhereSource%i",i+1);
+
+ this->ReadRegistryValue(hKey, &(regvalue),keyName,"");
+ if (strlen(regvalue))
+ {
+ RegSetValueEx(hKey, _T(keyName2), 0, REG_SZ,
+ (CONST BYTE *)(const char *)regvalue,
+ regvalue.GetLength());
+ }
+ }
+ RegSetValueEx(hKey, _T("WhereSource1"), 0, REG_SZ,
(CONST BYTE *)(const char *)m_WhereSource,
m_WhereSource.GetLength());
}
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild","C:\\");
+
+ this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild1","C:\\");
if(m_WhereBuild != regvalue)
{
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild3","");
- RegSetValueEx(hKey, _T("WhereBuild4"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild2","");
- RegSetValueEx(hKey, _T("WhereBuild3"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild","");
- RegSetValueEx(hKey, _T("WhereBuild2"), 0, REG_SZ,
- (CONST BYTE *)(const char *)regvalue,
- regvalue.GetLength());
- RegSetValueEx(hKey, _T("WhereBuild"), 0, REG_SZ,
+ int i;
+ char keyName[1024];
+ char keyName2[1024];
+ for (i = 2; i < 10; ++i)
+ {
+ regvalue = "";
+ sprintf(keyName,"WhereBuild%i",i);
+ this->ReadRegistryValue(hKey, &(regvalue),keyName,"");
+ // check for short circuit, if the new value is already in
+ // the list then we stop
+ if (m_WhereBuild == regvalue)
+ {
+ shiftEnd = i - 1;
+ }
+ }
+ for (i = shiftEnd; i; --i)
+ {
+ regvalue = "";
+ sprintf(keyName,"WhereBuild%i",i);
+ sprintf(keyName2,"WhereBuild%i",i+1);
+
+ this->ReadRegistryValue(hKey, &(regvalue),keyName,"");
+ if (strlen(regvalue))
+ {
+ RegSetValueEx(hKey, _T(keyName2), 0, REG_SZ,
+ (CONST BYTE *)(const char *)regvalue,
+ regvalue.GetLength());
+ }
+ }
+ RegSetValueEx(hKey, _T("WhereBuild1"), 0, REG_SZ,
(CONST BYTE *)(const char *)m_WhereBuild,
m_WhereBuild.GetLength());
}
@@ -360,35 +391,35 @@ void CMakeSetupDialog::LoadFromRegistry()
// load some values
if (m_WhereSource.IsEmpty())
{
- this->ReadRegistryValue(hKey, &(m_WhereSource),"WhereSource","C:\\");
+ this->ReadRegistryValue(hKey, &(m_WhereSource),"WhereSource1","C:\\");
}
if (m_WhereBuild.IsEmpty())
{
- this->ReadRegistryValue(hKey, &(m_WhereBuild),"WhereBuild","C:\\");
+ this->ReadRegistryValue(hKey, &(m_WhereBuild),"WhereBuild1","C:\\");
}
m_WhereSourceControl.AddString(m_WhereSource);
m_WhereBuildControl.AddString(m_WhereBuild);
+ char keyname[1024];
CString regvalue;
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource2","C:\\");
- m_WhereSourceControl.AddString(regvalue);
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild2","C:\\");
- m_WhereBuildControl.AddString(regvalue);
-
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource3","C:\\");
- m_WhereSourceControl.AddString(regvalue);
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild3","C:\\");
- m_WhereBuildControl.AddString(regvalue);
-
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereSource4","C:\\");
- m_WhereSourceControl.AddString(regvalue);
- regvalue = "";
- this->ReadRegistryValue(hKey, &(regvalue),"WhereBuild4","C:\\");
- m_WhereBuildControl.AddString(regvalue);
+ int i;
+ for (i = 2; i <= 10; ++i)
+ {
+ sprintf(keyname,"WhereSource%i",i);
+ regvalue = "";
+ this->ReadRegistryValue(hKey, &(regvalue),keyname,"C:\\");
+ if (strcmp("C:\\",regvalue))
+ {
+ m_WhereSourceControl.AddString(regvalue);
+ }
+ sprintf(keyname,"WhereBuild%i",i);
+ regvalue = "";
+ this->ReadRegistryValue(hKey, &(regvalue),keyname,"C:\\");
+ if (strcmp("C:\\",regvalue))
+ {
+ m_WhereBuildControl.AddString(regvalue);
+ }
+ }
}
RegCloseKey(hKey);
}