void NewBuildTab::DoClear() { wxFont font = DoGetFont(); m_lastLineColoured = wxNOT_FOUND; m_maxlineWidth = wxNOT_FOUND; m_buildInterrupted = false; m_directories.Clear(); m_buildInfoPerFile.clear(); m_warnCount = 0; m_errorCount = 0; m_errorsAndWarningsList.clear(); m_errorsList.clear(); m_cmpPatterns.clear(); // Delete all the user data std::for_each(m_viewData.begin(), m_viewData.end(), [&](std::pair<int, BuildLineInfo*> p) { delete p.second; }); m_viewData.clear(); m_view->SetEditable(true); m_view->ClearAll(); m_view->SetEditable(false); // Clear all markers from open editors std::vector<clEditor*> editors; clMainFrame::Get()->GetMainBook()->GetAllEditors(editors, MainBook::kGetAll_Default); for(size_t i = 0; i < editors.size(); i++) { editors.at(i)->DelAllCompilerMarkers(); editors.at(i)->AnnotationClearAll(); } m_curError = m_errorsAndWarningsList.end(); }
void NewBuildTab::DoClear() { wxFont font = DoGetFont(); m_textRenderer->SetFont( font ); m_buildInterrupted = false; m_directories.Clear(); m_buildInfoPerFile.clear(); m_warnCount = 0; m_errorCount = 0; m_errorsAndWarningsList.clear(); m_errorsList.clear(); m_cmpPatterns.clear(); // Delete all the user data int count = m_listctrl->GetItemCount(); for(int i=0; i<count; i++) { wxDataViewItem item = m_listctrl->GetStore()->GetItem(i); if ( item.IsOk() ) { BuildLineInfo* bli = (BuildLineInfo*)m_listctrl->GetItemData(item); if( bli ) { delete bli; } } } m_listctrl->DeleteAllItems(); // Clear all markers from open editors std::vector<LEditor*> editors; clMainFrame::Get()->GetMainBook()->GetAllEditors(editors); for(size_t i=0; i<editors.size(); i++) { editors.at(i)->DelAllCompilerMarkers(); editors.at(i)->AnnotationClearAll(); } m_curError = m_errorsAndWarningsList.end(); }
NewBuildTab::NewBuildTab(wxWindow* parent) : wxPanel(parent) , m_warnCount(0) , m_errorCount(0) , m_buildInterrupted(false) , m_autoHide (false) , m_showMe(BuildTabSettingsData::ShowOnStart) , m_skipWarnings(false) , m_buildpaneScrollTo(ScrollToFirstError) , m_buildInProgress(false) { m_curError = m_errorsAndWarningsList.end(); wxBoxSizer* bs = new wxBoxSizer(wxHORIZONTAL); SetSizer(bs); // Determine the row height wxBitmap tmpBmp(1, 1); wxMemoryDC memDc; memDc.SelectObject(tmpBmp); wxFont fnt = DoGetFont(); int xx, yy; memDc.GetTextExtent(wxT("Tp"), &xx, &yy, NULL, NULL, &fnt); int style = wxDV_NO_HEADER|wxDV_MULTIPLE; //style |= wxDV_ROW_LINES; m_listctrl = new wxDataViewListCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); m_listctrl->Connect(wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxContextMenuEventHandler(NewBuildTab::OnMenu), NULL, this); m_listctrl->Connect(XRCID("copy_all"), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(NewBuildTab::OnCopy), NULL, this); m_listctrl->Connect(wxID_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(NewBuildTab::OnCopySelection), NULL, this); m_listctrl->Connect(wxID_PASTE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(NewBuildTab::OnOpenInEditor), NULL, this); m_listctrl->Connect(wxID_CLEAR, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(NewBuildTab::OnClear), NULL, this); m_listctrl->Connect(XRCID("copy_all"), wxEVT_UPDATE_UI, wxUpdateUIEventHandler(NewBuildTab::OnCopyUI), NULL, this); m_listctrl->Connect(wxID_COPY, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(NewBuildTab::OnCopySelectionUI), NULL, this); m_listctrl->Connect(wxID_PASTE, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(NewBuildTab::OnOpenInEditorUI), NULL, this); m_listctrl->Connect(wxID_CLEAR, wxEVT_UPDATE_UI, wxUpdateUIEventHandler(NewBuildTab::OnClearUI), NULL, this); // Make sure we have enought height for the icon yy < 12 ? yy = 12 : yy = yy; m_listctrl->SetRowHeight(yy); bs->Add(m_listctrl, 1, wxEXPAND|wxALL); BuildTabTopPanel* toolbox = new BuildTabTopPanel(this); #ifdef __WXMAC__ bs->Add(toolbox, 0, wxEXPAND); #else bs->Insert(0, toolbox, 0, wxEXPAND); #endif int screenWidth = BUILD_PANE_WIDTH;// use a long screen width to allow long lines m_textRenderer = new MyTextRenderer(m_listctrl); m_listctrl->AppendColumn(new wxDataViewColumn(_("Message"), m_textRenderer, 0, screenWidth, wxALIGN_LEFT)); EventNotifier::Get()->Connect ( wxEVT_SHELL_COMMAND_STARTED, clCommandEventHandler ( NewBuildTab::OnBuildStarted ), NULL, this ); EventNotifier::Get()->Connect ( wxEVT_SHELL_COMMAND_STARTED_NOCLEAN, clCommandEventHandler ( NewBuildTab::OnBuildStarted ), NULL, this ); EventNotifier::Get()->Connect ( wxEVT_SHELL_COMMAND_ADDLINE, clCommandEventHandler ( NewBuildTab::OnBuildAddLine ), NULL, this ); EventNotifier::Get()->Connect ( wxEVT_SHELL_COMMAND_PROCESS_ENDED, clCommandEventHandler ( NewBuildTab::OnBuildEnded ), NULL, this ); EventNotifier::Get()->Connect(wxEVT_WORKSPACE_LOADED, wxCommandEventHandler(NewBuildTab::OnWorkspaceLoaded), NULL, this); EventNotifier::Get()->Connect(wxEVT_WORKSPACE_CLOSED, wxCommandEventHandler(NewBuildTab::OnWorkspaceClosed), NULL, this); wxTheApp->Connect(XRCID("next_build_error"), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler ( NewBuildTab::OnNextBuildError ), NULL, this ); wxTheApp->Connect(XRCID("next_build_error"), wxEVT_UPDATE_UI, wxUpdateUIEventHandler ( NewBuildTab::OnNextBuildErrorUI ), NULL, this ); m_listctrl->Connect(wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler(NewBuildTab::OnLineSelected), NULL, this); }