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