pns_debug_tool: Add option to go to definition in vs code

Todo: add a way to add other IDEs and select them via GUI or
advanced config
This commit is contained in:
Roberto Fernandez Bautista 2024-02-02 23:47:00 +01:00
parent b89fefffb1
commit 3a95bd1bd1
2 changed files with 30 additions and 1 deletions

View File

@ -153,6 +153,7 @@ PNS_LOG_VIEWER_FRAME::PNS_LOG_VIEWER_FRAME( wxFrame* frame ) :
wxITEM_NORMAL ); wxITEM_NORMAL );
m_listPopupMenu->Append( ID_LIST_SHOW_ALL, wxT( "Show all" ), wxT( "" ), wxITEM_NORMAL ); m_listPopupMenu->Append( ID_LIST_SHOW_ALL, wxT( "Show all" ), wxT( "" ), wxITEM_NORMAL );
m_listPopupMenu->Append( ID_LIST_SHOW_NONE, wxT( "Show none" ), wxT( "" ), wxITEM_NORMAL ); m_listPopupMenu->Append( ID_LIST_SHOW_NONE, wxT( "Show none" ), wxT( "" ), wxITEM_NORMAL );
m_listPopupMenu->Append( ID_LIST_DISPLAY_LINE, wxT( "Go to line in vs code" ), wxT( "" ), wxITEM_NORMAL );
m_itemList->Connect( m_itemList->GetId(), wxEVT_TREELIST_ITEM_CONTEXT_MENU, m_itemList->Connect( m_itemList->GetId(), wxEVT_TREELIST_ITEM_CONTEXT_MENU,
wxMouseEventHandler( PNS_LOG_VIEWER_FRAME::onListRightClick ), nullptr, wxMouseEventHandler( PNS_LOG_VIEWER_FRAME::onListRightClick ), nullptr,
@ -601,7 +602,27 @@ void PNS_LOG_VIEWER_FRAME::onListRightClick( wxMouseEvent& event )
return; return;
} }
case ID_LIST_DISPLAY_LINE:
{
wxVector<wxTreeListItem> selectedItems;
if( m_itemList->GetSelections( selectedItems ) == 1 )
{
wxString filename = m_itemList->GetItemText(selectedItems.back(), 2);
wxString line = m_itemList->GetItemText(selectedItems.back(), 4);
//todo: add IDE selection somewhere in the GUI
// clion:
//wxExecute( wxString::Format( "clion --line %s %s", line, m_filenameToPathMap[filename] ) );
if( !filename.empty() && !line.empty() )
wxExecute( wxString::Format("code --goto %s:%s", m_filenameToPathMap[filename], line) );
}
return;
} }
}
return;
} }
@ -726,7 +747,13 @@ void PNS_LOG_VIEWER_FRAME::buildListTree( wxTreeListItem item,
m_itemList->SetItemText( ritem, 1, ent->m_name ); m_itemList->SetItemText( ritem, 1, ent->m_name );
} }
m_itemList->SetItemText( ritem, 2, wxFileNameFromPath( ent->m_srcLoc.fileName ) ); wxString fullfilepath = ent->m_srcLoc.fileName;
wxString filename = wxFileNameFromPath( fullfilepath );
if( !filename.empty() )
m_filenameToPathMap.insert( { filename, fullfilepath } );
m_itemList->SetItemText( ritem, 2, filename );
m_itemList->SetItemText( ritem, 3, ent->m_srcLoc.funcName ); m_itemList->SetItemText( ritem, 3, ent->m_srcLoc.funcName );
m_itemList->SetItemText( ritem, 4, wxString::Format("%d", ent->m_srcLoc.line ) ); m_itemList->SetItemText( ritem, 4, wxString::Format("%d", ent->m_srcLoc.line ) );

View File

@ -42,6 +42,7 @@
#define ID_LIST_COPY 10001 #define ID_LIST_COPY 10001
#define ID_LIST_SHOW_ALL 10002 #define ID_LIST_SHOW_ALL 10002
#define ID_LIST_SHOW_NONE 10003 #define ID_LIST_SHOW_NONE 10003
#define ID_LIST_DISPLAY_LINE 10004
class PNS_LOG_VIEWER_OVERLAY; class PNS_LOG_VIEWER_OVERLAY;
@ -89,6 +90,7 @@ private:
int m_rewindIter; int m_rewindIter;
wxMenu* m_listPopupMenu; wxMenu* m_listPopupMenu;
std::shared_ptr<KIGFX::VIEW_GROUP> m_previewItems; std::shared_ptr<KIGFX::VIEW_GROUP> m_previewItems;
std::map<wxString,wxString> m_filenameToPathMap;
bool m_showThinLines = true; bool m_showThinLines = true;
bool m_showRPIs = true; bool m_showRPIs = true;