History

moved MenuScriptingInterface to own files

ZappoMan committed 12 years ago

Commit e03c7be1 parent 73b0a5b5 files · +141 −105Browse files

Showing the changes to interface/src/MenuScriptingInterface.cpp (1 of 5 files). Show all

Unified · Split

interface/src/MenuScriptingInterface.cpp+84−0
@@ -0,0 +1,84 @@
1+//
2+// MenuScriptingInterface.cpp
3+// hifi
4+//
5+// Created by Brad Hefta-Gaub on 2/25/14
6+// Copyright (c) 2014 HighFidelity, Inc. All rights reserved.
7+//
8+
9+#include "Application.h"
10+
11+#include "MenuScriptingInterface.h"
12+
13+
14+MenuScriptingInterface* MenuScriptingInterface::_instance = NULL;
15+QMutex MenuScriptingInterface::_instanceMutex;
16+
17+MenuScriptingInterface* MenuScriptingInterface::getInstance() {
18+ // lock the menu instance mutex to make sure we don't race and create two menus and crash
19+ _instanceMutex.lock();
20+ if (!_instance) {
21+ _instance = new MenuScriptingInterface();
22+ }
23+ _instanceMutex.unlock();
24+ return _instance;
25+}
26+
27+void MenuScriptingInterface::deleteLaterIfExists() {
28+ _instanceMutex.lock();
29+ if (_instance) {
30+ _instance->deleteLater();
31+ _instance = NULL;
32+ }
33+ _instanceMutex.unlock();
34+}
35+
36+void MenuScriptingInterface::menuItemTriggered() {
37+ QAction* menuItemAction = dynamic_cast<QAction*>(sender());
38+ if (menuItemAction) {
39+ // emit the event
40+ emit menuItemEvent(menuItemAction->text());
41+ }
42+}
43+
44+void MenuScriptingInterface::addMenu(const QString& menu) {
45+ QMetaObject::invokeMethod(Menu::getInstance(), "addMenu", Q_ARG(const QString&, menu));
46+}
47+
48+void MenuScriptingInterface::removeMenu(const QString& menu) {
49+ QMetaObject::invokeMethod(Menu::getInstance(), "removeMenu", Q_ARG(const QString&, menu));
50+}
51+
52+void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) {
53+ QMetaObject::invokeMethod(Menu::getInstance(), "addSeparator",
54+ Q_ARG(const QString&, menuName),
55+ Q_ARG(const QString&, separatorName));
56+}
57+
58+void MenuScriptingInterface::addMenuItem(const MenuItemProperties& properties) {
59+ QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
60+}
61+
62+void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem, const QString& shortcutKey) {
63+ MenuItemProperties properties(menu, menuitem, shortcutKey);
64+ QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
65+}
66+
67+void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem) {
68+ MenuItemProperties properties(menu, menuitem);
69+ QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
70+}
71+
72+void MenuScriptingInterface::removeMenuItem(const QString& menu, const QString& menuitem) {
73+ QMetaObject::invokeMethod(Menu::getInstance(), "removeMenuItem",
74+ Q_ARG(const QString&, menu),
75+ Q_ARG(const QString&, menuitem));
76+};
77+
78+bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) {
79+ return Menu::getInstance()->isOptionChecked(menuOption);
80+}
81+
82+void MenuScriptingInterface::setIsOptionChecked(const QString& menuOption, bool isChecked) {
83+ return Menu::getInstance()->setIsOptionChecked(menuOption, isChecked);
84+}