void CppCheckPlugin::DoSettingsItem(ProjectPtr project /*= NULL*/) { // Find the default path for the CppCheckSettingsDialog's wxFileDialog wxString defaultpath; IEditor* ed = m_mgr->GetActiveEditor(); if(ed && ed->GetFileName().IsOk()) { defaultpath = ed->GetFileName().GetPath(); } // If there's an active project, first load any project-specific settings: definitions and undefines // (We couldn't do that with the rest of the settings as the workspace hadn't yet been loaded) m_settings.LoadProjectSpecificSettings( project); // NB we still do this if !project, as that will clear any stale settings CppCheckSettingsDialog dlg(m_mgr->GetTheApp()->GetTopWindow(), &m_settings, m_mgr->GetConfigTool(), defaultpath, project.Get() != NULL); if(dlg.ShowModal() == wxID_OK) { m_mgr->GetConfigTool()->WriteObject(wxT("CppCheck"), &m_settings); if(project) { // Also save any project-specific settings: definitions and undefines wxString definitions = wxJoin(m_settings.GetDefinitions(), ','); wxString undefines = wxJoin(m_settings.GetUndefines(), ','); if(!(definitions.empty() && undefines.empty())) { project->SetPluginData("CppCheck", definitions + ';' + undefines); } else { project->SetPluginData("CppCheck", ""); } } } }