| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- // CMakeGenDialog.cpp : implementation file
- //
- #include "stdafx.h"
- #include "CMakeSetup.h"
- #include "CMakeGenDialog.h"
- #include "../cmake.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CCMakeGenDialog dialog
- CCMakeGenDialog::CCMakeGenDialog(CWnd* pParent /*=NULL*/)
- : CDialog(CCMakeGenDialog::IDD, pParent)
- {
- //{{AFX_DATA_INIT(CCMakeGenDialog)
- //}}AFX_DATA_INIT
- }
- void CCMakeGenDialog::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CCMakeGenDialog)
- DDX_Control(pDX, IDC_BuildForLabel, m_BuildForLabel);
- DDX_Control(pDX, IDC_Generator, m_GeneratorChoice);
- DDX_CBStringExact(pDX, IDC_Generator, m_GeneratorChoiceString);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CCMakeGenDialog, CDialog)
- //{{AFX_MSG_MAP(CCMakeGenDialog)
- // NOTE: the ClassWizard will add message map macros here
- ON_CBN_EDITCHANGE(IDC_Generator, OnEditchangeGenerator)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CCMakeGenDialog message handler
-
- void CCMakeGenDialog::OnEditchangeGenerator()
- {
- // TODO: Add your control notification handler code here
-
- }
- BOOL CCMakeGenDialog::OnInitDialog()
- {
- CDialog::OnInitDialog();
- std::vector<std::string> names;
- this->m_CMakeInstance->GetRegisteredGenerators(names);
- for(std::vector<std::string>::iterator i = names.begin();
- i != names.end(); ++i)
- {
- m_GeneratorChoice.AddString(i->c_str());
- }
- // we want to pick the best generator for their system first we check to
- // see if they have run cmake before, if so we use that generator
- std::string mp;
- bool done = false;
-
- // is the last generator set? If so use it
- mp = "[HKEY_CURRENT_USER\\Software\\Kitware"
- "\\CMakeSetup\\Settings\\StartPath;LastGenerator]";
- cmSystemTools::ExpandRegistryValues(mp);
- if(mp != "/registry")
- {
- m_GeneratorChoiceString = mp.c_str();
- done = true;
- }
- struct regToGen
- {
- const char* Registry;
- const char* GeneratorName;
- };
- regToGen installedGenerators[] = {
- // VS 9
- { "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
- "\\VisualStudio\\9.0\\Setup;Dbghelp_path]", "Visual Studio 9 2008"},
- // VS 8
- { "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
- "\\VisualStudio\\8.0\\Setup;Dbghelp_path]", "Visual Studio 8 2005"},
- // VS 7.1
- {"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
- "\\VisualStudio\\7.1;InstallDir]", "Visual Studio 7 .NET 2003"},
- // VS 7
- {"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
- "\\VisualStudio\\7.0;InstallDir]", "Visual Studio 7"},
- {0,0}
- };
- for(regToGen* ptr = installedGenerators; ptr->Registry != 0 && !done; ptr++)
- {
- mp = ptr->Registry;
- cmSystemTools::ExpandRegistryValues(mp);
- if(mp != "/registry")
- {
- m_GeneratorChoiceString = ptr->GeneratorName;
- done = true;
- }
- }
-
- // if still not done just guess on VS 6
- if (!done)
- {
- m_GeneratorChoiceString = "Visual Studio 6";
- }
- this->UpdateData(FALSE);
-
- return TRUE; // return TRUE unless you set the focus to a control
- }
-
|