Changeset 52937 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Oct 2, 2014 4:13:45 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 96375
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
r52727 r52937 75 75 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuMachineActionType>(); 76 76 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuViewActionType>(); 77 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(); 77 78 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuDevicesActionType>(); 78 79 #ifdef VBOX_WITH_DEBUGGER_GUI … … 133 134 template<> QString toInternalString(const UIExtraDataMetaDefs::RuntimeMenuViewActionType &runtimeMenuViewActionType); 134 135 template<> UIExtraDataMetaDefs::RuntimeMenuViewActionType fromInternalString<UIExtraDataMetaDefs::RuntimeMenuViewActionType>(const QString &strRuntimeMenuViewActionType); 136 template<> QString toInternalString(const UIExtraDataMetaDefs::RuntimeMenuInputActionType &runtimeMenuInputActionType); 137 template<> UIExtraDataMetaDefs::RuntimeMenuInputActionType fromInternalString<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(const QString &strRuntimeMenuInputActionType); 135 138 template<> QString toInternalString(const UIExtraDataMetaDefs::RuntimeMenuDevicesActionType &runtimeMenuDevicesActionType); 136 139 template<> UIExtraDataMetaDefs::RuntimeMenuDevicesActionType fromInternalString<UIExtraDataMetaDefs::RuntimeMenuDevicesActionType>(const QString &strRuntimeMenuDevicesActionType); -
trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
r52730 r52937 46 46 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuMachineActionType>() { return true; } 47 47 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuViewActionType>() { return true; } 48 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuInputActionType>() { return true; } 48 49 template<> bool canConvert<UIExtraDataMetaDefs::RuntimeMenuDevicesActionType>() { return true; } 49 50 #ifdef VBOX_WITH_DEBUGGER_GUI … … 373 374 case UIExtraDataMetaDefs::MenuType_Machine: strResult = "Machine"; break; 374 375 case UIExtraDataMetaDefs::MenuType_View: strResult = "View"; break; 376 case UIExtraDataMetaDefs::MenuType_Input: strResult = "Input"; break; 375 377 case UIExtraDataMetaDefs::MenuType_Devices: strResult = "Devices"; break; 376 378 #ifdef VBOX_WITH_DEBUGGER_GUI … … 399 401 keys << "Machine"; values << UIExtraDataMetaDefs::MenuType_Machine; 400 402 keys << "View"; values << UIExtraDataMetaDefs::MenuType_View; 403 keys << "Input"; values << UIExtraDataMetaDefs::MenuType_Input; 401 404 keys << "Devices"; values << UIExtraDataMetaDefs::MenuType_Devices; 402 405 #ifdef VBOX_WITH_DEBUGGER_GUI … … 512 515 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TakeScreenshot: strResult = "TakeScreenshot"; break; 513 516 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_InformationDialog: strResult = "InformationDialog"; break; 514 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Keyboard: strResult = "Keyboard"; break;515 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings: strResult = "KeyboardSettings"; break;516 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Mouse: strResult = "Mouse"; break;517 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration: strResult = "MouseIntegration"; break;518 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCAD: strResult = "TypeCAD"; break;519 #ifdef Q_WS_X11520 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCABS: strResult = "TypeCABS"; break;521 #endif /* Q_WS_X11 */522 517 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Pause: strResult = "Pause"; break; 523 518 case UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Reset: strResult = "Reset"; break; … … 549 544 keys << "TakeScreenshot"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TakeScreenshot; 550 545 keys << "InformationDialog"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_InformationDialog; 551 keys << "Keyboard"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Keyboard;552 keys << "KeyboardSettings"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings;553 keys << "Mouse"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Mouse;554 keys << "MouseIntegration"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration;555 keys << "TypeCAD"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCAD;556 #ifdef Q_WS_X11557 keys << "TypeCABS"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCABS;558 #endif /* Q_WS_X11 */559 546 keys << "Pause"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Pause; 560 547 keys << "Reset"; values << UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Reset; … … 628 615 /* Corresponding type for known words: */ 629 616 return values.at(keys.indexOf(QRegExp(strRuntimeMenuViewActionType, Qt::CaseInsensitive))); 617 } 618 619 /* QString <= UIExtraDataMetaDefs::RuntimeMenuInputActionType: */ 620 template<> QString toInternalString(const UIExtraDataMetaDefs::RuntimeMenuInputActionType &runtimeMenuInputActionType) 621 { 622 QString strResult; 623 switch (runtimeMenuInputActionType) 624 { 625 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_Keyboard: strResult = "Keyboard"; break; 626 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings: strResult = "KeyboardSettings"; break; 627 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_Mouse: strResult = "Mouse"; break; 628 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration: strResult = "MouseIntegration"; break; 629 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCAD: strResult = "TypeCAD"; break; 630 #ifdef Q_WS_X11 631 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCABS: strResult = "TypeCABS"; break; 632 #endif /* Q_WS_X11 */ 633 case UIExtraDataMetaDefs::RuntimeMenuInputActionType_All: strResult = "All"; break; 634 default: 635 { 636 AssertMsgFailed(("No text for action type=%d", runtimeMenuInputActionType)); 637 break; 638 } 639 } 640 return strResult; 641 } 642 643 /* UIExtraDataMetaDefs::RuntimeMenuInputActionType <= QString: */ 644 template<> UIExtraDataMetaDefs::RuntimeMenuInputActionType fromInternalString<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(const QString &strRuntimeMenuInputActionType) 645 { 646 /* Here we have some fancy stuff allowing us 647 * to search through the keys using 'case-insensitive' rule: */ 648 QStringList keys; QList<UIExtraDataMetaDefs::RuntimeMenuInputActionType> values; 649 keys << "Keyboard"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_Keyboard; 650 keys << "KeyboardSettings"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings; 651 keys << "Mouse"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_Mouse; 652 keys << "MouseIntegration"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration; 653 keys << "TypeCAD"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCAD; 654 #ifdef Q_WS_X11 655 keys << "TypeCABS"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCABS; 656 #endif /* Q_WS_X11 */ 657 keys << "All"; values << UIExtraDataMetaDefs::RuntimeMenuInputActionType_All; 658 /* Invalid type for unknown words: */ 659 if (!keys.contains(strRuntimeMenuInputActionType, Qt::CaseInsensitive)) 660 return UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid; 661 /* Corresponding type for known words: */ 662 return values.at(keys.indexOf(QRegExp(strRuntimeMenuInputActionType, Qt::CaseInsensitive))); 630 663 } 631 664 -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
r52788 r52937 92 92 const char* UIExtraDataDefs::GUI_RestrictedRuntimeMachineMenuActions = "GUI/RestrictedRuntimeMachineMenuActions"; 93 93 const char* UIExtraDataDefs::GUI_RestrictedRuntimeViewMenuActions = "GUI/RestrictedRuntimeViewMenuActions"; 94 const char* UIExtraDataDefs::GUI_RestrictedRuntimeInputMenuActions = "GUI/RestrictedRuntimeInputMenuActions"; 94 95 const char* UIExtraDataDefs::GUI_RestrictedRuntimeDevicesMenuActions = "GUI/RestrictedRuntimeDevicesMenuActions"; 95 96 #ifdef VBOX_WITH_DEBUGGER_GUI -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
r52788 r52937 154 154 /** Holds restricted Runtime UI action types for View menu. */ 155 155 extern const char* GUI_RestrictedRuntimeViewMenuActions; 156 /** Holds restricted Runtime UI action types for Input menu. */ 157 extern const char* GUI_RestrictedRuntimeInputMenuActions; 156 158 /** Holds restricted Runtime UI action types for Devices menu. */ 157 159 extern const char* GUI_RestrictedRuntimeDevicesMenuActions; … … 281 283 Q_ENUMS(RuntimeMenuMachineActionType); 282 284 Q_ENUMS(RuntimeMenuViewActionType); 285 Q_ENUMS(RuntimeMenuInputActionType); 283 286 Q_ENUMS(RuntimeMenuDevicesActionType); 284 287 #ifdef VBOX_WITH_DEBUGGER_GUI … … 297 300 MenuType_Machine = RT_BIT(1), 298 301 MenuType_View = RT_BIT(2), 299 MenuType_Devices = RT_BIT(3), 302 MenuType_Input = RT_BIT(3), 303 MenuType_Devices = RT_BIT(4), 300 304 #ifdef VBOX_WITH_DEBUGGER_GUI 301 MenuType_Debug = RT_BIT( 4),305 MenuType_Debug = RT_BIT(5), 302 306 #endif /* VBOX_WITH_DEBUGGER_GUI */ 303 MenuType_Help = RT_BIT( 5),307 MenuType_Help = RT_BIT(6), 304 308 MenuType_All = 0xFF 305 309 }; … … 343 347 RuntimeMenuMachineActionType_TakeScreenshot = RT_BIT(2), 344 348 RuntimeMenuMachineActionType_InformationDialog = RT_BIT(3), 345 RuntimeMenuMachineActionType_Keyboard = RT_BIT(4),346 RuntimeMenuMachineActionType_KeyboardSettings = RT_BIT(5),347 RuntimeMenuMachineActionType_Mouse = RT_BIT(6),348 RuntimeMenuMachineActionType_MouseIntegration = RT_BIT(7),349 RuntimeMenuMachineActionType_TypeCAD = RT_BIT(8),350 #ifdef Q_WS_X11351 RuntimeMenuMachineActionType_TypeCABS = RT_BIT(9),352 #endif /* Q_WS_X11 */353 349 RuntimeMenuMachineActionType_Pause = RT_BIT(10), 354 350 RuntimeMenuMachineActionType_Reset = RT_BIT(11), … … 381 377 RuntimeMenuViewActionType_Multiscreen = RT_BIT(12), 382 378 RuntimeMenuViewActionType_All = 0xFFFF 379 }; 380 381 /** Runtime UI: Menu "Input": Action types. */ 382 enum RuntimeMenuInputActionType 383 { 384 RuntimeMenuInputActionType_Invalid = 0, 385 RuntimeMenuInputActionType_Keyboard = RT_BIT(0), 386 RuntimeMenuInputActionType_KeyboardSettings = RT_BIT(1), 387 RuntimeMenuInputActionType_Mouse = RT_BIT(2), 388 RuntimeMenuInputActionType_MouseIntegration = RT_BIT(3), 389 RuntimeMenuInputActionType_TypeCAD = RT_BIT(4), 390 #ifdef Q_WS_X11 391 RuntimeMenuInputActionType_TypeCABS = RT_BIT(5), 392 #endif /* Q_WS_X11 */ 393 RuntimeMenuInputActionType_All = 0xFFFF 383 394 }; 384 395 -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
r52788 r52937 1778 1778 << GUI_RestrictedRuntimeMachineMenuActions 1779 1779 << GUI_RestrictedRuntimeViewMenuActions 1780 << GUI_RestrictedRuntimeInputMenuActions 1780 1781 << GUI_RestrictedRuntimeDevicesMenuActions 1781 1782 #ifdef VBOX_WITH_DEBUGGER_GUI … … 2720 2721 } 2721 2722 2723 UIExtraDataMetaDefs::RuntimeMenuInputActionType UIExtraDataManager::restrictedRuntimeMenuInputActionTypes(const QString &strID) 2724 { 2725 /* Prepare result: */ 2726 UIExtraDataMetaDefs::RuntimeMenuInputActionType result = UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid; 2727 /* Get restricted runtime-machine-menu action-types: */ 2728 foreach (const QString &strValue, extraDataStringList(GUI_RestrictedRuntimeInputMenuActions, strID)) 2729 { 2730 UIExtraDataMetaDefs::RuntimeMenuInputActionType value = gpConverter->fromInternalString<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(strValue); 2731 if (value != UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid) 2732 result = static_cast<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(result | value); 2733 } 2734 /* Return result: */ 2735 return result; 2736 } 2737 2738 void UIExtraDataManager::setRestrictedRuntimeMenuInputActionTypes(UIExtraDataMetaDefs::RuntimeMenuInputActionType types, const QString &strID) 2739 { 2740 /* We have RuntimeMenuInputActionType enum registered, so we can enumerate it: */ 2741 const QMetaObject &smo = UIExtraDataMetaDefs::staticMetaObject; 2742 const int iEnumIndex = smo.indexOfEnumerator("RuntimeMenuInputActionType"); 2743 QMetaEnum metaEnum = smo.enumerator(iEnumIndex); 2744 2745 /* Prepare result: */ 2746 QStringList result; 2747 /* Handle RuntimeMenuInputActionType_All enum-value: */ 2748 if (types == UIExtraDataMetaDefs::RuntimeMenuInputActionType_All) 2749 result << gpConverter->toInternalString(types); 2750 else 2751 { 2752 /* Handle other enum-values: */ 2753 for (int iKeyIndex = 0; iKeyIndex < metaEnum.keyCount(); ++iKeyIndex) 2754 { 2755 /* Get iterated enum-value: */ 2756 const UIExtraDataMetaDefs::RuntimeMenuInputActionType enumValue = 2757 static_cast<const UIExtraDataMetaDefs::RuntimeMenuInputActionType>(metaEnum.keyToValue(metaEnum.key(iKeyIndex))); 2758 /* Skip RuntimeMenuInputActionType_Invalid & RuntimeMenuInputActionType_All enum-values: */ 2759 if (enumValue == UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid || 2760 enumValue == UIExtraDataMetaDefs::RuntimeMenuInputActionType_All) 2761 continue; 2762 if (types & enumValue) 2763 result << gpConverter->toInternalString(enumValue); 2764 } 2765 } 2766 /* Save result: */ 2767 setExtraDataStringList(GUI_RestrictedRuntimeInputMenuActions, result, strID); 2768 } 2769 2722 2770 UIExtraDataMetaDefs::RuntimeMenuDevicesActionType UIExtraDataManager::restrictedRuntimeMenuDevicesActionTypes(const QString &strID) 2723 2771 { … … 3479 3527 strKey == GUI_RestrictedRuntimeMachineMenuActions || 3480 3528 strKey == GUI_RestrictedRuntimeViewMenuActions || 3529 strKey == GUI_RestrictedRuntimeInputMenuActions || 3481 3530 strKey == GUI_RestrictedRuntimeDevicesMenuActions || 3482 3531 #ifdef VBOX_WITH_DEBUGGER_GUI -
trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
r52788 r52937 313 313 void setRestrictedRuntimeMenuViewActionTypes(UIExtraDataMetaDefs::RuntimeMenuViewActionType types, const QString &strID); 314 314 315 /** Returns restricted Runtime UI action types for Input menu. */ 316 UIExtraDataMetaDefs::RuntimeMenuInputActionType restrictedRuntimeMenuInputActionTypes(const QString &strID); 317 /** Defines restricted Runtime UI action types for Input menu. */ 318 void setRestrictedRuntimeMenuInputActionTypes(UIExtraDataMetaDefs::RuntimeMenuInputActionType types, const QString &strID); 319 315 320 /** Returns restricted Runtime UI action types for Devices menu. */ 316 321 UIExtraDataMetaDefs::RuntimeMenuDevicesActionType restrictedRuntimeMenuDevicesActionTypes(const QString &strID); -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
r52730 r52937 205 205 }; 206 206 207 class UIActionMenuKeyboard : public UIActionMenu208 {209 Q_OBJECT;210 211 public:212 213 UIActionMenuKeyboard(UIActionPool *pParent)214 : UIActionMenu(pParent, ":/keyboard_16px.png") {}215 216 protected:217 218 /** Returns action extra-data ID. */219 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Keyboard; }220 /** Returns action extra-data key. */221 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Keyboard); }222 /** Returns whether action is allowed. */223 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Keyboard); }224 225 void retranslateUi()226 {227 setName(QApplication::translate("UIActionPool", "&Keyboard"));228 }229 };230 231 class UIActionSimpleKeyboardSettings : public UIActionSimple232 {233 Q_OBJECT;234 235 public:236 237 UIActionSimpleKeyboardSettings(UIActionPool *pParent)238 : UIActionSimple(pParent, ":/keyboard_settings_16px.png", ":/keyboard_settings_disabled_16px.png") {}239 240 protected:241 242 /** Returns action extra-data ID. */243 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings; }244 /** Returns action extra-data key. */245 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings); }246 /** Returns whether action is allowed. */247 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings); }248 249 QString shortcutExtraDataID() const250 {251 return QString("KeyboardSettings");252 }253 254 void retranslateUi()255 {256 setName(QApplication::translate("UIActionPool", "&Keyboard Settings..."));257 setStatusTip(QApplication::translate("UIActionPool", "Display the global settings window to configure shortcuts"));258 }259 };260 261 class UIActionMenuMouse : public UIActionMenu262 {263 Q_OBJECT;264 265 public:266 267 UIActionMenuMouse(UIActionPool *pParent)268 : UIActionMenu(pParent) {}269 270 protected:271 272 /** Returns action extra-data ID. */273 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Mouse; }274 /** Returns action extra-data key. */275 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Mouse); }276 /** Returns whether action is allowed. */277 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Mouse); }278 279 void retranslateUi()280 {281 setName(QApplication::translate("UIActionPool", "&Mouse"));282 }283 };284 285 class UIActionToggleMouseIntegration : public UIActionToggle286 {287 Q_OBJECT;288 289 public:290 291 UIActionToggleMouseIntegration(UIActionPool *pParent)292 : UIActionToggle(pParent,293 ":/mouse_can_seamless_on_16px.png", ":/mouse_can_seamless_16px.png",294 ":/mouse_can_seamless_on_disabled_16px.png", ":/mouse_can_seamless_disabled_16px.png") {}295 296 protected:297 298 /** Returns action extra-data ID. */299 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration; }300 /** Returns action extra-data key. */301 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration); }302 /** Returns whether action is allowed. */303 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration); }304 305 QString shortcutExtraDataID() const306 {307 return QString("MouseIntegration");308 }309 310 QKeySequence defaultShortcut(UIActionPoolType) const311 {312 return QKeySequence("I");313 }314 315 void retranslateUi()316 {317 setName(QApplication::translate("UIActionPool", "Disable &Mouse Integration"));318 setStatusTip(QApplication::translate("UIActionPool", "Temporarily disable host mouse pointer integration"));319 }320 };321 322 class UIActionSimplePerformTypeCAD : public UIActionSimple323 {324 Q_OBJECT;325 326 public:327 328 UIActionSimplePerformTypeCAD(UIActionPool *pParent)329 : UIActionSimple(pParent, ":/hostkey_16px.png", ":/hostkey_disabled_16px.png") {}330 331 protected:332 333 /** Returns action extra-data ID. */334 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCAD; }335 /** Returns action extra-data key. */336 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCAD); }337 /** Returns whether action is allowed. */338 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCAD); }339 340 QString shortcutExtraDataID() const341 {342 return QString("TypeCAD");343 }344 345 QKeySequence defaultShortcut(UIActionPoolType) const346 {347 return QKeySequence("Del");348 }349 350 void retranslateUi()351 {352 setName(QApplication::translate("UIActionPool", "&Insert Ctrl-Alt-Del"));353 setStatusTip(QApplication::translate("UIActionPool", "Send the Ctrl-Alt-Del sequence to the virtual machine"));354 }355 };356 357 #ifdef Q_WS_X11358 class UIActionSimplePerformTypeCABS : public UIActionSimple359 {360 Q_OBJECT;361 362 public:363 364 UIActionSimplePerformTypeCABS(UIActionPool *pParent)365 : UIActionSimple(pParent, ":/hostkey_16px.png", ":/hostkey_disabled_16px.png") {}366 367 protected:368 369 /** Returns action extra-data ID. */370 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCABS; }371 /** Returns action extra-data key. */372 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCABS); }373 /** Returns whether action is allowed. */374 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuMachine(UIExtraDataMetaDefs::RuntimeMenuMachineActionType_TypeCABS); }375 376 QString shortcutExtraDataID() const377 {378 return QString("TypeCABS");379 }380 381 QKeySequence defaultShortcut(UIActionPoolType) const382 {383 return QKeySequence("Backspace");384 }385 386 void retranslateUi()387 {388 setName(QApplication::translate("UIActionPool", "Ins&ert Ctrl-Alt-Backspace"));389 setStatusTip(QApplication::translate("UIActionPool", "Send the Ctrl-Alt-Backspace sequence to the virtual machine"));390 }391 };392 #endif /* Q_WS_X11 */393 394 207 class UIActionTogglePause : public UIActionToggle 395 208 { … … 1001 814 }; 1002 815 816 class UIActionMenuInput : public UIActionMenu 817 { 818 Q_OBJECT; 819 820 public: 821 822 UIActionMenuInput(UIActionPool *pParent) 823 : UIActionMenu(pParent) {} 824 825 protected: 826 827 /** Returns action extra-data ID. */ 828 virtual int extraDataID() const { return UIExtraDataMetaDefs::MenuType_Input; } 829 /** Returns action extra-data key. */ 830 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::MenuType_Input); } 831 /** Returns whether action is allowed. */ 832 virtual bool isAllowed() const { return actionPool()->isAllowedInMenuBar(UIExtraDataMetaDefs::MenuType_Input); } 833 834 void retranslateUi() 835 { 836 setName(QApplication::translate("UIActionPool", "&Input")); 837 } 838 }; 839 840 class UIActionMenuKeyboard : public UIActionMenu 841 { 842 Q_OBJECT; 843 844 public: 845 846 UIActionMenuKeyboard(UIActionPool *pParent) 847 : UIActionMenu(pParent, ":/keyboard_16px.png") {} 848 849 protected: 850 851 /** Returns action extra-data ID. */ 852 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_Keyboard; } 853 /** Returns action extra-data key. */ 854 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_Keyboard); } 855 /** Returns whether action is allowed. */ 856 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_Keyboard); } 857 858 void retranslateUi() 859 { 860 setName(QApplication::translate("UIActionPool", "&Keyboard")); 861 } 862 }; 863 864 class UIActionSimpleKeyboardSettings : public UIActionSimple 865 { 866 Q_OBJECT; 867 868 public: 869 870 UIActionSimpleKeyboardSettings(UIActionPool *pParent) 871 : UIActionSimple(pParent, ":/keyboard_settings_16px.png", ":/keyboard_settings_disabled_16px.png") {} 872 873 protected: 874 875 /** Returns action extra-data ID. */ 876 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings; } 877 /** Returns action extra-data key. */ 878 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings); } 879 /** Returns whether action is allowed. */ 880 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings); } 881 882 QString shortcutExtraDataID() const 883 { 884 return QString("KeyboardSettings"); 885 } 886 887 void retranslateUi() 888 { 889 setName(QApplication::translate("UIActionPool", "&Keyboard Settings...")); 890 setStatusTip(QApplication::translate("UIActionPool", "Display the global settings window to configure shortcuts")); 891 } 892 }; 893 894 class UIActionMenuMouse : public UIActionMenu 895 { 896 Q_OBJECT; 897 898 public: 899 900 UIActionMenuMouse(UIActionPool *pParent) 901 : UIActionMenu(pParent) {} 902 903 protected: 904 905 /** Returns action extra-data ID. */ 906 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_Mouse; } 907 /** Returns action extra-data key. */ 908 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_Mouse); } 909 /** Returns whether action is allowed. */ 910 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_Mouse); } 911 912 void retranslateUi() 913 { 914 setName(QApplication::translate("UIActionPool", "&Mouse")); 915 } 916 }; 917 918 class UIActionToggleMouseIntegration : public UIActionToggle 919 { 920 Q_OBJECT; 921 922 public: 923 924 UIActionToggleMouseIntegration(UIActionPool *pParent) 925 : UIActionToggle(pParent, 926 ":/mouse_can_seamless_on_16px.png", ":/mouse_can_seamless_16px.png", 927 ":/mouse_can_seamless_on_disabled_16px.png", ":/mouse_can_seamless_disabled_16px.png") {} 928 929 protected: 930 931 /** Returns action extra-data ID. */ 932 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration; } 933 /** Returns action extra-data key. */ 934 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration); } 935 /** Returns whether action is allowed. */ 936 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration); } 937 938 QString shortcutExtraDataID() const 939 { 940 return QString("MouseIntegration"); 941 } 942 943 QKeySequence defaultShortcut(UIActionPoolType) const 944 { 945 return QKeySequence("I"); 946 } 947 948 void retranslateUi() 949 { 950 setName(QApplication::translate("UIActionPool", "Disable &Mouse Integration")); 951 setStatusTip(QApplication::translate("UIActionPool", "Temporarily disable host mouse pointer integration")); 952 } 953 }; 954 955 class UIActionSimplePerformTypeCAD : public UIActionSimple 956 { 957 Q_OBJECT; 958 959 public: 960 961 UIActionSimplePerformTypeCAD(UIActionPool *pParent) 962 : UIActionSimple(pParent, ":/hostkey_16px.png", ":/hostkey_disabled_16px.png") {} 963 964 protected: 965 966 /** Returns action extra-data ID. */ 967 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCAD; } 968 /** Returns action extra-data key. */ 969 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCAD); } 970 /** Returns whether action is allowed. */ 971 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCAD); } 972 973 QString shortcutExtraDataID() const 974 { 975 return QString("TypeCAD"); 976 } 977 978 QKeySequence defaultShortcut(UIActionPoolType) const 979 { 980 return QKeySequence("Del"); 981 } 982 983 void retranslateUi() 984 { 985 setName(QApplication::translate("UIActionPool", "&Insert Ctrl-Alt-Del")); 986 setStatusTip(QApplication::translate("UIActionPool", "Send the Ctrl-Alt-Del sequence to the virtual machine")); 987 } 988 }; 989 990 #ifdef Q_WS_X11 991 class UIActionSimplePerformTypeCABS : public UIActionSimple 992 { 993 Q_OBJECT; 994 995 public: 996 997 UIActionSimplePerformTypeCABS(UIActionPool *pParent) 998 : UIActionSimple(pParent, ":/hostkey_16px.png", ":/hostkey_disabled_16px.png") {} 999 1000 protected: 1001 1002 /** Returns action extra-data ID. */ 1003 virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCABS; } 1004 /** Returns action extra-data key. */ 1005 virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCABS); } 1006 /** Returns whether action is allowed. */ 1007 virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_TypeCABS); } 1008 1009 QString shortcutExtraDataID() const 1010 { 1011 return QString("TypeCABS"); 1012 } 1013 1014 QKeySequence defaultShortcut(UIActionPoolType) const 1015 { 1016 return QKeySequence("Backspace"); 1017 } 1018 1019 void retranslateUi() 1020 { 1021 setName(QApplication::translate("UIActionPool", "Ins&ert Ctrl-Alt-Backspace")); 1022 setStatusTip(QApplication::translate("UIActionPool", "Send the Ctrl-Alt-Backspace sequence to the virtual machine")); 1023 } 1024 }; 1025 #endif /* Q_WS_X11 */ 1026 1003 1027 class UIActionMenuDevices : public UIActionMenu 1004 1028 { … … 1815 1839 m_restrictedActionsMenuView[level] = restriction; 1816 1840 m_invalidations << UIActionIndexRT_M_View << UIActionIndexRT_M_ViewPopup; 1841 } 1842 1843 bool UIActionPoolRuntime::isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType type) const 1844 { 1845 foreach (const UIExtraDataMetaDefs::RuntimeMenuInputActionType &restriction, m_restrictedActionsMenuInput.values()) 1846 if (restriction & type) 1847 return false; 1848 return true; 1849 } 1850 1851 void UIActionPoolRuntime::setRestrictionForMenuInput(UIActionRestrictionLevel level, UIExtraDataMetaDefs::RuntimeMenuInputActionType restriction) 1852 { 1853 m_restrictedActionsMenuInput[level] = restriction; 1854 m_invalidations << UIActionIndexRT_M_Input; 1817 1855 } 1818 1856 … … 1921 1959 m_pool[UIActionIndexRT_M_Machine_S_TakeScreenshot] = new UIActionSimplePerformTakeScreenshot(this); 1922 1960 m_pool[UIActionIndexRT_M_Machine_S_ShowInformation] = new UIActionSimpleShowInformationDialog(this); 1923 m_pool[UIActionIndexRT_M_Machine_M_Keyboard] = new UIActionMenuKeyboard(this);1924 m_pool[UIActionIndexRT_M_Machine_M_Keyboard_S_Settings] = new UIActionSimpleKeyboardSettings(this);1925 m_pool[UIActionIndexRT_M_Machine_M_Mouse] = new UIActionMenuMouse(this);1926 m_pool[UIActionIndexRT_M_Machine_M_Mouse_T_Integration] = new UIActionToggleMouseIntegration(this);1927 m_pool[UIActionIndexRT_M_Machine_S_TypeCAD] = new UIActionSimplePerformTypeCAD(this);1928 #ifdef Q_WS_X111929 m_pool[UIActionIndexRT_M_Machine_S_TypeCABS] = new UIActionSimplePerformTypeCABS(this);1930 #endif /* Q_WS_X11 */1931 1961 m_pool[UIActionIndexRT_M_Machine_T_Pause] = new UIActionTogglePause(this); 1932 1962 m_pool[UIActionIndexRT_M_Machine_S_Reset] = new UIActionSimplePerformReset(this); … … 1952 1982 m_pool[UIActionIndexRT_M_View_M_StatusBar_S_Settings] = new UIActionSimpleShowStatusBarSettingsWindow(this); 1953 1983 m_pool[UIActionIndexRT_M_View_M_StatusBar_T_Visibility] = new UIActionToggleStatusBar(this); 1984 1985 /* 'Input' actions: */ 1986 m_pool[UIActionIndexRT_M_Input] = new UIActionMenuInput(this); 1987 m_pool[UIActionIndexRT_M_Input_M_Keyboard] = new UIActionMenuKeyboard(this); 1988 m_pool[UIActionIndexRT_M_Input_M_Keyboard_S_Settings] = new UIActionSimpleKeyboardSettings(this); 1989 m_pool[UIActionIndexRT_M_Input_M_Mouse] = new UIActionMenuMouse(this); 1990 m_pool[UIActionIndexRT_M_Input_M_Mouse_T_Integration] = new UIActionToggleMouseIntegration(this); 1991 m_pool[UIActionIndexRT_M_Input_S_TypeCAD] = new UIActionSimplePerformTypeCAD(this); 1992 #ifdef Q_WS_X11 1993 m_pool[UIActionIndexRT_M_Input_S_TypeCABS] = new UIActionSimplePerformTypeCABS(this); 1994 #endif /* Q_WS_X11 */ 1954 1995 1955 1996 /* 'Devices' actions: */ … … 1993 2034 /* Prepare update-handlers for known menus: */ 1994 2035 m_menuUpdateHandlers[UIActionIndexRT_M_Machine].ptfr = &UIActionPoolRuntime::updateMenuMachine; 1995 m_menuUpdateHandlers[UIActionIndexRT_M_Machine_M_Keyboard].ptfr = &UIActionPoolRuntime::updateMenuMachineKeyboard;1996 m_menuUpdateHandlers[UIActionIndexRT_M_Machine_M_Mouse].ptfr = &UIActionPoolRuntime::updateMenuMachineMouse;1997 2036 m_menuUpdateHandlers[UIActionIndexRT_M_View].ptfr = &UIActionPoolRuntime::updateMenuView; 1998 2037 m_menuUpdateHandlers[UIActionIndexRT_M_ViewPopup].ptfr = &UIActionPoolRuntime::updateMenuViewPopup; 1999 2038 m_menuUpdateHandlers[UIActionIndexRT_M_View_M_MenuBar].ptfr = &UIActionPoolRuntime::updateMenuViewMenuBar; 2000 2039 m_menuUpdateHandlers[UIActionIndexRT_M_View_M_StatusBar].ptfr = &UIActionPoolRuntime::updateMenuViewStatusBar; 2040 m_menuUpdateHandlers[UIActionIndexRT_M_Input].ptfr = &UIActionPoolRuntime::updateMenuInput; 2041 m_menuUpdateHandlers[UIActionIndexRT_M_Input_M_Keyboard].ptfr = &UIActionPoolRuntime::updateMenuInputKeyboard; 2042 m_menuUpdateHandlers[UIActionIndexRT_M_Input_M_Mouse].ptfr = &UIActionPoolRuntime::updateMenuInputMouse; 2001 2043 m_menuUpdateHandlers[UIActionIndexRT_M_Devices].ptfr = &UIActionPoolRuntime::updateMenuDevices; 2002 2044 m_menuUpdateHandlers[UIActionIndexRT_M_Devices_M_HardDrives].ptfr = &UIActionPoolRuntime::updateMenuDevicesHardDrives; … … 2037 2079 m_restrictedActionsMenuMachine[UIActionRestrictionLevel_Base] = gEDataManager->restrictedRuntimeMenuMachineActionTypes(strMachineID); 2038 2080 m_restrictedActionsMenuView[UIActionRestrictionLevel_Base] = gEDataManager->restrictedRuntimeMenuViewActionTypes(strMachineID); 2081 m_restrictedActionsMenuInput[UIActionRestrictionLevel_Base] = gEDataManager->restrictedRuntimeMenuInputActionTypes(strMachineID); 2039 2082 m_restrictedActionsMenuDevices[UIActionRestrictionLevel_Base] = gEDataManager->restrictedRuntimeMenuDevicesActionTypes(strMachineID); 2040 2083 #ifdef VBOX_WITH_DEBUGGER_GUI … … 2063 2106 m_restrictedActionsMenuMachine[UIActionRestrictionLevel_Base] = (UIExtraDataMetaDefs::RuntimeMenuMachineActionType) 2064 2107 (m_restrictedActionsMenuMachine[UIActionRestrictionLevel_Base] | UIExtraDataMetaDefs::RuntimeMenuMachineActionType_SettingsDialog); 2065 m_restrictedActionsMenu Machine[UIActionRestrictionLevel_Base] = (UIExtraDataMetaDefs::RuntimeMenuMachineActionType)2066 (m_restrictedActionsMenu Machine[UIActionRestrictionLevel_Base] | UIExtraDataMetaDefs::RuntimeMenuMachineActionType_KeyboardSettings);2108 m_restrictedActionsMenuInput[UIActionRestrictionLevel_Base] = (UIExtraDataMetaDefs::RuntimeMenuInputActionType) 2109 (m_restrictedActionsMenuInput[UIActionRestrictionLevel_Base] | UIExtraDataMetaDefs::RuntimeMenuInputActionType_KeyboardSettings); 2067 2110 m_restrictedActionsMenuDevices[UIActionRestrictionLevel_Base] = (UIExtraDataMetaDefs::RuntimeMenuDevicesActionType) 2068 2111 (m_restrictedActionsMenuDevices[UIActionRestrictionLevel_Base] | UIExtraDataMetaDefs::RuntimeMenuDevicesActionType_HardDrivesSettings); … … 2149 2192 updateMenuViewPopup(); 2150 2193 2194 /* 'Input' menu: */ 2195 addMenu(m_mainMenus, action(UIActionIndexRT_M_Input)); 2196 updateMenuInput(); 2197 2151 2198 /* 'Devices' menu: */ 2152 2199 addMenu(m_mainMenus, action(UIActionIndexRT_M_Devices)); … … 2183 2230 /* 'Information Dialog' action: */ 2184 2231 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_S_ShowInformation)) || fSeparator; 2185 2186 /* Separator: */2187 if (fSeparator)2188 {2189 pMenu->addSeparator();2190 fSeparator = false;2191 }2192 2193 /* 'Keyboard' submenu: */2194 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_M_Keyboard)) || fSeparator;2195 updateMenuMachineKeyboard();2196 /* 'Mouse' submenu: */2197 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_M_Mouse), false) || fSeparator;2198 updateMenuMachineMouse();2199 /* 'Mouse Integration' action: */2200 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_M_Mouse_T_Integration)) || fSeparator;2201 2232 2202 2233 /* Separator: */ … … 2232 2263 /* Mark menu as valid: */ 2233 2264 m_invalidations.remove(UIActionIndexRT_M_Machine); 2234 }2235 2236 void UIActionPoolRuntime::updateMenuMachineKeyboard()2237 {2238 /* Get corresponding menu: */2239 UIMenu *pMenu = action(UIActionIndexRT_M_Machine_M_Keyboard)->menu();2240 AssertPtrReturnVoid(pMenu);2241 /* Clear contents: */2242 pMenu->clear();2243 2244 /* Separator: */2245 bool fSeparator = false;2246 2247 /* 'Keyboard Settings' action: */2248 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_M_Keyboard_S_Settings)) || fSeparator;2249 2250 /* Separator: */2251 if (fSeparator)2252 {2253 pMenu->addSeparator();2254 fSeparator = false;2255 }2256 2257 /* 'Type CAD' action: */2258 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_S_TypeCAD)) || fSeparator;2259 #ifdef Q_WS_X112260 /* 'Type CABS' action: */2261 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Machine_S_TypeCABS)) || fSeparator;2262 #endif /* Q_WS_X11 */2263 2264 /* Mark menu as valid: */2265 m_invalidations.remove(UIActionIndexRT_M_Machine_M_Keyboard);2266 }2267 2268 void UIActionPoolRuntime::updateMenuMachineMouse()2269 {2270 /* Get corresponding menu: */2271 UIMenu *pMenu = action(UIActionIndexRT_M_Machine_M_Mouse)->menu();2272 AssertPtrReturnVoid(pMenu);2273 /* Clear contents: */2274 pMenu->clear();2275 2276 /* 'Machine Integration' action: */2277 addAction(pMenu, action(UIActionIndexRT_M_Machine_M_Mouse_T_Integration));2278 2279 /* Mark menu as valid: */2280 m_invalidations.remove(UIActionIndexRT_M_Machine_M_Mouse);2281 2265 } 2282 2266 … … 2558 2542 } 2559 2543 2544 void UIActionPoolRuntime::updateMenuInput() 2545 { 2546 /* Get corresponding menu: */ 2547 UIMenu *pMenu = action(UIActionIndexRT_M_Input)->menu(); 2548 AssertPtrReturnVoid(pMenu); 2549 /* Clear contents: */ 2550 pMenu->clear(); 2551 2552 /* Separator: */ 2553 bool fSeparator = false; 2554 2555 /* 'Keyboard' submenu: */ 2556 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Keyboard)) || fSeparator; 2557 updateMenuInputKeyboard(); 2558 /* 'Mouse' submenu: */ 2559 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Mouse), false) || fSeparator; 2560 updateMenuInputMouse(); 2561 /* 'Mouse Integration' action: */ 2562 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Mouse_T_Integration)) || fSeparator; 2563 2564 /* Mark menu as valid: */ 2565 m_invalidations.remove(UIActionIndexRT_M_Input); 2566 } 2567 2568 void UIActionPoolRuntime::updateMenuInputKeyboard() 2569 { 2570 /* Get corresponding menu: */ 2571 UIMenu *pMenu = action(UIActionIndexRT_M_Input_M_Keyboard)->menu(); 2572 AssertPtrReturnVoid(pMenu); 2573 /* Clear contents: */ 2574 pMenu->clear(); 2575 2576 /* Separator: */ 2577 bool fSeparator = false; 2578 2579 /* 'Keyboard Settings' action: */ 2580 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings)) || fSeparator; 2581 2582 /* Separator: */ 2583 if (fSeparator) 2584 { 2585 pMenu->addSeparator(); 2586 fSeparator = false; 2587 } 2588 2589 /* 'Type CAD' action: */ 2590 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_S_TypeCAD)) || fSeparator; 2591 #ifdef Q_WS_X11 2592 /* 'Type CABS' action: */ 2593 fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_S_TypeCABS)) || fSeparator; 2594 #endif /* Q_WS_X11 */ 2595 2596 /* Mark menu as valid: */ 2597 m_invalidations.remove(UIActionIndexRT_M_Input_M_Keyboard); 2598 } 2599 2600 void UIActionPoolRuntime::updateMenuInputMouse() 2601 { 2602 /* Get corresponding menu: */ 2603 UIMenu *pMenu = action(UIActionIndexRT_M_Input_M_Mouse)->menu(); 2604 AssertPtrReturnVoid(pMenu); 2605 /* Clear contents: */ 2606 pMenu->clear(); 2607 2608 /* 'Machine Integration' action: */ 2609 addAction(pMenu, action(UIActionIndexRT_M_Input_M_Mouse_T_Integration)); 2610 2611 /* Mark menu as valid: */ 2612 m_invalidations.remove(UIActionIndexRT_M_Input_M_Mouse); 2613 } 2614 2560 2615 void UIActionPoolRuntime::updateMenuDevices() 2561 2616 { -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
r52645 r52937 45 45 UIActionIndexRT_M_Machine_S_TakeScreenshot, 46 46 UIActionIndexRT_M_Machine_S_ShowInformation, 47 UIActionIndexRT_M_Machine_M_Keyboard,48 UIActionIndexRT_M_Machine_M_Keyboard_S_Settings,49 UIActionIndexRT_M_Machine_M_Mouse,50 UIActionIndexRT_M_Machine_M_Mouse_T_Integration,51 UIActionIndexRT_M_Machine_S_TypeCAD,52 #ifdef Q_WS_X1153 UIActionIndexRT_M_Machine_S_TypeCABS,54 #endif /* Q_WS_X11 */55 47 UIActionIndexRT_M_Machine_T_Pause, 56 48 UIActionIndexRT_M_Machine_S_Reset, … … 76 68 UIActionIndexRT_M_View_M_StatusBar_S_Settings, 77 69 UIActionIndexRT_M_View_M_StatusBar_T_Visibility, 70 71 /* 'Input' menu actions: */ 72 UIActionIndexRT_M_Input, 73 UIActionIndexRT_M_Input_M_Keyboard, 74 UIActionIndexRT_M_Input_M_Keyboard_S_Settings, 75 UIActionIndexRT_M_Input_M_Mouse, 76 UIActionIndexRT_M_Input_M_Mouse_T_Integration, 77 UIActionIndexRT_M_Input_S_TypeCAD, 78 #ifdef Q_WS_X11 79 UIActionIndexRT_M_Input_S_TypeCABS, 80 #endif /* Q_WS_X11 */ 78 81 79 82 /* 'Devices' menu actions: */ … … 158 161 void setRestrictionForMenuView(UIActionRestrictionLevel level, UIExtraDataMetaDefs::RuntimeMenuViewActionType restriction); 159 162 163 /** Returns whether the action with passed @a type is allowed in the 'Input' menu. */ 164 bool isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType type) const; 165 /** Defines 'Input' menu @a restriction for passed @a level. */ 166 void setRestrictionForMenuInput(UIActionRestrictionLevel level, UIExtraDataMetaDefs::RuntimeMenuInputActionType restriction); 167 160 168 /** Returns whether the action with passed @a type is allowed in the 'Devices' menu. */ 161 169 bool isAllowedInMenuDevices(UIExtraDataMetaDefs::RuntimeMenuDevicesActionType type) const; … … 211 219 /** Update 'Machine' menu routine. */ 212 220 void updateMenuMachine(); 213 /** Update 'Machine' : 'Keyboard' menu routine. */214 void updateMenuMachineKeyboard();215 /** Update 'Machine' : 'Mouse' menu routine. */216 void updateMenuMachineMouse();217 221 /** Update 'View' menu routine. */ 218 222 void updateMenuView(); … … 227 231 /** Update 'View' : 'Virtual Screen #' @a pMenu routine (Fullscreen, Seamless). */ 228 232 void updateMenuViewMultiscreen(QMenu *pMenu); 233 /** Update 'Input' menu routine. */ 234 void updateMenuInput(); 235 /** Update 'Input' : 'Keyboard' menu routine. */ 236 void updateMenuInputKeyboard(); 237 /** Update 'Input' : 'Mouse' menu routine. */ 238 void updateMenuInputMouse(); 229 239 /** Update 'Devices' menu routine. */ 230 240 void updateMenuDevices(); … … 267 277 /** Holds restricted action types of the View menu. */ 268 278 QMap<UIActionRestrictionLevel, UIExtraDataMetaDefs::RuntimeMenuViewActionType> m_restrictedActionsMenuView; 279 /** Holds restricted action types of the Input menu. */ 280 QMap<UIActionRestrictionLevel, UIExtraDataMetaDefs::RuntimeMenuInputActionType> m_restrictedActionsMenuInput; 269 281 /** Holds restricted action types of the Devices menu. */ 270 282 QMap<UIActionRestrictionLevel, UIExtraDataMetaDefs::RuntimeMenuDevicesActionType> m_restrictedActionsMenuDevices; -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
r52894 r52937 539 539 540 540 /* Update action state: */ 541 QAction *pAction = actionPool()->action(UIActionIndexRT_M_ Machine_M_Mouse_T_Integration);541 QAction *pAction = actionPool()->action(UIActionIndexRT_M_Input_M_Mouse_T_Integration); 542 542 pAction->setEnabled(fIsMouseSupportsAbsolute && fIsMouseSupportsRelative && !fIsMouseHostCursorNeeded); 543 543 if (fIsMouseHostCursorNeeded) … … 851 851 852 852 /* Move actions into running actions group: */ 853 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCAD));854 #ifdef Q_WS_X11855 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCABS));856 #endif857 853 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_Reset)); 858 854 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_Shutdown)); … … 862 858 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_View_T_GuestAutoresize)); 863 859 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_View_S_AdjustWindow)); 860 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_S_TypeCAD)); 861 #ifdef Q_WS_X11 862 m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_S_TypeCABS)); 863 #endif /* Q_WS_X11 */ 864 864 865 865 /* Move actions into running-n-paused actions group: */ … … 869 869 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_TakeScreenshot)); 870 870 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_S_ShowInformation)); 871 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_M_Keyboard));872 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_M_Keyboard_S_Settings));873 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_M_Mouse));874 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_M_Mouse_T_Integration));875 871 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Machine_T_Pause)); 876 872 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_MenuBar)); … … 880 876 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_S_Settings)); 881 877 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_StatusBar_T_Visibility)); 878 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard)); 879 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings)); 880 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Mouse)); 881 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Mouse_T_Integration)); 882 882 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Devices_M_HardDrives)); 883 883 m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Devices_M_HardDrives_S_Settings)); … … 914 914 connect(actionPool()->action(UIActionIndexRT_M_Machine_S_ShowInformation), SIGNAL(triggered()), 915 915 this, SLOT(sltShowInformationDialog())); 916 connect(actionPool()->action(UIActionIndexRT_M_Machine_M_Keyboard_S_Settings), SIGNAL(triggered()),917 this, SLOT(sltShowKeyboardSettings()));918 connect(actionPool()->action(UIActionIndexRT_M_Machine_M_Mouse_T_Integration), SIGNAL(toggled(bool)),919 this, SLOT(sltToggleMouseIntegration(bool)));920 connect(actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCAD), SIGNAL(triggered()),921 this, SLOT(sltTypeCAD()));922 #ifdef Q_WS_X11923 connect(actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCABS), SIGNAL(triggered()),924 this, SLOT(sltTypeCABS()));925 #endif926 916 connect(actionPool()->action(UIActionIndexRT_M_Machine_T_Pause), SIGNAL(toggled(bool)), 927 917 this, SLOT(sltPause(bool))); … … 947 937 connect(actionPool()->action(UIActionIndexRT_M_View_S_AdjustWindow), SIGNAL(triggered()), 948 938 this, SLOT(sltAdjustWindow())); 939 940 /* 'Input' actions connections: */ 941 connect(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings), SIGNAL(triggered()), 942 this, SLOT(sltShowKeyboardSettings())); 943 connect(actionPool()->action(UIActionIndexRT_M_Input_M_Mouse_T_Integration), SIGNAL(toggled(bool)), 944 this, SLOT(sltToggleMouseIntegration(bool))); 945 connect(actionPool()->action(UIActionIndexRT_M_Input_S_TypeCAD), SIGNAL(triggered()), 946 this, SLOT(sltTypeCAD())); 947 #ifdef Q_WS_X11 948 connect(actionPool()->action(UIActionIndexRT_M_Input_S_TypeCABS), SIGNAL(triggered()), 949 this, SLOT(sltTypeCABS())); 950 #endif /* Q_WS_X11 */ 949 951 950 952 /* 'Devices' actions connections: */ -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp
r52730 r52937 100 100 /** Prepare 'View' menu routine. */ 101 101 void prepareMenuView(); 102 /** Prepare 'Input' menu routine. */ 103 void prepareMenuInput(); 102 104 /** Prepare 'Devices' menu routine. */ 103 105 void prepareMenuDevices(); … … 119 121 /** Updates 'View' menu routine. */ 120 122 void updateMenuView(); 123 /** Updates 'Input' menu routine. */ 124 void updateMenuInput(); 121 125 /** Updates 'Devices' menu routine. */ 122 126 void updateMenuDevices(); … … 231 235 /* Save updated menu-bar restrictions: */ 232 236 gEDataManager->setRestrictedRuntimeMenuViewActionTypes(restrictions, vboxGlobal().managedVMUuid()); 237 break; 238 } 239 case UIExtraDataMetaDefs::MenuType_Input: 240 { 241 /* Get sender type: */ 242 const UIExtraDataMetaDefs::RuntimeMenuInputActionType type = 243 static_cast<UIExtraDataMetaDefs::RuntimeMenuInputActionType>(pAction->property("type").toInt()); 244 /* Load current menu-bar restrictions: */ 245 UIExtraDataMetaDefs::RuntimeMenuInputActionType restrictions = gEDataManager->restrictedRuntimeMenuInputActionTypes(vboxGlobal().managedVMUuid()); 246 /* Invert restriction for sender type: */ 247 restrictions = (UIExtraDataMetaDefs::RuntimeMenuInputActionType)(restrictions ^ type); 248 /* Save updated menu-bar restrictions: */ 249 gEDataManager->setRestrictedRuntimeMenuInputActionTypes(restrictions, vboxGlobal().managedVMUuid()); 233 250 break; 234 251 } … … 335 352 prepareMenuMachine(); 336 353 prepareMenuView(); 354 prepareMenuInput(); 337 355 prepareMenuDevices(); 338 356 #ifdef VBOX_WITH_DEBUGGER_GUI … … 498 516 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_S_ShowInformation)); 499 517 pMenu->addSeparator(); 500 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_M_Keyboard));501 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_M_Mouse_T_Integration));502 pMenu->addSeparator();503 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCAD));504 #ifdef Q_WS_X11505 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_S_TypeCABS));506 #endif /* Q_WS_X11 */507 pMenu->addSeparator();508 518 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_T_Pause)); 509 519 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Machine_S_Reset)); … … 532 542 // prepareCopiedAction(pMenu, Resize); 533 543 // prepareCopiedAction(pMenu, MultiScreen); 544 } 545 } 546 547 void UIMenuBarEditorWidget::prepareMenuInput() 548 { 549 /* Copy menu: */ 550 QMenu *pMenu = prepareCopiedMenu(actionPool()->action(UIActionIndexRT_M_Input)); 551 AssertPtrReturnVoid(pMenu); 552 { 553 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard)); 554 prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_Input_M_Mouse_T_Integration)); 534 555 } 535 556 } … … 629 650 updateMenuMachine(); 630 651 updateMenuView(); 652 updateMenuInput(); 631 653 updateMenuDevices(); 632 654 #ifdef VBOX_WITH_DEBUGGER_GUI … … 722 744 /* Update action 'checked' state: */ 723 745 m_actions.value(strKey)->setChecked(!(restrictionsMenuView & enumValue)); 746 } 747 } 748 749 void UIMenuBarEditorWidget::updateMenuInput() 750 { 751 /* Recache menu-bar configuration: */ 752 const UIExtraDataMetaDefs::RuntimeMenuInputActionType restrictionsMenuInput = gEDataManager->restrictedRuntimeMenuInputActionTypes(vboxGlobal().managedVMUuid()); 753 /* Get static meta-object: */ 754 const QMetaObject &smo = UIExtraDataMetaDefs::staticMetaObject; 755 756 /* We have UIExtraDataMetaDefs::RuntimeMenuInputActionType enum registered, so we can enumerate it: */ 757 const int iEnumIndex = smo.indexOfEnumerator("RuntimeMenuInputActionType"); 758 QMetaEnum metaEnum = smo.enumerator(iEnumIndex); 759 /* Handle other enum-values: */ 760 for (int iKeyIndex = 0; iKeyIndex < metaEnum.keyCount(); ++iKeyIndex) 761 { 762 /* Get iterated enum-value: */ 763 const UIExtraDataMetaDefs::RuntimeMenuInputActionType enumValue = 764 static_cast<const UIExtraDataMetaDefs::RuntimeMenuInputActionType>(metaEnum.keyToValue(metaEnum.key(iKeyIndex))); 765 /* Skip RuntimeMenuInputActionType_Invalid & RuntimeMenuInputActionType_All enum-value: */ 766 if (enumValue == UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid || 767 enumValue == UIExtraDataMetaDefs::RuntimeMenuInputActionType_All) 768 continue; 769 /* Which key required action registered under? */ 770 const QString strKey = gpConverter->toInternalString(enumValue); 771 if (!m_actions.contains(strKey)) 772 continue; 773 /* Update action 'checked' state: */ 774 m_actions.value(strKey)->setChecked(!(restrictionsMenuInput & enumValue)); 724 775 } 725 776 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
r52796 r52937 192 192 case IndicatorType_Display: pAction = actionPool()->action(UIActionIndexRT_M_ViewPopup); break; 193 193 case IndicatorType_VideoCapture: pAction = actionPool()->action(UIActionIndexRT_M_Devices_M_VideoCapture); break; 194 case IndicatorType_Mouse: pAction = actionPool()->action(UIActionIndexRT_M_ Machine_M_Mouse);break;195 case IndicatorType_Keyboard: pAction = actionPool()->action(UIActionIndexRT_M_ Machine_M_Keyboard);break;194 case IndicatorType_Mouse: pAction = actionPool()->action(UIActionIndexRT_M_Input_M_Mouse); break; 195 case IndicatorType_Keyboard: pAction = actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard); break; 196 196 default: break; 197 197 } -
trunk/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineLogicSeamless.cpp
r52730 r52937 210 210 211 211 /* Restrict 'Disable Mouse Integration' action for 'Machine' menu: */ 212 actionPool()->toRuntime()->setRestrictionForMenu Machine(UIActionRestrictionLevel_Logic,213 UIExtraDataMetaDefs::RuntimeMenuMachineActionType_MouseIntegration);212 actionPool()->toRuntime()->setRestrictionForMenuInput(UIActionRestrictionLevel_Logic, 213 UIExtraDataMetaDefs::RuntimeMenuInputActionType_MouseIntegration); 214 214 /* Restrict 'Adjust Window', 'Guest Autoresize', 'Status Bar' and 'Resize' actions for 'View' menu: */ 215 215 actionPool()->toRuntime()->setRestrictionForMenuView(UIActionRestrictionLevel_Logic, … … 341 341 342 342 /* Allow 'Disable Mouse Integration' action for 'Machine' menu: */ 343 actionPool()->toRuntime()->setRestrictionForMenu Machine(UIActionRestrictionLevel_Logic,344 UIExtraDataMetaDefs::RuntimeMenuMachineActionType_Invalid);343 actionPool()->toRuntime()->setRestrictionForMenuInput(UIActionRestrictionLevel_Logic, 344 UIExtraDataMetaDefs::RuntimeMenuInputActionType_Invalid); 345 345 /* Allow 'Adjust Window', 'Guest Autoresize', 'Status Bar' and 'Resize' actions for 'View' menu: */ 346 346 actionPool()->toRuntime()->setRestrictionForMenuView(UIActionRestrictionLevel_Logic,
Note:
See TracChangeset
for help on using the changeset viewer.