void InGameMenuWindow::createMenu(MenuBase* menu) { CEGUI::WindowManager* windowMan = CEGUI::WindowManager::getSingletonPtr(); const ActionVector actions = ActionManager::getSingleton().getInGameGlobalActions(); map<CeGuiString, PopupMenu*> menuGroups; for (ActionVector::const_iterator actIter = actions.begin(); actIter != actions.end(); actIter++) { Action* action = *actIter; ActionGroup* group = action->getGroup(); if (group != NULL) { PopupMenu* menuGrp; map<CeGuiString, PopupMenu*>::iterator grpIter = menuGroups.find(group->getName()); if (grpIter != menuGroups.end()) { menuGrp = (*grpIter).second; } else { MenuItem* grpItem = static_cast<MenuItem*>(windowMan->createWindow("RastullahLook/MenuItem", getNamePrefix()+"IngameMenu/"+group->getName())); grpItem->setText(group->getName()); menu->addChildWindow(grpItem); menuGrp = static_cast<PopupMenu*>(windowMan->createWindow("RastullahLook/PopupMenu", getNamePrefix()+"IngameMenu/Menu"+group->getName())); grpItem->addChildWindow(menuGrp); menuGroups[group->getName()] = menuGrp; } MenuItem* item = static_cast<MenuItem*>(windowMan->createWindow("RastullahLook/MenuItem", getNamePrefix()+"IngameMenu/"+group->getName()+"/"+action->getName())); item->setText(action->getDescription()); menuGrp->addChildWindow(item); setAction(item, action); } } }