| 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_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// CCMakeGenDialog dialogCCMakeGenDialog::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_MAPEND_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}  
 |