History

Attempt to fix DEV-2615 and DEV-2618 with more menu scripting interface guards

Zach Fox committed 7 years ago

Commit 68819ad1 parent de5570c1 file · +100 −19Browse files

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

Unified · Split

interface/src/scripting/MenuScriptingInterface.cpp+100−19
@@ -32,106 +32,187 @@ void MenuScriptingInterface::menuItemTriggered() { · 31 unmodified lines
32}32}
33 33
34void MenuScriptingInterface::addMenu(const QString& menu, const QString& grouping) {34void MenuScriptingInterface::addMenu(const QString& menu, const QString& grouping) {
35 QMetaObject::invokeMethod(Menu::getInstance(), "addMenu", Q_ARG(const QString&, menu), Q_ARG(const QString&, grouping));35 Menu* menuInstance = Menu::getInstance();
36 if (!menuInstance) {
37 return;
38 }
39
40 QMetaObject::invokeMethod(menuInstance, "addMenu", Q_ARG(const QString&, menu), Q_ARG(const QString&, grouping));
36}41}
37 42
38void MenuScriptingInterface::removeMenu(const QString& menu) {43void MenuScriptingInterface::removeMenu(const QString& menu) {
39 QMetaObject::invokeMethod(Menu::getInstance(), "removeMenu", Q_ARG(const QString&, menu));44 Menu* menuInstance = Menu::getInstance();
45 if (!menuInstance) {
46 return;
47 }
48
49 QMetaObject::invokeMethod(menuInstance, "removeMenu", Q_ARG(const QString&, menu));
40}50}
41 51
42bool MenuScriptingInterface::menuExists(const QString& menu) {52bool MenuScriptingInterface::menuExists(const QString& menu) {
53 Menu* menuInstance = Menu::getInstance();
54 if (!menuInstance) {
55 return false;
56 }
57
43 if (QThread::currentThread() == qApp->thread()) {58 if (QThread::currentThread() == qApp->thread()) {
44 Menu* menuInstance = Menu::getInstance();
45 return menuInstance && menuInstance->menuExists(menu);59 return menuInstance && menuInstance->menuExists(menu);
46 }60 }
61
47 bool result { false };62 bool result { false };
48 BLOCKING_INVOKE_METHOD(Menu::getInstance(), "menuExists",63
64 BLOCKING_INVOKE_METHOD(menuInstance, "menuExists",
49 Q_RETURN_ARG(bool, result), 65 Q_RETURN_ARG(bool, result),
50 Q_ARG(const QString&, menu));66 Q_ARG(const QString&, menu));
67
51 return result;68 return result;
52}69}
53 70
54void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) {71void MenuScriptingInterface::addSeparator(const QString& menuName, const QString& separatorName) {
55 QMetaObject::invokeMethod(Menu::getInstance(), "addSeparator",72 Menu* menuInstance = Menu::getInstance();
73 if (!menuInstance) {
74 return;
75 }
76
77 QMetaObject::invokeMethod(menuInstance, "addSeparator",
56 Q_ARG(const QString&, menuName),78 Q_ARG(const QString&, menuName),
57 Q_ARG(const QString&, separatorName));79 Q_ARG(const QString&, separatorName));
58}80}
59 81
60void MenuScriptingInterface::removeSeparator(const QString& menuName, const QString& separatorName) {82void MenuScriptingInterface::removeSeparator(const QString& menuName, const QString& separatorName) {
61 QMetaObject::invokeMethod(Menu::getInstance(), "removeSeparator",83 Menu* menuInstance = Menu::getInstance();
84 if (!menuInstance) {
85 return;
86 }
87
88 QMetaObject::invokeMethod(menuInstance, "removeSeparator",
62 Q_ARG(const QString&, menuName),89 Q_ARG(const QString&, menuName),
63 Q_ARG(const QString&, separatorName));90 Q_ARG(const QString&, separatorName));
64}91}
65 92
66void MenuScriptingInterface::addMenuItem(const MenuItemProperties& properties) {93void MenuScriptingInterface::addMenuItem(const MenuItemProperties& properties) {
67 QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));94 Menu* menuInstance = Menu::getInstance();
95 if (!menuInstance) {
96 return;
97 }
98
99 QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
68}100}
69 101
70void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem, const QString& shortcutKey) {102void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem, const QString& shortcutKey) {
103 Menu* menuInstance = Menu::getInstance();
104 if (!menuInstance) {
105 return;
106 }
107
71 MenuItemProperties properties(menu, menuitem, shortcutKey);108 MenuItemProperties properties(menu, menuitem, shortcutKey);
72 QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));109 QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
73}110}
74 111
75void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem) {112void MenuScriptingInterface::addMenuItem(const QString& menu, const QString& menuitem) {
113 Menu* menuInstance = Menu::getInstance();
114 if (!menuInstance) {
115 return;
116 }
117
76 MenuItemProperties properties(menu, menuitem);118 MenuItemProperties properties(menu, menuitem);
77 QMetaObject::invokeMethod(Menu::getInstance(), "addMenuItem", Q_ARG(const MenuItemProperties&, properties));119 QMetaObject::invokeMethod(menuInstance, "addMenuItem", Q_ARG(const MenuItemProperties&, properties));
78}120}
79 121
80void MenuScriptingInterface::removeMenuItem(const QString& menu, const QString& menuitem) {122void MenuScriptingInterface::removeMenuItem(const QString& menu, const QString& menuitem) {
81 QMetaObject::invokeMethod(Menu::getInstance(), "removeMenuItem", 123 Menu* menuInstance = Menu::getInstance();
124 if (!menuInstance) {
125 return;
126 }
127 QMetaObject::invokeMethod(menuInstance, "removeMenuItem",
82 Q_ARG(const QString&, menu),128 Q_ARG(const QString&, menu),
83 Q_ARG(const QString&, menuitem));129 Q_ARG(const QString&, menuitem));
84};130};
85 131
86bool MenuScriptingInterface::menuItemExists(const QString& menu, const QString& menuitem) {132bool MenuScriptingInterface::menuItemExists(const QString& menu, const QString& menuitem) {
133 Menu* menuInstance = Menu::getInstance();
134 if (!menuInstance) {
135 return false;
136 }
137
87 if (QThread::currentThread() == qApp->thread()) {138 if (QThread::currentThread() == qApp->thread()) {
88 Menu* menuInstance = Menu::getInstance();
89 return menuInstance && menuInstance->menuItemExists(menu, menuitem);139 return menuInstance && menuInstance->menuItemExists(menu, menuitem);
90 }140 }
141
91 bool result { false };142 bool result { false };
92 BLOCKING_INVOKE_METHOD(Menu::getInstance(), "menuItemExists",143
144 BLOCKING_INVOKE_METHOD(menuInstance, "menuItemExists",
93 Q_RETURN_ARG(bool, result),145 Q_RETURN_ARG(bool, result),
94 Q_ARG(const QString&, menu),146 Q_ARG(const QString&, menu),
95 Q_ARG(const QString&, menuitem));147 Q_ARG(const QString&, menuitem));
148
96 return result;149 return result;
97}150}
98 151
99bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) {152bool MenuScriptingInterface::isOptionChecked(const QString& menuOption) {
153 Menu* menuInstance = Menu::getInstance();
154 if (!menuInstance) {
155 return false;
156 }
157
100 if (QThread::currentThread() == qApp->thread()) {158 if (QThread::currentThread() == qApp->thread()) {
101 Menu* menuInstance = Menu::getInstance();
102 return menuInstance && menuInstance->isOptionChecked(menuOption);159 return menuInstance && menuInstance->isOptionChecked(menuOption);
103 }160 }
161
104 bool result { false };162 bool result { false };
105 BLOCKING_INVOKE_METHOD(Menu::getInstance(), "isOptionChecked",163
164 BLOCKING_INVOKE_METHOD(menuInstance, "isOptionChecked",
106 Q_RETURN_ARG(bool, result), 165 Q_RETURN_ARG(bool, result),
107 Q_ARG(const QString&, menuOption));166 Q_ARG(const QString&, menuOption));
108 return result;167 return result;
109}168}
110 169
111void MenuScriptingInterface::setIsOptionChecked(const QString& menuOption, bool isChecked) {170void MenuScriptingInterface::setIsOptionChecked(const QString& menuOption, bool isChecked) {
112 QMetaObject::invokeMethod(Menu::getInstance(), "setIsOptionChecked",171 Menu* menuInstance = Menu::getInstance();
172 if (!menuInstance) {
173 return;
174 }
175
176 QMetaObject::invokeMethod(menuInstance, "setIsOptionChecked",
113 Q_ARG(const QString&, menuOption),177 Q_ARG(const QString&, menuOption),
114 Q_ARG(bool, isChecked));178 Q_ARG(bool, isChecked));
115}179}
116 180
117bool MenuScriptingInterface::isMenuEnabled(const QString& menuOption) {181bool MenuScriptingInterface::isMenuEnabled(const QString& menuOption) {
182 Menu* menuInstance = Menu::getInstance();
183 if (!menuInstance) {
184 return false;
185 }
186
118 if (QThread::currentThread() == qApp->thread()) {187 if (QThread::currentThread() == qApp->thread()) {
119 Menu* menuInstance = Menu::getInstance();
120 return menuInstance && menuInstance->isMenuEnabled(menuOption);188 return menuInstance && menuInstance->isMenuEnabled(menuOption);
121 }189 }
190
122 bool result { false };191 bool result { false };
123 BLOCKING_INVOKE_METHOD(Menu::getInstance(), "isMenuEnabled",192
193 BLOCKING_INVOKE_METHOD(menuInstance, "isMenuEnabled",
124 Q_RETURN_ARG(bool, result),194 Q_RETURN_ARG(bool, result),
125 Q_ARG(const QString&, menuOption));195 Q_ARG(const QString&, menuOption));
196
126 return result;197 return result;
127}198}
128 199
129void MenuScriptingInterface::setMenuEnabled(const QString& menuOption, bool isChecked) {200void MenuScriptingInterface::setMenuEnabled(const QString& menuOption, bool isChecked) {
130 QMetaObject::invokeMethod(Menu::getInstance(), "setMenuEnabled",201 Menu* menuInstance = Menu::getInstance();
202 if (!menuInstance) {
203 return;
204 }
205
206 QMetaObject::invokeMethod(menuInstance, "setMenuEnabled",
131 Q_ARG(const QString&, menuOption),207 Q_ARG(const QString&, menuOption),
132 Q_ARG(bool, isChecked));208 Q_ARG(bool, isChecked));
133}209}
134 210
135void MenuScriptingInterface::triggerOption(const QString& menuOption) {211void MenuScriptingInterface::triggerOption(const QString& menuOption) {
136 QMetaObject::invokeMethod(Menu::getInstance(), "triggerOption", Q_ARG(const QString&, menuOption)); 212 Menu* menuInstance = Menu::getInstance();
213 if (!menuInstance) {
214 return;
215 }
216
217 QMetaObject::invokeMethod(menuInstance, "triggerOption", Q_ARG(const QString&, menuOption));
137}218}