Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp	(revision 75207)
@@ -2555,5 +2555,5 @@
 #ifndef VBOX_WS_MAC
     /* 'About' action: */
-    fSeparator = addAction(pMenu, action(UIActionIndex_Simple_About)) || fSeparator;;
+    fSeparator = addAction(pMenu, action(UIActionIndex_Simple_About)) || fSeparator;
 #endif
 
@@ -2615,5 +2615,5 @@
 
     /* 'Refresh' action: */
-    fSeparator = addAction(pMenu, action(UIActionIndex_M_Log_S_Refresh)) || fSeparator;;
+    fSeparator = addAction(pMenu, action(UIActionIndex_M_Log_S_Refresh)) || fSeparator;
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h	(revision 75207)
@@ -520,4 +520,7 @@
     QList<UIAction*> actions() const { return m_pool.values(); }
 
+    /** Returns the list of main menus. */
+    QList<QMenu*> menus() const { return m_mainMenus; }
+
     /** Returns whether the menu with passed @a type is allowed in menu-bar. */
     bool isAllowedInMenuBar(UIExtraDataMetaDefs::MenuType type) const;
@@ -545,9 +548,9 @@
     bool processHotKey(const QKeySequence &key);
 
+    /** Defines whether shortcuts of menu actions with specified @a iIndex should be visible. */
+    virtual void setShortcutsVisible(int iIndex, bool fVisible) { Q_UNUSED(iIndex); Q_UNUSED(fVisible); }
+
     /** Returns extra-data ID to save keyboard shortcuts under. */
     virtual QString shortcutsExtraDataID() const = 0;
-
-    /** Returns the list of main menus. */
-    virtual QList<QMenu*> menus() const = 0;
 
 public slots:
@@ -637,4 +640,7 @@
     QSet<int>                     m_invalidations;
 
+    /** Holds the list of main menus. */
+    QList<QMenu*>  m_mainMenus;
+
     /** Holds restricted menu types. */
     QMap<UIActionRestrictionLevel, UIExtraDataMetaDefs::MenuType>                   m_restrictedMenus;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.h	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.h	(revision 75207)
@@ -27,7 +27,4 @@
 #include "UIExtraDataDefs.h"
 #include "UILibraryDefs.h"
-
-/* Forward declarations: */
-class QSize;
 
 
@@ -286,7 +283,4 @@
     virtual QString shortcutsExtraDataID() const /* override */;
 
-    /** Returns the list of Runtime UI main menus. */
-    virtual QList<QMenu*> menus() const /* override */ { return m_mainMenus; }
-
 private:
 
@@ -306,7 +300,4 @@
     /** Holds the host-to-guest mapping scheme. */
     QMap<int, int>  m_mapHostScreenForGuestScreen;
-
-    /** Holds the list of Runtime UI main menus. */
-    QList<QMenu*>  m_mainMenus;
 
     /** Holds restricted action types of the Machine menu. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.cpp	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.cpp	(revision 75207)
@@ -21,9 +21,14 @@
 
 /* GUI includes: */
+# include "VBoxGlobal.h"
 # include "UIActionPoolSelector.h"
-# include "UIExtraDataDefs.h"
+# include "UIExtraDataManager.h"
 # include "UIIconPool.h"
 # include "UIShortcutPool.h"
 # include "UIDefs.h"
+
+/* COM includes: */
+# include "CExtPack.h"
+# include "CExtPackManager.h"
 
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
@@ -2617,10 +2622,19 @@
 
     /* Prepare update-handlers for known menus: */
-    m_menuUpdateHandlers[UIActionIndexST_M_MediumWindow].ptfs = &UIActionPoolSelector::updateMenuMediumWindow;
-    m_menuUpdateHandlers[UIActionIndexST_M_Medium].ptfs = &UIActionPoolSelector::updateMenuMedium;
-    m_menuUpdateHandlers[UIActionIndexST_M_NetworkWindow].ptfs = &UIActionPoolSelector::updateMenuNetworkWindow;
-    m_menuUpdateHandlers[UIActionIndexST_M_Network].ptfs = &UIActionPoolSelector::updateMenuNetwork;
-    m_menuUpdateHandlers[UIActionIndexST_M_CloudWindow].ptfs = &UIActionPoolSelector::updateMenuCloudWindow;
-    m_menuUpdateHandlers[UIActionIndexST_M_Cloud].ptfs = &UIActionPoolSelector::updateMenuCloud;
+    m_menuUpdateHandlers[UIActionIndexST_M_File].ptfs =                  &UIActionPoolSelector::updateMenuFile;
+    m_menuUpdateHandlers[UIActionIndexST_M_Welcome].ptfs =               &UIActionPoolSelector::updateMenuWelcome;
+    m_menuUpdateHandlers[UIActionIndexST_M_Group].ptfs =                 &UIActionPoolSelector::updateMenuGroup;
+    m_menuUpdateHandlers[UIActionIndexST_M_Machine].ptfs =               &UIActionPoolSelector::updateMenuMachine;
+    m_menuUpdateHandlers[UIActionIndexST_M_Group_M_StartOrShow].ptfs =   &UIActionPoolSelector::updateMenuGroupStartOrShow;
+    m_menuUpdateHandlers[UIActionIndexST_M_Machine_M_StartOrShow].ptfs = &UIActionPoolSelector::updateMenuMachineStartOrShow;
+    m_menuUpdateHandlers[UIActionIndexST_M_Group_M_Close].ptfs =         &UIActionPoolSelector::updateMenuGroupClose;
+    m_menuUpdateHandlers[UIActionIndexST_M_Machine_M_Close].ptfs =       &UIActionPoolSelector::updateMenuMachineClose;
+    m_menuUpdateHandlers[UIActionIndexST_M_MediumWindow].ptfs =          &UIActionPoolSelector::updateMenuMediumWindow;
+    m_menuUpdateHandlers[UIActionIndexST_M_Medium].ptfs =                &UIActionPoolSelector::updateMenuMedium;
+    m_menuUpdateHandlers[UIActionIndexST_M_NetworkWindow].ptfs =         &UIActionPoolSelector::updateMenuNetworkWindow;
+    m_menuUpdateHandlers[UIActionIndexST_M_Network].ptfs =               &UIActionPoolSelector::updateMenuNetwork;
+    m_menuUpdateHandlers[UIActionIndexST_M_CloudWindow].ptfs =           &UIActionPoolSelector::updateMenuCloudWindow;
+    m_menuUpdateHandlers[UIActionIndexST_M_Cloud].ptfs =                 &UIActionPoolSelector::updateMenuCloud;
+    m_menuUpdateHandlers[UIActionIndexST_M_Snapshot].ptfs =              &UIActionPoolSelector::updateMenuSnapshot;
 
     /* Call to base-class: */
