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

Method createFileTypeMenu

src/tools/ecode/settingsmenu.cpp:218–267  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

216}
217
218UIMenu* 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
269UIMenu* SettingsMenu::createColorSchemeMenu( bool emptyMenu ) {
270 mColorSchemeMenusCreatedWithHeight = emptyMenu ? 0 : mUISceneNode->getPixelsSize().getHeight();

Callers

nothing calls this directly

Calls 15

getNodeMethod · 0.80
getCurEditorMethod · 0.80
toUtf8Method · 0.80
push_backMethod · 0.80
addRadioButtonMethod · 0.80
findByTypeMethod · 0.80
addSubMenuMethod · 0.80
NewFunction · 0.50
getHeightMethod · 0.45
getPixelsSizeMethod · 0.45
getLanguageNamesMethod · 0.45

Tested by

no test coverage detected