mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 04:04:13 +02:00
Still working on menus
This commit is contained in:
parent
d68d13489d
commit
1d316a1872
5 changed files with 334 additions and 327 deletions
|
@ -87,11 +87,11 @@ void Bookmarks::persistToFile() {
|
|||
void Bookmarks::setupMenus(const QString & parentMenu) {
|
||||
// Add menus/actions
|
||||
Menu * menu = Menu::getInstance();
|
||||
menu->addMenuItem(parentMenu, MenuOption::BookmarkLocation, [this] {
|
||||
menu->addItem(parentMenu, MenuOption::BookmarkLocation, [this] {
|
||||
bookmarkLocation();
|
||||
});
|
||||
menu->addMenu(parentMenu, MenuOption::Bookmarks);
|
||||
menu->addMenuItem(parentMenu, MenuOption::DeleteBookmark, [this] {
|
||||
menu->addItem(parentMenu, MenuOption::DeleteBookmark, [this] {
|
||||
deleteBookmark();
|
||||
});
|
||||
|
||||
|
@ -178,19 +178,19 @@ void Bookmarks::deleteBookmark() {
|
|||
|
||||
void Bookmarks::enableMenuItems(bool enabled) {
|
||||
Menu* menu = Menu::getInstance();
|
||||
menu->enableMenuItem(MenuOption::Bookmarks, enabled);
|
||||
menu->enableMenuItem(MenuOption::DeleteBookmark, enabled);
|
||||
menu->enableItem(MenuOption::Bookmarks, enabled);
|
||||
menu->enableItem(MenuOption::DeleteBookmark, enabled);
|
||||
}
|
||||
|
||||
void Bookmarks::addLocationToMenu(QString& name, QString& address) {
|
||||
|
||||
Menu::getInstance()->addMenuItem(MenuOption::Bookmarks, name, [=] {
|
||||
Menu::getInstance()->addItem(MenuOption::Bookmarks, name, [=] {
|
||||
DependencyManager::get<AddressManager>()->handleLookupString(address);
|
||||
});
|
||||
}
|
||||
|
||||
void Bookmarks::removeLocationFromMenu(QString& name) {
|
||||
Menu::getInstance()->removeMenuItem(name);
|
||||
Menu::getInstance()->removeItem(name);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
#include "InterfaceLogging.h"
|
||||
|
||||
#include "Menu.h"
|
||||
#include "Util.h"
|
||||
|
||||
// Proxy object to simplify porting over
|
||||
HifiAction::HifiAction(const QString & menuOption) : _menuOption(menuOption) {
|
||||
|
@ -57,28 +58,15 @@ void HifiAction::setChecked(bool checked) {
|
|||
}
|
||||
|
||||
void HifiAction::setVisible(bool visible) {
|
||||
QObject* result = Menu::getInstance()->findMenuObject(_menuOption);
|
||||
if (result) {
|
||||
result->setProperty("visible", visible);
|
||||
}
|
||||
return Menu::getInstance()->setItemVisible(_menuOption);
|
||||
}
|
||||
|
||||
const QString & HifiAction::shortcut() const {
|
||||
static const QString NONE;
|
||||
QObject* result = Menu::getInstance()->findMenuObject(_menuOption);
|
||||
if (!result) {
|
||||
return NONE;
|
||||
}
|
||||
QObject* shortcut = result->property("shortcut").value<QObject*>();
|
||||
if (!shortcut) {
|
||||
return NONE;
|
||||
}
|
||||
shortcut->dumpObjectInfo();
|
||||
return NONE;
|
||||
QString HifiAction::shortcut() const {
|
||||
return Menu::getInstance()->getItemShortcut(_menuOption);
|
||||
}
|
||||
|
||||
void HifiAction::setText(const QString & text) {
|
||||
Menu::getInstance()->setText(_menuOption, text);
|
||||
Menu::getInstance()->setItemText(_menuOption, text);
|
||||
}
|
||||
|
||||
void HifiAction::setTriggerAction(std::function<void()> f) {
|
||||
|
@ -116,7 +104,6 @@ Menu* Menu::getInstance() {
|
|||
Menu::Menu(QQuickItem * parent) : HifiMenu(parent) {
|
||||
}
|
||||
|
||||
|
||||
void Menu::init() {
|
||||
auto dialogsManager = DependencyManager::get<DialogsManager>();
|
||||
AccountManager& accountManager = AccountManager::getInstance();
|
||||
|
@ -125,7 +112,7 @@ void Menu::init() {
|
|||
static const QString FILE_MENU{ "File" };
|
||||
addMenu(ROOT_MENU, FILE_MENU);
|
||||
{
|
||||
addMenuItem(FILE_MENU, MenuOption::Login);
|
||||
addItem(FILE_MENU, MenuOption::Login);
|
||||
// connect to the appropriate signal of the AccountManager so that we can change the Login/Logout menu item
|
||||
connect(&accountManager, &AccountManager::profileChanged,
|
||||
dialogsManager.data(), &DialogsManager::toggleLoginDialog);
|
||||
|
@ -141,22 +128,22 @@ void Menu::init() {
|
|||
static const QString SCRIPTS_MENU{ "Scripts" };
|
||||
addMenu(FILE_MENU, SCRIPTS_MENU);
|
||||
//Qt::CTRL | Qt::Key_O
|
||||
addMenuItem(SCRIPTS_MENU, MenuOption::LoadScript, [=] {
|
||||
addItem(SCRIPTS_MENU, MenuOption::LoadScript, [=] {
|
||||
qApp->loadDialog();
|
||||
});
|
||||
//Qt::CTRL | Qt::SHIFT | Qt::Key_O
|
||||
addMenuItem(SCRIPTS_MENU, MenuOption::LoadScriptURL, [=] {
|
||||
addItem(SCRIPTS_MENU, MenuOption::LoadScriptURL, [=] {
|
||||
qApp->loadScriptURLDialog();
|
||||
});
|
||||
addMenuItem(SCRIPTS_MENU, MenuOption::StopAllScripts, [=] {
|
||||
addItem(SCRIPTS_MENU, MenuOption::StopAllScripts, [=] {
|
||||
qApp->stopAllScripts();
|
||||
});
|
||||
//Qt::CTRL | Qt::Key_R,
|
||||
addMenuItem(SCRIPTS_MENU, MenuOption::ReloadAllScripts, [=] {
|
||||
addItem(SCRIPTS_MENU, MenuOption::ReloadAllScripts, [=] {
|
||||
qApp->reloadAllScripts();
|
||||
});
|
||||
// Qt::CTRL | Qt::Key_J,
|
||||
addMenuItem(SCRIPTS_MENU, MenuOption::RunningScripts, [=] {
|
||||
addItem(SCRIPTS_MENU, MenuOption::RunningScripts, [=] {
|
||||
qApp->toggleRunningScriptsWidget();
|
||||
});
|
||||
}
|
||||
|
@ -166,15 +153,15 @@ void Menu::init() {
|
|||
addMenu(FILE_MENU, LOCATION_MENU);
|
||||
qApp->getBookmarks()->setupMenus(LOCATION_MENU);
|
||||
//Qt::CTRL | Qt::Key_L
|
||||
addMenuItem(LOCATION_MENU, MenuOption::AddressBar, [=] {
|
||||
addItem(LOCATION_MENU, MenuOption::AddressBar, [=] {
|
||||
auto dialogsManager = DependencyManager::get<DialogsManager>();
|
||||
dialogsManager->toggleAddressBar();
|
||||
});
|
||||
addMenuItem(LOCATION_MENU, MenuOption::CopyAddress, [=] {
|
||||
addItem(LOCATION_MENU, MenuOption::CopyAddress, [=] {
|
||||
auto addressManager = DependencyManager::get<AddressManager>();
|
||||
addressManager->copyAddress();
|
||||
});
|
||||
addMenuItem(LOCATION_MENU, MenuOption::CopyPath, [=] {
|
||||
addItem(LOCATION_MENU, MenuOption::CopyPath, [=] {
|
||||
auto addressManager = DependencyManager::get<AddressManager>();
|
||||
addressManager->copyPath();
|
||||
});
|
||||
|
@ -182,7 +169,7 @@ void Menu::init() {
|
|||
|
||||
// Qt::CTRL | Qt::Key_Q
|
||||
// QAction::QuitRole
|
||||
addMenuItem(FILE_MENU, MenuOption::Quit, [=] {
|
||||
addItem(FILE_MENU, MenuOption::Quit, [=] {
|
||||
qApp->quit();
|
||||
});
|
||||
}
|
||||
|
@ -204,10 +191,10 @@ void Menu::init() {
|
|||
|
||||
// Qt::CTRL | Qt::Key_Comma
|
||||
// QAction::PreferencesRole
|
||||
addMenuItem(EDIT_MENU, MenuOption::Preferences, [=] {
|
||||
addItem(EDIT_MENU, MenuOption::Preferences, [=] {
|
||||
dialogsManager->editPreferences();
|
||||
});
|
||||
addMenuItem(EDIT_MENU, MenuOption::Animations, [=] {
|
||||
addItem(EDIT_MENU, MenuOption::Animations, [=] {
|
||||
dialogsManager->editAnimations();
|
||||
});
|
||||
}
|
||||
|
@ -219,65 +206,60 @@ void Menu::init() {
|
|||
#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
|
||||
auto speechRecognizer = DependencyManager::get<SpeechRecognizer>();
|
||||
//Qt::CTRL | Qt::SHIFT | Qt::Key_C
|
||||
addMenuItem(TOOLS_MENU, MenuOption::ControlWithSpeech);
|
||||
addItem(TOOLS_MENU, MenuOption::ControlWithSpeech);
|
||||
setChecked(MenuOption::ControlWithSpeech, speechRecognizer->getEnabled());
|
||||
connect(speechRecognizer.data(), &SpeechRecognizer::enabledUpdated, [=] {
|
||||
setChecked(MenuOption::ControlWithSpeech, speechRecognizer->getEnabled());
|
||||
});
|
||||
#endif
|
||||
// Qt::ALT | Qt::Key_S,
|
||||
addMenuItem(TOOLS_MENU, MenuOption::ScriptEditor, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::ScriptEditor, [=] {
|
||||
dialogsManager->showScriptEditor();
|
||||
});
|
||||
// QML Qt::Key_Backslash,
|
||||
addMenuItem(TOOLS_MENU, MenuOption::Chat, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::Chat, [=] {
|
||||
dialogsManager->showIRCLink();
|
||||
});
|
||||
addMenuItem(TOOLS_MENU, MenuOption::AddRemoveFriends, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::AddRemoveFriends, [=] {
|
||||
qApp->showFriendsWindow();
|
||||
});
|
||||
|
||||
#if 0
|
||||
QMenu* visibilityMenu = toolsMenu->addMenu("I Am Visible To");
|
||||
{
|
||||
QActionGroup* visibilityGroup = new QActionGroup(toolsMenu);
|
||||
static const QString VIZ_MENU{ "I Am Visible To" };
|
||||
addMenu(TOOLS_MENU, VIZ_MENU);
|
||||
auto discoverabilityManager = DependencyManager::get<DiscoverabilityManager>();
|
||||
|
||||
QAction* visibleToEveryone = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToEveryone,
|
||||
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::All,
|
||||
discoverabilityManager.data(), SLOT(setVisibility()));
|
||||
visibilityGroup->addAction(visibleToEveryone);
|
||||
|
||||
QAction* visibleToFriends = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToFriends,
|
||||
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::Friends,
|
||||
discoverabilityManager.data(), SLOT(setVisibility()));
|
||||
visibilityGroup->addAction(visibleToFriends);
|
||||
|
||||
QAction* visibleToNoOne = addCheckableActionToQMenuAndActionHash(visibilityMenu, MenuOption::VisibleToNoOne,
|
||||
0, discoverabilityManager->getDiscoverabilityMode() == Discoverability::None,
|
||||
discoverabilityManager.data(), SLOT(setVisibility()));
|
||||
visibilityGroup->addAction(visibleToNoOne);
|
||||
// FIXME group
|
||||
addCheckableItem(VIZ_MENU, MenuOption::VisibleToEveryone,
|
||||
discoverabilityManager->getDiscoverabilityMode() == Discoverability::All,
|
||||
[=](bool) { discoverabilityManager->setVisibility(); });
|
||||
addCheckableItem(VIZ_MENU, MenuOption::VisibleToFriends,
|
||||
discoverabilityManager->getDiscoverabilityMode() == Discoverability::Friends,
|
||||
[=](bool) { discoverabilityManager->setVisibility(); });
|
||||
addCheckableItem(VIZ_MENU, MenuOption::VisibleToNoOne,
|
||||
discoverabilityManager->getDiscoverabilityMode() == Discoverability::None,
|
||||
[=](bool) { discoverabilityManager->setVisibility(); });
|
||||
|
||||
connect(discoverabilityManager.data(), &DiscoverabilityManager::discoverabilityModeChanged,
|
||||
discoverabilityManager.data(), &DiscoverabilityManager::visibilityChanged);
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
//Qt::CTRL | Qt::ALT | Qt::Key_T,
|
||||
addMenuItem(TOOLS_MENU, MenuOption::ToolWindow, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::ToolWindow, [=] {
|
||||
// dialogsManager->toggleToolWindow();
|
||||
});
|
||||
|
||||
//Qt::CTRL | Qt::ALT | Qt::Key_J,
|
||||
addMenuItem(TOOLS_MENU, MenuOption::Console, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::Console, [=] {
|
||||
DependencyManager::get<StandAloneJSConsole>()->toggleConsole();
|
||||
});
|
||||
|
||||
// QML Qt::Key_Apostrophe,
|
||||
addMenuItem(TOOLS_MENU, MenuOption::ResetSensors, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::ResetSensors, [=] {
|
||||
qApp->resetSensors();
|
||||
});
|
||||
|
||||
addMenuItem(TOOLS_MENU, MenuOption::PackageModel, [=] {
|
||||
addItem(TOOLS_MENU, MenuOption::PackageModel, [=] {
|
||||
qApp->packageModel();
|
||||
});
|
||||
}
|
||||
|
@ -290,35 +272,35 @@ void Menu::init() {
|
|||
static const QString SIZE_MENU{ "Size" };
|
||||
addMenu(AVATAR_MENU, SIZE_MENU);
|
||||
// QML Qt::Key_Plus,
|
||||
addMenuItem(SIZE_MENU, MenuOption::IncreaseAvatarSize, [=] {
|
||||
addItem(SIZE_MENU, MenuOption::IncreaseAvatarSize, [=] {
|
||||
avatar->increaseSize();
|
||||
});
|
||||
// QML Qt::Key_Minus,
|
||||
addMenuItem(SIZE_MENU, MenuOption::DecreaseAvatarSize, [=] {
|
||||
addItem(SIZE_MENU, MenuOption::DecreaseAvatarSize, [=] {
|
||||
avatar->decreaseSize();
|
||||
});
|
||||
// QML Qt::Key_Equal,
|
||||
addMenuItem(SIZE_MENU, MenuOption::ResetAvatarSize, [=] {
|
||||
addItem(SIZE_MENU, MenuOption::ResetAvatarSize, [=] {
|
||||
avatar->resetSize();
|
||||
});
|
||||
|
||||
addMenuItem(SIZE_MENU, MenuOption::ResetAvatarSize, [=] {
|
||||
addItem(SIZE_MENU, MenuOption::ResetAvatarSize, [=] {
|
||||
avatar->resetSize();
|
||||
});
|
||||
}
|
||||
|
||||
//Qt::CTRL | Qt::SHIFT | Qt::Key_K
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::KeyboardMotorControl, true, [=](bool) {
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::KeyboardMotorControl, true, [=](bool) {
|
||||
avatar->updateMotionBehavior();
|
||||
});
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::ScriptedMotorControl, true);
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::NamesAboveHeads, true);
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::GlowWhenSpeaking, true);
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::BlueSpeechSphere, true);
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::EnableCharacterController, true, [=](bool) {
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::ScriptedMotorControl, true);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::NamesAboveHeads, true);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::GlowWhenSpeaking, true);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::BlueSpeechSphere, true);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::EnableCharacterController, true, [=](bool) {
|
||||
avatar->updateMotionBehavior();
|
||||
});
|
||||
addCheckableMenuItem(AVATAR_MENU, MenuOption::ShiftHipsForIdleAnimations, false, [=](bool) {
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::ShiftHipsForIdleAnimations, false, [=](bool) {
|
||||
avatar->updateMotionBehavior();
|
||||
});
|
||||
}
|
||||
|
@ -329,57 +311,58 @@ void Menu::init() {
|
|||
|
||||
// Mac Qt::CTRL | Qt::META | Qt::Key_F,
|
||||
// Win32/Linux Qt::CTRL | Qt::Key_F,
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::Fullscreen, false, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::Fullscreen, false, [=](bool checked) {
|
||||
// qApp->setFullscreen(checked);
|
||||
});
|
||||
// QML Qt::Key_P,
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::FirstPerson, true, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::FirstPerson, true, [=](bool checked) {
|
||||
// qApp->cameraMenuChanged();
|
||||
});
|
||||
//QML Qt::SHIFT | Qt::Key_H,
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::Mirror, true);
|
||||
addCheckableItem(VIEW_MENU, MenuOption::Mirror, true);
|
||||
|
||||
// QML Qt::Key_H,
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::FullscreenMirror, true, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::FullscreenMirror, true, [=](bool checked) {
|
||||
// qApp->cameraMenuChanged();
|
||||
});
|
||||
|
||||
// Mac Qt::META | Qt::Key_H,
|
||||
// Win32/Linux Qt::CTRL | Qt::Key_H,
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::HMDTools, false, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::HMDTools, false, [=](bool checked) {
|
||||
dialogsManager->hmdTools(checked);
|
||||
});
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::EnableVRMode, false, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::EnableVRMode, false, [=](bool checked) {
|
||||
// qApp->setEnableVRMode(checked);
|
||||
});
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::Enable3DTVMode, false, [=](bool checked) {
|
||||
addCheckableItem(VIEW_MENU, MenuOption::Enable3DTVMode, false, [=](bool checked) {
|
||||
// qApp->setEnable3DTVMode(checked);
|
||||
});
|
||||
|
||||
{
|
||||
static const QString BORDER_MENU{ "View" };
|
||||
static const QString BORDER_MENU{ "Server Borders" };
|
||||
addMenu(VIEW_MENU, BORDER_MENU);
|
||||
// Qt::CTRL | Qt::SHIFT | Qt::Key_1
|
||||
addCheckableMenuItem(BORDER_MENU, MenuOption::ShowBordersEntityNodes, false, [=](bool checked) {
|
||||
addCheckableItem(BORDER_MENU, MenuOption::ShowBordersEntityNodes, false, [=](bool checked) {
|
||||
qApp->getNodeBoundsDisplay().setShowEntityNodes(checked);
|
||||
});
|
||||
}
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::OffAxisProjection, false);
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::TurnWithHead, false);
|
||||
addCheckableItem(VIEW_MENU, MenuOption::OffAxisProjection, false);
|
||||
addCheckableItem(VIEW_MENU, MenuOption::TurnWithHead, false);
|
||||
// QML Qt::Key_Slash
|
||||
addCheckableMenuItem(VIEW_MENU, MenuOption::Stats, false);
|
||||
addCheckableItem(VIEW_MENU, MenuOption::Stats, false);
|
||||
|
||||
// Qt::CTRL | Qt::SHIFT | Qt::Key_L
|
||||
addMenuItem(VIEW_MENU, MenuOption::Log, [=] {
|
||||
addItem(VIEW_MENU, MenuOption::Log, [=] {
|
||||
qApp->toggleLogDialog();
|
||||
});
|
||||
addMenuItem(VIEW_MENU, MenuOption::BandwidthDetails, [=] {
|
||||
addItem(VIEW_MENU, MenuOption::BandwidthDetails, [=] {
|
||||
dialogsManager->bandwidthDetails();
|
||||
});
|
||||
addMenuItem(VIEW_MENU, MenuOption::OctreeStats, [=] {
|
||||
addItem(VIEW_MENU, MenuOption::OctreeStats, [=] {
|
||||
dialogsManager->octreeStatsDetails();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
static const QString DEV_MENU{ "Developer" };
|
||||
|
@ -388,9 +371,9 @@ void Menu::init() {
|
|||
static const QString RENDER_MENU{ "Render" };
|
||||
addMenu(DEV_MENU, RENDER_MENU);
|
||||
// QML Qt::SHIFT | Qt::Key_A,
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::Atmosphere, true);
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::AmbientOcclusion);
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::DontFadeOnOctreeServerChanges);
|
||||
addCheckableItem(RENDER_MENU, MenuOption::Atmosphere, true);
|
||||
addCheckableItem(RENDER_MENU, MenuOption::AmbientOcclusion);
|
||||
addCheckableItem(RENDER_MENU, MenuOption::DontFadeOnOctreeServerChanges);
|
||||
{
|
||||
static const QString LIGHT_MENU{ MenuOption::RenderAmbientLight };
|
||||
addMenu(RENDER_MENU, LIGHT_MENU);
|
||||
|
@ -408,7 +391,7 @@ void Menu::init() {
|
|||
MenuOption::RenderAmbientLight9,
|
||||
};
|
||||
foreach(QString option, LIGHTS) {
|
||||
addCheckableMenuItem(LIGHT_MENU, option);
|
||||
addCheckableItem(LIGHT_MENU, option);
|
||||
// FIXME
|
||||
// setExclusiveGroup()
|
||||
}
|
||||
|
@ -417,22 +400,22 @@ void Menu::init() {
|
|||
{
|
||||
static const QString SHADOWS_MENU{ "Shadows" };
|
||||
addMenu(RENDER_MENU, SHADOWS_MENU);
|
||||
addCheckableMenuItem(SHADOWS_MENU, "No Shadows", true);
|
||||
addCheckableMenuItem(SHADOWS_MENU, MenuOption::SimpleShadows);
|
||||
addCheckableMenuItem(SHADOWS_MENU, MenuOption::CascadedShadows);
|
||||
addCheckableItem(SHADOWS_MENU, "No Shadows", true);
|
||||
addCheckableItem(SHADOWS_MENU, MenuOption::SimpleShadows);
|
||||
addCheckableItem(SHADOWS_MENU, MenuOption::CascadedShadows);
|
||||
}
|
||||
{
|
||||
static const QString FRAMERATE_MENU{ MenuOption::RenderTargetFramerate };
|
||||
addMenu(RENDER_MENU, FRAMERATE_MENU);
|
||||
//framerateGroup->setExclusive(true);
|
||||
addCheckableMenuItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerateUnlimited, true);
|
||||
addCheckableMenuItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate60);
|
||||
addCheckableMenuItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate50);
|
||||
addCheckableMenuItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate40);
|
||||
addCheckableMenuItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate30);
|
||||
addCheckableItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerateUnlimited, true);
|
||||
addCheckableItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate60);
|
||||
addCheckableItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate50);
|
||||
addCheckableItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate40);
|
||||
addCheckableItem(FRAMERATE_MENU, MenuOption::RenderTargetFramerate30);
|
||||
}
|
||||
#if !defined(Q_OS_MAC)
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::RenderTargetFramerateVSyncOn, true, [](bool checked) {
|
||||
addCheckableItem(RENDER_MENU, MenuOption::RenderTargetFramerateVSyncOn, true, [](bool checked) {
|
||||
qApp->setVSyncEnabled();
|
||||
});
|
||||
#endif
|
||||
|
@ -440,223 +423,211 @@ void Menu::init() {
|
|||
static const QString RES_MENU{ MenuOption::RenderResolution };
|
||||
addMenu(RENDER_MENU, RES_MENU);
|
||||
// resolutionGroup->setExclusive(true);
|
||||
addCheckableMenuItem(RES_MENU, MenuOption::RenderResolutionOne, true);
|
||||
addCheckableMenuItem(RES_MENU, MenuOption::RenderResolutionTwoThird);
|
||||
addCheckableMenuItem(RES_MENU, MenuOption::RenderResolutionHalf);
|
||||
addCheckableMenuItem(RES_MENU, MenuOption::RenderResolutionThird);
|
||||
addCheckableMenuItem(RES_MENU, MenuOption::RenderResolutionQuarter);
|
||||
addCheckableItem(RES_MENU, MenuOption::RenderResolutionOne, true);
|
||||
addCheckableItem(RES_MENU, MenuOption::RenderResolutionTwoThird);
|
||||
addCheckableItem(RES_MENU, MenuOption::RenderResolutionHalf);
|
||||
addCheckableItem(RES_MENU, MenuOption::RenderResolutionThird);
|
||||
addCheckableItem(RES_MENU, MenuOption::RenderResolutionQuarter);
|
||||
}
|
||||
// QML Qt::Key_Asterisk,
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::Stars, true);
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::EnableGlowEffect, true, [](bool checked){
|
||||
addCheckableItem(RENDER_MENU, MenuOption::Stars, true);
|
||||
addCheckableItem(RENDER_MENU, MenuOption::EnableGlowEffect, true, [](bool checked){
|
||||
DependencyManager::get<GlowEffect>()->toggleGlowEffect(checked);
|
||||
});
|
||||
//Qt::ALT | Qt::Key_W
|
||||
addCheckableMenuItem(RENDER_MENU, MenuOption::Wireframe);
|
||||
addCheckableItem(RENDER_MENU, MenuOption::Wireframe);
|
||||
// QML Qt::SHIFT | Qt::Key_L,
|
||||
addMenuItem(RENDER_MENU, MenuOption::LodTools, [=] {
|
||||
addItem(RENDER_MENU, MenuOption::LodTools, [=] {
|
||||
dialogsManager->lodTools();
|
||||
});
|
||||
}
|
||||
} // Developer -> Render
|
||||
|
||||
{
|
||||
static const QString AVATAR_MENU{ "Avatar Dev" };
|
||||
addMenu(DEV_MENU, AVATAR_MENU);
|
||||
setText(AVATAR_MENU, "Avatar");
|
||||
setItemText(AVATAR_MENU, "Avatar");
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
QMenu* faceTrackingMenu = avatarDebugMenu->addMenu("Face Tracking");
|
||||
{
|
||||
QActionGroup* faceTrackerGroup = new QActionGroup(avatarDebugMenu);
|
||||
|
||||
QAction* noFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::NoFaceTracking,
|
||||
0, true,
|
||||
qApp, SLOT(setActiveFaceTracker()));
|
||||
faceTrackerGroup->addAction(noFaceTracker);
|
||||
|
||||
static const QString FACE_MENU{ "Face Tracking" };
|
||||
addMenu(AVATAR_MENU, FACE_MENU);
|
||||
// FIXME GROUP
|
||||
addCheckableItem(FACE_MENU, MenuOption::NoFaceTracking, true, [](bool checked) {
|
||||
qApp->setActiveFaceTracker();
|
||||
});
|
||||
#ifdef HAVE_FACESHIFT
|
||||
QAction* faceshiftFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::Faceshift,
|
||||
0, false,
|
||||
qApp, SLOT(setActiveFaceTracker()));
|
||||
faceTrackerGroup->addAction(faceshiftFaceTracker);
|
||||
addCheckableItem(FACE_MENU, MenuOption::Faceshift, true, [](bool checked) {
|
||||
qApp->setActiveFaceTracker();
|
||||
});
|
||||
#endif
|
||||
#ifdef HAVE_DDE
|
||||
QAction* ddeFaceTracker = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseCamera,
|
||||
0, false,
|
||||
qApp, SLOT(setActiveFaceTracker()));
|
||||
faceTrackerGroup->addAction(ddeFaceTracker);
|
||||
#endif
|
||||
}
|
||||
#ifdef HAVE_DDE
|
||||
faceTrackingMenu->addSeparator();
|
||||
QAction* useAudioForMouth = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::UseAudioForMouth, 0, true);
|
||||
useAudioForMouth->setVisible(false);
|
||||
QAction* ddeFiltering = addCheckableActionToQMenuAndActionHash(faceTrackingMenu, MenuOption::VelocityFilter, 0, true);
|
||||
ddeFiltering->setVisible(false);
|
||||
addCheckableItem(FACE_MENU, MenuOption::UseCamera, true, [](bool checked) {
|
||||
qApp->setActiveFaceTracker();
|
||||
});
|
||||
#endif
|
||||
addCheckableItem(FACE_MENU, MenuOption::UseAudioForMouth, true);
|
||||
// FIXME integrate the visibility into the main API
|
||||
getActionForOption(MenuOption::UseAudioForMouth)->setVisible(false);
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderSkeletonCollisionShapes);
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderHeadCollisionShapes);
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderBoundingCollisionShapes);
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderLookAtVectors, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(avatarDebugMenu, MenuOption::RenderFocusIndicator, 0, false);
|
||||
|
||||
QMenu* handOptionsMenu = developerMenu->addMenu("Hands");
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::AlignForearmsWithWrists, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::AlternateIK, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHands, 0, true);
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::DisplayHandTargets, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(handOptionsMenu, MenuOption::ShowIKConstraints, 0, false);
|
||||
|
||||
QMenu* sixenseOptionsMenu = handOptionsMenu->addMenu("Sixense");
|
||||
addCheckableItem(FACE_MENU, MenuOption::VelocityFilter, true);
|
||||
// FIXME integrate the visibility into the main API
|
||||
getActionForOption(MenuOption::VelocityFilter)->setVisible(false);
|
||||
}
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::RenderSkeletonCollisionShapes);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::RenderHeadCollisionShapes);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::RenderBoundingCollisionShapes);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::RenderLookAtVectors);
|
||||
addCheckableItem(AVATAR_MENU, MenuOption::RenderFocusIndicator);
|
||||
{
|
||||
static const QString HANDS_MENU{ "Hands" };
|
||||
addMenu(AVATAR_MENU, HANDS_MENU);
|
||||
addCheckableItem(HANDS_MENU, MenuOption::AlignForearmsWithWrists);
|
||||
addCheckableItem(HANDS_MENU, MenuOption::AlternateIK);
|
||||
addCheckableItem(HANDS_MENU, MenuOption::DisplayHands, true);
|
||||
addCheckableItem(HANDS_MENU, MenuOption::DisplayHandTargets);
|
||||
addCheckableItem(HANDS_MENU, MenuOption::ShowIKConstraints);
|
||||
{
|
||||
static const QString SIXENSE_MENU{ "Sixense" };
|
||||
addMenu(HANDS_MENU, SIXENSE_MENU);
|
||||
#ifdef __APPLE__
|
||||
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu,
|
||||
MenuOption::SixenseEnabled,
|
||||
0, false,
|
||||
&SixenseManager::getInstance(),
|
||||
SLOT(toggleSixense(bool)));
|
||||
addCheckableItem(SIXENSE_MENU, MenuOption::SixenseEnabled, false, [](bool checked) {
|
||||
SixenseManager::getInstance().toggleSixense(checked);
|
||||
});
|
||||
#endif
|
||||
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu,
|
||||
MenuOption::FilterSixense,
|
||||
0,
|
||||
true,
|
||||
&SixenseManager::getInstance(),
|
||||
SLOT(setFilter(bool)));
|
||||
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu,
|
||||
MenuOption::LowVelocityFilter,
|
||||
0,
|
||||
true,
|
||||
qApp,
|
||||
SLOT(setLowVelocityFilter(bool)));
|
||||
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, MenuOption::SixenseMouseInput, 0, true);
|
||||
addCheckableActionToQMenuAndActionHash(sixenseOptionsMenu, MenuOption::SixenseLasers, 0, false);
|
||||
addCheckableItem(SIXENSE_MENU, MenuOption::FilterSixense, true, [](bool checked) {
|
||||
SixenseManager::getInstance().setFilter(checked);
|
||||
});
|
||||
addCheckableItem(SIXENSE_MENU, MenuOption::LowVelocityFilter, true, [](bool checked) {
|
||||
qApp->setLowVelocityFilter(checked);
|
||||
});
|
||||
addCheckableItem(SIXENSE_MENU, MenuOption::SixenseMouseInput, true);
|
||||
addCheckableItem(SIXENSE_MENU, MenuOption::SixenseLasers);
|
||||
}
|
||||
|
||||
QMenu* leapOptionsMenu = handOptionsMenu->addMenu("Leap Motion");
|
||||
addCheckableActionToQMenuAndActionHash(leapOptionsMenu, MenuOption::LeapMotionOnHMD, 0, false);
|
||||
{
|
||||
static const QString LEAP_MENU{ "Leap Motion" };
|
||||
addMenu(HANDS_MENU, LEAP_MENU);
|
||||
addCheckableItem(LEAP_MENU, MenuOption::LeapMotionOnHMD);
|
||||
addCheckableItem(LEAP_MENU, MenuOption::LeapMotionOnHMD);
|
||||
}
|
||||
|
||||
#ifdef HAVE_RSSDK
|
||||
QMenu* realSenseOptionsMenu = handOptionsMenu->addMenu("RealSense");
|
||||
addActionToQMenuAndActionHash(realSenseOptionsMenu, MenuOption::LoadRSSDKFile, 0,
|
||||
RealSense::getInstance(), SLOT(loadRSSDKFile()));
|
||||
{
|
||||
static const QString RSS_MENU{ "RealSense" };
|
||||
addMenu(HANDS_MENU, RSS_MENU);
|
||||
addItem(RSS_MENU, MenuOption::LoadRSSDKFile, [] {
|
||||
RealSense::getInstance()->loadRSSDKFile();
|
||||
});
|
||||
addCheckableItem(RSS_MENU, MenuOption::LeapMotionOnHMD);
|
||||
}
|
||||
#endif
|
||||
} // Developer -> Hands
|
||||
|
||||
QMenu* networkMenu = developerMenu->addMenu("Network");
|
||||
addCheckableActionToQMenuAndActionHash(networkMenu, MenuOption::DisableNackPackets, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(networkMenu,
|
||||
MenuOption::DisableActivityLogger,
|
||||
0,
|
||||
false,
|
||||
&UserActivityLogger::getInstance(),
|
||||
SLOT(disable(bool)));
|
||||
addActionToQMenuAndActionHash(networkMenu, MenuOption::CachesSize, 0,
|
||||
dialogsManager.data(), SLOT(cachesSizeDialog()));
|
||||
addActionToQMenuAndActionHash(networkMenu, MenuOption::DiskCacheEditor, 0,
|
||||
dialogsManager.data(), SLOT(toggleDiskCacheEditor()));
|
||||
{
|
||||
static const QString NETWORK_MENU{ "Network" };
|
||||
addMenu(DEV_MENU, NETWORK_MENU);
|
||||
addCheckableItem(NETWORK_MENU, MenuOption::DisableNackPackets);
|
||||
addCheckableItem(NETWORK_MENU, MenuOption::DisableActivityLogger, false, [](bool checked) {
|
||||
UserActivityLogger::getInstance().disable(checked);
|
||||
});
|
||||
addItem(NETWORK_MENU, MenuOption::CachesSize, [=] {
|
||||
dialogsManager->cachesSizeDialog();
|
||||
});
|
||||
addItem(NETWORK_MENU, MenuOption::DiskCacheEditor, [=] {
|
||||
dialogsManager->toggleDiskCacheEditor();
|
||||
});
|
||||
} // Developer -> Network
|
||||
|
||||
QMenu* timingMenu = developerMenu->addMenu("Timing and Stats");
|
||||
QMenu* perfTimerMenu = timingMenu->addMenu("Performance Timer");
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::DisplayDebugTimingDetails, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::OnlyDisplayTopTen, 0, true);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::ExpandUpdateTiming, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::ExpandMyAvatarTiming, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::ExpandMyAvatarSimulateTiming, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::ExpandOtherAvatarTiming, 0, false);
|
||||
addCheckableActionToQMenuAndActionHash(perfTimerMenu, MenuOption::ExpandPaintGLTiming, 0, false);
|
||||
{
|
||||
static const QString TIMING_MENU{ "Timing and Stats" };
|
||||
addMenu(DEV_MENU, TIMING_MENU);
|
||||
{
|
||||
static const QString PERF_MENU{ "Performance Timer" };
|
||||
addMenu(TIMING_MENU, PERF_MENU);
|
||||
addCheckableItem(PERF_MENU, MenuOption::DisplayDebugTimingDetails);
|
||||
addCheckableItem(PERF_MENU, MenuOption::OnlyDisplayTopTen, true);
|
||||
addCheckableItem(PERF_MENU, MenuOption::ExpandUpdateTiming);
|
||||
addCheckableItem(PERF_MENU, MenuOption::ExpandMyAvatarTiming);
|
||||
addCheckableItem(PERF_MENU, MenuOption::ExpandMyAvatarSimulateTiming);
|
||||
addCheckableItem(PERF_MENU, MenuOption::ExpandOtherAvatarTiming);
|
||||
addCheckableItem(PERF_MENU, MenuOption::ExpandPaintGLTiming);
|
||||
}
|
||||
addCheckableItem(TIMING_MENU, MenuOption::TestPing, true);
|
||||
addCheckableItem(TIMING_MENU, MenuOption::FrameTimer);
|
||||
addItem(TIMING_MENU, MenuOption::RunTimingTests, [] { runTimingTests(); });
|
||||
addCheckableItem(TIMING_MENU, MenuOption::PipelineWarnings);
|
||||
addCheckableItem(TIMING_MENU, MenuOption::SuppressShortTimings);
|
||||
} // Developer -> Timing and Stats
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::TestPing, 0, true);
|
||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::FrameTimer);
|
||||
addActionToQMenuAndActionHash(timingMenu, MenuOption::RunTimingTests, 0, qApp, SLOT(runTests()));
|
||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::PipelineWarnings);
|
||||
addCheckableActionToQMenuAndActionHash(timingMenu, MenuOption::SuppressShortTimings);
|
||||
{
|
||||
static const QString AUDIO_MENU{ "Audio" };
|
||||
addMenu(DEV_MENU, AUDIO_MENU);
|
||||
auto audioIO = DependencyManager::get<AudioClient>();
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::AudioNoiseReduction, true, [=](bool checked) {
|
||||
audioIO->toggleAudioNoiseReduction();
|
||||
});
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::EchoServerAudio, false, [=](bool checked) {
|
||||
audioIO->toggleServerEcho();
|
||||
});
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::EchoLocalAudio, false, [=](bool checked) {
|
||||
audioIO->toggleLocalEcho();
|
||||
});
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::StereoAudio, false, [=](bool checked) {
|
||||
audioIO->toggleStereoInput();
|
||||
});
|
||||
// Qt::CTRL | Qt::Key_M,
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::MuteAudio, false, [=](bool checked) {
|
||||
audioIO->toggleMute();
|
||||
});
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::MuteEnvironment, false, [=](bool checked) {
|
||||
audioIO->sendMuteEnvironmentPacket();
|
||||
});
|
||||
{
|
||||
static const QString SCOPE_MENU{ "Audio Scope" };
|
||||
addMenu(AUDIO_MENU, SCOPE_MENU);
|
||||
auto scope = DependencyManager::get<AudioScope>();
|
||||
// Qt::CTRL | Qt::Key_P
|
||||
addCheckableItem(SCOPE_MENU, MenuOption::AudioScope, false, [=](bool checked) {
|
||||
scope->toggle();
|
||||
});
|
||||
// Qt::CTRL | Qt::SHIFT | Qt::Key_P
|
||||
addCheckableItem(SCOPE_MENU, MenuOption::AudioScopePause, false, [=](bool checked) {
|
||||
scope->togglePause();
|
||||
});
|
||||
addSeparator(SCOPE_MENU, "Display Frames");
|
||||
|
||||
auto audioIO = DependencyManager::get<AudioClient>();
|
||||
QMenu* audioDebugMenu = developerMenu->addMenu("Audio");
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioNoiseReduction,
|
||||
0,
|
||||
true,
|
||||
audioIO.data(),
|
||||
SLOT(toggleAudioNoiseReduction()));
|
||||
// FIXME GROUP
|
||||
addCheckableItem(SCOPE_MENU, MenuOption::AudioScopeFiveFrames, true, [=](bool checked) {
|
||||
scope->selectAudioScopeFiveFrames();
|
||||
});
|
||||
addCheckableItem(SCOPE_MENU, MenuOption::AudioScopeTwentyFrames, false, [=](bool checked) {
|
||||
scope->selectAudioScopeTwentyFrames();
|
||||
});
|
||||
addCheckableItem(SCOPE_MENU, MenuOption::AudioScopeFiftyFrames, false, [=](bool checked) {
|
||||
scope->selectAudioScopeFiftyFrames();
|
||||
});
|
||||
}
|
||||
auto statsRenderer = DependencyManager::get<AudioIOStatsRenderer>();
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoServerAudio, 0, false,
|
||||
audioIO.data(), SLOT(toggleServerEcho()));
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::EchoLocalAudio, 0, false,
|
||||
audioIO.data(), SLOT(toggleLocalEcho()));
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::StereoAudio, 0, false,
|
||||
audioIO.data(), SLOT(toggleStereoInput()));
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::MuteAudio,
|
||||
Qt::CTRL | Qt::Key_M,
|
||||
false,
|
||||
audioIO.data(),
|
||||
SLOT(toggleMute()));
|
||||
addActionToQMenuAndActionHash(audioDebugMenu,
|
||||
MenuOption::MuteEnvironment,
|
||||
0,
|
||||
audioIO.data(),
|
||||
SLOT(sendMuteEnvironmentPacket()));
|
||||
|
||||
auto scope = DependencyManager::get<AudioScope>();
|
||||
// Qt::CTRL | Qt::SHIFT | Qt::Key_A,
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::AudioStats, false, [=](bool checked) {
|
||||
statsRenderer->toggle();
|
||||
});
|
||||
addCheckableItem(AUDIO_MENU, MenuOption::AudioStatsShowInjectedStreams, false, [=](bool checked) {
|
||||
statsRenderer->toggleShowInjectedStreams();
|
||||
});
|
||||
} // Developer -> Audio
|
||||
} // Developer
|
||||
|
||||
QMenu* audioScopeMenu = audioDebugMenu->addMenu("Audio Scope");
|
||||
addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScope,
|
||||
Qt::CTRL | Qt::Key_P, false,
|
||||
scope.data(),
|
||||
SLOT(toggle()));
|
||||
addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopePause,
|
||||
Qt::CTRL | Qt::SHIFT | Qt::Key_P ,
|
||||
false,
|
||||
scope.data(),
|
||||
SLOT(togglePause()));
|
||||
addDisabledActionAndSeparator(audioScopeMenu, "Display Frames");
|
||||
{
|
||||
QAction *fiveFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeFiveFrames,
|
||||
0,
|
||||
true,
|
||||
scope.data(),
|
||||
SLOT(selectAudioScopeFiveFrames()));
|
||||
|
||||
QAction *twentyFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeTwentyFrames,
|
||||
0,
|
||||
false,
|
||||
scope.data(),
|
||||
SLOT(selectAudioScopeTwentyFrames()));
|
||||
|
||||
QAction *fiftyFrames = addCheckableActionToQMenuAndActionHash(audioScopeMenu, MenuOption::AudioScopeFiftyFrames,
|
||||
0,
|
||||
false,
|
||||
scope.data(),
|
||||
SLOT(selectAudioScopeFiftyFrames()));
|
||||
|
||||
QActionGroup* audioScopeFramesGroup = new QActionGroup(audioScopeMenu);
|
||||
audioScopeFramesGroup->addAction(fiveFrames);
|
||||
audioScopeFramesGroup->addAction(twentyFrames);
|
||||
audioScopeFramesGroup->addAction(fiftyFrames);
|
||||
{
|
||||
static const QString HELP_MENU{ "Help" };
|
||||
addMenu(ROOT_MENU, HELP_MENU);
|
||||
addItem(HELP_MENU, MenuOption::EditEntitiesHelp, [] {
|
||||
qApp->showEditEntitiesHelp();
|
||||
});
|
||||
addItem(HELP_MENU, MenuOption::AboutApp, [] {
|
||||
qApp->aboutApp();
|
||||
});
|
||||
} // Help
|
||||
}
|
||||
|
||||
auto statsRenderer = DependencyManager::get<AudioIOStatsRenderer>();
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioStats,
|
||||
Qt::CTRL | Qt::SHIFT | Qt::Key_A,
|
||||
false,
|
||||
statsRenderer.data(),
|
||||
SLOT(toggle()));
|
||||
|
||||
addCheckableActionToQMenuAndActionHash(audioDebugMenu, MenuOption::AudioStatsShowInjectedStreams,
|
||||
0,
|
||||
false,
|
||||
statsRenderer.data(),
|
||||
SLOT(toggleShowInjectedStreams()));
|
||||
|
||||
QMenu* helpMenu = addMenu("Help");
|
||||
addActionToQMenuAndActionHash(helpMenu, MenuOption::EditEntitiesHelp, 0, qApp, SLOT(showEditEntitiesHelp()));
|
||||
|
||||
#ifndef Q_OS_MAC
|
||||
QAction* aboutAction = helpMenu->addAction(MenuOption::AboutApp);
|
||||
connect(aboutAction, SIGNAL(triggered()), qApp, SLOT(aboutApp()));
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
void Menu::loadSettings() {
|
||||
|
|
|
@ -36,7 +36,7 @@ public:
|
|||
void setCheckable(bool);
|
||||
void setChecked(bool);
|
||||
void setVisible(bool);
|
||||
const QString & shortcut() const;
|
||||
QString shortcut() const;
|
||||
void setText(const QString &);
|
||||
void setTriggerAction(std::function<void()>);
|
||||
void setToggleAction(std::function<void(bool)>);
|
||||
|
@ -56,37 +56,32 @@ public:
|
|||
|
||||
void loadSettings();
|
||||
void saveSettings();
|
||||
|
||||
HifiAction * getActionForOption(const QString& menuOption) {
|
||||
return new HifiAction(menuOption);
|
||||
}
|
||||
// QMenu* addMenu(const QString& menuName);
|
||||
//void removeMenu(const QString& menuName);
|
||||
//bool menuExists(const QString& menuName);
|
||||
//void addSeparator(const QString& menuName, const QString& separatorName);
|
||||
//void removeSeparator(const QString& menuName, const QString& separatorName);
|
||||
//void addMenuItem(const MenuItemProperties& properties);
|
||||
//void removeMenuItem(const QString& menuitem);
|
||||
//bool menuItemExists(const QString& menuName, const QString& menuitem);
|
||||
|
||||
void addMenuItem(const MenuItemProperties& properties);
|
||||
|
||||
bool isOptionChecked(const QString& menuOption) const {
|
||||
return HifiMenu::isChecked(menuOption);
|
||||
}
|
||||
|
||||
void setIsOptionChecked(const QString& menuOption, bool isChecked) {
|
||||
HifiMenu::setChecked(menuOption, isChecked);
|
||||
}
|
||||
|
||||
void triggerOption(const QString& menuOption) {
|
||||
HifiMenu::triggerMenuItem(menuOption);
|
||||
HifiMenu::triggerItem(menuOption);
|
||||
}
|
||||
|
||||
void setOptionText(const QString& menuOption, const QString & text) {
|
||||
HifiMenu::setText(menuOption, text);
|
||||
HifiMenu::setItemText(menuOption, text);
|
||||
}
|
||||
|
||||
void setOptionTriggerAction(const QString& menuOption, std::function<void()> f) {
|
||||
HifiMenu::setTriggerAction(menuOption, f);
|
||||
}
|
||||
//void setOptionToggleAction(const QString& menuOption, std::function<void(bool)> f);
|
||||
//void addMenuItem(const QString & parentMenu, const QString & menuOption, std::function<void()> f);
|
||||
//void addMenuItem(const QString & parentMenu, const QString & menuOption);
|
||||
//void addMenu(const QString & parentMenu, const QString & menuOption);
|
||||
//void enableMenuItem(const QString & menuOption, bool enabled = true);
|
||||
|
||||
private:
|
||||
void init();
|
||||
|
|
|
@ -112,7 +112,7 @@ void HifiMenu::addSeparator(const QString& parentMenu, const QString& separatorN
|
|||
void HifiMenu::removeSeparator(const QString& parentMenu, const QString& separatorName) {
|
||||
}
|
||||
|
||||
void HifiMenu::addMenuItem(const QString & parentMenu, const QString & menuOption) {
|
||||
void HifiMenu::addItem(const QString & parentMenu, const QString & menuOption) {
|
||||
QObject* parent = findMenuObject(parentMenu);
|
||||
Q_ASSERT(parent);
|
||||
QObject* result = ::addItem(parent, menuOption);
|
||||
|
@ -127,20 +127,20 @@ void HifiMenu::addMenuItem(const QString & parentMenu, const QString & menuOptio
|
|||
connect(result, SIGNAL(toggled(bool)), &_toggleMapper, SLOT(map()));
|
||||
}
|
||||
|
||||
void HifiMenu::addMenuItem(const QString & parentMenu, const QString & menuOption, std::function<void()> f) {
|
||||
void HifiMenu::addItem(const QString & parentMenu, const QString & menuOption, std::function<void()> f) {
|
||||
setTriggerAction(menuOption, f);
|
||||
addMenuItem(parentMenu, menuOption);
|
||||
addItem(parentMenu, menuOption);
|
||||
}
|
||||
|
||||
void HifiMenu::removeMenuItem(const QString& menuOption) {
|
||||
void HifiMenu::removeItem(const QString& menuOption) {
|
||||
removeMenu(menuOption);
|
||||
}
|
||||
|
||||
bool HifiMenu::menuItemExists(const QString& menuName, const QString& menuitem) const {
|
||||
bool HifiMenu::itemExists(const QString& menuName, const QString& menuitem) const {
|
||||
return findMenuObject(menuName);
|
||||
}
|
||||
|
||||
void HifiMenu::triggerMenuItem(const QString& menuOption) {
|
||||
void HifiMenu::triggerItem(const QString& menuOption) {
|
||||
QObject* menuItem = findMenuObject(menuOption);
|
||||
Q_ASSERT(menuItem);
|
||||
Q_ASSERT(menuItem != _rootMenu);
|
||||
|
@ -185,20 +185,24 @@ void HifiMenu::setCheckable(const QString& menuOption, bool checkable) {
|
|||
Q_ASSERT(menuItem->property("checkable").toBool() == checkable);
|
||||
}
|
||||
|
||||
void HifiMenu::setText(const QString& menuOption, const QString & text) {
|
||||
void HifiMenu::setItemText(const QString& menuOption, const QString & text) {
|
||||
QObject* menuItem = findMenuObject(menuOption);
|
||||
if (!menuItem) {
|
||||
warn(menuOption);
|
||||
return;
|
||||
}
|
||||
menuItem->setProperty("text", QVariant::fromValue(text));
|
||||
if (menuItem->property("type").toInt() == 2) {
|
||||
menuItem->setProperty("title", QVariant::fromValue(text));
|
||||
} else {
|
||||
menuItem->setProperty("text", QVariant::fromValue(text));
|
||||
}
|
||||
}
|
||||
|
||||
void HifiMenu::setRootMenu(QObject* rootMenu) {
|
||||
_rootMenu = rootMenu;
|
||||
}
|
||||
|
||||
void HifiMenu::enableMenuItem(const QString & menuOption, bool enabled) {
|
||||
void HifiMenu::enableItem(const QString & menuOption, bool enabled) {
|
||||
QObject* menuItem = findMenuObject(menuOption);
|
||||
if (!menuItem) {
|
||||
warn(menuOption);
|
||||
|
@ -207,15 +211,45 @@ void HifiMenu::enableMenuItem(const QString & menuOption, bool enabled) {
|
|||
menuItem->setProperty("enabled", QVariant::fromValue(enabled));
|
||||
}
|
||||
|
||||
void HifiMenu::addCheckableMenuItem(const QString& parentMenu, const QString& menuOption, bool checked) {
|
||||
addMenuItem(parentMenu, menuOption);
|
||||
void HifiMenu::addCheckableItem(const QString& parentMenu, const QString& menuOption, bool checked) {
|
||||
addItem(parentMenu, menuOption);
|
||||
setCheckable(menuOption);
|
||||
if (checked) {
|
||||
setChecked(menuOption, checked);
|
||||
}
|
||||
}
|
||||
|
||||
void HifiMenu::addCheckableMenuItem(const QString& parentMenu, const QString& menuOption, bool checked, std::function<void(bool)> f) {
|
||||
void HifiMenu::addCheckableItem(const QString& parentMenu, const QString& menuOption, bool checked, std::function<void(bool)> f) {
|
||||
setToggleAction(menuOption, f);
|
||||
addCheckableMenuItem(parentMenu, menuOption, checked);
|
||||
addCheckableItem(parentMenu, menuOption, checked);
|
||||
}
|
||||
|
||||
void HifiMenu::setItemVisible(const QString& menuOption, bool visible) {
|
||||
QObject* result = findMenuObject(menuOption);
|
||||
if (result) {
|
||||
result->setProperty("visible", visible);
|
||||
}
|
||||
}
|
||||
|
||||
bool HifiMenu::isItemVisible(const QString& menuOption) {
|
||||
QObject* result = findMenuObject(menuOption);
|
||||
if (result) {
|
||||
return result->property("visible").toBool();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void HifiMenu::setItemShortcut(const QString& menuOption, const QString& shortcut) {
|
||||
QObject* result = findMenuObject(menuOption);
|
||||
if (result) {
|
||||
result->setProperty("shortcut", shortcut);
|
||||
}
|
||||
}
|
||||
|
||||
QString HifiMenu::getItemShortcut(const QString& menuOption) {
|
||||
QObject* result = findMenuObject(menuOption);
|
||||
if (result) {
|
||||
return result->property("shortcut").toString();
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
|
|
@ -35,19 +35,26 @@ public:
|
|||
void addSeparator(const QString& menuName, const QString& separatorName);
|
||||
void removeSeparator(const QString& menuName, const QString& separatorName);
|
||||
|
||||
void addMenuItem(const QString& parentMenu, const QString& menuOption);
|
||||
void addCheckableMenuItem(const QString& parentMenu, const QString& menuOption, bool checked = false);
|
||||
void addCheckableMenuItem(const QString& parentMenu, const QString& menuOption, bool checked, std::function<void(bool)> f);
|
||||
void addMenuItem(const QString& parentMenu, const QString& menuOption, std::function<void()> f);
|
||||
void removeMenuItem(const QString& menuitem);
|
||||
bool menuItemExists(const QString& menuName, const QString& menuitem) const;
|
||||
void triggerMenuItem(const QString& menuOption);
|
||||
void enableMenuItem(const QString& menuOption, bool enabled = true);
|
||||
void addItem(const QString& parentMenu, const QString& menuOption);
|
||||
void addItem(const QString& parentMenu, const QString& menuOption, std::function<void()> f);
|
||||
|
||||
void addCheckableItem(const QString& parentMenu, const QString& menuOption, bool checked = false);
|
||||
void addCheckableItem(const QString& parentMenu, const QString& menuOption, bool checked, std::function<void(bool)> f);
|
||||
|
||||
void removeItem(const QString& menuitem);
|
||||
bool itemExists(const QString& menuName, const QString& menuitem) const;
|
||||
void triggerItem(const QString& menuOption);
|
||||
void enableItem(const QString& menuOption, bool enabled = true);
|
||||
bool isChecked(const QString& menuOption) const;
|
||||
void setChecked(const QString& menuOption, bool isChecked = true);
|
||||
void setChecked(const QString& menuOption, bool checked = true);
|
||||
void setCheckable(const QString& menuOption, bool checkable = true);
|
||||
void setExclusiveGroup(const QString& menuOption, const QString & groupName);
|
||||
void setText(const QString& menuOption, const QString& text);
|
||||
void setItemText(const QString& menuOption, const QString& text);
|
||||
void setItemVisible(const QString& menuOption, bool visible = true);
|
||||
bool isItemVisible(const QString& menuOption);
|
||||
|
||||
void setItemShortcut(const QString& menuOption, const QString & shortcut);
|
||||
QString getItemShortcut(const QString& menuOption);
|
||||
|
||||
void setRootMenu(QObject * rootMenu);
|
||||
|
||||
|
|
Loading…
Reference in a new issue