Changeset 85393 in vbox for trunk/src/VBox/Frontends
- Timestamp:
- Jul 20, 2020 3:31:24 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 139423
- Location:
- trunk/src/VBox/Frontends/VirtualBox/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
r85389 r85393 1384 1384 }; 1385 1385 1386 /** Simple action extension, used as 'Perform Configure Applications' action class. */ 1387 class UIActionSimpleSelectorConsolePerformConfigureApplications : public UIActionSimple 1388 { 1389 Q_OBJECT; 1390 1391 public: 1392 1393 /** Constructs action passing @a pParent to the base-class. */ 1394 UIActionSimpleSelectorConsolePerformConfigureApplications(UIActionPool *pParent) 1395 : UIActionSimple(pParent, 1396 ":/cloud_machine_console_configure_external_terminal_16px.png", 1397 ":/cloud_machine_console_configure_external_terminal_disabled_16px.png") 1398 {} 1399 1400 protected: 1401 1402 /** Returns shortcut extra-data ID. */ 1403 virtual QString shortcutExtraDataID() const /* override */ 1404 { 1405 return QString("ConfigureConsoleApplications"); 1406 } 1407 1408 /** Handles translation event. */ 1409 virtual void retranslateUi() /* override */ 1410 { 1411 setName(QApplication::translate("UIActionPool", "&Configure Console Applications")); 1412 setStatusTip(QApplication::translate("UIActionPool", "Open configuration dialog to edit console application settings")); 1413 } 1414 }; 1415 1386 1416 /** Simple action extension, used as 'Copy Command' action class. */ 1387 1417 class UIActionSimpleSelectorConsolePerformCopyCommand : public UIActionSimple … … 3022 3052 : UIActionSimple(pParent, 3023 3053 ":/cloud_console_application_add_32px.png", ":/cloud_console_application_add_16px.png", 3024 ":/cloud_console_application_add_disabled_32px.png", ":/cloud_console_application_add_disabled_16px.png") /// @todo use proper icons3054 ":/cloud_console_application_add_disabled_32px.png", ":/cloud_console_application_add_disabled_16px.png") 3025 3055 { 3026 3056 setShortcutContext(Qt::WidgetWithChildrenShortcut); … … 3057 3087 : UIActionSimple(pParent, 3058 3088 ":/cloud_console_application_remove_32px.png", ":/cloud_console_application_remove_16px.png", 3059 ":/cloud_console_application_remove_disabled_32px.png", ":/cloud_console_application_remove_disabled_16px.png") /// @todo use proper icons3089 ":/cloud_console_application_remove_disabled_32px.png", ":/cloud_console_application_remove_disabled_16px.png") 3060 3090 { 3061 3091 setShortcutContext(Qt::WidgetWithChildrenShortcut); … … 3092 3122 : UIActionSimple(pParent, 3093 3123 ":/cloud_console_profile_add_32px.png", ":/cloud_console_profile_add_16px.png", 3094 ":/cloud_console_profile_add_disabled_32px.png", ":/cloud_console_profile_add_disabled_16px.png") /// @todo use proper icons3124 ":/cloud_console_profile_add_disabled_32px.png", ":/cloud_console_profile_add_disabled_16px.png") 3095 3125 { 3096 3126 setShortcutContext(Qt::WidgetWithChildrenShortcut); … … 3127 3157 : UIActionSimple(pParent, 3128 3158 ":/cloud_console_profile_remove_32px.png", ":/cloud_console_profile_remove_16px.png", 3129 ":/cloud_console_profile_remove_disabled_32px.png", ":/cloud_console_profile_remove_disabled_16px.png") /// @todo use proper icons3159 ":/cloud_console_profile_remove_disabled_32px.png", ":/cloud_console_profile_remove_disabled_16px.png") 3130 3160 { 3131 3161 setShortcutContext(Qt::WidgetWithChildrenShortcut); … … 3163 3193 { 3164 3194 setShortcutContext(Qt::WidgetWithChildrenShortcut); 3195 /// @todo use icons with check-boxes 3165 3196 setIcon(UIIconPool::iconSetFull(":/cloud_console_edit_32px.png", ":/cloud_console_edit_16px.png", 3166 ":/cloud_console_edit_disabled_32px.png", ":/cloud_console_edit_disabled_16px.png")); /// @todo use proper icons with check-boxes3197 ":/cloud_console_edit_disabled_32px.png", ":/cloud_console_edit_disabled_16px.png")); 3167 3198 } 3168 3199 … … 3293 3324 m_pool[UIActionIndexST_M_Group_M_Console_S_CreateConnection] = new UIActionSimpleSelectorConsolePerformCreateConnection(this); 3294 3325 m_pool[UIActionIndexST_M_Group_M_Console_S_DeleteConnection] = new UIActionSimpleSelectorConsolePerformDeleteConnection(this); 3326 m_pool[UIActionIndexST_M_Group_M_Console_S_ConfigureApplications] = new UIActionSimpleSelectorConsolePerformConfigureApplications(this); 3295 3327 m_pool[UIActionIndexST_M_Group_M_Close] = new UIActionMenuSelectorClose(this); 3296 3328 m_pool[UIActionIndexST_M_Group_M_Close_S_Detach] = new UIActionSimpleSelectorClosePerformDetach(this); … … 3331 3363 m_pool[UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial] = new UIActionSimpleSelectorConsolePerformCopyCommand(this, true); 3332 3364 m_pool[UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC] = new UIActionSimpleSelectorConsolePerformCopyCommand(this, false); 3365 m_pool[UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications] = new UIActionSimpleSelectorConsolePerformConfigureApplications(this); 3333 3366 m_pool[UIActionIndexST_M_Machine_M_Close] = new UIActionMenuSelectorClose(this); 3334 3367 m_pool[UIActionIndexST_M_Machine_M_Close_S_Detach] = new UIActionSimpleSelectorClosePerformDetach(this); … … 4125 4158 << action(UIActionIndexST_M_Group_M_Console_S_CreateConnection) 4126 4159 << action(UIActionIndexST_M_Group_M_Console_S_DeleteConnection) 4160 << action(UIActionIndexST_M_Group_M_Console_S_ConfigureApplications) 4127 4161 // << action(UIActionIndexST_M_Group_M_Close_S_Detach) 4128 4162 << action(UIActionIndexST_M_Group_M_Close_S_SaveState) … … 4161 4195 << action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial) 4162 4196 << action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC) 4197 << action(UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications) 4163 4198 // << action(UIActionIndexST_M_Machine_M_Close_S_Detach) 4164 4199 << action(UIActionIndexST_M_Machine_M_Close_S_SaveState) -
trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.h
r85389 r85393 73 73 UIActionIndexST_M_Group_M_Console_S_CreateConnection, 74 74 UIActionIndexST_M_Group_M_Console_S_DeleteConnection, 75 UIActionIndexST_M_Group_M_Console_S_ConfigureApplications, 75 76 UIActionIndexST_M_Group_M_Close, 76 77 UIActionIndexST_M_Group_M_Close_S_Detach, … … 111 112 UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial, 112 113 UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC, 114 UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications, 113 115 UIActionIndexST_M_Machine_M_Close, 114 116 UIActionIndexST_M_Machine_M_Close_S_Detach, -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
r85388 r85393 21 21 #include <QGuiApplication> 22 22 #include <QMenuBar> 23 #include <QProcess> 23 24 #include <QPushButton> 24 25 #include <QStandardPaths> … … 29 30 #include "QIFileDialog.h" 30 31 #include "UIActionPoolManager.h" 32 #include "UICloudConsoleManager.h" 31 33 #include "UICloudMachineSettingsDialog.h" 32 34 #include "UICloudNetworkingStuff.h" … … 261 263 , m_pManagerHostNetwork(0) 262 264 , m_pManagerCloudProfile(0) 265 , m_pManagerCloudConsole(0) 263 266 { 264 267 s_pInstance = this; … … 611 614 } 612 615 616 void UIVirtualBoxManager::sltOpenCloudConsoleManagerWindow() 617 { 618 /* Create instance if not yet created: */ 619 if (!m_pManagerCloudConsole) 620 { 621 UICloudConsoleManagerFactory(m_pActionPool).prepare(m_pManagerCloudConsole, this); 622 connect(m_pManagerCloudConsole, &QIManagerDialog::sigClose, 623 this, &UIVirtualBoxManager::sltCloseCloudConsoleManagerWindow); 624 } 625 626 /* Show instance: */ 627 m_pManagerCloudConsole->show(); 628 m_pManagerCloudConsole->setWindowState(m_pManagerCloudConsole->windowState() & ~Qt::WindowMinimized); 629 m_pManagerCloudConsole->activateWindow(); 630 } 631 632 void UIVirtualBoxManager::sltCloseCloudConsoleManagerWindow() 633 { 634 /* Destroy instance if still exists: */ 635 if (m_pManagerCloudConsole) 636 UIHostNetworkManagerFactory().cleanup(m_pManagerCloudConsole); 637 } 638 613 639 void UIVirtualBoxManager::sltOpenImportApplianceWizard(const QString &strFileName /* = QString() */) 614 640 { … … 1206 1232 AssertPtrReturnVoid(pClipboard); 1207 1233 pClipboard->setText(pAction->property("fingerprint").toString()); 1234 } 1235 1236 void UIVirtualBoxManager::sltExecuteExternalApplication() 1237 { 1238 /* Acquire passed path and argument: */ 1239 QAction *pAction = qobject_cast<QAction*>(sender()); 1240 AssertMsgReturnVoid(pAction, ("This slot should be called by action only!\n")); 1241 const QString strPath = pAction->property("path").toString(); 1242 QStringList arguments = QStringList() << pAction->property("arguments").toString(); 1243 1244 /* Get current-item: */ 1245 UIVirtualMachineItem *pItem = currentItem(); 1246 AssertMsgReturnVoid(pItem, ("Current item should be selected!\n")); 1247 UIVirtualMachineItemCloud *pCloudItem = pItem->toCloud(); 1248 AssertPtrReturnVoid(pCloudItem); 1249 1250 /* Add serial command to arguments: */ 1251 const CCloudMachine comMachine = pCloudItem->machine(); 1252 #ifdef VBOX_WS_WIN 1253 arguments << comMachine.GetSerialConsoleCommandWindows(); 1254 #else 1255 arguments << comMachine.GetSerialConsoleCommand(); 1256 #endif 1257 1258 /* Execute console application finally: */ 1259 QProcess::startDetached(strPath, arguments); 1208 1260 } 1209 1261 … … 2085 2137 connect(actionPool()->action(UIActionIndexST_M_Group_M_Console_S_DeleteConnection), &UIAction::triggered, 2086 2138 this, &UIVirtualBoxManager::sltPerformDeleteConsoleConnectionForGroup); 2139 connect(actionPool()->action(UIActionIndexST_M_Group_M_Console_S_ConfigureApplications), &UIAction::triggered, 2140 this, &UIVirtualBoxManager::sltOpenCloudConsoleManagerWindow); 2087 2141 2088 2142 /* 'Machine/Console' menu connections: */ … … 2095 2149 connect(actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC), &UIAction::triggered, 2096 2150 this, &UIVirtualBoxManager::sltPerformCopyCommandVNC); 2151 connect(actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications), &UIAction::triggered, 2152 this, &UIVirtualBoxManager::sltOpenCloudConsoleManagerWindow); 2097 2153 2098 2154 /* 'Group/Close' menu connections: */ … … 2181 2237 sltCloseHostNetworkManagerWindow(); 2182 2238 sltCloseCloudProfileManagerWindow(); 2239 sltCloseCloudConsoleManagerWindow(); 2183 2240 2184 2241 /* Save settings: */ … … 2500 2557 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Console_S_CreateConnection)); 2501 2558 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Console_S_DeleteConnection)); 2559 pMenu->addSeparator(); 2560 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Group_M_Console_S_ConfigureApplications)); 2502 2561 } 2503 2562 … … 2559 2618 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial)); 2560 2619 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC)); 2620 pMenu->addSeparator(); 2621 2622 /* Terminal application/profile action list: */ 2623 const QStringList restrictions = gEDataManager->cloudConsoleManagerRestrictions(); 2624 foreach (const QString strApplicationId, gEDataManager->cloudConsoleManagerApplications()) 2625 { 2626 const QString strApplicationDefinition = QString("/%1").arg(strApplicationId); 2627 if (restrictions.contains(strApplicationDefinition)) 2628 continue; 2629 const QString strApplicationOptions = gEDataManager->cloudConsoleManagerApplication(strApplicationId); 2630 const QStringList applicationValues = strApplicationOptions.split(','); 2631 foreach (const QString strProfileId, gEDataManager->cloudConsoleManagerProfiles(strApplicationId)) 2632 { 2633 const QString strProfileDefinition = QString("/%1/%2").arg(strApplicationId, strProfileId); 2634 if (restrictions.contains(strProfileDefinition)) 2635 continue; 2636 const QString strProfileOptions = gEDataManager->cloudConsoleManagerProfile(strApplicationId, strProfileId); 2637 const QStringList profileValues = strProfileOptions.split(','); 2638 QAction *pAction = pMenu->addAction(QApplication::translate("UIActionPool", "%1 (%2)") 2639 .arg(applicationValues.value(0), profileValues.value(0)), 2640 this, &UIVirtualBoxManager::sltExecuteExternalApplication); 2641 pAction->setProperty("path", applicationValues.value(1)); 2642 pAction->setProperty("arguments", profileValues.value(1)); 2643 } 2644 } 2645 /* Terminal application configuration tool: */ 2646 pMenu->addAction(actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications)); 2561 2647 pMenu->addSeparator(); 2562 2648 … … 2690 2776 actionPool()->action(UIActionIndexST_M_Group_M_Console_S_CreateConnection)->setEnabled(isActionEnabled(UIActionIndexST_M_Group_M_Console_S_CreateConnection, items)); 2691 2777 actionPool()->action(UIActionIndexST_M_Group_M_Console_S_DeleteConnection)->setEnabled(isActionEnabled(UIActionIndexST_M_Group_M_Console_S_DeleteConnection, items)); 2778 actionPool()->action(UIActionIndexST_M_Group_M_Console_S_ConfigureApplications)->setEnabled(isActionEnabled(UIActionIndexST_M_Group_M_Console_S_ConfigureApplications, items)); 2692 2779 2693 2780 /* Enable/disable machine-console actions: */ … … 2697 2784 actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial)->setEnabled(isActionEnabled(UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial, items)); 2698 2785 actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC)->setEnabled(isActionEnabled(UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC, items)); 2786 actionPool()->action(UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications)->setEnabled(isActionEnabled(UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications, items)); 2699 2787 2700 2788 /* Enable/disable group-close actions: */ … … 2964 3052 case UIActionIndexST_M_Group_M_Console_S_CreateConnection: 2965 3053 case UIActionIndexST_M_Group_M_Console_S_DeleteConnection: 3054 case UIActionIndexST_M_Group_M_Console_S_ConfigureApplications: 2966 3055 case UIActionIndexST_M_Machine_M_Console: 2967 3056 case UIActionIndexST_M_Machine_M_Console_S_CreateConnection: … … 2969 3058 case UIActionIndexST_M_Machine_M_Console_S_CopyCommandSerial: 2970 3059 case UIActionIndexST_M_Machine_M_Console_S_CopyCommandVNC: 3060 case UIActionIndexST_M_Machine_M_Console_S_ConfigureApplications: 2971 3061 { 2972 3062 return isAtLeastOneItemStarted(items); -
trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.h
r85192 r85393 170 170 /** Handles call to close Cloud Profile Manager window. */ 171 171 void sltCloseCloudProfileManagerWindow(); 172 173 /** Handles call to open Cloud Console Manager window. */ 174 void sltOpenCloudConsoleManagerWindow(); 175 /** Handles call to close Cloud Console Manager window. */ 176 void sltCloseCloudConsoleManagerWindow(); 172 177 173 178 /** Handles call to open Import Appliance wizard. … … 252 257 /** Handles call to copy VNC console command. */ 253 258 void sltPerformCopyCommandVNC(); 259 /** Handles call to execute external application. */ 260 void sltExecuteExternalApplication(); 254 261 255 262 /** Handles call to discard machine state. */ … … 436 443 /** Holds the Cloud Profile Manager window instance. */ 437 444 QIManagerDialog *m_pManagerCloudProfile; 445 /** Holds the Cloud Console Manager window instance. */ 446 QIManagerDialog *m_pManagerCloudConsole; 438 447 /** Holds a map of (machineUUID, UIVMLogViewerDialog). */ 439 448 VMLogViewerMap m_logViewers;
Note:
See TracChangeset
for help on using the changeset viewer.