@@ -2638,22 +2652,318 @@
 }
 
+void UIActionPoolSelector::updateMenu(int iIndex)
+{
+    /* If index belongs to base-class => delegate to base-class: */
+    if (iIndex < UIActionIndex_Max)
+        UIActionPool::updateMenu(iIndex);
+    /* Otherwise,
+     * if menu with such index is invalidated
+     * and there is update-handler => handle it here: */
+    else if (   iIndex > UIActionIndex_Max
+             && m_invalidations.contains(iIndex)
+             && m_menuUpdateHandlers.contains(iIndex))
+             (this->*(m_menuUpdateHandlers.value(iIndex).ptfs))();
+}
+
 void UIActionPoolSelector::updateMenus()
 {
-    /* 'Help' menu: */
-    updateMenuHelp();
-
-    /* 'Log Viewer' menu: */
-    updateMenuLogViewerWindow();
-    updateMenuLogViewer();
+    /* Clear menu list: */
+    m_mainMenus.clear();
+
+    /* 'File' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_File));
+    updateMenuFile();
+
+    /* 'Welcome' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Welcome));
+    updateMenuWelcome();
+    /* 'Group' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Group));
+    updateMenuGroup();
+    /* 'Machine' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Machine));
+    updateMenuMachine();
+
+    /* 'Group' / 'Start or Show' menu: */
+    updateMenuGroupStartOrShow();
+    /* 'Machine' / 'Start or Show' menu: */
+    updateMenuMachineStartOrShow();
+    /* 'Group' / 'Close' menu: */
+    updateMenuGroupClose();
+    /* 'Machine' / 'Close' menu: */
+    updateMenuMachineClose();
 
     /* 'Virtual Media Manager' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Medium));
     updateMenuMediumWindow();
     updateMenuMedium();
     /* 'Host Network Manager' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Network));
     updateMenuNetworkWindow();
     updateMenuNetwork();
     /* 'Cloud Profile Manager' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Cloud));
     updateMenuCloudWindow();
     updateMenuCloud();
+
+    /* 'Snapshot' menu: */
+    addMenu(m_mainMenus, action(UIActionIndexST_M_Snapshot));
+    updateMenuSnapshot();
+    /* 'Log' menu: */
+    addMenu(m_mainMenus, action(UIActionIndex_M_Log));
+    updateMenuLogViewerWindow();
+    updateMenuLogViewer();
+
+    /* 'Help' menu: */
+    addMenu(m_mainMenus, action(UIActionIndex_Menu_Help));
+    updateMenuHelp();
+}
+
+void UIActionPoolSelector::updateMenuFile()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_File)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Check if Ext Pack is ready, some of actions my depend on it: */
+    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
+    const bool fExtPackAccessible = !extPack.isNull() && extPack.GetUsable();
+
+    /* The Application / 'File' menu contents is very different depending on host type. */
+
+#ifdef VBOX_WS_MAC
+
+    /* 'About' action goes to Application menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_About));
+# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+    /* 'Check for Updates' action goes to Application menu: */
+    if (gEDataManager->applicationUpdateEnabled())
+        pMenu->addAction(action(UIActionIndex_M_Application_S_CheckForUpdates));
+    /* 'Network Access Manager' action goes to Application menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_NetworkAccessManager));
+# endif
+    /* 'Reset Warnings' action goes to Application menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_ResetWarnings));
+    /* 'Preferences' action goes to Application menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_Preferences));
+    /* 'Close' action goes to Application menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_Close));
+
+    /* 'Import Appliance' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ImportAppliance));
+    /* 'Export Appliance' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ExportAppliance));
+# ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
+    /* 'Show Extra-data Manager' action goes to 'File' menu for Debug build: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowExtraDataManager));
+# endif
+    /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowVirtualMediumManager));
+    /* 'Show Host Network Manager' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowHostNetworkManager));
+    /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
+    if (fExtPackAccessible)
+        pMenu->addAction(action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
+
+#else /* !VBOX_WS_MAC */
+
+    /* 'Preferences' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_Preferences));
+    /* Separator after 'Preferences' action of the 'File' menu: */
+    pMenu->addSeparator();
+    /* 'Import Appliance' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ImportAppliance));
+    /* 'Export Appliance' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ExportAppliance));
+    /* Separator after 'Export Appliance' action of the 'File' menu: */
+    pMenu->addSeparator();
+# ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
+    /* 'Extra-data Manager' action goes to 'File' menu for Debug build: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowExtraDataManager));
+# endif
+    /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowVirtualMediumManager));
+    /* 'Show Host Network Manager' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_ShowHostNetworkManager));
+    /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
+    if (fExtPackAccessible)
+        pMenu->addAction(action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
+# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
+    /* 'Network Access Manager' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_NetworkAccessManager));
+    /* 'Check for Updates' action goes to 'File' menu: */
+    if (gEDataManager->applicationUpdateEnabled())
+        pMenu->addAction(action(UIActionIndex_M_Application_S_CheckForUpdates));
+# endif
+    /* Separator after tool actions of the 'File' menu: */
+    pMenu->addSeparator();
+    /* 'Reset Warnings' action goes 'File' menu: */
+    pMenu->addAction(action(UIActionIndex_M_Application_S_ResetWarnings));
+    /* Separator after 'Reset Warnings' action of the 'File' menu: */
+    pMenu->addSeparator();
+    /* 'Close' action goes to 'File' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_File_S_Close));
+
+#endif /* !VBOX_WS_MAC */
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_File);
+}
+
+void UIActionPoolSelector::updateMenuWelcome()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Welcome)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate Welcome menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Welcome_S_New));
+    pMenu->addAction(action(UIActionIndexST_M_Welcome_S_Add));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Welcome);
+}
+
+void UIActionPoolSelector::updateMenuGroup()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Group)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate Machine-menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_New));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Add));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Rename));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Remove));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_StartOrShow));
+    pMenu->addAction(action(UIActionIndexST_M_Group_T_Pause));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Reset));
+    pMenu->addMenu(action(UIActionIndexST_M_Group_M_Close)->menu());
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Discard));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_ShowLogDialog));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Refresh));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_ShowInFileManager));
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_CreateShortcut));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Group_S_Sort));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Group);
+}
+
+void UIActionPoolSelector::updateMenuMachine()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Machine)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate Machine-menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_New));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Add));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Settings));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Clone));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Move));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Remove));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_AddGroup));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_StartOrShow));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_T_Pause));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Reset));
+    pMenu->addMenu(action(UIActionIndexST_M_Machine_M_Close)->menu());
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Discard));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_ShowLogDialog));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_Refresh));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_ShowInFileManager));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_CreateShortcut));
+    pMenu->addSeparator();
+    pMenu->addAction(action(UIActionIndexST_M_Machine_S_SortParent));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Machine);
+}
+
+void UIActionPoolSelector::updateMenuGroupStartOrShow()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Group_M_StartOrShow)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate 'Group' / 'Start or Show' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_StartOrShow_S_StartNormal));
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_StartOrShow_S_StartHeadless));
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_StartOrShow_S_StartDetachable));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Group_M_StartOrShow);
+}
+
+void UIActionPoolSelector::updateMenuMachineStartOrShow()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Machine_M_StartOrShow)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate 'Machine' / 'Start or Show' menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartNormal));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartHeadless));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartDetachable));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Machine_M_StartOrShow);
+}
+
+void UIActionPoolSelector::updateMenuGroupClose()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Group_M_Close)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate 'Group' / 'Close' menu: */
+    // pMenu->addAction(action(UIActionIndexST_M_Group_M_Close_S_Detach));
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_Close_S_SaveState));
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_Close_S_Shutdown));
+    pMenu->addAction(action(UIActionIndexST_M_Group_M_Close_S_PowerOff));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Group_M_Close);
+}
+
+void UIActionPoolSelector::updateMenuMachineClose()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Machine_M_Close)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate 'Machine' / 'Close' menu: */
+    // pMenu->addAction(action(UIActionIndexST_M_Machine_M_Close_S_Detach));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_Close_S_SaveState));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_Close_S_Shutdown));
+    pMenu->addAction(action(UIActionIndexST_M_Machine_M_Close_S_PowerOff));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Machine_M_Close);
 }
 
