diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2000-11-03 21:37:53 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2000-11-03 21:37:53 (GMT) |
commit | f76a992ff97c53a71b4db62f7cd84e809cb1ff22 (patch) | |
tree | ba1fd11ba544e637bf8d5e2b563c52b7e2f97194 /Source/MFCDialog | |
parent | 0798a177ea2c2989d9b98e390a375f98288e6f0b (diff) | |
download | CMake-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.cpp | 34 | ||||
-rw-r--r-- | Source/MFCDialog/CMakeSetupDialog.h | 6 |
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(); |