| 216 | } |
| 217 | |
| 218 | UIMenu* SettingsMenu::createFileTypeMenu( bool emptyMenu ) { |
| 219 | mFileTypeMenusCreatedWithHeight = emptyMenu ? 0 : mUISceneNode->getPixelsSize().getHeight(); |
| 220 | size_t maxItems = 19; |
| 221 | auto* dM = SyntaxDefinitionManager::instance(); |
| 222 | auto names = dM->getLanguageNames(); |
| 223 | auto cb = [this, dM]( const Event* event ) { |
| 224 | UIMenuItem* item = event->getNode()->asType<UIMenuItem>(); |
| 225 | const String& name = item->getText(); |
| 226 | if ( mSplitter->curEditorExistsAndFocused() ) { |
| 227 | mSplitter->getCurEditor()->setSyntaxDefinition( |
| 228 | dM->getByLanguageName( name.toUtf8() ) ); |
| 229 | updateCurrentFileType(); |
| 230 | } |
| 231 | }; |
| 232 | |
| 233 | UIPopUpMenu* menu = UIPopUpMenu::New(); |
| 234 | menu->on( Event::OnItemClicked, cb ); |
| 235 | mFileTypeMenus.push_back( menu ); |
| 236 | size_t total = 0; |
| 237 | |
| 238 | if ( emptyMenu ) |
| 239 | return mFileTypeMenus[0]; |
| 240 | |
| 241 | for ( const auto& name : names ) { |
| 242 | menu->addRadioButton( |
| 243 | name, mSplitter->curEditorExistsAndFocused() && |
| 244 | mSplitter->getCurEditor()->getSyntaxDefinition().getLanguageName() == name ); |
| 245 | |
| 246 | if ( mFileTypeMenus.size() == 1 && menu->getCount() == 1 ) { |
| 247 | auto menuBar = mUISceneNode->findByType( UI_TYPE_MENUBAR ); |
| 248 | menu->reloadStyle( true, true ); |
| 249 | Float height = menu->getPixelsSize().getHeight(); |
| 250 | Float tHeight = mUISceneNode->getPixelsSize().getHeight() - |
| 251 | ( menuBar ? menuBar->getPixelsSize().getHeight() : 0 ); |
| 252 | maxItems = (int)eeceil( tHeight / height ) - 2; |
| 253 | } |
| 254 | |
| 255 | total++; |
| 256 | |
| 257 | if ( menu->getCount() == maxItems && names.size() - total > 1 ) { |
| 258 | UIPopUpMenu* newMenu = UIPopUpMenu::New(); |
| 259 | menu->addSubMenu( i18n( "more_ellipsis", "More..." ), nullptr, newMenu ); |
| 260 | newMenu->on( Event::OnItemClicked, cb ); |
| 261 | mFileTypeMenus.push_back( newMenu ); |
| 262 | menu = newMenu; |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | return mFileTypeMenus[0]; |
| 267 | } |
| 268 | |
| 269 | UIMenu* SettingsMenu::createColorSchemeMenu( bool emptyMenu ) { |
| 270 | mColorSchemeMenusCreatedWithHeight = emptyMenu ? 0 : mUISceneNode->getPixelsSize().getHeight(); |
nothing calls this directly
no test coverage detected