@@ -2822,4 +3132,23 @@
 }
 
+void UIActionPoolSelector::updateMenuSnapshot()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexST_M_Snapshot)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Populate Snapshot-menu: */
+    pMenu->addAction(action(UIActionIndexST_M_Snapshot_S_Take));
+    pMenu->addAction(action(UIActionIndexST_M_Snapshot_S_Delete));
+    pMenu->addAction(action(UIActionIndexST_M_Snapshot_S_Restore));
+    pMenu->addAction(action(UIActionIndexST_M_Snapshot_T_Properties));
+    pMenu->addAction(action(UIActionIndexST_M_Snapshot_S_Clone));
+
+    /* Mark menu as valid: */
+    m_invalidations.remove(UIActionIndexST_M_Snapshot);
+}
+
 void UIActionPoolSelector::updateShortcuts()
 {
@@ -2831,4 +3160,79 @@
 }
 
+void UIActionPoolSelector::setShortcutsVisible(int iIndex, bool fVisible)
+{
+    /* Prepare a list of actions: */
+    QList<UIAction*> actions;
+
+    /* Handle known menus: */
+    switch (iIndex)
+    {
+        case UIActionIndexST_M_Welcome:
+        {
+            actions << action(UIActionIndexST_M_Welcome_S_New)
+                    << action(UIActionIndexST_M_Welcome_S_Add);
+            break;
+        }
+        case UIActionIndexST_M_Group:
+        {
+            actions << action(UIActionIndexST_M_Group_S_New)
+                    << action(UIActionIndexST_M_Group_S_Add)
+                    << action(UIActionIndexST_M_Group_S_Rename)
+                    << action(UIActionIndexST_M_Group_S_Remove)
+                    << action(UIActionIndexST_M_Group_M_StartOrShow)
+                    << action(UIActionIndexST_M_Group_T_Pause)
+                    << action(UIActionIndexST_M_Group_S_Reset)
+                    << action(UIActionIndexST_M_Group_S_Discard)
+                    << action(UIActionIndexST_M_Group_S_ShowLogDialog)
+                    << action(UIActionIndexST_M_Group_S_Refresh)
+                    << action(UIActionIndexST_M_Group_S_ShowInFileManager)
+                    << action(UIActionIndexST_M_Group_S_CreateShortcut)
+                    << action(UIActionIndexST_M_Group_S_Sort)
+                    << action(UIActionIndexST_M_Group_M_StartOrShow_S_StartNormal)
+                    << action(UIActionIndexST_M_Group_M_StartOrShow_S_StartHeadless)
+                    << action(UIActionIndexST_M_Group_M_StartOrShow_S_StartDetachable)
+                    // << action(UIActionIndexST_M_Group_M_Close_S_Detach)
+                    << action(UIActionIndexST_M_Group_M_Close_S_SaveState)
+                    << action(UIActionIndexST_M_Group_M_Close_S_Shutdown)
+                    << action(UIActionIndexST_M_Group_M_Close_S_PowerOff);
+            break;
+        }
+        case UIActionIndexST_M_Machine:
+        {
+
+            actions << action(UIActionIndexST_M_Machine_S_New)
+                    << action(UIActionIndexST_M_Machine_S_Add)
+                    << action(UIActionIndexST_M_Machine_S_Settings)
+                    << action(UIActionIndexST_M_Machine_S_Clone)
+                    << action(UIActionIndexST_M_Machine_S_Move)
+                    << action(UIActionIndexST_M_Machine_S_Remove)
+                    << action(UIActionIndexST_M_Machine_S_AddGroup)
+                    << action(UIActionIndexST_M_Machine_M_StartOrShow)
+                    << action(UIActionIndexST_M_Machine_T_Pause)
+                    << action(UIActionIndexST_M_Machine_S_Reset)
+                    << action(UIActionIndexST_M_Machine_S_Discard)
+                    << action(UIActionIndexST_M_Machine_S_ShowLogDialog)
+                    << action(UIActionIndexST_M_Machine_S_Refresh)
+                    << action(UIActionIndexST_M_Machine_S_ShowInFileManager)
+                    << action(UIActionIndexST_M_Machine_S_CreateShortcut)
+                    << action(UIActionIndexST_M_Machine_S_SortParent)
+                    << action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartNormal)
+                    << action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartHeadless)
+                    << action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartDetachable)
+                    // << action(UIActionIndexST_M_Machine_M_Close_S_Detach)
+                    << action(UIActionIndexST_M_Machine_M_Close_S_SaveState)
+                    << action(UIActionIndexST_M_Machine_M_Close_S_Shutdown)
+                    << action(UIActionIndexST_M_Machine_M_Close_S_PowerOff);
+            break;
+        }
+        default:
+            break;
+    }
+
+    /* Update shortcut visibility: */
+    foreach (UIAction *pAction, actions)
+        fVisible ? pAction->showShortcut() : pAction->hideShortcut();
+}
+
 QString UIActionPoolSelector::shortcutsExtraDataID() const
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.h	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolSelector.h	(revision 75207)
@@ -18,4 +18,7 @@
 #ifndef ___UIActionPoolSelector_h___
 #define ___UIActionPoolSelector_h___
