MCPcopy Create free account
hub / github.com/SpartanJ/eepp / buildStatusBar

Method buildStatusBar

src/tools/ecode/plugins/debugger/debuggerplugin.cpp:973–1062  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

971 menu->show();
972}
973void DebuggerPlugin::buildStatusBar() {
974 if ( mProjectPath.empty() ) {
975 hideStatusBarElement();
976 return;
977 }
978 if ( getPluginContext()->getStatusBar() ) {
979 auto but = getPluginContext()->getStatusBar()->find( "status_app_debugger" );
980 if ( but ) {
981 but->setVisible( true );
982 return;
983 }
984 }
985
986 auto context = getPluginContext();
987 UIStatusBar* statusBar = context->getStatusBar();
988
989 auto debuggerStatusElem = std::make_shared<StatusDebuggerController>(
990 context->getMainSplitter(), getUISceneNode(), context );
991
992 statusBar->insertStatusBarElement( "status_app_debugger", i18n( "debugger", "Debugger" ),
993 "icon(debug, 11dp)", debuggerStatusElem );
994
995 debuggerStatusElem->onWidgetCreated = [this]( StatusDebuggerController* sdc, UIWidget* ) {
996 UITreeView* uiExpressions = sdc->getUIExpressions();
997 uiExpressions->setModel( mExpressionsHolder->getModel() );
998 uiExpressions->removeEventsOfType( Event::OnModelEvent );
999 uiExpressions->onModelEvent( [this]( const ModelEvent* modelEvent ) {
1000 if ( modelEvent->getModelEventType() == Abstract::ModelEventType::OpenMenu ) {
1001 openExpressionMenu( modelEvent->getModelIndex() );
1002 } else if ( mDebugger && mListener &&
1003 modelEvent->getModelEventType() == Abstract::ModelEventType::OpenTree ) {
1004 ModelVariableNode* node =
1005 static_cast<ModelVariableNode*>( modelEvent->getModelIndex().internalData() );
1006 mDebugger->variables(
1007 node->var.variablesReference, Variable::Type::Both,
1008 [this]( const int variablesReference, std::vector<Variable>&& vars ) {
1009 mExpressionsHolder->addVariables( variablesReference, std::move( vars ) );
1010 } );
1011 mExpressionsHolder->saveExpandedState( modelEvent->getModelIndex(), true );
1012 } else if ( mDebugger && mListener &&
1013 modelEvent->getModelEventType() == Abstract::ModelEventType::CloseTree ) {
1014 mExpressionsHolder->removeExpandedState( modelEvent->getModelIndex(), true );
1015 }
1016 } );
1017 uiExpressions->removeEventsOfType( Event::MouseClick );
1018 uiExpressions->onClick( [this]( const MouseEvent* ) { openExpressionMenu( {} ); },
1019 MouseButton::EE_BUTTON_RIGHT );
1020
1021 auto uiBreakpoints = sdc->getUIBreakpoints();
1022 if ( nullptr == uiBreakpoints->onBreakpointEnabledChange ) {
1023 uiBreakpoints->onBreakpointEnabledChange = [this]( const std::string& filePath,
1024 int line, bool enabled ) {
1025 breakpointSetEnabled( filePath, line, enabled );
1026 };
1027 }
1028
1029 if ( nullptr == uiBreakpoints->onBreakpointRemove ) {
1030 uiBreakpoints->onBreakpointRemove = [this]( const std::string& filePath, int line ) {

Callers

nothing calls this directly

Calls 15

getStatusBarMethod · 0.80
getUIExpressionsMethod · 0.80
removeEventsOfTypeMethod · 0.80
onModelEventMethod · 0.80
getModelIndexMethod · 0.80
internalDataMethod · 0.80
addVariablesMethod · 0.80
saveExpandedStateMethod · 0.80
removeExpandedStateMethod · 0.80
getUIBreakpointsMethod · 0.80
rowMethod · 0.80

Tested by

no test coverage detected