Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.cpp	(revision 33670)
@@ -1297,5 +1297,5 @@
 }
 
-int VBoxProblemReporter::confirmRunNewHDWzdOrVDM (KDeviceType aDeviceType)
+int VBoxProblemReporter::confirmRunNewHDWzdOrOFD (KDeviceType aDeviceType)
 {
     switch (aDeviceType)
@@ -1303,10 +1303,10 @@
         case KDeviceType_HardDisk:
             return message (QApplication::activeWindow(), Info,
-                            tr ("<p>There are no unused media available for the newly "
+                            tr ("<p>There are no unused medium available for the newly "
                                 "created attachment.</p>"
                                 "<p>Press the <b>Create</b> button to start the <i>New "
                                 "Virtual Disk</i> wizard and create a new medium, "
-                                "or press the <b>Select</b> if you wish to open the <i>Virtual "
-                                "Media Manager</i>.</p>"),
+                                "or press the <b>Select</b> if you wish to open existing "
+                                "medium using file-open dialog.</p>"),
                             0, /* aAutoConfirmId */
                             QIMessageBox::Yes,
@@ -1317,8 +1317,8 @@
         default:
             return message (QApplication::activeWindow(), Info,
-                            tr ("<p>There are no unused media available for the newly "
+                            tr ("<p>There are no unused medium available for the newly "
                                 "created attachment.</p>"
-                                "<p>Press the <b>Select</b> if you wish to open the <i>Virtual "
-                                "Media Manager</i>.</p>"),
+                                "<p>Press the <b>Select</b> if you wish to open existing "
+                                "medium using file-open dialog.</p>"),
                             0, /* aAutoConfirmId */
                             QIMessageBox::No | QIMessageBox::Default,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.h	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxProblemReporter.h	(revision 33670)
@@ -256,5 +256,5 @@
     int confirmDetachAddControllerSlots (QWidget *aParent) const;
     int confirmChangeAddControllerSlots (QWidget *aParent) const;
-    int confirmRunNewHDWzdOrVDM (KDeviceType aDeviceType);
+    int confirmRunNewHDWzdOrOFD (KDeviceType aDeviceType);
 
     int confirmRemovingOfLastDVDDevice() const;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.cpp	(revision 33670)
@@ -23,5 +23,5 @@
 #include "UINewHDWzd.h"
 #include "VBoxGlobal.h"
-#include "VBoxMediaManagerDlg.h"
+#include "QIFileDialog.h"
 #include "VBoxProblemReporter.h"
 #include "VBoxVMSettingsHD.h"
@@ -1716,6 +1716,8 @@
 
     /* Vmm Button */
-    mTbVmm->setIcon(UIIconPool::iconSet(PixmapPool::pool()->pixmap (PixmapPool::VMMEn),
+    mTbOpen->setIcon(UIIconPool::iconSet(PixmapPool::pool()->pixmap (PixmapPool::VMMEn),
                                         PixmapPool::pool()->pixmap (PixmapPool::VMMDis)));
+    mTbNew->setIcon(UIIconPool::iconSet(PixmapPool::pool()->pixmap (PixmapPool::HDAttachmentAddEn),
+                                        PixmapPool::pool()->pixmap (PixmapPool::HDAttachmentAddDis)));
 
     /* Info Pane initialization */
@@ -1767,5 +1769,6 @@
     connect (mCbIoCache, SIGNAL (stateChanged (int)), this, SLOT (setInformation()));
     connect (mCbVdi, SIGNAL (activated (int)), this, SLOT (setInformation()));
-    connect (mTbVmm, SIGNAL (clicked (bool)), this, SLOT (onVmmInvoked()));
+    connect (mTbOpen, SIGNAL (clicked (bool)), this, SLOT (sltOpenMedium()));
+    connect (mTbNew, SIGNAL (clicked (bool)), this, SLOT (sltNewMedium()));
     connect (mCbShowDiffs, SIGNAL (stateChanged (int)), this, SLOT (setInformation()));
     connect (mCbPassthrough, SIGNAL (stateChanged (int)), this, SLOT (setInformation()));
@@ -2290,11 +2293,20 @@
                 {
                     case KDeviceType_HardDisk:
-                        mLbVdi->setText (tr ("Hard &Disk:"));
+                        mLbVdi->setText(tr("Hard &Disk:"));
+                        mTbOpen->setWhatsThis(tr("Open hard disk image file using file-open dialog."));
+                        mTbOpen->setToolTip(tr("Open hard disk image file"));
+                        mTbNew->setVisible(true);
                         break;
                     case KDeviceType_DVD:
-                        mLbVdi->setText (tr ("&CD/DVD Device:"));
+                        mLbVdi->setText(tr("&CD/DVD Device:"));
+                        mTbOpen->setWhatsThis(tr("Open CD/DVD image file using file-open dialog."));
+                        mTbOpen->setToolTip(tr("Open CD/DVD image file"));
+                        mTbNew->setVisible(false);
                         break;
                     case KDeviceType_Floppy:
-                        mLbVdi->setText (tr ("&Floppy Device:"));
+                        mLbVdi->setText(tr("&Floppy Device:"));
+                        mTbOpen->setWhatsThis(tr("Open floppy image file using file-open dialog."));
+                        mTbOpen->setToolTip(tr("Open floppy image file"));
+                        mTbNew->setVisible(false);
                         break;
                     default:
@@ -2389,7 +2401,14 @@
 }
 
-void VBoxVMSettingsHD::onVmmInvoked()
-{
-    QString id = getWithMediaManager (mCbVdi->type());
+void VBoxVMSettingsHD::sltOpenMedium()
+{
+    QString id = getWithOpenFileDialog(mCbVdi->type());
+    if (!id.isNull())
+        mCbVdi->setCurrentItem (id);
+}
+
+void VBoxVMSettingsHD::sltNewMedium()
+{
+    QString id = getWithNewHDWizard();
     if (!id.isNull())
         mCbVdi->setCurrentItem (id);
@@ -2449,7 +2468,7 @@
                 /* Ask the user for the method to select medium */
                 KDeviceType deviceType = mStorageModel->data (index, StorageModel::R_AttDevice).value <KDeviceType>();
-                int askResult = vboxProblem().confirmRunNewHDWzdOrVDM (deviceType);
+                int askResult = vboxProblem().confirmRunNewHDWzdOrOFD (deviceType);
                 QString mediumId = askResult == QIMessageBox::Yes ? getWithNewHDWizard() :
-                                   askResult == QIMessageBox::No ? getWithMediaManager (typeToLocal (deviceType)) : QString();
+                                   askResult == QIMessageBox::No ? getWithOpenFileDialog(typeToLocal (deviceType)) : QString();
                 if (mediumId.isNull())
                     mediumId = firstAvailableId;
@@ -2733,24 +2752,107 @@
 }
 
+QString VBoxVMSettingsHD::getWithOpenFileDialog (VBoxDefs::MediumType aMediumType)
+{
+    /* Initialize variables: */
+    CVirtualBox vbox = vboxGlobal().virtualBox();
+    QString strHomeFolder = vbox.GetHomeFolder();
+    QList < QPair <QString, QString> > filters;
+    QStringList backends;
+    QStringList prefixes;
+    QString strFilter;
+    QString strTitle;
+    QString allType;
+    KDeviceType type;
+    switch (aMediumType)
+    {
+        case VBoxDefs::MediumType_HardDisk:
+        {
+            filters = vboxGlobal().HDDBackends();
+            strTitle = tr ("Select a hard disk image file");
+            allType = tr ("hard disk");
+            type = KDeviceType_HardDisk;
+            break;
+        }
+        case VBoxDefs::MediumType_DVD:
+        {
+            filters = vboxGlobal().DVDBackends();
+            strTitle = tr ("Select a CD/DVD-ROM disk image file");
+            allType = tr ("CD/DVD-ROM disk");
+            type = KDeviceType_DVD;
+            break;
+        }
+        case VBoxDefs::MediumType_Floppy:
+        {
+            filters = vboxGlobal().FloppyBackends();
+            strTitle = tr ("Select a floppy disk image file");
+            allType = tr ("floppy disk");
+            type = KDeviceType_Floppy;
+            break;
+        }
+        default:
+            break;
+    }
+
+    /* Prepare filters and backends: */
+    for (int i = 0; i < filters.count(); ++i)
+    {
+        /* Get iterated filter: */
+        QPair <QString, QString> item = filters.at(i);
+        /* Create one backend filter string: */
+        backends << QString("%1 (%2)").arg(item.first).arg(item.second);
+        /* Save the suffix's for the "All" entry: */
+        prefixes << item.second;
+    }
+    if (!prefixes.isEmpty())
+        backends.insert(0, tr("All %1 images (%2)").arg(allType).arg(prefixes.join(" ").trimmed()));
+    backends << tr("All files (*)");
+    strFilter = backends.join(";;").trimmed();
+
+    /* Create open file dialog: */
+    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, this, strTitle, 0, true, true);
+    if (!files.empty() && !files[0].isEmpty())
+    {
+        /* Get location: */
+        QString strLocation = files[0];
+
+        /* Open corresponding medium: */
+        CMedium comMedium = vbox.OpenMedium(strLocation, type, KAccessMode_ReadWrite);
+
+        if (vbox.isOk())
+        {
+            /* Prepare vbox medium wrapper: */
+            VBoxMedium vboxMedium;
+
+            /* First of all we should test if that medium already opened: */
+            if (!vboxGlobal().findMedium(comMedium, vboxMedium))
+            {
+                /* And create new otherwise: */
+                vboxMedium = VBoxMedium(CMedium(comMedium), aMediumType, KMediumState_Created);
+                vboxGlobal().addMedium(vboxMedium);
+            }
+
+            /* Return vboxMedium id: */
+            return vboxMedium.id();
+        }
+        else
+            vboxProblem().cannotOpenMedium(this, vbox, aMediumType, strLocation);
+    }
+
+    /* Return null string: */
+    return QString();
+}
+
 QString VBoxVMSettingsHD::getWithNewHDWizard()
 {
     /* Run New HD Wizard */
-    UINewHDWzd dlg (this);
+    UINewHDWzd dlg(this);
+    /* Initialize variables: */
+    CGuestOSType guestOSType = vboxGlobal().virtualBox().GetGuestOSType(m_machine.GetOSTypeId());
+    dlg.setRecommendedSize(guestOSType.GetRecommendedHDD());
+    QString strMachineSettingsFilepath = m_machine.GetSettingsFilePath();
+    QFileInfo fileInfo(strMachineSettingsFilepath);
+    dlg.setDefaultPath(fileInfo.absolutePath());
 
     return dlg.exec() == QDialog::Accepted ? dlg.hardDisk().GetId() : QString();
-}
-
-QString VBoxVMSettingsHD::getWithMediaManager (VBoxDefs::MediumType aMediumType)
-{
-    /* Run Media Manager */
-    VBoxMediaManagerDlg dlg (this);
-    dlg.setup (aMediumType,
-               true /* do select? */,
-               false /* do refresh? */,
-               m_machine,
-               mCbVdi->id(),
-               mCbShowDiffs->isChecked());
-
-    return dlg.exec() == QDialog::Accepted ? dlg.selectedId() : QString();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.h	(revision 33670)
@@ -616,5 +616,6 @@
     void setInformation();
 
-    void onVmmInvoked();
+    void sltOpenMedium();
+    void sltNewMedium();
 
     void updateActionsState();
@@ -637,6 +638,6 @@
     void addAttachmentWrapper (KDeviceType aDevice);
 
+    QString getWithOpenFileDialog (VBoxDefs::MediumType aMediumType);
     QString getWithNewHDWizard();
-    QString getWithMediaManager (VBoxDefs::MediumType aMediumType);
 
     void updateAdditionalObjects (KDeviceType aType);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.ui	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsHD.ui	(revision 33670)
@@ -248,5 +248,5 @@
          <number>0</number>
         </property>
-        <item row="0" column="0" colspan="4" >
+        <item row="0" column="0" colspan="3" >
          <widget class="QILabelSeparator" native="1" name="mLsAttributes" >
           <property name="text" >
@@ -268,5 +268,5 @@
          </widget>
         </item>
-        <item row="1" column="2" colspan="2" >
+        <item row="1" column="2" >
          <widget class="QComboBox" name="mCbSlot" >
           <property name="whatsThis" >
@@ -292,33 +292,64 @@
         </item>
         <item row="2" column="2" >
-         <widget class="VBoxMediaComboBox" native="1" name="mCbVdi" >
-          <property name="whatsThis" >
-           <string>Selects the virtual disk image or the host drive used by this attachment.</string>
-          </property>
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="3" >
-         <widget class="QIToolButton" name="mTbVmm" >
-          <property name="whatsThis" >
-           <string>Opens the Virtual Media Manager to select a virtual image for this attachment.</string>
-          </property>
-          <property name="toolTip" >
-           <string>Open Virtual Media Manager</string>
-          </property>
-          <property name="text" >
-           <string/>
-          </property>
-          <property name="autoRaise" >
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="2" colspan="2" >
+         <widget class="QWidget" name="mWtContainer" >
+          <layout class="QHBoxLayout" name="mLtContainer" >
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+            </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <property name="spacing" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="VBoxMediaComboBox" native="1" name="mCbVdi" >
+             <property name="whatsThis" >
+              <string>Selects the virtual disk image or the host drive used by this attachment.</string>
+             </property>
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QIToolButton" name="mTbOpen" >
+             <property name="text" >
+              <string/>
+             </property>
+             <property name="autoRaise" >
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QIToolButton" name="mTbNew" >
+             <property name="whatsThis" >
+              <string>Create hard disk image file using New Hard Disk wizard.</string>
+             </property>
+             <property name="toolTip" >
+              <string>Create hard disk image file</string>
+             </property>
+             <property name="text" >
+              <string/>
+             </property>
+             <property name="autoRaise" >
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item row="3" column="2" >
          <widget class="QCheckBox" name="mCbShowDiffs">
           <property name="sizePolicy" >
@@ -336,5 +367,5 @@
          </widget>
         </item>
-        <item row="4" column="2" colspan="2" >
+        <item row="4" column="2" >
          <widget class="QCheckBox" name="mCbPassthrough" >
           <property name="sizePolicy" >
@@ -352,5 +383,5 @@
          </widget>
         </item>
-        <item row="5" column="0" colspan="4" >
+        <item row="5" column="0" colspan="3" >
          <widget class="QILabelSeparator" native="1" name="mLsInformation" >
           <property name="text" >
@@ -369,5 +400,5 @@
          </widget>
         </item>
-        <item row="6" column="2" colspan="2" >
+        <item row="6" column="2" >
          <widget class="QILabel" name="mLbHDVirtualSizeValue" >
           <property name="sizePolicy" >
@@ -389,5 +420,5 @@
          </widget>
         </item>
-        <item row="7" column="2" colspan="2" >
+        <item row="7" column="2" >
          <widget class="QILabel" name="mLbHDActualSizeValue" >
           <property name="sizePolicy" >
@@ -409,5 +440,5 @@
          </widget>
         </item>
-        <item row="8" column="2" colspan="2" >
+        <item row="8" column="2" >
          <widget class="QILabel" name="mLbSizeValue" >
           <property name="sizePolicy" >
@@ -429,5 +460,5 @@
          </widget>
         </item>
-        <item row="9" column="2" colspan="2" >
+        <item row="9" column="2" >
          <widget class="QILabel" name="mLbLocationValue" >
           <property name="sizePolicy" >
@@ -449,5 +480,5 @@
          </widget>
         </item>
-        <item row="10" column="2" colspan="2" >
+        <item row="10" column="2" >
          <widget class="QILabel" name="mLbHDFormatValue" >
           <property name="sizePolicy" >
@@ -469,5 +500,5 @@
          </widget>
         </item>
-        <item row="11" column="2" colspan="2" >
+        <item row="11" column="2" >
          <widget class="QILabel" name="mLbUsageValue" >
           <property name="sizePolicy" >
@@ -479,5 +510,5 @@
          </widget>
         </item>
-        <item row="12" column="0" colspan="4" >
+        <item row="12" column="0" colspan="3" >
          <spacer name="mSp6" >
           <property name="orientation" >
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp	(revision 33669)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UINewVMWzd.cpp	(revision 33670)
@@ -566,25 +566,30 @@
         QString strLocation = files[0];
 
-        /* Prepare GUI medium wrapper: */
-        VBoxMedium vboxMedium;
-
         /* Open corresponding medium: */
         CMedium comMedium = vbox.OpenMedium(strLocation, KDeviceType_HardDisk, KAccessMode_ReadWrite);
+
         if (vbox.isOk())
-            vboxMedium = VBoxMedium(CMedium(comMedium), VBoxDefs::MediumType_HardDisk, KMediumState_Created);
-
-        /* Add medium to GUI list: */
-        if (vbox.isOk())
-            vboxGlobal().addMedium(vboxMedium);
+        {
+            /* Prepare vbox medium wrapper: */
+            VBoxMedium vboxMedium;
+
+            /* First of all we should test if that medium already opened: */
+            if (!vboxGlobal().findMedium(comMedium, vboxMedium))
+            {
+                /* And create new otherwise: */
+                vboxMedium = VBoxMedium(CMedium(comMedium), VBoxDefs::MediumType_HardDisk, KMediumState_Created);
+                vboxGlobal().addMedium(vboxMedium);
+            }
+
+            /* Ask medium combobox to select newly added medium: */
+            m_pDiskSelector->setCurrentItem(vboxMedium.id());
+
+            /* Update hard disk source: */
+            hardDiskSourceChanged();
+
+            m_pDiskSelector->setFocus();
+        }
         else
             vboxProblem().cannotOpenMedium(this, vbox, VBoxDefs::MediumType_HardDisk, strLocation);
-
-        /* Ask medium combobox to select newly added medium: */
-        m_pDiskSelector->setCurrentItem(vboxMedium.id());
-
-        /* Update hard disk source: */
-        hardDiskSourceChanged();
-
-        m_pDiskSelector->setFocus();
     }
 }
