void EvnVarList::InsertVariable(const wxString& setName, const wxString& name, const wxString& value) { wxString actualSetName; DoGetSetVariablesStr(setName, actualSetName); EnvMap set = GetVariables(actualSetName, false, wxEmptyString, wxEmptyString); if(!set.Contains(name)) { set.Put(name, value); } m_envVarSets[actualSetName] = set.String(); }
void CodeLiteApp::MSWReadRegistry() { #ifdef __WXMSW__ EvnVarList vars; EnvironmentConfig::Instance()->Load(); EnvironmentConfig::Instance()->ReadObject(wxT("Variables"), &vars); ///////////////////////////////////////////////////////////////// // New way of registry: // Read the registry INI file ///////////////////////////////////////////////////////////////// // Update PATH environment variable with the install directory and // MinGW default installation (if exists) wxString pathEnv; wxGetEnv(wxT("PATH"), &pathEnv); wxString codeliteInstallDir; codeliteInstallDir << ManagerST::Get()->GetInstallDir() << wxT(";"); pathEnv.Prepend(codeliteInstallDir); // Load the registry file wxString iniFile; iniFile << ManagerST::Get()->GetInstallDir() << wxFileName::GetPathSeparator() << wxT("registry.ini"); if(wxFileName::FileExists(iniFile)) { clRegistry::SetFilename(iniFile); clRegistry registry; m_parserPaths.Clear(); wxString strWx, strMingw, strUnitTestPP; // registry.Read(wxT("wx"), strWx); registry.Read(wxT("mingw"), strMingw); registry.Read(wxT("unittestpp"), strUnitTestPP); // Supprot for wxWidgets if(strWx.IsEmpty() == false) { // we have WX installed on this machine, set the path of WXWIN & WXCFG to point to it EnvMap envs = vars.GetVariables(wxT("Default"), false, wxT("")); if(!envs.Contains(wxT("WXWIN"))) { vars.AddVariable(wxT("Default"), wxT("WXWIN"), strWx); vars.AddVariable(wxT("Default"), wxT("PATH"), wxT("$(WXWIN)\\lib\\gcc_dll;$(PATH)")); } if(!envs.Contains(wxT("WXCFG"))) vars.AddVariable(wxT("Default"), wxT("WXCFG"), wxT("gcc_dll\\mswu")); EnvironmentConfig::Instance()->WriteObject(wxT("Variables"), &vars); wxSetEnv(wxT("WX_INCL_HOME"), strWx + wxT("\\include")); } // Support for UnitTest++ if(strUnitTestPP.IsEmpty() == false) { // we have UnitTest++ installed on this machine EnvMap envs = vars.GetVariables(wxT("Default"), false, wxT("")); if(!envs.Contains(wxT("UNIT_TEST_PP_SRC_DIR"))) { vars.AddVariable(wxT("Default"), wxT("UNIT_TEST_PP_SRC_DIR"), strUnitTestPP); } EnvironmentConfig::Instance()->WriteObject(wxT("Variables"), &vars); } // Support for MinGW if(strMingw.IsEmpty() == false) { // Make sure that codelite's MinGW comes first before any other // MinGW installation that might exist on the machine strMingw << wxFileName::GetPathSeparator() << wxT("bin;"); pathEnv.Prepend(strMingw); } wxSetEnv(wxT("PATH"), pathEnv); } #endif }