void clCxxWorkspace::RemoveProjectFromBuildMatrix(ProjectPtr prj) { BuildMatrixPtr matrix = GetBuildMatrix(); wxString selConfName = matrix->GetSelectedConfigurationName(); std::list<WorkspaceConfigurationPtr> wspList = matrix->GetConfigurations(); std::list<WorkspaceConfigurationPtr>::iterator iter = wspList.begin(); for(; iter != wspList.end(); iter++) { WorkspaceConfiguration::ConfigMappingList prjList = (*iter)->GetMapping(); WorkspaceConfiguration::ConfigMappingList::iterator it = prjList.begin(); for(; it != prjList.end(); it++) { if((*it).m_project == prj->GetName()) { prjList.erase(it); break; } } (*iter)->SetConfigMappingList(prjList); matrix->SetConfiguration((*iter)); } // and set the configuration name matrix->SetSelectedConfigurationName(selConfName); // this will also reset the build matrix pointer SetBuildMatrix(matrix); }
void ConfigurationManagerDlg::SaveCurrentSettings() { m_currentWorkspaceConfiguration = m_currentWorkspaceConfiguration.Trim().Trim(false); BuildMatrixPtr matrix = ManagerST::Get()->GetWorkspaceBuildMatrix(); if (!matrix) { return; } matrix->SetSelectedConfigurationName(m_currentWorkspaceConfiguration); CSolitionConfigurationPtr conf = matrix->GetConfigurationByName(m_currentWorkspaceConfiguration); if (!conf) { //create new configuration conf = new CSolitionConfiguration(NULL); conf->SetName(m_currentWorkspaceConfiguration); matrix->SetConfiguration(conf); } conf->SetConfigMappingList(GetCurrentSettings()); //save changes ManagerST::Get()->SetWorkspaceBuildMatrix(matrix); m_dirty = false; }
void WorkspaceTab::DoConfigChanged() { wxBusyCursor bc; wxString selection = m_workspaceConfig->GetStringSelection(); BuildMatrixPtr matrix = ManagerST::Get()->GetWorkspaceBuildMatrix(); matrix->SetSelectedConfigurationName(selection); ManagerST::Get()->SetWorkspaceBuildMatrix(matrix); // Set the focus to the active editor if any LEditor* editor = clMainFrame::Get()->GetMainBook()->GetActiveEditor(); if(editor) editor->SetActive(); ManagerST::Get()->UpdateParserPaths(true); }
void WorkspaceTab::OnConfigurationManagerChoice(wxCommandEvent& e) { wxString selection = m_workspaceConfig->GetStringSelection(); if(selection == OPEN_CONFIG_MGR_STR) { wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, XRCID("configuration_manager")); e.SetEventObject(this); ProcessEvent(e); return; } BuildMatrixPtr matrix = ManagerST::Get()->GetWorkspaceBuildMatrix(); matrix->SetSelectedConfigurationName(selection); ManagerST::Get()->SetWorkspaceBuildMatrix(matrix); // Set the focus to the active editor if any LEditor *editor = clMainFrame::Get()->GetMainBook()->GetActiveEditor(); if(editor) editor->SetActive(); ManagerST::Get()->UpdateParserPaths(true); }
void clCxxWorkspace::AddProjectToBuildMatrix(ProjectPtr prj) { if(!prj) { wxMessageBox(_("AddProjectToBuildMatrix was called with NULL project"), _("CodeLite"), wxICON_WARNING | wxOK); return; } BuildMatrixPtr matrix = GetBuildMatrix(); wxString selConfName = matrix->GetSelectedConfigurationName(); std::list<WorkspaceConfigurationPtr> wspList = matrix->GetConfigurations(); std::list<WorkspaceConfigurationPtr>::iterator iter = wspList.begin(); for(; iter != wspList.end(); iter++) { WorkspaceConfigurationPtr workspaceConfig = (*iter); WorkspaceConfiguration::ConfigMappingList prjList = workspaceConfig->GetMapping(); wxString wspCnfName = workspaceConfig->GetName(); ProjectSettingsCookie cookie; // getSettings is a bit misleading, since it actually create new instance which represents the layout // of the XML ProjectSettingsPtr settings = prj->GetSettings(); BuildConfigPtr prjBldConf = settings->GetFirstBuildConfiguration(cookie); BuildConfigPtr matchConf; if(!prjBldConf) { // the project does not have any settings, create new one and add it prj->SetSettings(settings); settings = prj->GetSettings(); prjBldConf = settings->GetFirstBuildConfiguration(cookie); matchConf = prjBldConf; } else { matchConf = prjBldConf; // try to locate the best match to add to the workspace while(prjBldConf) { wxString projBldConfName = prjBldConf->GetName(); if(wspCnfName == projBldConfName) { // we found a suitable match use it instead of the default one matchConf = prjBldConf; break; } prjBldConf = settings->GetNextBuildConfiguration(cookie); } } ConfigMappingEntry entry(prj->GetName(), matchConf->GetName()); prjList.push_back(entry); (*iter)->SetConfigMappingList(prjList); matrix->SetConfiguration((*iter)); } // and set the configuration name matrix->SetSelectedConfigurationName(selConfName); // this will also reset the build matrix pointer SetBuildMatrix(matrix); }