Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp	(revision 92397)
@@ -114,9 +114,7 @@
 #include <iprt/err.h>
 #include <iprt/file.h>
-#include <iprt/getopt.h>
 #include <iprt/ldr.h>
 #include <iprt/param.h>
 #include <iprt/path.h>
-#include <iprt/stream.h>
 #include <iprt/system.h>
 #include <VBox/sup.h>
@@ -1682,36 +1680,5 @@
 }
 
-
-/**
- * Helper for createVisoMediumWithVisoCreator.
- * @returns IPRT status code.
- * @param   pStrmDst            Where to write the quoted string.
- * @param   pszPrefix           Stuff to put in front of it.
- * @param   rStr                The string to quote and write out.
- * @param   pszPrefix           Stuff to put after it.
- */
-DECLINLINE(int) visoWriteQuotedString(PRTSTREAM pStrmDst, const char *pszPrefix, QString const &rStr, const char *pszPostFix)
-{
-    QByteArray const utf8Array   = rStr.toUtf8();
-    const char      *apszArgv[2] = { utf8Array.constData(), NULL };
-    char            *pszQuoted;
-    int vrc = RTGetOptArgvToString(&pszQuoted, apszArgv, RTGETOPTARGV_CNV_QUOTE_BOURNE_SH);
-    if (RT_SUCCESS(vrc))
-    {
-        if (pszPrefix)
-            vrc = RTStrmPutStr(pStrmDst, pszPrefix);
-        if (RT_SUCCESS(vrc))
-        {
-            vrc = RTStrmPutStr(pStrmDst, pszQuoted);
-            if (pszPostFix && RT_SUCCESS(vrc))
-                vrc = RTStrmPutStr(pStrmDst, pszPostFix);
-        }
-        RTStrFree(pszQuoted);
-    }
-
-    return vrc;
-}
-
-QUuid UICommon::openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType enmMediumType,
+QUuid UICommon::openMediumCreatorDialog(UIActionPool *pActionPool, QWidget *pParent, UIMediumDeviceType enmMediumType,
                                        const QString &strDefaultFolder /* = QString() */,
                                        const QString &strMachineName /* = QString() */,
@@ -1726,5 +1693,5 @@
             break;
         case UIMediumDeviceType_DVD:
-            uMediumId = createVisoMediumWithVisoCreator(pParent, strDefaultFolder, strMachineName);
+            uMediumId = createVisoMediumWithVisoCreator(pActionPool, pParent, strDefaultFolder, strMachineName);
             break;
         case UIMediumDeviceType_Floppy:
@@ -1743,9 +1710,9 @@
 }
 
-QUuid UICommon::createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder /* = QString */,
-                                                  const QString &strMachineName /* = QString */)
+QUuid UICommon::createVisoMediumWithVisoCreator(UIActionPool *pActionPool, QWidget *pParent, const QString &strDefaultFolder /* = QString */,
+                                                const QString &strMachineName /* = QString */)
 {
     QWidget *pDialogParent = windowManager().realParentWindow(pParent);
-    UIVisoCreatorDialog *pVisoCreator = 0;//new UIVisoCreatorDialog(pDialogParent, strMachineName);
+    UIVisoCreatorDialog *pVisoCreator = new UIVisoCreatorDialog(pActionPool, pDialogParent, strMachineName);
 
     if (!pVisoCreator)
@@ -1789,8 +1756,8 @@
                 {
                     RTStrmPrintf(pStrmViso, "--iprt-iso-maker-file-marker-bourne-sh %RTuuid\n", &Uuid);
-                    vrc = visoWriteQuotedString(pStrmViso, "--volume-id=", strVisoName, "\n");
+                    vrc = UIVisoCreatorWidget::visoWriteQuotedString(pStrmViso, "--volume-id=", strVisoName, "\n");
 
                     for (int iFile = 0; iFile < files.size() && RT_SUCCESS(vrc); iFile++)
-                        vrc = visoWriteQuotedString(pStrmViso, NULL, files[iFile], "\n");
+                        vrc = UIVisoCreatorWidget::visoWriteQuotedString(pStrmViso, NULL, files[iFile], "\n");
 
                     /* Append custom options if any to the file: */
@@ -2077,5 +2044,5 @@
 }
 
-void UICommon::updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target)
+void UICommon::updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target, UIActionPool *pActionPool)
 {
     /* Mount (by default): */
@@ -2137,5 +2104,6 @@
                 }
                 else if(target.type == UIMediumTarget::UIMediumTargetType_CreateAdHocVISO)
-                    uMediumID = createVisoMediumWithVisoCreator(windowManager().mainWindowShown(), strMachineFolder, comConstMachine.GetName());
+                    uMediumID = createVisoMediumWithVisoCreator(pActionPool, windowManager().mainWindowShown(), strMachineFolder,
+                                                                comConstMachine.GetName());
 
                 else if(target.type == UIMediumTarget::UIMediumTargetType_CreateFloppyDisk)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UICommon.h	(revision 92397)
@@ -56,4 +56,5 @@
 class CMachine;
 class CUSBDevice;
+class UIActionPool;
 class UIMedium;
 class UIMediumEnumerator;
@@ -430,7 +431,6 @@
           * @param  fEnableCreate            Passes whether to show/enable create action in the medium selector dialog,
           * returns QUuid of the new medium */
