summaryrefslogtreecommitdiffstats
path: root/Source/MFCDialog
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2000-11-03 21:37:53 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2000-11-03 21:37:53 (GMT)
commitf76a992ff97c53a71b4db62f7cd84e809cb1ff22 (patch)
treeba1fd11ba544e637bf8d5e2b563c52b7e2f97194 /Source/MFCDialog
parent0798a177ea2c2989d9b98e390a375f98288e6f0b (diff)
downloadCMake-f76a992ff97c53a71b4db62f7cd84e809cb1ff22.zip
CMake-f76a992ff97c53a71b4db62f7cd84e809cb1ff22.tar.gz
CMake-f76a992ff97c53a71b4db62f7cd84e809cb1ff22.tar.bz2
ENH: add ability to run from different directories
Diffstat (limited to 'Source/MFCDialog')
-rw-r--r--Source/MFCDialog/CMakeSetupDialog.cpp34
-rw-r--r--Source/MFCDialog/CMakeSetupDialog.h6
2 files changed, 31 insertions, 9 deletions
diff --git a/Source/MFCDialog/CMakeSetupDialog.cpp b/Source/MFCDialog/CMakeSetupDialog.cpp
index 38ddb71..3f057cc 100644
--- a/Source/MFCDialog/CMakeSetupDialog.cpp
+++ b/Source/MFCDialog/CMakeSetupDialog.cpp
@@ -65,13 +65,35 @@ BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
CMakeSetupDialog::CMakeSetupDialog(CWnd* pParent /*=NULL*/)
: CDialog(CMakeSetupDialog::IDD, pParent)
{
+ CString startPath = _pgmptr;
+ startPath.Replace('\\', '_');
+ startPath.Replace(':', '_');
+ startPath.Replace(".EXE", "");
+ startPath.Replace(".exe", "");
+ m_RegistryKey = "Software\\Kitware\\CMakeSetup\\Settings\\";
+ // _pgmptr should be the directory from which cmake was run from
+ // use it as the unique key for the dialog
+ m_RegistryKey += startPath;
+
//{{AFX_DATA_INIT(CMakeSetupDialog)
m_WhereSource = _T("");
m_WhereBuild = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
- m_WhereSource = _T("");
+ // Guess the initial source directory based on the location
+ // of this program, it should be in CMake/Source/
+ startPath = _pgmptr;
+ int removePos = startPath.Find("\\CMake\\Source");
+ if(removePos == -1)
+ {
+ removePos = startPath.Find("/CMake/Source");
+ }
+ if(removePos != -1)
+ {
+ startPath = startPath.Left(removePos);
+ }
+ m_WhereSource = startPath;
this->LoadFromRegistry();
}
@@ -273,7 +295,7 @@ void CMakeSetupDialog::SaveToRegistry()
DWORD dwDummy;
if(RegCreateKeyEx(HKEY_CURRENT_USER,
- _T("Software\\Kitware\\CMakeSetup\\Settings"),
+ m_RegistryKey,
0, "", REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE,
NULL, &hKey, &dwDummy) != ERROR_SUCCESS)
{
@@ -294,9 +316,9 @@ void CMakeSetupDialog::SaveToRegistry()
void CMakeSetupDialog::ReadRegistryValue(HKEY hKey,
- CString *val,
- char *key,
- char *adefault)
+ CString *val,
+ const char *key,
+ const char *adefault)
{
DWORD dwType, dwSize;
char *pb;
@@ -321,7 +343,7 @@ void CMakeSetupDialog::LoadFromRegistry()
{
HKEY hKey;
if(RegOpenKeyEx(HKEY_CURRENT_USER,
- _T("Software\\Kitware\\CMakeSetup\\Settings"),
+ m_RegistryKey,
0, KEY_READ, &hKey) != ERROR_SUCCESS)
{
return;
diff --git a/Source/MFCDialog/CMakeSetupDialog.h b/Source/MFCDialog/CMakeSetupDialog.h
index 37d9ae0..1989234 100644
--- a/Source/MFCDialog/CMakeSetupDialog.h
+++ b/Source/MFCDialog/CMakeSetupDialog.h
@@ -22,8 +22,8 @@ protected:
void LoadFromRegistry();
void ReadRegistryValue(HKEY hKey,
CString *val,
- char *key,
- char *adefault);
+ const char *key,
+ const char *aadefault);
// Dialog Data
//{{AFX_DATA(CMakeSetupDialog)
enum { IDD = IDD_CMakeSetupDialog_DIALOG };
@@ -40,7 +40,7 @@ protected:
// Implementation
protected:
HICON m_hIcon;
-
+ CString m_RegistryKey;
// Generated message map functions
//{{AFX_MSG(CMakeSetupDialog)
virtual BOOL OnInitDialog();