+
+/* Qt includes: */
+#include <QList>
 
 /* GUI includes: */
@@ -172,6 +175,25 @@
     virtual void prepareConnections() /* override */;
 
+    /** Updates menu. */
+    virtual void updateMenu(int iIndex) /* override */;
     /** Updates menus. */
     virtual void updateMenus() /* override */;
+
+    /** Updates 'File' menu. */
+    void updateMenuFile();
+    /** Updates 'Welcome' menu. */
+    void updateMenuWelcome();
+    /** Updates 'Group' menu. */
+    void updateMenuGroup();
+    /** Updates 'Machine' menu. */
+    void updateMenuMachine();
+    /** Updates 'Group' / 'Start or Show' menu. */
+    void updateMenuGroupStartOrShow();
+    /** Updates 'Machine' / 'Start or Show' menu. */
+    void updateMenuMachineStartOrShow();
+    /** Updates 'Group' / 'Close' menu. */
+    void updateMenuGroupClose();
+    /** Updates 'Machine' / 'Close' menu. */
+    void updateMenuMachineClose();
 
     /** Updates 'Medium' window menu. */
@@ -196,12 +218,15 @@
     void updateMenuCloudWrapper(UIMenu *pMenu);
 
+    /** Updates 'Snapshot' menu. */
+    void updateMenuSnapshot();
+
     /** Updates shortcuts. */
     virtual void updateShortcuts() /* override */;
 
+    /** Defines whether shortcuts of menu actions with specified @a iIndex should be visible. */
+    virtual void setShortcutsVisible(int iIndex, bool fVisible) /* override */;
+
     /** Returns extra-data ID to save keyboard shortcuts under. */
     virtual QString shortcutsExtraDataID() const /* override */;
-
-    /** Returns the list of Selector UI main menus. */
-    virtual QList<QMenu*> menus() const /* override */ { return QList<QMenu*>(); }
 
 private:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 75207)
@@ -63,6 +63,4 @@
 
 /* COM includes: */
-# include "CExtPack.h"
-# include "CExtPackManager.h"
 # include "CSystemProperties.h"
 
@@ -114,12 +112,4 @@
     , m_fFirstMediumEnumerationHandled(false)
     , m_pActionPool(0)
-    , m_pWelcomeMenuAction(0)
-    , m_pGroupMenuAction(0)
-    , m_pMachineMenuAction(0)
-    , m_pSnapshotMenuAction(0)
-    , m_pLogViewerMenuAction(0)
-    , m_pVirtualMediaManagerMenuAction(0)
-    , m_pHostNetworkManagerMenuAction(0)
-    , m_pCloudProfileManagerMenuAction(0)
     , m_pManagerVirtualMedia(0)
     , m_pManagerHostNetwork(0)
@@ -1270,11 +1260,13 @@
     /* Create menu-bar: */
     setMenuBar(new UIMenuBar);
-
-    /* Make sure menu-bar fills own solid background: */
-    menuBar()->setAutoFillBackground(true);
-    QPalette pal = menuBar()->palette();
-    const QColor color = pal.color(QPalette::Active, QPalette::Mid).lighter(160);
-    pal.setColor(QPalette::Active, QPalette::Button, color);
-    menuBar()->setPalette(pal);
+    if (menuBar())
+    {
+        /* Make sure menu-bar fills own solid background: */
+        menuBar()->setAutoFillBackground(true);
+        QPalette pal = menuBar()->palette();
+        const QColor color = pal.color(QPalette::Active, QPalette::Mid).lighter(160);
+        pal.setColor(QPalette::Active, QPalette::Button, color);
+        menuBar()->setPalette(pal);
+    }
 #endif
 
@@ -1282,565 +1274,22 @@
     m_pActionPool = UIActionPool::create(UIActionPoolType_Selector);
 
