mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 13:58:51 +02:00
Merge pull request #889 from birarda/new-menu
implementing @problem's refactored menu setup
This commit is contained in:
commit
a9edf09f39
3 changed files with 205 additions and 190 deletions
|
@ -1041,10 +1041,8 @@ void Application::terminate() {
|
||||||
|
|
||||||
LeapManager::terminate();
|
LeapManager::terminate();
|
||||||
|
|
||||||
if (Menu::getInstance()->isOptionChecked(MenuOption::SettingsAutosave)) {
|
Menu::getInstance()->saveSettings();
|
||||||
Menu::getInstance()->saveSettings();
|
_settings->sync();
|
||||||
_settings->sync();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_enableNetworkThread) {
|
if (_enableNetworkThread) {
|
||||||
_stopNetworkReceiveThread = true;
|
_stopNetworkReceiveThread = true;
|
||||||
|
|
|
@ -52,12 +52,7 @@ Menu::Menu() :
|
||||||
Application *appInstance = Application::getInstance();
|
Application *appInstance = Application::getInstance();
|
||||||
|
|
||||||
QMenu* fileMenu = addMenu("File");
|
QMenu* fileMenu = addMenu("File");
|
||||||
(addActionToQMenuAndActionHash(fileMenu,
|
|
||||||
MenuOption::Quit,
|
|
||||||
Qt::CTRL | Qt::Key_Q,
|
|
||||||
appInstance,
|
|
||||||
SLOT(quit())))->setMenuRole(QAction::QuitRole);
|
|
||||||
|
|
||||||
(addActionToQMenuAndActionHash(fileMenu,
|
(addActionToQMenuAndActionHash(fileMenu,
|
||||||
MenuOption::Preferences,
|
MenuOption::Preferences,
|
||||||
Qt::CTRL | Qt::Key_Comma,
|
Qt::CTRL | Qt::Key_Comma,
|
||||||
|
@ -66,159 +61,78 @@ Menu::Menu() :
|
||||||
|
|
||||||
#if defined(Q_OS_MAC) && defined(QT_NO_DEBUG)
|
#if defined(Q_OS_MAC) && defined(QT_NO_DEBUG)
|
||||||
// show "Check for Updates" in the menu
|
// show "Check for Updates" in the menu
|
||||||
(addActionToQMenuAndActionHash(fileMenu, MenuOption::CheckForUpdates, 0, this, SLOT(checkForUpdates())))->setMenuRole(QAction::ApplicationSpecificRole);
|
(addActionToQMenuAndActionHash(fileMenu,
|
||||||
|
MenuOption::CheckForUpdates,
|
||||||
|
0,
|
||||||
|
this,
|
||||||
|
SLOT(checkForUpdates())))->setMenuRole(QAction::ApplicationSpecificRole);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
QMenu* pairMenu = addMenu("Pair");
|
addDisabledActionAndSeparator(fileMenu, "Voxels");
|
||||||
addActionToQMenuAndActionHash(pairMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest()));
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels()));
|
||||||
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels()));
|
||||||
|
|
||||||
|
addDisabledActionAndSeparator(fileMenu, "Go");
|
||||||
|
addActionToQMenuAndActionHash(fileMenu,
|
||||||
|
MenuOption::GoHome,
|
||||||
|
Qt::CTRL | Qt::Key_G,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(goHome()));
|
||||||
|
|
||||||
QMenu* optionsMenu = addMenu("Options");
|
addDisabledActionAndSeparator(fileMenu, "Settings");
|
||||||
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings()));
|
||||||
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings()));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::Mirror, Qt::Key_H);
|
addDisabledActionAndSeparator(fileMenu, "Devices");
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::GyroLook, 0, true);
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::Pair, 0, PairingHandler::getInstance(), SLOT(sendPairRequest()));
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::HeadMouse);
|
addCheckableActionToQMenuAndActionHash(fileMenu, MenuOption::TransmitterDrive, 0, true);
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::TransmitterDrive, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu, MenuOption::TestPing, 0, true);
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu,
|
(addActionToQMenuAndActionHash(fileMenu,
|
||||||
MenuOption::Fullscreen,
|
MenuOption::Quit,
|
||||||
Qt::Key_F,
|
Qt::CTRL | Qt::Key_Q,
|
||||||
false,
|
appInstance,
|
||||||
appInstance,
|
SLOT(quit())))->setMenuRole(QAction::QuitRole);
|
||||||
SLOT(setFullscreen(bool)));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu,
|
QMenu* editMenu = addMenu("Edit");
|
||||||
MenuOption::Webcam,
|
addActionToQMenuAndActionHash(editMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels()));
|
||||||
0,
|
addActionToQMenuAndActionHash(editMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels()));
|
||||||
false,
|
addActionToQMenuAndActionHash(editMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels()));
|
||||||
appInstance->getWebcam(),
|
|
||||||
SLOT(setEnabled(bool)));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu,
|
addDisabledActionAndSeparator(editMenu, "Physics");
|
||||||
MenuOption::SkeletonTracking,
|
addCheckableActionToQMenuAndActionHash(editMenu, MenuOption::Gravity, Qt::SHIFT | Qt::Key_G, true);
|
||||||
0,
|
addCheckableActionToQMenuAndActionHash(editMenu,
|
||||||
false,
|
|
||||||
appInstance->getWebcam(),
|
|
||||||
SLOT(setSkeletonTrackingOn(bool)));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu,
|
|
||||||
MenuOption::Collisions,
|
MenuOption::Collisions,
|
||||||
0,
|
0,
|
||||||
true,
|
true,
|
||||||
appInstance->getAvatar(),
|
appInstance->getAvatar(),
|
||||||
SLOT(setWantCollisionsOn(bool)));
|
SLOT(setWantCollisionsOn(bool)));
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(optionsMenu,
|
|
||||||
MenuOption::WebcamMode,
|
|
||||||
0,
|
|
||||||
appInstance->getWebcam()->getGrabber(),
|
|
||||||
SLOT(cycleVideoSendMode()));
|
|
||||||
addCheckableActionToQMenuAndActionHash(optionsMenu,
|
|
||||||
MenuOption::WebcamTexture,
|
|
||||||
0,
|
|
||||||
false,
|
|
||||||
appInstance->getWebcam()->getGrabber(),
|
|
||||||
SLOT(setDepthOnly(bool)));
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(optionsMenu,
|
|
||||||
MenuOption::GoHome,
|
|
||||||
Qt::CTRL | Qt::Key_G,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(goHome()));
|
|
||||||
|
|
||||||
QMenu* audioMenu = addMenu("Audio");
|
|
||||||
addCheckableActionToQMenuAndActionHash(audioMenu, MenuOption::EchoAudio);
|
|
||||||
|
|
||||||
QMenu* renderMenu = addMenu("Render");
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::Voxels,
|
|
||||||
Qt::SHIFT | Qt::Key_V,
|
|
||||||
true,
|
|
||||||
appInstance,
|
|
||||||
SLOT(setRenderVoxels(bool)));
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::VoxelTextures);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Stars, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::GroundPlane, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::Avatars, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::AvatarAsBalls);
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::VoxelMode,
|
|
||||||
0,
|
|
||||||
appInstance->getAvatar()->getVoxels(),
|
|
||||||
SLOT(cycleMode()));
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::FaceMode,
|
|
||||||
0,
|
|
||||||
&appInstance->getAvatar()->getHead().getFace(),
|
|
||||||
SLOT(cycleRenderMode()));
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::GlowMode,
|
|
||||||
0,
|
|
||||||
appInstance->getGlowEffect(),
|
|
||||||
SLOT(cycleRenderMode()));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::AmbientOcclusion);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::FrameTimer);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::LookAtVectors, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::LookAtIndicator, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(renderMenu, MenuOption::FirstPerson, Qt::Key_P, true);
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::IncreaseAvatarSize,
|
|
||||||
Qt::Key_Plus,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(increaseSize()));
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::DecreaseAvatarSize,
|
|
||||||
Qt::Key_Minus,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(decreaseSize()));
|
|
||||||
addActionToQMenuAndActionHash(renderMenu,
|
|
||||||
MenuOption::ResetAvatarSize,
|
|
||||||
0,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(resetSize()));
|
|
||||||
|
|
||||||
QMenu* toolsMenu = addMenu("Tools");
|
QMenu* toolsMenu = addMenu("Tools");
|
||||||
addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Stats, Qt::Key_Slash);
|
|
||||||
addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L);
|
|
||||||
addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Oscilloscope, 0, true);
|
|
||||||
addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::Bandwidth, 0, true);
|
|
||||||
addActionToQMenuAndActionHash(toolsMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails()));
|
|
||||||
addActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails()));
|
|
||||||
|
|
||||||
|
|
||||||
QMenu* voxelMenu = addMenu("Voxels");
|
|
||||||
_voxelModeActionsGroup = new QActionGroup(this);
|
_voxelModeActionsGroup = new QActionGroup(this);
|
||||||
_voxelModeActionsGroup->setExclusive(false);
|
_voxelModeActionsGroup->setExclusive(false);
|
||||||
|
|
||||||
QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelAddMode, Qt::Key_V);
|
QAction* addVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelAddMode, Qt::Key_V);
|
||||||
_voxelModeActionsGroup->addAction(addVoxelMode);
|
_voxelModeActionsGroup->addAction(addVoxelMode);
|
||||||
|
|
||||||
QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelDeleteMode, Qt::Key_R);
|
QAction* deleteVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelDeleteMode, Qt::Key_R);
|
||||||
_voxelModeActionsGroup->addAction(deleteVoxelMode);
|
_voxelModeActionsGroup->addAction(deleteVoxelMode);
|
||||||
|
|
||||||
QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelColorMode, Qt::Key_B);
|
QAction* colorVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelColorMode, Qt::Key_B);
|
||||||
_voxelModeActionsGroup->addAction(colorVoxelMode);
|
_voxelModeActionsGroup->addAction(colorVoxelMode);
|
||||||
|
|
||||||
QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelSelectMode, Qt::Key_O);
|
QAction* selectVoxelMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelSelectMode, Qt::Key_O);
|
||||||
_voxelModeActionsGroup->addAction(selectVoxelMode);
|
_voxelModeActionsGroup->addAction(selectVoxelMode);
|
||||||
|
|
||||||
QAction* getColorMode = addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::VoxelGetColorMode, Qt::Key_G);
|
QAction* getColorMode = addCheckableActionToQMenuAndActionHash(toolsMenu, MenuOption::VoxelGetColorMode, Qt::Key_G);
|
||||||
_voxelModeActionsGroup->addAction(getColorMode);
|
_voxelModeActionsGroup->addAction(getColorMode);
|
||||||
|
|
||||||
// connect each of the voxel mode actions to the updateVoxelModeActionsSlot
|
// connect each of the voxel mode actions to the updateVoxelModeActionsSlot
|
||||||
foreach (QAction* action, _voxelModeActionsGroup->actions()) {
|
foreach (QAction* action, _voxelModeActionsGroup->actions()) {
|
||||||
connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions()));
|
connect(action, SIGNAL(triggered()), this, SLOT(updateVoxelModeActions()));
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction* voxelPaintColor = addActionToQMenuAndActionHash(voxelMenu,
|
QAction* voxelPaintColor = addActionToQMenuAndActionHash(toolsMenu,
|
||||||
MenuOption::VoxelPaintColor,
|
MenuOption::VoxelPaintColor,
|
||||||
Qt::META | Qt::Key_C,
|
Qt::META | Qt::Key_C,
|
||||||
this,
|
this,
|
||||||
|
@ -230,29 +144,106 @@ Menu::Menu() :
|
||||||
voxelPaintColor->setData(paintColor);
|
voxelPaintColor->setData(paintColor);
|
||||||
voxelPaintColor->setIcon(Swatch::createIcon(paintColor));
|
voxelPaintColor->setIcon(Swatch::createIcon(paintColor));
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu,
|
addActionToQMenuAndActionHash(toolsMenu,
|
||||||
MenuOption::DecreaseVoxelSize,
|
MenuOption::DecreaseVoxelSize,
|
||||||
QKeySequence::ZoomOut,
|
QKeySequence::ZoomOut,
|
||||||
appInstance,
|
appInstance,
|
||||||
SLOT(decreaseVoxelSize()));
|
SLOT(decreaseVoxelSize()));
|
||||||
addActionToQMenuAndActionHash(voxelMenu,
|
addActionToQMenuAndActionHash(toolsMenu,
|
||||||
MenuOption::IncreaseVoxelSize,
|
MenuOption::IncreaseVoxelSize,
|
||||||
QKeySequence::ZoomIn,
|
QKeySequence::ZoomIn,
|
||||||
appInstance,
|
appInstance,
|
||||||
SLOT(increaseVoxelSize()));
|
SLOT(increaseVoxelSize()));
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors()));
|
addActionToQMenuAndActionHash(toolsMenu, MenuOption::ResetSwatchColors, 0, this, SLOT(resetSwatchColors()));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(voxelMenu, MenuOption::DestructiveAddVoxel);
|
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::ExportVoxels, Qt::CTRL | Qt::Key_E, appInstance, SLOT(exportVoxels()));
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::ImportVoxels, Qt::CTRL | Qt::Key_I, appInstance, SLOT(importVoxels()));
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::CutVoxels, Qt::CTRL | Qt::Key_X, appInstance, SLOT(cutVoxels()));
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::CopyVoxels, Qt::CTRL | Qt::Key_C, appInstance, SLOT(copyVoxels()));
|
|
||||||
addActionToQMenuAndActionHash(voxelMenu, MenuOption::PasteVoxels, Qt::CTRL | Qt::Key_V, appInstance, SLOT(pasteVoxels()));
|
|
||||||
|
|
||||||
QMenu* debugMenu = addMenu("Debug");
|
|
||||||
|
|
||||||
QMenu* frustumMenu = debugMenu->addMenu("View Frustum Debugging Tools");
|
|
||||||
|
QMenu* viewMenu = addMenu("View");
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu,
|
||||||
|
MenuOption::Fullscreen,
|
||||||
|
Qt::Key_F,
|
||||||
|
false,
|
||||||
|
appInstance,
|
||||||
|
SLOT(setFullscreen(bool)));
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::FirstPerson, Qt::Key_P, true);
|
||||||
|
|
||||||
|
addActionToQMenuAndActionHash(viewMenu,
|
||||||
|
MenuOption::IncreaseAvatarSize,
|
||||||
|
Qt::Key_Plus,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(increaseSize()));
|
||||||
|
addActionToQMenuAndActionHash(viewMenu,
|
||||||
|
MenuOption::DecreaseAvatarSize,
|
||||||
|
Qt::Key_Minus,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(decreaseSize()));
|
||||||
|
addActionToQMenuAndActionHash(viewMenu,
|
||||||
|
MenuOption::ResetAvatarSize,
|
||||||
|
0,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(resetSize()));
|
||||||
|
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Mirror, Qt::Key_H);
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu,
|
||||||
|
MenuOption::SkeletonTracking,
|
||||||
|
0,
|
||||||
|
false,
|
||||||
|
appInstance->getWebcam(),
|
||||||
|
SLOT(setSkeletonTrackingOn(bool)));
|
||||||
|
|
||||||
|
addDisabledActionAndSeparator(viewMenu, "Stats");
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Stats, Qt::Key_Slash);
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Log, Qt::CTRL | Qt::Key_L);
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Oscilloscope, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(viewMenu, MenuOption::Bandwidth, 0, true);
|
||||||
|
addActionToQMenuAndActionHash(viewMenu, MenuOption::BandwidthDetails, 0, this, SLOT(bandwidthDetails()));
|
||||||
|
addActionToQMenuAndActionHash(viewMenu, MenuOption::VoxelStats, 0, this, SLOT(voxelStatsDetails()));
|
||||||
|
|
||||||
|
QMenu* developerMenu = addMenu("Developer");
|
||||||
|
addDisabledActionAndSeparator(developerMenu, "Rendering");
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::Voxels,
|
||||||
|
Qt::SHIFT | Qt::Key_V,
|
||||||
|
true,
|
||||||
|
appInstance,
|
||||||
|
SLOT(setRenderVoxels(bool)));
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::VoxelTextures);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AmbientOcclusion);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Stars, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Atmosphere, Qt::SHIFT | Qt::Key_A, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::GroundPlane, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::Avatars, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::AvatarAsBalls);
|
||||||
|
|
||||||
|
addActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::VoxelMode,
|
||||||
|
0,
|
||||||
|
appInstance->getAvatar()->getVoxels(),
|
||||||
|
SLOT(cycleMode()));
|
||||||
|
|
||||||
|
addActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::FaceMode,
|
||||||
|
0,
|
||||||
|
&appInstance->getAvatar()->getHead().getFace(),
|
||||||
|
SLOT(cycleRenderMode()));
|
||||||
|
|
||||||
|
addActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::GlowMode,
|
||||||
|
0,
|
||||||
|
appInstance->getGlowEffect(),
|
||||||
|
SLOT(cycleRenderMode()));
|
||||||
|
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::LookAtVectors, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::LookAtIndicator, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::FrameTimer);
|
||||||
|
|
||||||
|
addDisabledActionAndSeparator(developerMenu, "Testing");
|
||||||
|
|
||||||
|
QMenu* frustumMenu = developerMenu->addMenu("View Frustum Debugging Tools");
|
||||||
addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F);
|
addCheckableActionToQMenuAndActionHash(frustumMenu, MenuOption::DisplayFrustum, Qt::SHIFT | Qt::Key_F);
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(frustumMenu,
|
addActionToQMenuAndActionHash(frustumMenu,
|
||||||
|
@ -262,14 +253,14 @@ Menu::Menu() :
|
||||||
SLOT(cycleFrustumRenderMode()));
|
SLOT(cycleFrustumRenderMode()));
|
||||||
updateFrustumRenderModeAction();
|
updateFrustumRenderModeAction();
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(debugMenu, MenuOption::RunTimingTests, 0, this, SLOT(runTests()));
|
addActionToQMenuAndActionHash(developerMenu, MenuOption::RunTimingTests, 0, this, SLOT(runTests()));
|
||||||
addActionToQMenuAndActionHash(debugMenu,
|
addActionToQMenuAndActionHash(developerMenu,
|
||||||
MenuOption::TreeStats,
|
MenuOption::TreeStats,
|
||||||
Qt::SHIFT | Qt::Key_S,
|
Qt::SHIFT | Qt::Key_S,
|
||||||
appInstance->getVoxels(),
|
appInstance->getVoxels(),
|
||||||
SLOT(collectStatsForTreesAndVBOs()));
|
SLOT(collectStatsForTreesAndVBOs()));
|
||||||
|
|
||||||
QMenu* renderDebugMenu = debugMenu->addMenu("Render Debugging Tools");
|
QMenu* renderDebugMenu = developerMenu->addMenu("Render Debugging Tools");
|
||||||
addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings);
|
addCheckableActionToQMenuAndActionHash(renderDebugMenu, MenuOption::PipelineWarnings);
|
||||||
|
|
||||||
addActionToQMenuAndActionHash(renderDebugMenu,
|
addActionToQMenuAndActionHash(renderDebugMenu,
|
||||||
|
@ -330,41 +321,29 @@ Menu::Menu() :
|
||||||
Qt::CTRL | Qt::Key_T,
|
Qt::CTRL | Qt::Key_T,
|
||||||
appInstance->getVoxels(),
|
appInstance->getVoxels(),
|
||||||
SLOT(trueColorize()));
|
SLOT(trueColorize()));
|
||||||
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu,
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
MenuOption::SendVoxelColors,
|
MenuOption::Webcam,
|
||||||
0,
|
0,
|
||||||
true,
|
false,
|
||||||
appInstance->getAvatar(),
|
appInstance->getWebcam(),
|
||||||
SLOT(setWantColor(bool)));
|
SLOT(setEnabled(bool)));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu,
|
addActionToQMenuAndActionHash(developerMenu,
|
||||||
MenuOption::LowRes,
|
MenuOption::WebcamMode,
|
||||||
|
0,
|
||||||
|
appInstance->getWebcam()->getGrabber(),
|
||||||
|
SLOT(cycleVideoSendMode()));
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::WebcamTexture,
|
||||||
0,
|
0,
|
||||||
true,
|
false,
|
||||||
appInstance->getAvatar(),
|
appInstance->getWebcam()->getGrabber(),
|
||||||
SLOT(setWantLowResMoving(bool)));
|
SLOT(setDepthOnly(bool)));
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu,
|
QMenu* audioDebugMenu = developerMenu->addMenu("Audio Debugging Tools");
|
||||||
MenuOption::DeltaSending,
|
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoAudio);
|
||||||
0,
|
|
||||||
true,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(setWantDelta(bool)));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu,
|
|
||||||
MenuOption::OcclusionCulling,
|
|
||||||
Qt::SHIFT | Qt::Key_C,
|
|
||||||
true,
|
|
||||||
appInstance->getAvatar(),
|
|
||||||
SLOT(setWantOcclusionCulling(bool)));
|
|
||||||
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O);
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P);
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::SimulateLeapHand);
|
|
||||||
addCheckableActionToQMenuAndActionHash(debugMenu, MenuOption::TestRaveGlove);
|
|
||||||
|
|
||||||
QMenu* audioDebugMenu = debugMenu->addMenu("Audio Debugging Tools");
|
|
||||||
addActionToQMenuAndActionHash(audioDebugMenu,
|
addActionToQMenuAndActionHash(audioDebugMenu,
|
||||||
MenuOption::ListenModeNormal,
|
MenuOption::ListenModeNormal,
|
||||||
Qt::CTRL | Qt::Key_1,
|
Qt::CTRL | Qt::Key_1,
|
||||||
|
@ -381,12 +360,46 @@ Menu::Menu() :
|
||||||
appInstance,
|
appInstance,
|
||||||
SLOT(setListenModeSingleSource()));
|
SLOT(setListenModeSingleSource()));
|
||||||
|
|
||||||
QMenu* settingsMenu = addMenu("Settings");
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::TestPing, 0, true);
|
||||||
addCheckableActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsAutosave, 0, true);
|
|
||||||
addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsLoad, 0, this, SLOT(loadSettings()));
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsSave, 0, this, SLOT(saveSettings()));
|
MenuOption::SendVoxelColors,
|
||||||
addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsImport, 0, this, SLOT(importSettings()));
|
0,
|
||||||
addActionToQMenuAndActionHash(settingsMenu, MenuOption::SettingsExport, 0, this, SLOT(exportSettings()));
|
true,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(setWantColor(bool)));
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::LowRes,
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(setWantLowResMoving(bool)));
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::DeltaSending,
|
||||||
|
0,
|
||||||
|
true,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(setWantDelta(bool)));
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu,
|
||||||
|
MenuOption::OcclusionCulling,
|
||||||
|
Qt::SHIFT | Qt::Key_C,
|
||||||
|
true,
|
||||||
|
appInstance->getAvatar(),
|
||||||
|
SLOT(setWantOcclusionCulling(bool)));
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::CoverageMap, Qt::SHIFT | Qt::CTRL | Qt::Key_O);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::CoverageMapV2, Qt::SHIFT | Qt::CTRL | Qt::Key_P);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::SimulateLeapHand);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::TestRaveGlove);
|
||||||
|
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::GyroLook, 0, true);
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::HeadMouse);
|
||||||
|
|
||||||
|
addDisabledActionAndSeparator(developerMenu, "Voxels");
|
||||||
|
addCheckableActionToQMenuAndActionHash(developerMenu, MenuOption::DestructiveAddVoxel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::loadSettings(QSettings* settings) {
|
void Menu::loadSettings(QSettings* settings) {
|
||||||
|
@ -553,6 +566,11 @@ void Menu::handleViewFrustumOffsetKeyModifier(int key) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Menu::addDisabledActionAndSeparator(QMenu* destinationMenu, const QString& actionName) {
|
||||||
|
destinationMenu->addSeparator();
|
||||||
|
(destinationMenu->addAction(actionName))->setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu,
|
QAction* Menu::addActionToQMenuAndActionHash(QMenu* destinationMenu,
|
||||||
const QString actionName,
|
const QString actionName,
|
||||||
const QKeySequence& shortcut,
|
const QKeySequence& shortcut,
|
||||||
|
|
|
@ -81,6 +81,8 @@ private:
|
||||||
void scanMenuBar(settingsAction modifySetting, QSettings* set);
|
void scanMenuBar(settingsAction modifySetting, QSettings* set);
|
||||||
void scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set);
|
void scanMenu(QMenu* menu, settingsAction modifySetting, QSettings* set);
|
||||||
|
|
||||||
|
/// helper method to have separators with labels that are also compatible with OS X
|
||||||
|
void addDisabledActionAndSeparator(QMenu* destinationMenu, const QString& actionName);
|
||||||
QAction* addActionToQMenuAndActionHash(QMenu* destinationMenu,
|
QAction* addActionToQMenuAndActionHash(QMenu* destinationMenu,
|
||||||
const QString actionName,
|
const QString actionName,
|
||||||
const QKeySequence& shortcut = 0,
|
const QKeySequence& shortcut = 0,
|
||||||
|
@ -116,10 +118,10 @@ namespace MenuOption {
|
||||||
const QString BandwidthDetails = "Bandwidth Details";
|
const QString BandwidthDetails = "Bandwidth Details";
|
||||||
const QString CheckForUpdates = "Check for Updates...";
|
const QString CheckForUpdates = "Check for Updates...";
|
||||||
const QString Collisions = "Collisions";
|
const QString Collisions = "Collisions";
|
||||||
const QString CopyVoxels = "Copy Voxels";
|
const QString CopyVoxels = "Copy";
|
||||||
const QString CoverageMap = "Render Coverage Map";
|
const QString CoverageMap = "Render Coverage Map";
|
||||||
const QString CoverageMapV2 = "Render Coverage Map V2";
|
const QString CoverageMapV2 = "Render Coverage Map V2";
|
||||||
const QString CutVoxels = "Cut Voxels";
|
const QString CutVoxels = "Cut";
|
||||||
const QString DecreaseAvatarSize = "Decrease Avatar Size";
|
const QString DecreaseAvatarSize = "Decrease Avatar Size";
|
||||||
const QString DecreaseVoxelSize = "Decrease Voxel Size";
|
const QString DecreaseVoxelSize = "Decrease Voxel Size";
|
||||||
const QString DestructiveAddVoxel = "Create Voxel is Destructive";
|
const QString DestructiveAddVoxel = "Create Voxel is Destructive";
|
||||||
|
@ -161,7 +163,7 @@ namespace MenuOption {
|
||||||
const QString OcclusionCulling = "Occlusion Culling";
|
const QString OcclusionCulling = "Occlusion Culling";
|
||||||
const QString Oscilloscope = "Audio Oscilloscope";
|
const QString Oscilloscope = "Audio Oscilloscope";
|
||||||
const QString Pair = "Pair";
|
const QString Pair = "Pair";
|
||||||
const QString PasteVoxels = "Paste Voxels";
|
const QString PasteVoxels = "Paste";
|
||||||
const QString PipelineWarnings = "Show Render Pipeline Warnings";
|
const QString PipelineWarnings = "Show Render Pipeline Warnings";
|
||||||
const QString Preferences = "Preferences...";
|
const QString Preferences = "Preferences...";
|
||||||
const QString RandomizeVoxelColors = "Randomize Voxel TRUE Colors";
|
const QString RandomizeVoxelColors = "Randomize Voxel TRUE Colors";
|
||||||
|
@ -169,9 +171,6 @@ namespace MenuOption {
|
||||||
const QString ResetSwatchColors = "Reset Swatch Colors";
|
const QString ResetSwatchColors = "Reset Swatch Colors";
|
||||||
const QString RunTimingTests = "Run Timing Tests";
|
const QString RunTimingTests = "Run Timing Tests";
|
||||||
const QString SendVoxelColors = "Colored Voxels";
|
const QString SendVoxelColors = "Colored Voxels";
|
||||||
const QString SettingsAutosave = "Autosave";
|
|
||||||
const QString SettingsLoad = "Load Settings";
|
|
||||||
const QString SettingsSave = "Save Settings";
|
|
||||||
const QString SettingsImport = "Import Settings";
|
const QString SettingsImport = "Import Settings";
|
||||||
const QString SettingsExport = "Export Settings";
|
const QString SettingsExport = "Export Settings";
|
||||||
const QString ShowTrueColors = "Show TRUE Colors";
|
const QString ShowTrueColors = "Show TRUE Colors";
|
||||||
|
|
Loading…
Reference in a new issue