| 2971 | } |
| 2972 | |
| 2973 | void 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 | } ); |
nothing calls this directly
no test coverage detected