-    /* Prepare File-menu: */
-    prepareMenuFile(actionPool()->action(UIActionIndexST_M_File)->menu());
-    menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_File)->menu());
-
-    /* Prepare 'Welcome' menu: */
-    prepareMenuWelcome(actionPool()->action(UIActionIndexST_M_Welcome)->menu());
-    m_pWelcomeMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Welcome)->menu());
-
-    /* Prepare 'Group' / 'Start or Show' menu: */
-    prepareMenuGroupStartOrShow(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow)->menu());
-
-    /* Prepare 'Machine' / 'Start or Show' menu: */
-    prepareMenuMachineStartOrShow(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow)->menu());
-
-    /* Prepare 'Group' / 'Close' menu: */
-    prepareMenuGroupClose(actionPool()->action(UIActionIndexST_M_Group_M_Close)->menu());
-
-    /* Prepare 'Machine' / 'Close' menu: */
-    prepareMenuMachineClose(actionPool()->action(UIActionIndexST_M_Machine_M_Close)->menu());
-
-    /* Prepare 'Group' menu: */
-    prepareMenuGroup(actionPool()->action(UIActionIndexST_M_Group)->menu());
-    m_pGroupMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Group)->menu());
-
-    /* Prepare 'Machine' menu: */
-    prepareMenuMachine(actionPool()->action(UIActionIndexST_M_Machine)->menu());
-    m_pMachineMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Machine)->menu());
-
-    /* Prepare 'Snapshot' menu: */
-    prepareMenuSnapshot(actionPool()->action(UIActionIndexST_M_Snapshot)->menu());
-    m_pSnapshotMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Snapshot)->menu());
-
-    /* Prepare 'Log Viewer' menu: */
-    prepareMenuLogViewer(actionPool()->action(UIActionIndex_M_Log)->menu());
-    m_pLogViewerMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndex_M_Log)->menu());
-
-    /* Prepare 'Medium' menu: */
-    prepareMenuMedium(actionPool()->action(UIActionIndexST_M_Medium)->menu());
-    m_pVirtualMediaManagerMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Medium)->menu());
-
-    /* Prepare 'Network' menu: */
-    prepareMenuNetwork(actionPool()->action(UIActionIndexST_M_Network)->menu());
-    m_pHostNetworkManagerMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Network)->menu());
-
-    /* Prepare 'Cloud' menu: */
-    prepareMenuCloud(actionPool()->action(UIActionIndexST_M_Cloud)->menu());
-    m_pCloudProfileManagerMenuAction = menuBar()->addMenu(actionPool()->action(UIActionIndexST_M_Cloud)->menu());
-
+    /* Build menu-bar: */
+    foreach (QMenu *pMenu, actionPool()->menus())
+    {
 #ifdef VBOX_WS_MAC
-    /* Prepare 'Window' menu: */
-    UIWindowMenuManager::create();
-    menuBar()->addMenu(gpWindowMenuManager->createMenu(this));
-    gpWindowMenuManager->addWindow(this);
+        /* Before 'Help' menu we should: */
+        if (pMenu == actionPool()->action(UIActionIndex_Menu_Help)->menu())
+        {
+            /* Insert 'Window' menu: */
+            UIWindowMenuManager::create();
+            menuBar()->addMenu(gpWindowMenuManager->createMenu(this));
+            gpWindowMenuManager->addWindow(this);
+        }
 #endif
-
-    /* Prepare 'Help' menu: */
-    menuBar()->addMenu(actionPool()->action(UIActionIndex_Menu_Help)->menu());
-
-    /* Setup menubar policy: */
+        menuBar()->addMenu(pMenu);
+    }
+
+    /* Setup menu-bar policy: */
     menuBar()->setContextMenuPolicy(Qt::CustomContextMenu);
