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

Method createProjectMenu

src/tools/ecode/settingsmenu.cpp:2973–3034  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2971}
2972
2973void SettingsMenu::createProjectMenu() {
2974 auto* owner = mProjectMenu->addSubMenu( i18n( "documents_settings", "Documents Settings" ),
2975 findIcon( "file" ), mProjectDocMenu );
2976 owner->setId( "project_doc_settings" );
2977 owner->on( Event::OnMenuShow,
2978 [owner, this]( auto ) { mProjectDocMenu->setOwnerNode( owner ); } );
2979
2980 HExtLanguageType hExtLanguageType = mApp->getProjectConfig().hExtLanguageType;
2981 mHExtLanguageTypeMenu = UIPopUpMenu::New();
2982 mHExtLanguageTypeMenu->setId( "h_ext_files_submenu" );
2983 mHExtLanguageTypeMenu
2984 ->addRadioButton( i18n( "auto-detect", "Auto-Detect" ),
2985 hExtLanguageType == HExtLanguageType::AutoDetect )
2986 ->setId( "autodetect" );
2987 mHExtLanguageTypeMenu->addRadioButton( "C", hExtLanguageType == HExtLanguageType::C )
2988 ->setId( "c" );
2989 mHExtLanguageTypeMenu->addRadioButton( "C++", hExtLanguageType == HExtLanguageType::CPP )
2990 ->setId( "cpp" );
2991 mHExtLanguageTypeMenu
2992 ->addRadioButton( "Objective-C", hExtLanguageType == HExtLanguageType::ObjectiveC )
2993 ->setId( "objective-c" );
2994 mHExtLanguageTypeMenu
2995 ->addRadioButton( "Objective-C++", hExtLanguageType == HExtLanguageType::ObjectiveCPP )
2996 ->setId( "objective-cpp" );
2997
2998 mProjectMenu->addSubMenu( i18n( "treat_h_files_as_ellipsis", "Treat .h files as..." ), nullptr,
2999 mHExtLanguageTypeMenu );
3000
3001 mProjectMenu->addSeparator();
3002
3003 mProjectMenu
3004 ->add( i18n( "reset_project_file_associations", "Reset Project File Associations" ) )
3005 ->setTooltipText( i18n( "reset_project_file_associations_tooltip",
3006 "Clears your saved language choices for ambiguous file extensions\n"
3007 "(e.g. choosing C++ for .h files) in the current project.\n"
3008 "After resetting, you'll be prompted to choose a language again\n"
3009 "when opening these files within this project." ) )
3010 ->setId( "reset-project-file-associations" );
3011
3012 mHExtLanguageTypeMenu->on( Event::OnItemClicked, [this]( const Event* event ) {
3013 if ( event->getNode()->isType( UI_TYPE_MENU_SEPARATOR ) ||
3014 event->getNode()->isType( UI_TYPE_MENUSUBMENU ) )
3015 return;
3016 const String& id = event->getNode()->getId();
3017
3018 if ( event->getNode()->isType( UI_TYPE_MENURADIOBUTTON ) ) {
3019 UIMenuCheckBox* item = event->getNode()->asType<UIMenuCheckBox>();
3020 mApp->getProjectConfig().hExtLanguageType =
3021 HExtLanguageTypeHelper::fromString( item->getId() );
3022 mApp->getSplitter()->forEachEditor( [this]( UICodeEditor* editor ) {
3023 editor->getDocument().setHExtLanguageType(
3024 mApp->getProjectConfig().hExtLanguageType );
3025 if ( editor->getDocument().getFileInfo().getExtension() == "h" ) {
3026 editor->resetSyntaxDefinition();
3027 if ( mSplitter->isCurEditor( editor ) )
3028 updateCurrentFileType();
3029 }
3030 } );

Callers

nothing calls this directly

Calls 15

fromStringFunction · 0.85
addSubMenuMethod · 0.80
setOwnerNodeMethod · 0.80
addRadioButtonMethod · 0.80
addSeparatorMethod · 0.80
setTooltipTextMethod · 0.80
getNodeMethod · 0.80
forEachEditorMethod · 0.80
setHExtLanguageTypeMethod · 0.80
getDocumentMethod · 0.80
getExtensionMethod · 0.80
resetSyntaxDefinitionMethod · 0.80

Tested by

no test coverage detected