-        QUuid openMediumCreatorDialog(QWidget *pParent, UIMediumDeviceType  enmMediumType,
-                                      const QString &strMachineFolder = QString(),
-                                      const QString &strMachineName = QString(),
+        QUuid openMediumCreatorDialog(UIActionPool *pActionPool, QWidget *pParent, UIMediumDeviceType  enmMediumType,
+                                      const QString &strMachineFolder = QString(), const QString &strMachineName = QString(),
                                       const QString &strMachineGuestOSTypeId = QString());
 
@@ -446,5 +446,5 @@
                                 const CMachine &comMachine, const QString &strControllerName, const StorageSlot &storageSlot);
         /** Updates @a comConstMachine storage with data described by @a target. */
-        void updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target);
+        void updateMachineStorage(const CMachine &comConstMachine, const UIMediumTarget &target, UIActionPool *pActionPool);
 
         /** Generates details for passed @a comMedium.
@@ -613,5 +613,6 @@
           * @param  strDefaultFolder  Passes the folder to save the VISO file.
           * @param  strMachineName    Passes the name of the machine, */
-        QUuid createVisoMediumWithVisoCreator(QWidget *pParent, const QString &strDefaultFolder = QString(), const QString &strMachineName = QString());
+        QUuid createVisoMediumWithVisoCreator(UIActionPool *pActionPool, QWidget *pParent,
+                                              const QString &strDefaultFolder = QString(), const QString &strMachineName = QString());
 
         /** Creates and shows a dialog thru which user can create a new floppy disk a VISO using the file-open dialog.
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsElement.cpp	(revision 92397)
@@ -684,5 +684,5 @@
 
     /* Update current machine mount-target: */
-    uiCommon().updateMachineStorage(machine(), target);
+    uiCommon().updateMachineStorage(machine(), target, gpManager->actionPool());
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 92397)
@@ -459,5 +459,5 @@
 void UIMediumManagerWidget::sltCreateMedium()
 {
-    uiCommon().openMediumCreatorDialog(this, currentMediumType());
+    uiCommon().openMediumCreatorDialog(m_pActionPool, this, currentMediumType());
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp	(revision 92397)
@@ -452,6 +452,6 @@
 void UIMediumSelector::sltCreateMedium()
 {
-    QUuid uMediumId = uiCommon().openMediumCreatorDialog(this, m_enmMediumType, m_strMachineFolder,
-                                                         m_strMachineName, m_strMachineGuestOSTypeId);
+    QUuid uMediumId;// = uiCommon().openMediumCreatorDialog(this, m_enmMediumType, m_strMachineFolder,
+    //                                   m_strMachineName, m_strMachineGuestOSTypeId);
     /* Make sure that the data structure is updated and newly created medium is selected and visible: */
     sltHandleMediumCreated(uMediumId);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.cpp	(revision 92397)
@@ -39,4 +39,6 @@
 # include "VBoxUtils-darwin.h"
 #endif
+
+#include <iprt/getopt.h>
 
 
@@ -550,4 +552,27 @@
 }
 
+/* static */
+int UIVisoCreatorWidget::visoWriteQuotedString(PRTSTREAM pStrmDst, const char *pszPrefix,
+                                               QString const &rStr, const char *pszPostFix)
+{
+    QByteArray const utf8Array   = rStr.toUtf8();
+    const char      *apszArgv[2] = { utf8Array.constData(), NULL };
+    char            *pszQuoted;
+    int vrc = RTGetOptArgvToString(&pszQuoted, apszArgv, RTGETOPTARGV_CNV_QUOTE_BOURNE_SH);
+    if (RT_SUCCESS(vrc))
+    {
+        if (pszPrefix)
+            vrc = RTStrmPutStr(pStrmDst, pszPrefix);
+        if (RT_SUCCESS(vrc))
+        {
+            vrc = RTStrmPutStr(pStrmDst, pszQuoted);
+            if (pszPostFix && RT_SUCCESS(vrc))
+                vrc = RTStrmPutStr(pStrmDst, pszPostFix);
+        }
+        RTStrFree(pszQuoted);
+    }
+    return vrc;
+}
+
 
 /*********************************************************************************************************************************
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/viso/UIVisoCreator.h	(revision 92397)
@@ -29,4 +29,5 @@
 #include "QIWithRetranslateUI.h"
 
+#include <iprt/stream.h>
 
 /* Forward declarations: */
@@ -66,4 +67,14 @@
 #endif
 
+    /**
+      * Helper for createVisoMediumWithVisoCreator.
+      * @returns IPRT status code.
+      * @param   pStrmDst            Where to write the quoted string.
+      * @param   pszPrefix           Stuff to put in front of it.
+      * @param   rStr                The string to quote and write out.
+      * @param   pszPrefix           Stuff to put after it.
+      */
+    static int visoWriteQuotedString(PRTSTREAM pStrmDst, const char *pszPrefix,
+                                     QString const &rStr, const char *pszPostFix);
 protected:
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 92396)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 92397)
@@ -2281,5 +2281,5 @@
 
     /* Update current machine mount-target: */
-    uiCommon().updateMachineStorage(machine(), target);
+    uiCommon().updateMachineStorage(machine(), target, actionPool());
 }
 