-}
-
-void UIVirtualBoxManager::prepareMenuFile(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-    /* Check if Ext Pack is ready, some of actions my depend on it: */
-    CExtPack extPack = vboxGlobal().virtualBox().GetExtensionPackManager().Find(GUI_ExtPackName);
-    const bool fExtPackAccessible = !extPack.isNull() && extPack.GetUsable();
-
-    /* The Application / 'File' menu contents is very different depending on host type. */
-
-#ifdef VBOX_WS_MAC
-
-    /* 'About' action goes to Application menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_About));
-# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    /* 'Check for Updates' action goes to Application menu: */
-    if (gEDataManager->applicationUpdateEnabled())
-        pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_CheckForUpdates));
-    /* 'Network Access Manager' action goes to Application menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_NetworkAccessManager));
-# endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-    /* 'Reset Warnings' action goes to Application menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_ResetWarnings));
-    /* 'Preferences' action goes to Application menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_Preferences));
-    /* 'Close' action goes to Application menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_Close));
-
-    /* 'Import Appliance' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ImportAppliance));
-    /* 'Export Appliance' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ExportAppliance));
-# ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
-    /* 'Show Extra-data Manager' action goes to 'File' menu for Debug build: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowExtraDataManager));
-# endif /* VBOX_GUI_WITH_EXTRADATA_MANAGER_UI */
-    /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowVirtualMediumManager));
-    /* 'Show Host Network Manager' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowHostNetworkManager));
-    /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
-    if (fExtPackAccessible)
-        pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
-
-#else /* !VBOX_WS_MAC */
-
-# ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndex_M_Application_S_Preferences));
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_ImportAppliance));
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_ExportAppliance));
-#  ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowExtraDataManager));
-#  endif /* VBOX_GUI_WITH_EXTRADATA_MANAGER_UI */
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowVirtualMediumManager));
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowHostNetworkManager));
-    if (fExtPackAccessible)
-        addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
-#  ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    addAction(actionPool()->action(UIActionIndex_M_Application_S_NetworkAccessManager));
-    addAction(actionPool()->action(UIActionIndex_M_Application_S_CheckForUpdates));
-#  endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-    addAction(actionPool()->action(UIActionIndex_M_Application_S_ResetWarnings));
-    addAction(actionPool()->action(UIActionIndexST_M_File_S_Close));
-# endif /* VBOX_WS_X11 */
-
-    /* 'Preferences' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_Preferences));
-    /* Separator after 'Preferences' action of the 'File' menu: */
-    pMenu->addSeparator();
-    /* 'Import Appliance' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ImportAppliance));
-    /* 'Export Appliance' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ExportAppliance));
-    /* Separator after 'Export Appliance' action of the 'File' menu: */
-    pMenu->addSeparator();
-# ifdef VBOX_GUI_WITH_EXTRADATA_MANAGER_UI
-    /* 'Extra-data Manager' action goes to 'File' menu for Debug build: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowExtraDataManager));
-# endif /* VBOX_GUI_WITH_EXTRADATA_MANAGER_UI */
-    /* 'Show Virtual Medium Manager' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowVirtualMediumManager));
-    /* 'Show Host Network Manager' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowHostNetworkManager));
-    /* 'Show Cloud Profile Manager' action goes to 'File' menu: */
-    if (fExtPackAccessible)
-        pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
-# ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    /* 'Network Access Manager' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_NetworkAccessManager));
-    /* 'Check for Updates' action goes to 'File' menu: */
-    if (gEDataManager->applicationUpdateEnabled())
-        pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_CheckForUpdates));
-# endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
-    /* Separator after tool actions of the 'File' menu: */
-    pMenu->addSeparator();
-    /* 'Reset Warnings' action goes 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndex_M_Application_S_ResetWarnings));
-    /* Separator after 'Reset Warnings' action of the 'File' menu: */
-    pMenu->addSeparator();
-    /* 'Close' action goes to 'File' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_File_S_Close));
-
-#endif /* !VBOX_WS_MAC */
-}
-
-void UIVirtualBoxManager::prepareMenuWelcome(QMenu *pMenu)
-{
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Welcome_S_New));
-    addAction(actionPool()->action(UIActionIndexST_M_Welcome_S_Add));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate Machine-menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Welcome_S_New));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Welcome_S_Add));
-
-    /* Remember action list: */
-    m_welcomeActions << actionPool()->action(UIActionIndexST_M_Welcome_S_New)
-                     << actionPool()->action(UIActionIndexST_M_Welcome_S_Add);
-}
-
-void UIVirtualBoxManager::prepareMenuGroup(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_New));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Add));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Rename));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Remove));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_T_Pause));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Reset));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Discard));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_ShowLogDialog));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Refresh));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_ShowInFileManager));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_CreateShortcut));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_S_Sort));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate Machine-menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_New));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Add));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Rename));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Remove));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_T_Pause));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Reset));
-    pMenu->addMenu(actionPool()->action(UIActionIndexST_M_Group_M_Close)->menu());
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Discard));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_ShowLogDialog));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Refresh));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_ShowInFileManager));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_CreateShortcut));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_S_Sort));
-
-    /* Remember action list: */
-    m_groupActions << actionPool()->action(UIActionIndexST_M_Group_S_New)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Add)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Rename)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Remove)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow)
-                   << actionPool()->action(UIActionIndexST_M_Group_T_Pause)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Reset)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Discard)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_ShowLogDialog)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Refresh)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_ShowInFileManager)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_CreateShortcut)
-                   << actionPool()->action(UIActionIndexST_M_Group_S_Sort);
-}
-
-void UIVirtualBoxManager::prepareMenuMachine(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_New));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Add));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Clone));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Move));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Remove));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_AddGroup));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_T_Pause));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Reset));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_ShowLogDialog));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Refresh));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_ShowInFileManager));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_CreateShortcut));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_S_SortParent));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate Machine-menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_New));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Add));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Settings));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Clone));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Move));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Remove));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_AddGroup));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_T_Pause));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Reset));
-    pMenu->addMenu(actionPool()->action(UIActionIndexST_M_Machine_M_Close)->menu());
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Discard));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_ShowLogDialog));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_Refresh));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_ShowInFileManager));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_CreateShortcut));
-    pMenu->addSeparator();
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_SortParent));
-
-    /* Remember action list: */
-    m_machineActions << actionPool()->action(UIActionIndexST_M_Machine_S_New)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Add)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Settings)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Clone)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Move)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Remove)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_AddGroup)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow)
-                     << actionPool()->action(UIActionIndexST_M_Machine_T_Pause)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Reset)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Discard)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_ShowLogDialog)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_Refresh)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_ShowInFileManager)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_CreateShortcut)
-                     << actionPool()->action(UIActionIndexST_M_Machine_S_SortParent);
-}
-
-void UIVirtualBoxManager::prepareMenuGroupStartOrShow(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartNormal));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartHeadless));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartDetachable));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate 'Group' / 'Start or Show' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartNormal));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartHeadless));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartDetachable));
-
-    /* Remember action list: */
-    m_groupActions << actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartNormal)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartHeadless)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_StartOrShow_S_StartDetachable);
-}
-
-void UIVirtualBoxManager::prepareMenuMachineStartOrShow(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartNormal));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartHeadless));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartDetachable));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate 'Machine' / 'Start or Show' menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartNormal));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartHeadless));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartDetachable));
-
-    /* Remember action list: */
-    m_machineActions << actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartNormal)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartHeadless)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_StartOrShow_S_StartDetachable);
-}
-
-void UIVirtualBoxManager::prepareMenuGroupClose(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    // addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Detach));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_SaveState));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Shutdown));
-    addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_PowerOff));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate 'Group' / 'Close' menu: */
-    // pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Detach));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_SaveState));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Shutdown));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Close_S_PowerOff));
-
-    /* Remember action list: */
-    m_groupActions // << actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Detach)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_Close_S_SaveState)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_Close_S_Shutdown)
-                   << actionPool()->action(UIActionIndexST_M_Group_M_Close_S_PowerOff);
-}
-
-void UIVirtualBoxManager::prepareMenuMachineClose(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    // addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Detach));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_SaveState));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Shutdown));
-    addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_PowerOff));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate 'Machine' / 'Close' menu: */
-    // pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Detach));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_SaveState));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Shutdown));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_PowerOff));
-
-    /* Remember action list: */
-    m_machineActions // << actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Detach)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_SaveState)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_Shutdown)
-                     << actionPool()->action(UIActionIndexST_M_Machine_M_Close_S_PowerOff);
-}
-
-void UIVirtualBoxManager::prepareMenuSnapshot(QMenu *pMenu)
-{
-    /* Do not touch if filled already: */
-    if (!pMenu->isEmpty())
-        return;
-
-#ifdef VBOX_WS_X11
-    // WORKAROUND:
-    // There is an issue under Ubuntu which uses special kind of QPA
-    // plugin (appmenu-qt5) which redirects actions added to Qt menu-bar
-    // directly to Ubuntu Application menu-bar. In that case action
-    // shortcuts are not being handled by the Qt and that way ignored.
-    // As a workaround we can add those actions into QMainWindow as well.
-    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
-    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
-    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore));
-    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
-    addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
-#endif /* VBOX_WS_X11 */
-
-    /* Populate Snapshot-menu: */
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Take));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties));
-    pMenu->addAction(actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone));
-
-    /* Remember action list: */
-    m_snapshotActions << actionPool()->action(UIActionIndexST_M_Snapshot_S_Take)
-                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Delete)
-                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Restore)
-                      << actionPool()->action(UIActionIndexST_M_Snapshot_T_Properties)
-                      << actionPool()->action(UIActionIndexST_M_Snapshot_S_Clone);
-}
-
-void UIVirtualBoxManager::prepareMenuLogViewer(QMenu *pMenu)
-{
-    /* We are doing it inside the UIActionPool. */
-    Q_UNUSED(pMenu);
-
-    /* Do not touch if filled already: */
-    if (!m_logViewerActions.isEmpty())
-        return;
-
-    /* Remember action list: */
-    m_logViewerActions << actionPool()->action(UIActionIndex_M_Log_T_Find)
-                       << actionPool()->action(UIActionIndex_M_Log_T_Filter)
-                       << actionPool()->action(UIActionIndex_M_Log_T_Bookmark)
-                       << actionPool()->action(UIActionIndex_M_Log_T_Settings)
-                       << actionPool()->action(UIActionIndex_M_Log_S_Refresh)
-                       << actionPool()->action(UIActionIndex_M_Log_S_Save);
-}
-
-void UIVirtualBoxManager::prepareMenuMedium(QMenu *pMenu)
-{
-    /* We are doing it inside the UIActionPoolSelector. */
-    Q_UNUSED(pMenu);
-
-    /* Do not touch if filled already: */
-    if (!m_virtualMediaManagerActions.isEmpty())
-        return;
-
-    /* Remember action list: */
-    m_virtualMediaManagerActions << actionPool()->action(UIActionIndexST_M_Medium_S_Add)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_S_Copy)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_S_Move)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_S_Remove)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_S_Release)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_T_Details)
-                                 << actionPool()->action(UIActionIndexST_M_Medium_S_Refresh);
-}
-
-void UIVirtualBoxManager::prepareMenuNetwork(QMenu *pMenu)
-{
-    /* We are doing it inside the UIActionPoolSelector. */
-    Q_UNUSED(pMenu);
-
-    /* Do not touch if filled already: */
-    if (!m_hostNetworkManagerActions.isEmpty())
-        return;
-
-    /* Remember action list: */
-    m_hostNetworkManagerActions << actionPool()->action(UIActionIndexST_M_Network_S_Create)
-                                << actionPool()->action(UIActionIndexST_M_Network_S_Remove)
-                                << actionPool()->action(UIActionIndexST_M_Network_T_Details)
-                                << actionPool()->action(UIActionIndexST_M_Network_S_Refresh);
-}
-
-void UIVirtualBoxManager::prepareMenuCloud(QMenu *pMenu)
-{
-    /* We are doing it inside the UIActionPoolSelector. */
-    Q_UNUSED(pMenu);
-
-    /* Do not touch if filled already: */
-    if (!m_cloudProfileManagerActions.isEmpty())
-        return;
-
-    /* Remember action list: */
-    m_cloudProfileManagerActions << actionPool()->action(UIActionIndexST_M_Cloud_S_Add)
-                                 << actionPool()->action(UIActionIndexST_M_Cloud_S_Import)
-                                 << actionPool()->action(UIActionIndexST_M_Cloud_S_Remove)
-                                 << actionPool()->action(UIActionIndexST_M_Cloud_T_Details)
-                                 << actionPool()->action(UIActionIndexST_M_Cloud_S_Help);
 }
 
