GLMotif::PopupMenu* NanotechConstructionKit::createMainMenu(void)
	{
	GLMotif::PopupMenu* mainMenuPopup=new GLMotif::PopupMenu("MainMenuPopup",Vrui::getWidgetManager());
	mainMenuPopup->setTitle("Nanotech Construction Kit");
	
	GLMotif::Menu* mainMenu=new GLMotif::Menu("MainMenu",mainMenuPopup,false);
	
	GLMotif::Button* centerDisplayButton=new GLMotif::Button("CenterDisplayButton",mainMenu,"Center Display");
	centerDisplayButton->getSelectCallbacks().add(this,&NanotechConstructionKit::centerDisplayCallback);
	
	GLMotif::CascadeButton* typeSelectionCascade=new GLMotif::CascadeButton("TypeSelectionCascade",mainMenu,"Structural Unit Types");
	typeSelectionCascade->setPopup(createTypeSelectionMenu());
	
	GLMotif::CascadeButton* draggingModeCascade=new GLMotif::CascadeButton("DraggingModeCascade",mainMenu,"Dragging Modes");
	draggingModeCascade->setPopup(createDraggingModeMenu());
	
	GLMotif::CascadeButton* unitOperationsCascade=new GLMotif::CascadeButton("UnitOperationsCascade",mainMenu,"Unit Operations");
	unitOperationsCascade->setPopup(createUnitOperationsMenu());
	
	GLMotif::ToggleButton* overrideToolsToggle=new GLMotif::ToggleButton("OverrideToolsToggle",mainMenu,"Override Tools");
	overrideToolsToggle->setToggle(overrideTools);
	overrideToolsToggle->getValueChangedCallbacks().add(this,&NanotechConstructionKit::overrideToolsToggleValueChangedCallback);
	
	GLMotif::CascadeButton* renderTogglesCascade=new GLMotif::CascadeButton("RenderTogglesCascade",mainMenu,"Rendering Modes");
	renderTogglesCascade->setPopup(createRenderTogglesMenu());
	
	GLMotif::CascadeButton* ioMenuCascade=new GLMotif::CascadeButton("IoMenuCascade",mainMenu,"I/O Menus");
	ioMenuCascade->setPopup(createIoMenu());
	
	GLMotif::ToggleButton* showStatisticsToggle=new GLMotif::ToggleButton("ShowStatisticsToggle",mainMenu,"Show Statistics Dialog");
	showStatisticsToggle->getValueChangedCallbacks().add(this,&NanotechConstructionKit::showStatisticsToggleValueChangedCallback);
	showStatisticsToggle->setToggle(false);
	
	GLMotif::Button* createInputDeviceButton=new GLMotif::Button("CreateInputDeviceButton",mainMenu,"Create Input Device");
	createInputDeviceButton->getSelectCallbacks().add(this,&NanotechConstructionKit::createInputDeviceCallback);
	
	mainMenu->manageChild();
	
	return mainMenuPopup;
	}
Пример #2
0
GLMotif::PopupMenu* HelloVrui::createMainMenu(void)
	{
	/* Create a top-level shell for the main menu: */
	GLMotif::PopupMenu* mainMenuPopup=new GLMotif::PopupMenu("MainMenuPopup",Vrui::getWidgetManager());
	mainMenuPopup->setTitle("Interactive Globe");

	/* Create the actual menu inside the top-level shell: */
	GLMotif::Menu* mainMenu=new GLMotif::Menu("MainMenu",mainMenuPopup,false);

	/* Create a cascade button to show the "Rendering Modes" submenu: */
	GLMotif::CascadeButton* renderTogglesCascade=new GLMotif::CascadeButton("RenderTogglesCascade",mainMenu,"Rendering Modes");
	renderTogglesCascade->setPopup(createRenderTogglesMenu());

	/* Create a button to reset the navigation coordinates to the default (showing the entire Earth): */
	GLMotif::Button* centerDisplayButton=new GLMotif::Button("CenterDisplayButton",mainMenu,"Center Display");
	centerDisplayButton->getSelectCallbacks().add(this,&HelloVrui::centerDisplayCallback);

	/* Calculate the main menu's proper layout: */
	mainMenu->manageChild();

	/* Return the created top-level shell: */
	return mainMenuPopup;
	}