void TaskPanel::OnEncodingSelected(wxCommandEvent& e) { wxUnusedVar(e); TasksPanelData d; EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &d); d.SetEncoding(m_choiceEncoding->GetStringSelection()); EditorConfigST::Get()->WriteObject(wxT("TasksPanelData"), &d); }
SearchData TaskPanel::DoGetSearchData() { SearchData data; data.SetDisplayScope(true); data.SetRegularExpression(true); data.SetMatchCase(false); data.SetMatchWholeWord(false); data.SetEncoding(m_choiceEncoding->GetStringSelection()); data.SetOwner(this); wxString sfind; // Load all info from disk TasksPanelData d; EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &d); std::map<wxString, wxString>::const_iterator iter = d.GetTasks().begin(); for(; iter != d.GetTasks().end(); iter++) { wxString name = iter->first; wxString regex = iter->second; bool enabled = (d.GetEnabledItems().Index(iter->first) != wxNOT_FOUND); regex.Trim().Trim(false); wxRegEx re(regex); if(enabled && !regex.IsEmpty() && re.IsValid()) sfind << wxT("(") << regex << wxT(")|"); } if(sfind.empty() == false) sfind.RemoveLast(); data.SetFindString(sfind); wxString rootDir = m_scope->GetStringSelection(); wxArrayString rootDirs; rootDirs.push_back(rootDir); data.SetRootDirs(rootDirs); wxArrayString files; if(rootDir == wxGetTranslation(SEARCH_IN_WORKSPACE)) { ManagerST::Get()->GetWorkspaceFiles(files); } else if(rootDir == wxGetTranslation(SEARCH_IN_PROJECT)) { ManagerST::Get()->GetActiveProjectFiles(files); } else if(rootDir == wxGetTranslation(SEARCH_IN_CURR_FILE_PROJECT)) { ManagerST::Get()->GetActiveFileProjectFiles(files); } data.SetFiles(files); data.SetExtensions(wxT("*.*")); return data; }
TasksFindWhatDlg::TasksFindWhatDlg(wxWindow* parent) : TasksFindWhatDlgBase(parent) { m_list->InsertColumn(0, _("Enabled")); m_list->InsertColumn(1, _("Task")); m_list->SetColumnWidth(1, 200); // Load all info from disk TasksPanelData data; EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &data); std::map<wxString, wxString>::const_iterator iter = data.GetTasks().begin(); for(; iter != data.GetTasks().end(); iter++) { DoAddLine(iter->first, iter->second, data.GetEnabledItems().Index(iter->first) != wxNOT_FOUND); } SetName("TasksFindWhatDlg"); WindowAttrManager::Load(this); }
void TasksFindWhatDlg::DoSaveList() { // Save all items TasksPanelData data; std::map<wxString, wxString> items; wxArrayString enabledItems; for(int i = 0; i < m_list->GetItemCount(); i++) { wxString name = m_list->GetText(i, 1); TaskData* clientData = (TaskData*)m_list->GetItemData(i); items[name] = clientData->m_regex; if(m_list->IsChecked(i)) enabledItems.Add(name); } data.SetEnabledItems(enabledItems); data.SetTasks(items); EditorConfigST::Get()->WriteObject(wxT("TasksPanelData"), &data); }
SearchData TaskPanel::DoGetSearchData() { SearchData data; data.SetDisplayScope(true); data.SetRegularExpression(true); data.SetMatchCase(false); data.SetMatchWholeWord(false); data.SetEncoding(m_choiceEncoding->GetStringSelection()); data.SetOwner(this); wxString sfind; // Load all info from disk TasksPanelData d; EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &d); wxStringMap_t::const_iterator iter = d.GetTasks().begin(); for(; iter != d.GetTasks().end(); iter++) { wxString name = iter->first; wxString regex = iter->second; bool enabled = (d.GetEnabledItems().Index(iter->first) != wxNOT_FOUND); regex.Trim().Trim(false); wxRegEx re(regex); if(enabled && !regex.IsEmpty() && re.IsValid()) sfind << wxT("(") << regex << wxT(")|"); } if(sfind.empty() == false) sfind.RemoveLast(); data.SetFindString(sfind); wxString rootDir = clWorkspaceManager::Get().GetWorkspace()->GetFileName().GetPath(); wxArrayString rootDirs; rootDirs.push_back(rootDir); data.SetRootDirs(rootDirs); data.SetExtensions(wxT("*.*")); return data; }
TaskPanel::TaskPanel(wxWindow* parent, wxWindowID id, const wxString& name) : FindResultsTab(parent, id, name) , m_scope(NULL) { wxArrayString scopes; scopes.Add(wxGetTranslation(SEARCH_IN_PROJECT)); scopes.Add(wxGetTranslation(SEARCH_IN_WORKSPACE)); scopes.Add(wxGetTranslation(SEARCH_IN_CURR_FILE_PROJECT)); wxArrayString filters; filters.Add(wxString(wxT("C/C++ ")) + _("Sources")); m_extensions.Add(wxT("*.c;*.cpp;*.cxx;*.cc;*.h;*.hpp;*.hxx;*.hh;*.inl;*.inc;*.hh")); filters.Add(_("All Files")); m_extensions.Add(wxT("*.*")); m_tb->DeleteTool(XRCID("repeat_output")); m_tb->DeleteTool(XRCID("recent_searches")); m_tb->Realize(); wxBoxSizer* verticalPanelSizer = new wxBoxSizer(wxVERTICAL); wxButton* btn = new wxButton(this, wxID_FIND, _("&Search")); verticalPanelSizer->Add(btn, 0, wxEXPAND | wxALL, 5); m_findWhat = new wxButton(this, XRCID("find_what"), _("Find What...")); verticalPanelSizer->Add(m_findWhat, 0, wxEXPAND | wxALL, 5); verticalPanelSizer->Add(new wxStaticLine(this), 0, wxEXPAND | wxALL, 5); m_scope = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, scopes); m_scope->SetSelection(0); m_scope->SetToolTip(_("Select the scope of the search")); verticalPanelSizer->Add(m_scope, 0, wxEXPAND | wxALL, 5); m_choiceEncoding = new wxChoice(this, wxID_ANY); verticalPanelSizer->Add(m_choiceEncoding, 0, wxEXPAND | wxALL, 5); m_choiceEncoding->SetToolTip(_("Encoding to use for the search")); TasksPanelData d; EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &d); // Set encoding wxArrayString astrEncodings; wxFontEncoding fontEnc; int selection(0); size_t iEncCnt = wxFontMapper::GetSupportedEncodingsCount(); for(size_t i = 0; i < iEncCnt; i++) { fontEnc = wxFontMapper::GetEncoding(i); if(wxFONTENCODING_SYSTEM == fontEnc) { // skip system, it is changed to UTF-8 in optionsconfig continue; } wxString encodingName = wxFontMapper::GetEncodingName(fontEnc); size_t pos = astrEncodings.Add(encodingName); if(d.GetEncoding() == encodingName) selection = static_cast<int>(pos); } m_choiceEncoding->Append(astrEncodings); if(m_choiceEncoding->IsEmpty() == false) m_choiceEncoding->SetSelection(selection); m_choiceEncoding->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TaskPanel::OnEncodingSelected), NULL, this); wxBoxSizer* hSizer = new wxBoxSizer(wxHORIZONTAL); // grab the base class scintilla and put our sizer in its place wxSizer* mainSizer = m_vSizer; mainSizer->Detach(m_sci); hSizer->Add(m_sci, 1, wxEXPAND | wxALL, 1); hSizer->Add(verticalPanelSizer, 0, wxEXPAND | wxALL, 1); mainSizer->Add(hSizer, 1, wxEXPAND | wxALL, 1); mainSizer->Layout(); }