@@ -2141,53 +1590,44 @@
     /* Determine whether Machine or Group menu should be shown at all: */
     const bool fGlobalMenuShown  = m_pWidget->isGlobalItemSelected();
+    const bool fGroupMenuShown   = m_pWidget->isGroupItemSelected()   &&  isSingleGroupSelected();
     const bool fMachineMenuShown = m_pWidget->isMachineItemSelected() && !isSingleGroupSelected();
-    const bool fGroupMenuShown   = m_pWidget->isGroupItemSelected()   &&  isSingleGroupSelected();
-    m_pWelcomeMenuAction->setVisible(fGlobalMenuShown);
-    m_pMachineMenuAction->setVisible(fMachineMenuShown);
-    m_pGroupMenuAction->setVisible(fGroupMenuShown);
+    actionPool()->action(UIActionIndexST_M_Welcome)->setVisible(fGlobalMenuShown);
+    actionPool()->action(UIActionIndexST_M_Group)->setVisible(fGroupMenuShown);
+    actionPool()->action(UIActionIndexST_M_Machine)->setVisible(fMachineMenuShown);
 
     /* Determine whether Media menu should be visible: */
     const bool fMediumMenuShown = fGlobalMenuShown && m_pWidget->currentGlobalTool() == UIToolType_Media;
-    m_pVirtualMediaManagerMenuAction->setVisible(fMediumMenuShown);
-
+    actionPool()->action(UIActionIndexST_M_Medium)->setVisible(fMediumMenuShown);
     /* Determine whether Network menu should be visible: */
     const bool fNetworkMenuShown = fGlobalMenuShown && m_pWidget->currentGlobalTool() == UIToolType_Network;
-    m_pHostNetworkManagerMenuAction->setVisible(fNetworkMenuShown);
-
+    actionPool()->action(UIActionIndexST_M_Network)->setVisible(fNetworkMenuShown);
     /* Determine whether Cloud menu should be visible: */
     const bool fCloudMenuShown = fGlobalMenuShown && m_pWidget->currentGlobalTool() == UIToolType_Cloud;
