GLMotif::PopupMenu* Viewer::createMainMenu() { WidgetFactory factory; // create the top-level shell GLMotif::PopupMenu* mainMenuPopup=factory.createPopupMenu("MainPopupMenu", "Viewer Options"); // create button array inside top-level shell GLMotif::Menu* mainMenu=factory.createMenu("MainMenu"); // add buttons and assign callbacks // create a cascade button for selecting the dynamical system GLMotif::CascadeButton* dynamicsTogglesCascade=factory.createCascadeButton("DynamicsTogglesCascade", "Experiments"); dynamicsTogglesCascade->setPopup(createDynamicsTogglesMenu()); // create a cascade button for selecting the dynamical analysis tool GLMotif::CascadeButton* toolsTogglesCascade=factory.createCascadeButton("ToolTogglesCascade", "Tools"); toolsTogglesCascade->setPopup(createToolsTogglesMenu()); // create a toggle button for showing/hiding the frame rate dialog GLMotif::ToggleButton* showFrameRateDialog=factory.createToggleButton("ShowFrameRateDialogToggle", "Show Frame Rate Dialog"); showFrameRateDialog->getSelectCallbacks().add(this, &Viewer::mainMenuTogglesCallback); // create a toggle button for showing/hiding the position dialog GLMotif::ToggleButton* showPositionDialog=factory.createToggleButton("ShowPositionDialog", "Show Position Dialog"); showPositionDialog->getSelectCallbacks().add(this, &Viewer::mainMenuTogglesCallback); // create a toggle button for showing/hiding the dynamical parameter interface dialog showParameterDialogToggle=factory.createToggleButton("ShowParameterDialogToggle", "Show Experiment Options"); showParameterDialogToggle->getSelectCallbacks().add(this, &Viewer::mainMenuTogglesCallback); // create a toggle for showing/hiding the tool option dialogs GLMotif::ToggleButton* showOptionsDialogs=factory.createToggleButton("ShowOptionsDialogsToggle", "Show Tool Options"); showOptionsDialogs->getSelectCallbacks().add(this, &Viewer::mainMenuTogglesCallback); // create a push button for reseting the view GLMotif::Button* resetNavigationButton=factory.createButton("ResetNavigationButton", "Reset Navigation"); resetNavigationButton->getSelectCallbacks().add(this, &Viewer::resetNavigationCallback); mainMenu->manageChild(); return mainMenuPopup; }