-    m_pCloudProfileManagerMenuAction->setVisible(fCloudMenuShown);
+    actionPool()->action(UIActionIndexST_M_Cloud)->setVisible(fCloudMenuShown);
 
     /* Determine whether Snapshots menu should be visible: */
     const bool fSnapshotMenuShown = (fMachineMenuShown || fGroupMenuShown) &&
                                     m_pWidget->currentMachineTool() == UIToolType_Snapshots;
-    m_pSnapshotMenuAction->setVisible(fSnapshotMenuShown);
-
+    actionPool()->action(UIActionIndexST_M_Snapshot)->setVisible(fSnapshotMenuShown);
     /* Determine whether Logs menu should be visible: */
     const bool fLogViewerMenuShown = (fMachineMenuShown || fGroupMenuShown) &&
                                      m_pWidget->currentMachineTool() == UIToolType_Logs;
-    m_pLogViewerMenuAction->setVisible(fLogViewerMenuShown);
+    actionPool()->action(UIActionIndex_M_Log)->setVisible(fLogViewerMenuShown);
 
     /* Hide action shortcuts: */
     if (!fGlobalMenuShown)
-        foreach (UIAction *pAction, m_welcomeActions)
-            pAction->hideShortcut();
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Welcome, false);
+    if (!fGroupMenuShown)
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Group, false);
     if (!fMachineMenuShown)
-        foreach (UIAction *pAction, m_machineActions)
-            pAction->hideShortcut();
-    if (!fGroupMenuShown)
-        foreach (UIAction *pAction, m_groupActions)
-            pAction->hideShortcut();
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Machine, false);
 
     /* Show action shortcuts: */
     if (fGlobalMenuShown)
-        foreach (UIAction *pAction, m_welcomeActions)
-            pAction->showShortcut();
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Welcome, true);
+    if (fGroupMenuShown)
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Group, true);
     if (fMachineMenuShown)
-        foreach (UIAction *pAction, m_machineActions)
-            pAction->showShortcut();
-    if (fGroupMenuShown)
-        foreach (UIAction *pAction, m_groupActions)
-            pAction->showShortcut();
+        actionPool()->setShortcutsVisible(UIActionIndexST_M_Machine, true);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 75206)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h	(revision 75207)
@@ -247,30 +247,4 @@
         /** Prepares menu-bar. */
         void prepareMenuBar();
-        /** Prepares @a pMenu File. */
-        void prepareMenuFile(QMenu *pMenu);
-        /** Prepares @a pMenu Welcome. */
-        void prepareMenuWelcome(QMenu *pMenu);
-        /** Prepares @a pMenu Group. */
-        void prepareMenuGroup(QMenu *pMenu);
-        /** Prepares @a pMenu Machine. */
-        void prepareMenuMachine(QMenu *pMenu);
-        /** Prepares @a pMenu Group => Start or Show. */
-        void prepareMenuGroupStartOrShow(QMenu *pMenu);
-        /** Prepares @a pMenu Machine => Start or Show. */
-        void prepareMenuMachineStartOrShow(QMenu *pMenu);
-        /** Prepares @a pMenu Group => Close. */
-        void prepareMenuGroupClose(QMenu *pMenu);
-        /** Prepares @a pMenu Machine => Close. */
-        void prepareMenuMachineClose(QMenu *pMenu);
-        /** Prepares @a pMenu Snapshot. */
-        void prepareMenuSnapshot(QMenu *pMenu);
-        /** Prepares @a pMenu Log Viewer. */
-        void prepareMenuLogViewer(QMenu *pMenu);
-        /** Prepares @a pMenu Medium. */
-        void prepareMenuMedium(QMenu *pMenu);
-        /** Prepares @a pMenu Network. */
-        void prepareMenuNetwork(QMenu *pMenu);
-        /** Prepares @a pMenu Cloud. */
-        void prepareMenuCloud(QMenu *pMenu);
         /** Prepares status-bar. */
         void prepareStatusBar();
@@ -363,44 +337,4 @@
     UIActionPool *m_pActionPool;
 
-    /** Holds the list of Welcome menu actions. */
-    QList<UIAction*>  m_welcomeActions;
-    /** Holds the Welcome menu parent action. */
-    QAction          *m_pWelcomeMenuAction;
-
-    /** Holds the list of Group menu actions. */
-    QList<UIAction*>  m_groupActions;
-    /** Holds the Group menu parent action. */
-    QAction          *m_pGroupMenuAction;
-
-    /** Holds the list of Machine menu actions. */
-    QList<UIAction*>  m_machineActions;
-    /** Holds the Machine menu parent action. */
-    QAction          *m_pMachineMenuAction;
-
-    /** Holds the list of Snapshot menu actions. */
-    QList<UIAction*>  m_snapshotActions;
-    /** Holds the Snapshot menu parent action. */
-    QAction          *m_pSnapshotMenuAction;
-
-    /** Holds the list of Log Viewer menu actions. */
-    QList<UIAction*>  m_logViewerActions;
-    /** Holds the Log Viewer menu parent action. */
-    QAction          *m_pLogViewerMenuAction;
-
-    /** Holds the list of Virtual Media Manager menu actions. */
-    QList<UIAction*>  m_virtualMediaManagerActions;
-    /** Holds the Virtual Media Manager menu parent action. */
-    QAction          *m_pVirtualMediaManagerMenuAction;
-
-    /** Holds the list of Host Network Manager menu actions. */
-    QList<UIAction*>  m_hostNetworkManagerActions;
-    /** Holds the Host Network Manager menu parent action. */
-    QAction          *m_pHostNetworkManagerMenuAction;
-
-    /** Holds the list of Cloud Profile Manager menu actions. */
-    QList<UIAction*>  m_cloudProfileManagerActions;
-    /** Holds the Cloud Profile Manager menu parent action. */
-    QAction          *m_pCloudProfileManagerMenuAction;
-
     /** Holds the Virtual Media Manager window instance. */
     QIManagerDialog *m_pManagerVirtualMedia;
