Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41373)
@@ -361,7 +361,7 @@
 	src/wizards/UIWizardPage.h \
 	src/wizards/newvm/UIWizardNewVM.h \
+	src/wizards/newvm/UIWizardNewVMPageBasic1.h \
 	src/wizards/newvm/UIWizardNewVMPageBasic2.h \
 	src/wizards/newvm/UIWizardNewVMPageBasic3.h \
-	src/wizards/newvm/UIWizardNewVMPageBasic4.h \
 	src/wizards/newvm/UIWizardNewVMPageExpert.h \
 	src/wizards/newvd/UIWizardNewVD.h \
@@ -392,5 +392,5 @@
 	src/wizards/importappliance/UIWizardImportAppPageExpert.h \
 	src/wizards/firstrun/UIWizardFirstRun.h \
-	src/wizards/firstrun/UIWizardFirstRunPageBasic2.h
+	src/wizards/firstrun/UIWizardFirstRunPageBasic.h
 
 VirtualBox_QT_MOCHDRS.darwin += \
@@ -570,7 +570,7 @@
 	src/wizards/UIWizardPage.cpp \
 	src/wizards/newvm/UIWizardNewVM.cpp \
+	src/wizards/newvm/UIWizardNewVMPageBasic1.cpp \
 	src/wizards/newvm/UIWizardNewVMPageBasic2.cpp \
 	src/wizards/newvm/UIWizardNewVMPageBasic3.cpp \
-	src/wizards/newvm/UIWizardNewVMPageBasic4.cpp \
 	src/wizards/newvm/UIWizardNewVMPageExpert.cpp \
 	src/wizards/newvd/UIWizardNewVD.cpp \
@@ -601,5 +601,5 @@
 	src/wizards/importappliance/UIWizardImportAppPageExpert.cpp \
 	src/wizards/firstrun/UIWizardFirstRun.cpp \
-	src/wizards/firstrun/UIWizardFirstRunPageBasic2.cpp
+	src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp
 
 VirtualBox_SOURCES.win += \
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic5.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic5.cpp	(revision 41372)
+++ 	(revision )
@@ -1,105 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardCloneVDPageBasic5 class implementation
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Local includes: */
-#include "UIWizardCloneVDPageBasic5.h"
-#include "UIWizardCloneVD.h"
-#include "VBoxGlobal.h"
-#include "QIRichTextLabel.h"
-
-UIWizardCloneVDPage5::UIWizardCloneVDPage5()
-{
-}
-
-UIWizardCloneVDPageBasic5::UIWizardCloneVDPageBasic5()
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel1 = new QIRichTextLabel(this);
-        m_pSummaryText = new QIRichTextLabel(this);
-        m_pLabel2 = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pSummaryText);
-        pMainLayout->addWidget(m_pLabel2);
-        pMainLayout->addStretch();
-    }
-}
-
-void UIWizardCloneVDPageBasic5::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(UIWizardCloneVD::tr("Summary"));
-
-    /* Translate widgets: */
-    m_pLabel1->setText(UIWizardCloneVD::tr("You are going to create a copied virtual disk with the following parameters:"));
-    m_pLabel2->setText(UIWizardCloneVD::tr("If the above settings are correct, press the <b>%1</b> button. "
-                                           "Once you press it the new virtual disk file will be created.")
-                                          .arg(VBoxGlobal::replaceHtmlEntities(VBoxGlobal::removeAccelMark(wizard()->buttonText(QWizard::FinishButton)))));
-
-    /* Compose summary: */
-    QString strSummary;
-    CMediumFormat mediumFormat = field("mediumFormat").value<CMediumFormat>();
-    qulonglong uVariant = field("mediumVariant").toULongLong();
-    QString strMediumPath = field("mediumPath").toString();
-    QString sizeFormatted = VBoxGlobal::formatSize(field("mediumSize").toULongLong());
-    QString sizeUnformatted = UIWizardCloneVD::tr("%1 B").arg(field("mediumSize").toULongLong());
-    strSummary += QString
-    (
-        "<tr><td><nobr>%1: </nobr></td><td><nobr>%2</nobr></td></tr>"
-        "<tr><td><nobr>%3: </nobr></td><td><nobr>%4</nobr></td></tr>"
-        "<tr><td><nobr>%5: </nobr></td><td><nobr>%6</nobr></td></tr>"
-        "<tr><td><nobr>%7: </nobr></td><td><nobr>%8 (%9)</nobr></td></tr>"
-    )
-    .arg(UIWizardCloneVD::tr("File type", "summary"), mediumFormat.isNull() ?
-         QString() : VBoxGlobal::removeAccelMark(VBoxGlobal::fullMediumFormatName(mediumFormat.GetName())))
-    .arg(UIWizardCloneVD::tr("Details", "summary"), vboxGlobal().toString((KMediumVariant)uVariant))
-    .arg(UIWizardCloneVD::tr("Location", "summary"), strMediumPath)
-    .arg(UIWizardCloneVD::tr("Size", "summary"), sizeFormatted, sizeUnformatted);
-    m_pSummaryText->setText("<table cellspacing=0 cellpadding=0>" + strSummary + "</table>");
-}
-
-void UIWizardCloneVDPageBasic5::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-
-    /* Summary should have focus initially: */
-    m_pSummaryText->setFocus();
-}
-
-bool UIWizardCloneVDPageBasic5::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to copy virtual-disk: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardCloneVD*>(wizard())->copyVirtualDisk();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic5.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevd/UIWizardCloneVDPageBasic5.h	(revision 41372)
+++ 	(revision )
@@ -1,66 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardCloneVDPageBasic5 class declaration
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardCloneVDPageBasic5_h__
-#define __UIWizardCloneVDPageBasic5_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-#include "COMDefs.h"
-
-/* Forward declarations: */
-class QIRichTextLabel;
-
-/* 5th page of the Clone Virtual Disk wizard (base part): */
-class UIWizardCloneVDPage5 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardCloneVDPage5();
-};
-
-/* 5th page of the Clone Virtual Disk wizard (basic extension): */
-class UIWizardCloneVDPageBasic5 : public UIWizardPage, public UIWizardCloneVDPage5
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIWizardCloneVDPageBasic5();
-
-private:
-
-    /* Translation stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool validatePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-    QIRichTextLabel *m_pSummaryText;
-    QIRichTextLabel *m_pLabel2;
-};
-
-#endif // __UIWizardCloneVDPageBasic5_h__
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h	(revision 41373)
@@ -54,5 +54,4 @@
 
     /* Who will be able to clone virtual-machine: */
-    friend class UIWizardCloneVMPageBasic1;
     friend class UIWizardCloneVMPageBasic2;
     friend class UIWizardCloneVMPageBasic3;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.cpp	(revision 41373)
@@ -20,5 +20,5 @@
 /* Local includes: */
 #include "UIWizardFirstRun.h"
-#include "UIWizardFirstRunPageBasic2.h"
+#include "UIWizardFirstRunPageBasic.h"
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
@@ -100,5 +100,5 @@
         case UIWizardMode_Basic:
         {
-            setPage(Page1, new UIWizardFirstRunPageBasic2(m_machine.GetId(), m_fHardDiskWasSet));
+            setPage(Page, new UIWizardFirstRunPageBasic(m_machine.GetId(), m_fHardDiskWasSet));
             break;
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRun.h	(revision 41373)
@@ -34,13 +34,5 @@
     enum
     {
-        Page1,
-        Page2,
-        Page3
-    };
-
-    /* Page IDs: */
-    enum
-    {
-        PageExpert
+        Page
     };
 
@@ -53,6 +45,6 @@
     bool insertMedium();
 
-    /* Who will be able to export appliance: */
-    friend class UIWizardFirstRunPageBasic2;
+    /* Who will be able to start VM: */
+    friend class UIWizardFirstRunPageBasic;
 
 private:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp	(revision 41373)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp	(revision 41373)
@@ -0,0 +1,167 @@
+/* $Id$ */
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * UIWizardFirstRunPageBasic class implementation
+ */
+
+/*
+ * Copyright (C) 2008-2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+/* Global includes: */
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGroupBox>
+
+/* Local includes: */
+#include "UIWizardFirstRunPageBasic.h"
+#include "UIWizardFirstRun.h"
+#include "COMDefs.h"
+#include "UIIconPool.h"
+#include "VBoxGlobal.h"
+#include "UIMessageCenter.h"
+#include "VBoxMediaComboBox.h"
+#include "QIToolButton.h"
+#include "QIRichTextLabel.h"
+
+UIWizardFirstRunPage::UIWizardFirstRunPage(bool fBootHardDiskWasSet)
+    : m_fBootHardDiskWasSet(fBootHardDiskWasSet)
+{
+}
+
+void UIWizardFirstRunPage::onOpenMediumWithFileOpenDialog()
+{
+    /* Get opened vboxMedium id: */
+    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(m_pMediaSelector->type(), thisImp());
+    /* Update medium-combo if necessary: */
+    if (!strMediumId.isNull())
+        m_pMediaSelector->setCurrentItem(strMediumId);
+}
+
+QString UIWizardFirstRunPage::id() const
+{
+    return m_pMediaSelector->id();
+}
+
+void UIWizardFirstRunPage::setId(const QString &strId)
+{
+    m_pMediaSelector->setCurrentItem(strId);
+}
+
+UIWizardFirstRunPageBasic::UIWizardFirstRunPageBasic(const QString &strMachineId, bool fBootHardDiskWasSet)
+    : UIWizardFirstRunPage(fBootHardDiskWasSet)
+{
+    /* Create widgets: */
+    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
+    {
+        pMainLayout->setContentsMargins(8, 0, 8, 0);
+        m_pLabel = new QIRichTextLabel(this);
+        m_pSourceCnt = new QGroupBox(this);
+        {
+            m_pSourceCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QHBoxLayout *pSourceCntLayout = new QHBoxLayout(m_pSourceCnt);
+            {
+                m_pMediaSelector = new VBoxMediaComboBox(m_pSourceCnt);
+                {
+                    m_pMediaSelector->setMachineId(strMachineId);
+                    m_pMediaSelector->setType(VBoxDefs::MediumType_DVD);
+                    m_pMediaSelector->repopulate();
+                }
+                m_pSelectMediaButton = new QIToolButton(m_pSourceCnt);
+                {
+                    m_pSelectMediaButton->setIcon(UIIconPool::iconSet(":/select_file_16px.png", ":/select_file_dis_16px.png"));
+                    m_pSelectMediaButton->setAutoRaise(true);
+                }
+                pSourceCntLayout->addWidget(m_pMediaSelector);
+                pSourceCntLayout->addWidget(m_pSelectMediaButton);
+            }
+        }
+        pMainLayout->addWidget(m_pLabel);
+        pMainLayout->addWidget(m_pSourceCnt);
+        pMainLayout->addStretch();
+    }
+
+    /* Setup connections: */
+    connect(m_pMediaSelector, SIGNAL(currentIndexChanged(int)), this, SIGNAL(completeChanged()));
+    connect(m_pSelectMediaButton, SIGNAL(clicked()), this, SLOT(sltOpenMediumWithFileOpenDialog()));
+
+    /* Register fields: */
+    registerField("source", this, "source");
+    registerField("id", this, "id");
+}
+
+void UIWizardFirstRunPageBasic::sltOpenMediumWithFileOpenDialog()
+{
+    /* Call to base-class: */
+    onOpenMediumWithFileOpenDialog();
+}
+
+void UIWizardFirstRunPageBasic::retranslateUi()
+{
+    /* Translate widgets: */
+    if (m_fBootHardDiskWasSet)
+        m_pLabel->setText(UIWizardFirstRun::tr("<p>Please select a virtual optical disk file "
+                                               "or a physical optical drive containing a disk "
+                                               "to start your new virtual machine from.</p>"
+                                               "<p>The disk should be suitable for starting a computer from "
+                                               "and should contain the operating system you wish to install "
+                                               "on the virtual machine if you want to do that now. "
+                                               "The disk will be ejected from the virtual drive "
+                                               "automatically next time you switch the virtual machine off, "
+                                               "but you can also do this yourself if needed using the Devices menu.</p>"));
+    else
+        m_pLabel->setText(UIWizardFirstRun::tr("<p>Please select a virtual optical disk file "
+                                               "or a physical optical drive containing a disk "
+                                               "to start your new virtual machine from.</p>"
+                                               "<p>The disk should be suitable for starting a computer from. "
+                                               "As this virtual machine has no hard drive "
+                                               "you will not be able to install an operating system on it at the moment.</p>"));
+    m_pSourceCnt->setTitle(UIWizardFirstRun::tr("Start-up disk"));
+    m_pSelectMediaButton->setToolTip(UIWizardFirstRun::tr("Choose a virtual optical disk file..."));
+}
+
+void UIWizardFirstRunPageBasic::initializePage()
+{
+    /* Translate page: */
+    retranslateUi();
+}
+
+bool UIWizardFirstRunPageBasic::isComplete() const
+{
+    /* Make sure valid medium chosen: */
+    return !vboxGlobal().findMedium(id()).isNull();
+}
+
+bool UIWizardFirstRunPageBasic::validatePage()
+{
+    /* Initial result: */
+    bool fResult = true;
+
+    /* Lock finish button: */
+    startProcessing();
+
+    /* Try to insert chosen medium: */
+    if (fResult)
+        fResult = qobject_cast<UIWizardFirstRun*>(wizard())->insertMedium();
+
+    /* Unlock finish button: */
+    endProcessing();
+
+    /* Return result: */
+    return fResult;
+}
+
+QString UIWizardFirstRunPageBasic::source() const
+{
+    return m_pMediaSelector->currentText();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.h	(revision 41373)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic.h	(revision 41373)
@@ -0,0 +1,100 @@
+/** @file
+ *
+ * VBox frontends: Qt4 GUI ("VirtualBox"):
+ * UIWizardFirstRunPageBasic class declaration
+ */
+
+/*
+ * Copyright (C) 2008-2012 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef __UIWizardFirstRunPageBasic_h__
+#define __UIWizardFirstRunPageBasic_h__
+
+/* Local includes: */
+#include "UIWizardPage.h"
+
+/* Forward declarations: */
+class CMachine;
+class QGroupBox;
+class VBoxMediaComboBox;
+class QIToolButton;
+class QIRichTextLabel;
+
+/* Single page of the First Run wizard (base part): */
+class UIWizardFirstRunPage : public UIWizardPageBase
+{
+protected:
+
+    /* Constructor: */
+    UIWizardFirstRunPage(bool fBootHardDiskWasSet);
+
+    /* Handlers: */
+    void onOpenMediumWithFileOpenDialog();
+
+    /* Stuff for 'id' field: */
+    QString id() const;
+    void setId(const QString &strId);
+
+    /* Variables: */
+    bool m_fBootHardDiskWasSet;
+
+    /* Widgets: */
+    QGroupBox *m_pSourceCnt;
+    VBoxMediaComboBox *m_pMediaSelector;
+    QIToolButton *m_pSelectMediaButton;
+};
+
+/* Single page of the First Run wizard (basic extension): */
+class UIWizardFirstRunPageBasic : public UIWizardPage, public UIWizardFirstRunPage
+{
+    Q_OBJECT;
+    Q_PROPERTY(QString source READ source);
+    Q_PROPERTY(QString id READ id WRITE setId);
+
+public:
+
+    /* Constructor: */
+    UIWizardFirstRunPageBasic(const QString &strMachineId, bool fBootHardDiskWasSet);
+
+protected:
+
+    /* Wrapper to access 'this' from base part: */
+    UIWizardPage* thisImp() { return this; }
+
+private slots:
+
+    /* Open with file-open dialog: */
+    void sltOpenMediumWithFileOpenDialog();
+
+private:
+
+    /* Translate stuff: */
+    void retranslateUi();
+
+    /* Prepare stuff: */
+    void initializePage();
+
+    /* Validation stuff: */
+    bool isComplete() const;
+
+    /* Validation stuff: */
+    bool validatePage();
+
+    /* Stuff for 'source' field: */
+    QString source() const;
+
+    /* Widgets: */
+    QIRichTextLabel *m_pLabel;
+};
+
+#endif // __UIWizardFirstRunPageBasic_h__
+
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic1.cpp	(revision 41372)
+++ 	(revision )
@@ -1,77 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic1 class implementation
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QVBoxLayout>
-
-/* Local includes: */
-#include "UIWizardFirstRunPageBasic1.h"
-#include "UIWizardFirstRun.h"
-#include "QIRichTextLabel.h"
-
-UIWizardFirstRunPage1::UIWizardFirstRunPage1(bool fBootHardDiskWasSet)
-    : m_fBootHardDiskWasSet(fBootHardDiskWasSet)
-{
-}
-
-UIWizardFirstRunPageBasic1::UIWizardFirstRunPageBasic1(bool fBootHardDiskWasSet)
-    : UIWizardFirstRunPage1(fBootHardDiskWasSet)
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel);
-        pMainLayout->addStretch();
-    }
-}
-
-void UIWizardFirstRunPageBasic1::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(UIWizardFirstRun::tr("Welcome to the First Run wizard!"));
-
-    /* Translate widgets: */
-    if (m_fBootHardDiskWasSet)
-        m_pLabel->setText(UIWizardFirstRun::tr("<p>You have started a newly created virtual machine for the "
-                                               "first time. This wizard will help you to perform the steps "
-                                               "necessary for installing an operating system of your choice "
-                                               "onto this virtual machine.</p><p>%1</p>")
-                                              .arg(standardHelpText()));
-    else
-        m_pLabel->setText(UIWizardFirstRun::tr("<p>You have started a newly created virtual machine for the "
-                                               "first time. This wizard will help you to perform the steps "
-                                               "necessary for booting an operating system of your choice on "
-                                               "the virtual machine.</p><p>Note that you will not be able to "
-                                               "install an operating system into this virtual machine right "
-                                               "now because you did not attach any hard disk to it. If this "
-                                               "is not what you want, you can cancel the execution of this "
-                                               "wizard, select <b>Settings</b> from the <b>Machine</b> menu "
-                                               "of the main VirtualBox window to access the settings dialog "
-                                               "of this machine and change the hard disk configuration.</p>"
-                                               "<p>%1</p>")
-                                              .arg(standardHelpText()));
-}
-
-void UIWizardFirstRunPageBasic1::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic1.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic1.h	(revision 41372)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic1 class declaration
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardFirstRunPageBasic1_h__
-#define __UIWizardFirstRunPageBasic1_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-
-/* Forward declarations: */
-class QIRichTextLabel;
-
-/* 1st page of the First Run wizard (base part): */
-class UIWizardFirstRunPage1 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardFirstRunPage1(bool fBootHardDiskWasSet);
-
-    /* Variables: */
-    bool m_fBootHardDiskWasSet;
-};
-
-/* 1st page of the First Run wizard (basic extension): */
-class UIWizardFirstRunPageBasic1 : public UIWizardPage, public UIWizardFirstRunPage1
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIWizardFirstRunPageBasic1(bool fBootHardDiskWasSet);
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel;
-};
-
-#endif // __UIWizardFirstRunPageBasic1_h__
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic2.cpp	(revision 41372)
+++ 	(revision )
@@ -1,167 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic2 class implementation
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QGroupBox>
-
-/* Local includes: */
-#include "UIWizardFirstRunPageBasic2.h"
-#include "UIWizardFirstRun.h"
-#include "COMDefs.h"
-#include "UIIconPool.h"
-#include "VBoxGlobal.h"
-#include "UIMessageCenter.h"
-#include "VBoxMediaComboBox.h"
-#include "QIToolButton.h"
-#include "QIRichTextLabel.h"
-
-UIWizardFirstRunPage2::UIWizardFirstRunPage2(bool fBootHardDiskWasSet)
-    : m_fBootHardDiskWasSet(fBootHardDiskWasSet)
-{
-}
-
-void UIWizardFirstRunPage2::onOpenMediumWithFileOpenDialog()
-{
-    /* Get opened vboxMedium id: */
-    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(m_pMediaSelector->type(), thisImp());
-    /* Update medium-combo if necessary: */
-    if (!strMediumId.isNull())
-        m_pMediaSelector->setCurrentItem(strMediumId);
-}
-
-QString UIWizardFirstRunPage2::id() const
-{
-    return m_pMediaSelector->id();
-}
-
-void UIWizardFirstRunPage2::setId(const QString &strId)
-{
-    m_pMediaSelector->setCurrentItem(strId);
-}
-
-UIWizardFirstRunPageBasic2::UIWizardFirstRunPageBasic2(const QString &strMachineId, bool fBootHardDiskWasSet)
-    : UIWizardFirstRunPage2(fBootHardDiskWasSet)
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        pMainLayout->setContentsMargins(8, 0, 8, 0);
-        m_pLabel = new QIRichTextLabel(this);
-        m_pSourceCnt = new QGroupBox(this);
-        {
-            m_pSourceCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pSourceCntLayout = new QHBoxLayout(m_pSourceCnt);
-            {
-                m_pMediaSelector = new VBoxMediaComboBox(m_pSourceCnt);
-                {
-                    m_pMediaSelector->setMachineId(strMachineId);
-                    m_pMediaSelector->setType(VBoxDefs::MediumType_DVD);
-                    m_pMediaSelector->repopulate();
-                }
-                m_pSelectMediaButton = new QIToolButton(m_pSourceCnt);
-                {
-                    m_pSelectMediaButton->setIcon(UIIconPool::iconSet(":/select_file_16px.png", ":/select_file_dis_16px.png"));
-                    m_pSelectMediaButton->setAutoRaise(true);
-                }
-                pSourceCntLayout->addWidget(m_pMediaSelector);
-                pSourceCntLayout->addWidget(m_pSelectMediaButton);
-            }
-        }
-        pMainLayout->addWidget(m_pLabel);
-        pMainLayout->addWidget(m_pSourceCnt);
-        pMainLayout->addStretch();
-    }
-
-    /* Setup connections: */
-    connect(m_pMediaSelector, SIGNAL(currentIndexChanged(int)), this, SIGNAL(completeChanged()));
-    connect(m_pSelectMediaButton, SIGNAL(clicked()), this, SLOT(sltOpenMediumWithFileOpenDialog()));
-
-    /* Register fields: */
-    registerField("source", this, "source");
-    registerField("id", this, "id");
-}
-
-void UIWizardFirstRunPageBasic2::sltOpenMediumWithFileOpenDialog()
-{
-    /* Call to base-class: */
-    onOpenMediumWithFileOpenDialog();
-}
-
-void UIWizardFirstRunPageBasic2::retranslateUi()
-{
-    /* Translate widgets: */
-    if (m_fBootHardDiskWasSet)
-        m_pLabel->setText(UIWizardFirstRun::tr("<p>Please select a virtual optical disk file "
-                                               "or a physical optical drive containing a disk "
-                                               "to start your new virtual machine from.</p>"
-                                               "<p>The disk should be suitable for starting a computer from "
-                                               "and should contain the operating system you wish to install "
-                                               "on the virtual machine if you want to do that now. "
-                                               "The disk will be ejected from the virtual drive "
-                                               "automatically next time you switch the virtual machine off, "
-                                               "but you can also do this yourself if needed using the Devices menu.</p>"));
-    else
-        m_pLabel->setText(UIWizardFirstRun::tr("<p>Please select a virtual optical disk file "
-                                               "or a physical optical drive containing a disk "
-                                               "to start your new virtual machine from.</p>"
-                                               "<p>The disk should be suitable for starting a computer from. "
-                                               "As this virtual machine has no hard drive "
-                                               "you will not be able to install an operating system on it at the moment.</p>"));
-    m_pSourceCnt->setTitle(UIWizardFirstRun::tr("Start-up disk"));
-    m_pSelectMediaButton->setToolTip(UIWizardFirstRun::tr("Choose a virtual optical disk file..."));
-}
-
-void UIWizardFirstRunPageBasic2::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-}
-
-bool UIWizardFirstRunPageBasic2::isComplete() const
-{
-    /* Make sure valid medium chosen: */
-    return !vboxGlobal().findMedium(id()).isNull();
-}
-
-bool UIWizardFirstRunPageBasic2::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to insert chosen medium: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardFirstRun*>(wizard())->insertMedium();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
-QString UIWizardFirstRunPageBasic2::source() const
-{
-    return m_pMediaSelector->currentText();
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic2.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic2.h	(revision 41372)
+++ 	(revision )
@@ -1,100 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic2 class declaration
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardFirstRunPageBasic2_h__
-#define __UIWizardFirstRunPageBasic2_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-
-/* Forward declarations: */
-class CMachine;
-class QGroupBox;
-class VBoxMediaComboBox;
-class QIToolButton;
-class QIRichTextLabel;
-
-/* 2nd page of the First Run wizard (base part): */
-class UIWizardFirstRunPage2 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardFirstRunPage2(bool fBootHardDiskWasSet);
-
-    /* Handlers: */
-    void onOpenMediumWithFileOpenDialog();
-
-    /* Stuff for 'id' field: */
-    QString id() const;
-    void setId(const QString &strId);
-
-    /* Variables: */
-    bool m_fBootHardDiskWasSet;
-
-    /* Widgets: */
-    QGroupBox *m_pSourceCnt;
-    VBoxMediaComboBox *m_pMediaSelector;
-    QIToolButton *m_pSelectMediaButton;
-};
-
-/* 2nd page of the First Run wizard (basic extension): */
-class UIWizardFirstRunPageBasic2 : public UIWizardPage, public UIWizardFirstRunPage2
-{
-    Q_OBJECT;
-    Q_PROPERTY(QString source READ source);
-    Q_PROPERTY(QString id READ id WRITE setId);
-
-public:
-
-    /* Constructor: */
-    UIWizardFirstRunPageBasic2(const QString &strMachineId, bool fBootHardDiskWasSet);
-
-protected:
-
-    /* Wrapper to access 'this' from base part: */
-    UIWizardPage* thisImp() { return this; }
-
-private slots:
-
-    /* Open with file-open dialog: */
-    void sltOpenMediumWithFileOpenDialog();
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool isComplete() const;
-
-    /* Validation stuff: */
-    bool validatePage();
-
-    /* Stuff for 'source' field: */
-    QString source() const;
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel;
-};
-
-#endif // __UIWizardFirstRunPageBasic2_h__
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic3.cpp	(revision 41372)
+++ 	(revision )
@@ -1,118 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic3 class implementation
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QVBoxLayout>
-
-/* Local includes: */
-#include "UIWizardFirstRunPageBasic3.h"
-#include "UIWizardFirstRun.h"
-#include "QIRichTextLabel.h"
-
-UIWizardFirstRunPage3::UIWizardFirstRunPage3(bool fBootHardDiskWasSet)
-    : m_fBootHardDiskWasSet(fBootHardDiskWasSet)
-{
-}
-
-UIWizardFirstRunPageBasic3::UIWizardFirstRunPageBasic3(bool fBootHardDiskWasSet)
-    : UIWizardFirstRunPage3(fBootHardDiskWasSet)
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel1 = new QIRichTextLabel(this);
-        m_pSummaryText = new QIRichTextLabel(this);
-        m_pLabel2 = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pSummaryText);
-        pMainLayout->addWidget(m_pLabel2);
-        pMainLayout->addStretch();
-    }
-}
-
-void UIWizardFirstRunPageBasic3::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(tr("Summary"));
-
-    /* Translate widgets: */
-    if (m_fBootHardDiskWasSet)
-    {
-        m_pLabel1->setText(tr("<p>You have selected the following media to boot from:</p>"));
-        m_pLabel2->setText(tr("<p>If the above is correct, press the <b>Finish</b> button. "
-                              "Once you press it, the selected media will be temporarily mounted on the virtual machine "
-                              "and the machine will start execution.</p><p>"
-                              "Please note that when you close the virtual machine, the specified media will be "
-                              "automatically unmounted and the boot device will be set back to the first hard disk."
-                              "</p><p>Depending on the type of the setup program, you may need to manually "
-                              "unmount (eject) the media after the setup program reboots the virtual machine, "
-                              "to prevent the installation process from starting again. "
-                              "You can do this by selecting the corresponding <b>Unmount...</b> action "
-                              "in the <b>Devices</b> menu.</p>"));
-    }
-    else
-    {
-        m_pLabel1->setText(tr("<p>You have selected the following media to boot an operating system from:</p>"));
-        m_pLabel2->setText(tr("<p>If the above is correct, press the <b>Finish</b> button. "
-                              "Once you press it, the selected media will be mounted on the virtual machine "
-                              "and the machine will start execution.</p>"));
-    }
-
-    /* Compose summary: */
-    QString strSummary;
-    QString strDescription = tr("CD/DVD-ROM Device");
-    QString strSource = field("source").toString();
-    strSummary += QString
-    (
-        "<tr><td><nobr>%1: </nobr></td><td><nobr>%2</nobr></td></tr>"
-        "<tr><td><nobr>%3: </nobr></td><td><nobr>%4</nobr></td></tr>"
-    )
-    .arg(tr("Type", "summary"), strDescription)
-    .arg(tr("Source", "summary"), strSource);
-    m_pSummaryText->setText("<table cellspacing=0 cellpadding=0>" + strSummary + "</table>");
-}
-
-void UIWizardFirstRunPageBasic3::initializePage()
-{
-    /* Reranslate page: */
-    retranslateUi();
-
-    /* Summary should initially have focus: */
-    m_pSummaryText->setFocus();
-}
-
-bool UIWizardFirstRunPageBasic3::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to insert chosen medium: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardFirstRun*>(wizard())->insertMedium();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic3.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageBasic3.h	(revision 41372)
+++ 	(revision )
@@ -1,68 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageBasic3 class declaration
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardFirstRunPageBasic3_h__
-#define __UIWizardFirstRunPageBasic3_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-
-/* Forward declarations: */
-class QIRichTextLabel;
-
-/* 3rd page of the First Run wizard (base part): */
-class UIWizardFirstRunPage3 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardFirstRunPage3(bool fBootHardDiskWasSet);
-
-    /* Variables: */
-    bool m_fBootHardDiskWasSet;
-};
-
-/* 3rd page of the First Run wizard (basic extension): */
-class UIWizardFirstRunPageBasic3 : public UIWizardPage, public UIWizardFirstRunPage3
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIWizardFirstRunPageBasic3(bool fBootHardDiskWasSet);
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool validatePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-    QIRichTextLabel *m_pSummaryText;
-    QIRichTextLabel *m_pLabel2;
-};
-
-#endif // __UIWizardFirstRunPageBasic3_h__
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageExpert.cpp	(revision 41372)
+++ 	(revision )
@@ -1,117 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageExpert class implementation
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QGroupBox>
-
-/* Local includes: */
-#include "UIWizardFirstRunPageExpert.h"
-#include "UIWizardFirstRun.h"
-#include "VBoxGlobal.h"
-#include "UIIconPool.h"
-#include "VBoxMediaComboBox.h"
-#include "QIToolButton.h"
-
-UIWizardFirstRunPageExpert::UIWizardFirstRunPageExpert(const QString &strMachineId, bool fBootHardDiskWasSet)
-    : UIWizardFirstRunPage1(fBootHardDiskWasSet)
-    , UIWizardFirstRunPage2(fBootHardDiskWasSet)
-    , UIWizardFirstRunPage3(fBootHardDiskWasSet)
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        pMainLayout->setContentsMargins(8, 6, 8, 6);
-        m_pSourceCnt = new QGroupBox(this);
-        {
-            m_pSourceCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pSourceCntLayout = new QHBoxLayout(m_pSourceCnt);
-            {
-                m_pMediaSelector = new VBoxMediaComboBox(m_pSourceCnt);
-                {
-                    m_pMediaSelector->setMachineId(strMachineId);
-                    m_pMediaSelector->setType(VBoxDefs::MediumType_DVD);
-                    m_pMediaSelector->repopulate();
-                }
-                m_pSelectMediaButton = new QIToolButton(m_pSourceCnt);
-                {
-                    m_pSelectMediaButton->setIcon(UIIconPool::iconSet(":/select_file_16px.png", ":/select_file_dis_16px.png"));
-                    m_pSelectMediaButton->setAutoRaise(true);
-                }
-                pSourceCntLayout->addWidget(m_pMediaSelector);
-                pSourceCntLayout->addWidget(m_pSelectMediaButton);
-            }
-        }
-        pMainLayout->addWidget(m_pSourceCnt);
-        pMainLayout->addStretch();
-    }
-
-    /* Setup connections: */
-    connect(m_pMediaSelector, SIGNAL(currentIndexChanged(int)), this, SIGNAL(completeChanged()));
-    connect(m_pSelectMediaButton, SIGNAL(clicked()), this, SLOT(sltOpenMediumWithFileOpenDialog()));
-
-    /* Register fields: */
-    registerField("id", this, "id");
-}
-
-void UIWizardFirstRunPageExpert::sltOpenMediumWithFileOpenDialog()
-{
-    /* Call to base-class: */
-    onOpenMediumWithFileOpenDialog();
-}
-
-void UIWizardFirstRunPageExpert::retranslateUi()
-{
-    /* Translate widgets: */
-    m_pSourceCnt->setTitle(UIWizardFirstRun::tr("Media Source"));
-    m_pSelectMediaButton->setToolTip(VBoxGlobal::tr("Choose a virtual CD/DVD disk file"));
-}
-
-void UIWizardFirstRunPageExpert::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-}
-
-bool UIWizardFirstRunPageExpert::isComplete() const
-{
-    /* Make sure valid medium chosen: */
-    return !vboxGlobal().findMedium(id()).isNull();
-}
-
-bool UIWizardFirstRunPageExpert::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to insert chosen medium: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardFirstRun*>(wizard())->insertMedium();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageExpert.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/firstrun/UIWizardFirstRunPageExpert.h	(revision 41372)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardFirstRunPageExpert class declaration
- */
-
-/*
- * Copyright (C) 2008-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardFirstRunPageExpert_h__
-#define __UIWizardFirstRunPageExpert_h__
-
-/* Local includes: */
-#include "UIWizardFirstRunPageBasic1.h"
-#include "UIWizardFirstRunPageBasic2.h"
-#include "UIWizardFirstRunPageBasic3.h"
-
-/* Expert page of the First Run wizard: */
-class UIWizardFirstRunPageExpert : public UIWizardPage,
-                                   public UIWizardFirstRunPage1,
-                                   public UIWizardFirstRunPage2,
-                                   public UIWizardFirstRunPage3
-{
-    Q_OBJECT;
-    Q_PROPERTY(QString id READ id WRITE setId);
-
-public:
-
-    /* Constructor: */
-    UIWizardFirstRunPageExpert(const QString &strMachineId, bool fBootHardDiskWasSet);
-
-protected:
-
-    /* Wrapper to access 'this' from base part: */
-    UIWizardPage* thisImp() { return this; }
-
-private slots:
-
-    /* Open with file-open dialog: */
-    void sltOpenMediumWithFileOpenDialog();
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool isComplete() const;
-    bool validatePage();
-};
-
-#endif // __UIWizardFirstRunPageExpert_h__
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic4.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic4.cpp	(revision 41372)
+++ 	(revision )
@@ -1,104 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVDPageBasic4 class implementation
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Local includes: */
-#include "UIWizardNewVDPageBasic4.h"
-#include "UIWizardNewVD.h"
-#include "VBoxGlobal.h"
-#include "QIRichTextLabel.h"
-
-UIWizardNewVDPage4::UIWizardNewVDPage4()
-{
-}
-
-UIWizardNewVDPageBasic4::UIWizardNewVDPageBasic4()
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel1 = new QIRichTextLabel(this);
-        m_pSummaryText = new QIRichTextLabel(this);
-        m_pLabel2 = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pSummaryText);
-        pMainLayout->addWidget(m_pLabel2);
-        pMainLayout->addStretch();
-    }
-}
-
-void UIWizardNewVDPageBasic4::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(UIWizardNewVD::tr("Summary"));
-
-    m_pLabel1->setText(UIWizardNewVD::tr("You are going to create a new virtual disk with the following parameters:"));
-    m_pLabel2->setText(UIWizardNewVD::tr("If the above settings are correct, press the <b>%1</b> button. "
-                                         "Once you press it the new virtual disk file will be created.")
-                                        .arg(VBoxGlobal::replaceHtmlEntities(VBoxGlobal::removeAccelMark(wizard()->buttonText(QWizard::FinishButton)))));
-
-    /* Compose summary: */
-    QString strSummary;
-    CMediumFormat mediumFormat = field("mediumFormat").value<CMediumFormat>();
-    qulonglong uVariant = field("mediumVariant").toULongLong();
-    QString strMediumPath = field("mediumPath").toString();
-    QString sizeFormatted = VBoxGlobal::formatSize(field("mediumSize").toULongLong());
-    QString sizeUnformatted = UIWizardNewVD::tr("%1 B").arg(field("mediumSize").toULongLong());
-    strSummary += QString
-    (
-        "<tr><td><nobr>%1: </nobr></td><td><nobr>%2</nobr></td></tr>"
-        "<tr><td><nobr>%3: </nobr></td><td><nobr>%4</nobr></td></tr>"
-        "<tr><td><nobr>%5: </nobr></td><td><nobr>%6</nobr></td></tr>"
-        "<tr><td><nobr>%7: </nobr></td><td><nobr>%8 (%9)</nobr></td></tr>"
-    )
-    .arg(UIWizardNewVD::tr("File type", "summary"), mediumFormat.isNull() ?
-         QString() : VBoxGlobal::removeAccelMark(VBoxGlobal::fullMediumFormatName(mediumFormat.GetName())))
-    .arg(UIWizardNewVD::tr("Details", "summary"), vboxGlobal().toString((KMediumVariant)uVariant))
-    .arg(UIWizardNewVD::tr("Location", "summary"), strMediumPath)
-    .arg(UIWizardNewVD::tr("Size", "summary"), sizeFormatted, sizeUnformatted);
-    m_pSummaryText->setText("<table cellspacing=0 cellpadding=0>" + strSummary + "</table>");
-}
-
-void UIWizardNewVDPageBasic4::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-
-    /* Summary should have focus initially: */
-    m_pSummaryText->setFocus();
-}
-
-bool UIWizardNewVDPageBasic4::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to create virtual-disk: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardNewVD*>(wizard())->createVirtualDisk();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic4.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic4.h	(revision 41372)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVDPageBasic4 class declaration
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardNewVDPageBasic4_h__
-#define __UIWizardNewVDPageBasic4_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-
-/* Forward declarations: */
-class QIRichTextLabel;
-
-/* 4th page of the New Virtual Disk wizard (base part): */
-class UIWizardNewVDPage4 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardNewVDPage4();
-};
-
-/* 4th page of the New Virtual Disk wizard (basic extension): */
-class UIWizardNewVDPageBasic4 : public UIWizardPage, public UIWizardNewVDPage4
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIWizardNewVDPageBasic4();
-
-private:
-
-    /* Translation stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool validatePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-    QIRichTextLabel *m_pSummaryText;
-    QIRichTextLabel *m_pLabel2;
-};
-
-#endif // __UIWizardNewVDPageBasic4_h__
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.cpp	(revision 41373)
@@ -20,7 +20,7 @@
 /* Local includes: */
 #include "UIWizardNewVM.h"
+#include "UIWizardNewVMPageBasic1.h"
 #include "UIWizardNewVMPageBasic2.h"
 #include "UIWizardNewVMPageBasic3.h"
-#include "UIWizardNewVMPageBasic4.h"
 #include "UIWizardNewVMPageExpert.h"
 #include "VBoxDefs.h"
@@ -271,7 +271,7 @@
         case UIWizardMode_Basic:
         {
-            setPage(Page1, new UIWizardNewVMPageBasic2);
-            setPage(Page2, new UIWizardNewVMPageBasic3);
-            setPage(Page3, new UIWizardNewVMPageBasic4);
+            setPage(Page1, new UIWizardNewVMPageBasic1);
+            setPage(Page2, new UIWizardNewVMPageBasic2);
+            setPage(Page3, new UIWizardNewVMPageBasic3);
             break;
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVM.h	(revision 41373)
@@ -36,6 +36,5 @@
         Page1,
         Page2,
-        Page3,
-        Page4
+        Page3
     };
 
@@ -55,5 +54,5 @@
 
     /* Who will be able to create virtual-machine: */
-    friend class UIWizardNewVMPageBasic4;
+    friend class UIWizardNewVMPageBasic3;
     friend class UIWizardNewVMPageExpert;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 41373)
@@ -19,14 +19,205 @@
 
 /* Global includes: */
+#include <QDir>
 #include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGroupBox>
+#include <QLineEdit>
 
 /* Local includes: */
 #include "UIWizardNewVMPageBasic1.h"
 #include "UIWizardNewVM.h"
-#include "UIIconPool.h"
+#include "UIMessageCenter.h"
+#include "VBoxOSTypeSelectorWidget.h"
 #include "QIRichTextLabel.h"
 
+/* Defines some patterns to guess the right OS type. Should be in sync with
+ * VirtualBox-settings-common.xsd in Main. The list is sorted by priority. The
+ * first matching string found, will be used. */
+struct osTypePattern
+{
+    QRegExp pattern;
+    const char *pcstId;
+};
+
+static const osTypePattern gs_OSTypePattern[] =
+{
+    /* DOS: */
+    { QRegExp("DOS", Qt::CaseInsensitive), "DOS" },
+
+    /* Windows: */
+    { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" },
+    { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" },
+    { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" },
+    { QRegExp("(Wi.*NT)|(NT4)", Qt::CaseInsensitive), "WindowsNT4" },
+    { QRegExp("((Wi.*XP)|(\\bXP\\b)).*64", Qt::CaseInsensitive), "WindowsXP_64" },
+    { QRegExp("(Wi.*XP)|(\\bXP\\b)", Qt::CaseInsensitive), "WindowsXP" },
+    { QRegExp("((Wi.*2003)|(W2K3)).*64", Qt::CaseInsensitive), "Windows2003_64" },
+    { QRegExp("(Wi.*2003)|(W2K3)", Qt::CaseInsensitive), "Windows2003" },
+    { QRegExp("((Wi.*V)|(Vista)).*64", Qt::CaseInsensitive), "WindowsVista_64" },
+    { QRegExp("(Wi.*V)|(Vista)", Qt::CaseInsensitive), "WindowsVista" },
+    { QRegExp("((Wi.*2008)|(W2K8)).*64", Qt::CaseInsensitive), "Windows2008_64" },
+    { QRegExp("(Wi.*2008)|(W2K8)", Qt::CaseInsensitive), "Windows2008" },
+    { QRegExp("(Wi.*2000)|(W2K)", Qt::CaseInsensitive), "Windows2000" },
+    { QRegExp("(Wi.*7.*64)|(W7.*64)", Qt::CaseInsensitive), "Windows7_64" },
+    { QRegExp("(Wi.*7)|(W7)", Qt::CaseInsensitive), "Windows7" },
+    { QRegExp("(Wi.*8.*64)|(W8.*64)", Qt::CaseInsensitive), "Windows8_64" },
+    { QRegExp("(Wi.*8)|(W8)", Qt::CaseInsensitive), "Windows8" },
+    { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" },
+    { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" },
+
+    /* Solaris: */
+    { QRegExp("So.*11", Qt::CaseInsensitive), "Solaris11_64" },
+    { QRegExp("((Op.*So)|(os20[01][0-9])|(So.*10)|(India)|(Neva)).*64", Qt::CaseInsensitive), "OpenSolaris_64" },
+    { QRegExp("(Op.*So)|(os20[01][0-9])|(So.*10)|(India)|(Neva)", Qt::CaseInsensitive), "OpenSolaris" },
+    { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" },
+    { QRegExp("So", Qt::CaseInsensitive), "Solaris" },
+
+    /* OS/2: */
+    { QRegExp("OS[/|!-]{,1}2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" },
+    { QRegExp("OS[/|!-]{,1}2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" },
+    { QRegExp("OS[/|!-]{,1}2.*W", Qt::CaseInsensitive), "OS2Warp3" },
+    { QRegExp("(OS[/|!-]{,1}2.*e)|(eCS.*)", Qt::CaseInsensitive), "OS2eCS" },
+    { QRegExp("OS[/|!-]{,1}2", Qt::CaseInsensitive), "OS2" },
+
+    /* Code names for Linux distributions: */
+    { QRegExp("((edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)).*64", Qt::CaseInsensitive), "Ubuntu_64" },
+    { QRegExp("(edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)", Qt::CaseInsensitive), "Ubuntu" },
+    { QRegExp("((sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)).*64", Qt::CaseInsensitive), "Debian_64" },
+    { QRegExp("(sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)", Qt::CaseInsensitive), "Debian" },
+    { QRegExp("((moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)).*64", Qt::CaseInsensitive), "Fedora_64" },
+    { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)", Qt::CaseInsensitive), "Fedora" },
+
+    /* Regular names of Linux distributions: */
+    { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" },
+    { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" },
+    { QRegExp("Deb.*64", Qt::CaseInsensitive), "Debian_64" },
+    { QRegExp("Deb", Qt::CaseInsensitive), "Debian" },
+    { QRegExp("((SU)|(Nov)|(SLE)).*64", Qt::CaseInsensitive), "OpenSUSE_64" },
+    { QRegExp("(SU)|(Nov)|(SLE)", Qt::CaseInsensitive), "OpenSUSE" },
+    { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" },
+    { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" },
+    { QRegExp("((Gen)|(Sab)).*64", Qt::CaseInsensitive), "Gentoo_64" },
+    { QRegExp("(Gen)|(Sab)", Qt::CaseInsensitive), "Gentoo" },
+    { QRegExp("((Man)|(Mag)).*64", Qt::CaseInsensitive), "Mandriva_64" },
+    { QRegExp("((Man)|(Mag))", Qt::CaseInsensitive), "Mandriva" },
+    { QRegExp("((Red)|(rhel)|(cen)).*64", Qt::CaseInsensitive), "RedHat_64" },
+    { QRegExp("(Red)|(rhel)|(cen)", Qt::CaseInsensitive), "RedHat" },
+    { QRegExp("Tur.*64", Qt::CaseInsensitive), "Turbolinux_64" },
+    { QRegExp("Tur", Qt::CaseInsensitive), "Turbolinux" },
+    { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" },
+    { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" },
+    { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" },
+    { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" },
+    { QRegExp("((Or)|(oel)).*64", Qt::CaseInsensitive), "Oracle_64" },
+    { QRegExp("(Or)|(oel)", Qt::CaseInsensitive), "Oracle" },
+    { QRegExp("Knoppix", Qt::CaseInsensitive), "Linux26" },
+    { QRegExp("Dsl", Qt::CaseInsensitive), "Linux24" },
+    { QRegExp("((Li)|(lnx)).*2.?2", Qt::CaseInsensitive), "Linux22" },
+    { QRegExp("((Li)|(lnx)).*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" },
+    { QRegExp("((Li)|(lnx)).*2.?4", Qt::CaseInsensitive), "Linux24" },
+    { QRegExp("((((Li)|(lnx)).*2.?6)|(LFS)).*64", Qt::CaseInsensitive), "Linux26_64" },
+    { QRegExp("(((Li)|(lnx)).*2.?6)|(LFS)", Qt::CaseInsensitive), "Linux26" },
+    { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "Linux26_64" },
+    { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "Linux26" },
+
+    /* Other: */
+    { QRegExp("L4", Qt::CaseInsensitive), "L4" },
+    { QRegExp("((Fr.*B)|(fbsd)).*64", Qt::CaseInsensitive), "FreeBSD_64" },
+    { QRegExp("(Fr.*B)|(fbsd)", Qt::CaseInsensitive), "FreeBSD" },
+    { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" },
+    { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" },
+    { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" },
+    { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" },
+    { QRegExp("QN", Qt::CaseInsensitive), "QNX" },
+    { QRegExp("((Mac)|(Tig)|(Leop)|(osx)).*64", Qt::CaseInsensitive), "MacOS_64" },
+    { QRegExp("(Mac)|(Tig)|(Leop)|(osx)", Qt::CaseInsensitive), "MacOS" },
+    { QRegExp("Net", Qt::CaseInsensitive), "Netware" },
+    { QRegExp("Rocki", Qt::CaseInsensitive), "JRockitVE" },
+    { QRegExp("Ot", Qt::CaseInsensitive), "Other" },
+};
+
 UIWizardNewVMPage1::UIWizardNewVMPage1()
 {
+}
+
+void UIWizardNewVMPage1::onNameChanged(const QString &strNewName)
+{
+    /* Search for a matching OS type based on the string the user typed already. */
+    for (size_t i = 0; i < RT_ELEMENTS(gs_OSTypePattern); ++i)
+        if (strNewName.contains(gs_OSTypePattern[i].pattern))
+        {
+            m_pTypeSelector->blockSignals(true);
+            m_pTypeSelector->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
+            m_pTypeSelector->blockSignals(false);
+            break;
+        }
+}
+
+void UIWizardNewVMPage1::onOsTypeChanged()
+{
+    /* If the user manually edited the OS type, we didn't want our automatic OS type guessing anymore.
+     * So simply disconnect the text-edit signal. */
+    m_pNameEditor->disconnect(thisImp());
+}
+
+bool UIWizardNewVMPage1::machineFolderCreated()
+{
+    return !m_strMachineFolder.isEmpty();
+}
+
+bool UIWizardNewVMPage1::createMachineFolder()
+{
+    /* Cleanup previosly created folder if any: */
+    if (machineFolderCreated() && !cleanupMachineFolder())
+    {
+        msgCenter().warnAboutCannotRemoveMachineFolder(thisImp(), m_strMachineFolder);
+        return false;
+    }
+
+    /* Get VBox: */
+    CVirtualBox vbox = vboxGlobal().virtualBox();
+    /* Get default machines directory: */
+    QString strDefaultMachinesFolder = vbox.GetSystemProperties().GetDefaultMachineFolder();
+    /* Compose machine filename: */
+    QString strMachineFilename = vbox.ComposeMachineFilename(m_pNameEditor->text(), strDefaultMachinesFolder);
+    /* Compose machine folder/basename: */
+    QFileInfo fileInfo(strMachineFilename);
+    QString strMachineFolder = fileInfo.absolutePath();
+    QString strMachineBaseName = fileInfo.completeBaseName();
+
+    /* Make sure that folder doesn't exists: */
+    if (QDir(strMachineFolder).exists())
+    {
+        msgCenter().warnAboutCannotRewriteMachineFolder(thisImp(), strMachineFolder);
+        return false;
+    }
+
+    /* Try to create new folder (and it's predecessors): */
+    bool fMachineFolderCreated = QDir().mkpath(strMachineFolder);
+    if (!fMachineFolderCreated)
+    {
+        msgCenter().warnAboutCannotCreateMachineFolder(thisImp(), strMachineFolder);
+        return false;
+    }
+
+    /* Initialize fields: */
+    m_strMachineFolder = strMachineFolder;
+    m_strMachineBaseName = strMachineBaseName;
+    return true;
+}
+
+bool UIWizardNewVMPage1::cleanupMachineFolder()
+{
+    /* Make sure folder was previosly created: */
+    if (m_strMachineFolder.isEmpty())
+        return false;
+    /* Try to cleanup folder (and it's predecessors): */
+    bool fMachineFolderRemoved = QDir().rmpath(m_strMachineFolder);
+    /* Reset machine folder value: */
+    if (fMachineFolderRemoved)
+        m_strMachineFolder = QString();
+    /* Return cleanup result: */
+    return fMachineFolderRemoved;
 }
 
@@ -36,19 +227,53 @@
     QVBoxLayout *pMainLayout = new QVBoxLayout(this);
     {
-        m_pLabel1 = new QIRichTextLabel(this);
+        m_pLabel = new QIRichTextLabel(this);
+        m_pNameCnt = new QGroupBox(this);
         {
-            /* Register 'message-box warning-icon' image in m_pLabel1 as 'image': */
-            QSize wSize(64, 64);
-            QPixmap wPixmap = UIIconPool::defaultIcon(UIIconPool::MessageBoxWarningIcon).pixmap(wSize);
-            if (wPixmap.width() != wSize.width())
-                wPixmap = wPixmap.scaled(wSize, Qt::KeepAspectRatio, Qt::SmoothTransformation);
-            QImage wImage = wPixmap.toImage();
-            m_pLabel1->registerImage(wImage, "image");
+            m_pNameCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QHBoxLayout *pNameCntLayout = new QHBoxLayout(m_pNameCnt);
+            {
+                m_pNameEditor = new QLineEdit(m_pNameCnt);
+                pNameCntLayout->addWidget(m_pNameEditor);
+            }
         }
-        m_pLabel2 = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pLabel2);
+        m_pTypeCnt = new QGroupBox(this);
+        {
+            m_pTypeCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QHBoxLayout *pTypeSelectorLayout = new QHBoxLayout(m_pTypeCnt);
+            {
+                m_pTypeSelector = new VBoxOSTypeSelectorWidget(m_pTypeCnt);
+                {
+                    m_pTypeSelector->activateLayout();
+                }
+                pTypeSelectorLayout->addWidget(m_pTypeSelector);
+            }
+        }
+        pMainLayout->addWidget(m_pLabel);
+        pMainLayout->addWidget(m_pNameCnt);
+        pMainLayout->addWidget(m_pTypeCnt);
         pMainLayout->addStretch();
     }
+
+    /* Setup connections: */
+    connect(m_pNameEditor, SIGNAL(textChanged(const QString&)), this, SLOT(sltNameChanged(const QString&)));
+    connect(m_pTypeSelector, SIGNAL(osTypeChanged()), this, SLOT(sltOsTypeChanged()));
+
+    /* Register fields: */
+    registerField("name*", m_pNameEditor);
+    registerField("type", m_pTypeSelector, "type", SIGNAL(osTypeChanged()));
+    registerField("machineFolder", this, "machineFolder");
+    registerField("machineBaseName", this, "machineBaseName");
+}
+
+void UIWizardNewVMPageBasic1::sltNameChanged(const QString &strNewName)
+{
+    /* Call to base-class: */
+    onNameChanged(strNewName);
+}
+
+void UIWizardNewVMPageBasic1::sltOsTypeChanged()
+{
+    /* Call to base-class: */
+    onOsTypeChanged();
 }
 
@@ -56,14 +281,13 @@
 {
     /* Translate page: */
-    setTitle(UIWizardNewVM::tr("Welcome to the New Virtual Machine wizard!"));
+    setTitle(UIWizardNewVM::tr("Name and operating system"));
 
     /* Translate widgets: */
-    m_pLabel1->setText(tableTemplate().arg("<b>STOP!</b> Before continuing, please understand what you are doing. "
-                                           "Computer system virtualization involves complex concepts, "
-                                           "which no user interface can hide. Please make sure that you have read "
-                                           "the first section of the user manual before continuing "
-                                           "or seeking out online assistance!"));
-    m_pLabel2->setText(UIWizardNewVM::tr("<p>This wizard will guide you through the steps that are necessary "
-                                         "to create a new virtual machine for VirtualBox.</p><p>%1</p>").arg(standardHelpText()));
+    m_pLabel->setText(UIWizardNewVM::tr("Please choose a descriptive name for the new virtual machine "
+                                        "and select the type of operating system you intend to install on it. "
+                                        "The name you choose will be used throughout VirtualBox "
+                                        "to identify this machine."));
+    m_pNameCnt->setTitle(UIWizardNewVM::tr("&Name"));
+    m_pTypeCnt->setTitle(UIWizardNewVM::tr("Operating system"));
 }
 
@@ -72,19 +296,21 @@
     /* Translate page: */
     retranslateUi();
-}
-
-/* static */
-QString UIWizardNewVMPageBasic1::tableTemplate()
-{
-    /* Prepare table template: */
-    QString strTable("<table cellspacing=0 cellpadding=0>%1</table>");
-    QString strTableRow("<tr>%1</tr>");
-    QString strTableData("<td>%1</td>");
-    QString strTableDataCentered("<td valign=middle>%1</td>");
-    QString strImage("<img src=\"image\"/>");
-    QString strSpacing("&nbsp;&nbsp;&nbsp;");
-    QString strTableDataImage(strTableDataCentered.arg(strImage));
-    QString strTableDataSpacing(strTableData.arg(strSpacing));
-    return strTable.arg(strTableRow.arg(strTableDataImage + strTableDataSpacing + strTableData));
-}
-
+
+    /* 'Name' field should have focus initially: */
+    m_pNameEditor->setFocus();
+}
+
+void UIWizardNewVMPageBasic1::cleanupPage()
+{
+    /* Cleanup: */
+    cleanupMachineFolder();
+    /* Call to base-class: */
+    UIWizardPage::cleanupPage();
+}
+
+bool UIWizardNewVMPageBasic1::validatePage()
+{
+    /* Try to create machine folder: */
+    return createMachineFolder();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h	(revision 41373)
@@ -24,4 +24,7 @@
 
 /* Forward declarations: */
+class QGroupBox;
+class QLineEdit;
+class VBoxOSTypeSelectorWidget;
 class QIRichTextLabel;
 
@@ -33,4 +36,31 @@
     /* Constructor: */
     UIWizardNewVMPage1();
+
+    /* Handlers: */
+    void onNameChanged(const QString &strNewName);
+    void onOsTypeChanged();
+
+    /* Helping stuff: */
+    bool machineFolderCreated();
+    bool createMachineFolder();
+    bool cleanupMachineFolder();
+
+    /* Stuff for 'machineFolder' field: */
+    QString machineFolder() const { return m_strMachineFolder; }
+    void setMachineFolder(const QString &strMachineFolder) { m_strMachineFolder = strMachineFolder; }
+
+    /* Stuff for 'machineBaseName' field: */
+    QString machineBaseName() const { return m_strMachineBaseName; }
+    void setMachineBaseName(const QString &strMachineBaseName) { m_strMachineBaseName = strMachineBaseName; }
+
+    /* Variables: */
+    QString m_strMachineFolder;
+    QString m_strMachineBaseName;
+
+    /* Widgets: */
+    QGroupBox *m_pNameCnt;
+    QLineEdit *m_pNameEditor;
+    QGroupBox *m_pTypeCnt;
+    VBoxOSTypeSelectorWidget *m_pTypeSelector;
 };
 
@@ -39,4 +69,6 @@
 {
     Q_OBJECT;
+    Q_PROPERTY(QString machineFolder READ machineFolder WRITE setMachineFolder);
+    Q_PROPERTY(QString machineBaseName READ machineBaseName WRITE setMachineBaseName);
 
 public:
@@ -44,4 +76,15 @@
     /* Constructor: */
     UIWizardNewVMPageBasic1();
+
+protected:
+
+    /* Wrapper to access 'this' from base part: */
+    UIWizardPage* thisImp() { return this; }
+
+private slots:
+
+    /* Handlers: */
+    void sltNameChanged(const QString &strNewText);
+    void sltOsTypeChanged();
 
 private:
@@ -52,11 +95,11 @@
     /* Prepare stuff: */
     void initializePage();
+    void cleanupPage();
 
-    /* Helpers: */
-    static QString tableTemplate();
+    /* Validation stuff: */
+    bool validatePage();
 
     /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-    QIRichTextLabel *m_pLabel2;
+    QIRichTextLabel *m_pLabel;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.cpp	(revision 41373)
@@ -19,122 +19,19 @@
 
 /* Global includes: */
-#include <QDir>
+#include <QIntValidator>
 #include <QVBoxLayout>
-#include <QHBoxLayout>
+#include <QGridLayout>
+#include <QSpacerItem>
 #include <QGroupBox>
-#include <QLineEdit>
+#include <QLabel>
 
 /* Local includes: */
 #include "UIWizardNewVMPageBasic2.h"
 #include "UIWizardNewVM.h"
-#include "UIMessageCenter.h"
-#include "VBoxOSTypeSelectorWidget.h"
+#include "COMDefs.h"
+#include "VBoxGlobal.h"
+#include "VBoxGuestRAMSlider.h"
+#include "QILineEdit.h"
 #include "QIRichTextLabel.h"
-
-/* Defines some patterns to guess the right OS type. Should be in sync with
- * VirtualBox-settings-common.xsd in Main. The list is sorted by priority. The
- * first matching string found, will be used. */
-struct osTypePattern
-{
-    QRegExp pattern;
-    const char *pcstId;
-};
-
-static const osTypePattern gs_OSTypePattern[] =
-{
-    /* DOS: */
-    { QRegExp("DOS", Qt::CaseInsensitive), "DOS" },
-
-    /* Windows: */
-    { QRegExp("Wi.*98", Qt::CaseInsensitive), "Windows98" },
-    { QRegExp("Wi.*95", Qt::CaseInsensitive), "Windows95" },
-    { QRegExp("Wi.*Me", Qt::CaseInsensitive), "WindowsMe" },
-    { QRegExp("(Wi.*NT)|(NT4)", Qt::CaseInsensitive), "WindowsNT4" },
-    { QRegExp("((Wi.*XP)|(\\bXP\\b)).*64", Qt::CaseInsensitive), "WindowsXP_64" },
-    { QRegExp("(Wi.*XP)|(\\bXP\\b)", Qt::CaseInsensitive), "WindowsXP" },
-    { QRegExp("((Wi.*2003)|(W2K3)).*64", Qt::CaseInsensitive), "Windows2003_64" },
-    { QRegExp("(Wi.*2003)|(W2K3)", Qt::CaseInsensitive), "Windows2003" },
-    { QRegExp("((Wi.*V)|(Vista)).*64", Qt::CaseInsensitive), "WindowsVista_64" },
-    { QRegExp("(Wi.*V)|(Vista)", Qt::CaseInsensitive), "WindowsVista" },
-    { QRegExp("((Wi.*2008)|(W2K8)).*64", Qt::CaseInsensitive), "Windows2008_64" },
-    { QRegExp("(Wi.*2008)|(W2K8)", Qt::CaseInsensitive), "Windows2008" },
-    { QRegExp("(Wi.*2000)|(W2K)", Qt::CaseInsensitive), "Windows2000" },
-    { QRegExp("(Wi.*7.*64)|(W7.*64)", Qt::CaseInsensitive), "Windows7_64" },
-    { QRegExp("(Wi.*7)|(W7)", Qt::CaseInsensitive), "Windows7" },
-    { QRegExp("(Wi.*8.*64)|(W8.*64)", Qt::CaseInsensitive), "Windows8_64" },
-    { QRegExp("(Wi.*8)|(W8)", Qt::CaseInsensitive), "Windows8" },
-    { QRegExp("Wi.*3", Qt::CaseInsensitive), "Windows31" },
-    { QRegExp("Wi", Qt::CaseInsensitive), "WindowsXP" },
-
-    /* Solaris: */
-    { QRegExp("So.*11", Qt::CaseInsensitive), "Solaris11_64" },
-    { QRegExp("((Op.*So)|(os20[01][0-9])|(So.*10)|(India)|(Neva)).*64", Qt::CaseInsensitive), "OpenSolaris_64" },
-    { QRegExp("(Op.*So)|(os20[01][0-9])|(So.*10)|(India)|(Neva)", Qt::CaseInsensitive), "OpenSolaris" },
-    { QRegExp("So.*64", Qt::CaseInsensitive), "Solaris_64" },
-    { QRegExp("So", Qt::CaseInsensitive), "Solaris" },
-
-    /* OS/2: */
-    { QRegExp("OS[/|!-]{,1}2.*W.*4.?5", Qt::CaseInsensitive), "OS2Warp45" },
-    { QRegExp("OS[/|!-]{,1}2.*W.*4", Qt::CaseInsensitive), "OS2Warp4" },
-    { QRegExp("OS[/|!-]{,1}2.*W", Qt::CaseInsensitive), "OS2Warp3" },
-    { QRegExp("(OS[/|!-]{,1}2.*e)|(eCS.*)", Qt::CaseInsensitive), "OS2eCS" },
-    { QRegExp("OS[/|!-]{,1}2", Qt::CaseInsensitive), "OS2" },
-
-    /* Code names for Linux distributions: */
-    { QRegExp("((edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)).*64", Qt::CaseInsensitive), "Ubuntu_64" },
-    { QRegExp("(edgy)|(feisty)|(gutsy)|(hardy)|(intrepid)|(jaunty)|(karmic)|(lucid)|(maverick)|(natty)|(oneiric)|(precise)", Qt::CaseInsensitive), "Ubuntu" },
-    { QRegExp("((sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)).*64", Qt::CaseInsensitive), "Debian_64" },
-    { QRegExp("(sarge)|(etch)|(lenny)|(squeeze)|(wheezy)|(sid)", Qt::CaseInsensitive), "Debian" },
-    { QRegExp("((moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)).*64", Qt::CaseInsensitive), "Fedora_64" },
-    { QRegExp("(moonshine)|(werewolf)|(sulphur)|(cambridge)|(leonidas)|(constantine)|(goddard)|(laughlin)|(lovelock)|(verne)", Qt::CaseInsensitive), "Fedora" },
-
-    /* Regular names of Linux distributions: */
-    { QRegExp("Arc.*64", Qt::CaseInsensitive), "ArchLinux_64" },
-    { QRegExp("Arc", Qt::CaseInsensitive), "ArchLinux" },
-    { QRegExp("Deb.*64", Qt::CaseInsensitive), "Debian_64" },
-    { QRegExp("Deb", Qt::CaseInsensitive), "Debian" },
-    { QRegExp("((SU)|(Nov)|(SLE)).*64", Qt::CaseInsensitive), "OpenSUSE_64" },
-    { QRegExp("(SU)|(Nov)|(SLE)", Qt::CaseInsensitive), "OpenSUSE" },
-    { QRegExp("Fe.*64", Qt::CaseInsensitive), "Fedora_64" },
-    { QRegExp("Fe", Qt::CaseInsensitive), "Fedora" },
-    { QRegExp("((Gen)|(Sab)).*64", Qt::CaseInsensitive), "Gentoo_64" },
-    { QRegExp("(Gen)|(Sab)", Qt::CaseInsensitive), "Gentoo" },
-    { QRegExp("((Man)|(Mag)).*64", Qt::CaseInsensitive), "Mandriva_64" },
-    { QRegExp("((Man)|(Mag))", Qt::CaseInsensitive), "Mandriva" },
-    { QRegExp("((Red)|(rhel)|(cen)).*64", Qt::CaseInsensitive), "RedHat_64" },
-    { QRegExp("(Red)|(rhel)|(cen)", Qt::CaseInsensitive), "RedHat" },
-    { QRegExp("Tur.*64", Qt::CaseInsensitive), "Turbolinux_64" },
-    { QRegExp("Tur", Qt::CaseInsensitive), "Turbolinux" },
-    { QRegExp("Ub.*64", Qt::CaseInsensitive), "Ubuntu_64" },
-    { QRegExp("Ub", Qt::CaseInsensitive), "Ubuntu" },
-    { QRegExp("Xa.*64", Qt::CaseInsensitive), "Xandros_64" },
-    { QRegExp("Xa", Qt::CaseInsensitive), "Xandros" },
-    { QRegExp("((Or)|(oel)).*64", Qt::CaseInsensitive), "Oracle_64" },
-    { QRegExp("(Or)|(oel)", Qt::CaseInsensitive), "Oracle" },
-    { QRegExp("Knoppix", Qt::CaseInsensitive), "Linux26" },
-    { QRegExp("Dsl", Qt::CaseInsensitive), "Linux24" },
-    { QRegExp("((Li)|(lnx)).*2.?2", Qt::CaseInsensitive), "Linux22" },
-    { QRegExp("((Li)|(lnx)).*2.?4.*64", Qt::CaseInsensitive), "Linux24_64" },
-    { QRegExp("((Li)|(lnx)).*2.?4", Qt::CaseInsensitive), "Linux24" },
-    { QRegExp("((((Li)|(lnx)).*2.?6)|(LFS)).*64", Qt::CaseInsensitive), "Linux26_64" },
-    { QRegExp("(((Li)|(lnx)).*2.?6)|(LFS)", Qt::CaseInsensitive), "Linux26" },
-    { QRegExp("((Li)|(lnx)).*64", Qt::CaseInsensitive), "Linux26_64" },
-    { QRegExp("(Li)|(lnx)", Qt::CaseInsensitive), "Linux26" },
-
-    /* Other: */
-    { QRegExp("L4", Qt::CaseInsensitive), "L4" },
-    { QRegExp("((Fr.*B)|(fbsd)).*64", Qt::CaseInsensitive), "FreeBSD_64" },
-    { QRegExp("(Fr.*B)|(fbsd)", Qt::CaseInsensitive), "FreeBSD" },
-    { QRegExp("Op.*B.*64", Qt::CaseInsensitive), "OpenBSD_64" },
-    { QRegExp("Op.*B", Qt::CaseInsensitive), "OpenBSD" },
-    { QRegExp("Ne.*B.*64", Qt::CaseInsensitive), "NetBSD_64" },
-    { QRegExp("Ne.*B", Qt::CaseInsensitive), "NetBSD" },
-    { QRegExp("QN", Qt::CaseInsensitive), "QNX" },
-    { QRegExp("((Mac)|(Tig)|(Leop)|(osx)).*64", Qt::CaseInsensitive), "MacOS_64" },
-    { QRegExp("(Mac)|(Tig)|(Leop)|(osx)", Qt::CaseInsensitive), "MacOS" },
-    { QRegExp("Net", Qt::CaseInsensitive), "Netware" },
-    { QRegExp("Rocki", Qt::CaseInsensitive), "JRockitVE" },
-    { QRegExp("Ot", Qt::CaseInsensitive), "Other" },
-};
 
 UIWizardNewVMPage2::UIWizardNewVMPage2()
@@ -142,138 +39,94 @@
 }
 
-void UIWizardNewVMPage2::onNameChanged(const QString &strNewName)
+void UIWizardNewVMPage2::onRamSliderValueChanged(int iValue)
 {
-    /* Search for a matching OS type based on the string the user typed already. */
-    for (size_t i = 0; i < RT_ELEMENTS(gs_OSTypePattern); ++i)
-        if (strNewName.contains(gs_OSTypePattern[i].pattern))
-        {
-            m_pTypeSelector->blockSignals(true);
-            m_pTypeSelector->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
-            m_pTypeSelector->blockSignals(false);
-            break;
-        }
+    /* Update 'ram' field editor connected to slider: */
+    m_pRamEditor->blockSignals(true);
+    m_pRamEditor->setText(QString::number(iValue));
+    m_pRamEditor->blockSignals(false);
 }
 
-void UIWizardNewVMPage2::onOsTypeChanged()
+void UIWizardNewVMPage2::onRamEditorTextChanged(const QString &strText)
 {
-    /* If the user manually edited the OS type, we didn't want our automatic OS type guessing anymore.
-     * So simply disconnect the text-edit signal. */
-    m_pNameEditor->disconnect(thisImp());
-}
-
-bool UIWizardNewVMPage2::machineFolderCreated()
-{
-    return !m_strMachineFolder.isEmpty();
-}
-
-bool UIWizardNewVMPage2::createMachineFolder()
-{
-    /* Cleanup previosly created folder if any: */
-    if (machineFolderCreated() && !cleanupMachineFolder())
-    {
-        msgCenter().warnAboutCannotRemoveMachineFolder(thisImp(), m_strMachineFolder);
-        return false;
-    }
-
-    /* Get VBox: */
-    CVirtualBox vbox = vboxGlobal().virtualBox();
-    /* Get default machines directory: */
-    QString strDefaultMachinesFolder = vbox.GetSystemProperties().GetDefaultMachineFolder();
-    /* Compose machine filename: */
-    QString strMachineFilename = vbox.ComposeMachineFilename(m_pNameEditor->text(), strDefaultMachinesFolder);
-    /* Compose machine folder/basename: */
-    QFileInfo fileInfo(strMachineFilename);
-    QString strMachineFolder = fileInfo.absolutePath();
-    QString strMachineBaseName = fileInfo.completeBaseName();
-
-    /* Make sure that folder doesn't exists: */
-    if (QDir(strMachineFolder).exists())
-    {
-        msgCenter().warnAboutCannotRewriteMachineFolder(thisImp(), strMachineFolder);
-        return false;
-    }
-
-    /* Try to create new folder (and it's predecessors): */
-    bool fMachineFolderCreated = QDir().mkpath(strMachineFolder);
-    if (!fMachineFolderCreated)
-    {
-        msgCenter().warnAboutCannotCreateMachineFolder(thisImp(), strMachineFolder);
-        return false;
-    }
-
-    /* Initialize fields: */
-    m_strMachineFolder = strMachineFolder;
-    m_strMachineBaseName = strMachineBaseName;
-    return true;
-}
-
-bool UIWizardNewVMPage2::cleanupMachineFolder()
-{
-    /* Make sure folder was previosly created: */
-    if (m_strMachineFolder.isEmpty())
-        return false;
-    /* Try to cleanup folder (and it's predecessors): */
-    bool fMachineFolderRemoved = QDir().rmpath(m_strMachineFolder);
-    /* Reset machine folder value: */
-    if (fMachineFolderRemoved)
-        m_strMachineFolder = QString();
-    /* Return cleanup result: */
-    return fMachineFolderRemoved;
+    /* Update 'ram' field slider connected to editor: */
+    m_pRamSlider->blockSignals(true);
+    m_pRamSlider->setValue(strText.toInt());
+    m_pRamSlider->blockSignals(false);
 }
 
 UIWizardNewVMPageBasic2::UIWizardNewVMPageBasic2()
 {
-    /* Create widgets: */
+    /* Create widget: */
     QVBoxLayout *pMainLayout = new QVBoxLayout(this);
     {
-        m_pLabel = new QIRichTextLabel(this);
-        m_pNameCnt = new QGroupBox(this);
+        m_pLabel1 = new QIRichTextLabel(this);
+        m_pMemoryCnt = new QGroupBox(this);
         {
-            m_pNameCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pNameCntLayout = new QHBoxLayout(m_pNameCnt);
+            m_pMemoryCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QGridLayout *pMemoryCntLayout = new QGridLayout(m_pMemoryCnt);
             {
-                m_pNameEditor = new QLineEdit(m_pNameCnt);
-                pNameCntLayout->addWidget(m_pNameEditor);
+                m_pRamSlider = new VBoxGuestRAMSlider(m_pMemoryCnt);
+                {
+                    m_pRamSlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+                    m_pRamSlider->setOrientation(Qt::Horizontal);
+                    m_pRamSlider->setTickPosition(QSlider::TicksBelow);
+                }
+                m_pRamEditor = new QILineEdit(m_pMemoryCnt);
+                {
+                    m_pRamEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+                    m_pRamEditor->setFixedWidthByText("88888");
+                    m_pRamEditor->setAlignment(Qt::AlignRight);
+                    m_pRamEditor->setValidator(new QIntValidator(m_pRamSlider->minRAM(), m_pRamSlider->maxRAM(), this));
+                }
+                m_pRamUnits = new QLabel(m_pMemoryCnt);
+                {
+                    m_pRamUnits->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+                }
+                m_pRamMin = new QLabel(m_pMemoryCnt);
+                {
+                    m_pRamMin->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+                }
+                QSpacerItem *m_pRamSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding);
+                m_pRamMax = new QLabel(m_pMemoryCnt);
+                {
+                    m_pRamMax->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+                }
+                pMemoryCntLayout->addWidget(m_pRamSlider, 0, 0, 1, 3);
+                pMemoryCntLayout->addWidget(m_pRamEditor, 0, 3);
+                pMemoryCntLayout->addWidget(m_pRamUnits, 0, 4);
+                pMemoryCntLayout->addWidget(m_pRamMin, 1, 0);
+                pMemoryCntLayout->addItem(m_pRamSpacer, 1, 1);
+                pMemoryCntLayout->addWidget(m_pRamMax, 1, 2);
             }
         }
-        m_pTypeCnt = new QGroupBox(this);
-        {
-            m_pTypeCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pTypeSelectorLayout = new QHBoxLayout(m_pTypeCnt);
-            {
-                m_pTypeSelector = new VBoxOSTypeSelectorWidget(m_pTypeCnt);
-                {
-                    m_pTypeSelector->activateLayout();
-                }
-                pTypeSelectorLayout->addWidget(m_pTypeSelector);
-            }
-        }
-        pMainLayout->addWidget(m_pLabel);
-        pMainLayout->addWidget(m_pNameCnt);
-        pMainLayout->addWidget(m_pTypeCnt);
+        pMainLayout->addWidget(m_pLabel1);
+        pMainLayout->addWidget(m_pMemoryCnt);
         pMainLayout->addStretch();
     }
 
     /* Setup connections: */
-    connect(m_pNameEditor, SIGNAL(textChanged(const QString&)), this, SLOT(sltNameChanged(const QString&)));
-    connect(m_pTypeSelector, SIGNAL(osTypeChanged()), this, SLOT(sltOsTypeChanged()));
+    connect(m_pRamSlider, SIGNAL(valueChanged(int)), this, SLOT(sltRamSliderValueChanged(int)));
+    connect(m_pRamEditor, SIGNAL(textChanged(const QString&)), this, SLOT(sltRamEditorTextChanged(const QString&)));
 
     /* Register fields: */
-    registerField("name*", m_pNameEditor);
-    registerField("type", m_pTypeSelector, "type", SIGNAL(osTypeChanged()));
-    registerField("machineFolder", this, "machineFolder");
-    registerField("machineBaseName", this, "machineBaseName");
+    registerField("ram", m_pRamSlider, "value", SIGNAL(valueChanged(int)));
 }
 
-void UIWizardNewVMPageBasic2::sltNameChanged(const QString &strNewName)
+void UIWizardNewVMPageBasic2::sltRamSliderValueChanged(int iValue)
 {
     /* Call to base-class: */
-    onNameChanged(strNewName);
+    onRamSliderValueChanged(iValue);
+
+    /* Broadcast complete-change: */
+    emit completeChanged();
 }
 
-void UIWizardNewVMPageBasic2::sltOsTypeChanged()
+void UIWizardNewVMPageBasic2::sltRamEditorTextChanged(const QString &strText)
 {
     /* Call to base-class: */
-    onOsTypeChanged();
+    onRamEditorTextChanged(strText);
+
+    /* Broadcast complete-change: */
+    emit completeChanged();
 }
 
@@ -281,13 +134,17 @@
 {
     /* Translate page: */
-    setTitle(UIWizardNewVM::tr("Name and operating system"));
+    setTitle(UIWizardNewVM::tr("Memory size"));
 
     /* Translate widgets: */
-    m_pLabel->setText(UIWizardNewVM::tr("Please choose a descriptive name for the new virtual machine "
-                                        "and select the type of operating system you intend to install on it. "
-                                        "The name you choose will be used throughout VirtualBox "
-                                        "to identify this machine."));
-    m_pNameCnt->setTitle(UIWizardNewVM::tr("&Name"));
-    m_pTypeCnt->setTitle(UIWizardNewVM::tr("Operating system"));
+    QString strRecommendedRAM = field("type").value<CGuestOSType>().isNull() ?
+                                QString() : QString::number(field("type").value<CGuestOSType>().GetRecommendedRAM());
+    m_pLabel1->setText(UIWizardNewVM::tr("<p>Select the amount of memory (RAM) in megabytes "
+                                         "to be allocated to the virtual machine.</p>"
+                                         "<p>The recommended memory size is <b>%1</b> MB.</p>")
+                                         .arg(strRecommendedRAM));
+    m_pMemoryCnt->setTitle(UIWizardNewVM::tr("&Memory size"));
+    m_pRamUnits->setText(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
+    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
+    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
 }
 
@@ -297,20 +154,18 @@
     retranslateUi();
 
-    /* 'Name' field should have focus initially: */
-    m_pNameEditor->setFocus();
+    /* Get recommended 'ram' field value: */
+    CGuestOSType type = field("type").value<CGuestOSType>();
+    m_pRamSlider->setValue(type.GetRecommendedRAM());
+    m_pRamEditor->setText(QString::number(type.GetRecommendedRAM()));
+
+    /* 'Ram' field should have focus initially: */
+    m_pRamSlider->setFocus();
 }
 
-void UIWizardNewVMPageBasic2::cleanupPage()
+bool UIWizardNewVMPageBasic2::isComplete() const
 {
-    /* Cleanup: */
-    cleanupMachineFolder();
-    /* Call to base-class: */
-    UIWizardPage::cleanupPage();
+    /* Make sure 'ram' field feats the bounds: */
+    return m_pRamSlider->value() >= qMax(1, (int)m_pRamSlider->minRAM()) &&
+           m_pRamSlider->value() <= (int)m_pRamSlider->maxRAM();
 }
 
-bool UIWizardNewVMPageBasic2::validatePage()
-{
-    /* Try to create machine folder: */
-    return createMachineFolder();
-}
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic2.h	(revision 41373)
@@ -25,6 +25,7 @@
 /* Forward declarations: */
 class QGroupBox;
-class QLineEdit;
-class VBoxOSTypeSelectorWidget;
+class VBoxGuestRAMSlider;
+class QILineEdit;
+class QLabel;
 class QIRichTextLabel;
 
@@ -38,29 +39,14 @@
 
     /* Handlers: */
-    void onNameChanged(const QString &strNewName);
-    void onOsTypeChanged();
-
-    /* Helping stuff: */
-    bool machineFolderCreated();
-    bool createMachineFolder();
-    bool cleanupMachineFolder();
-
-    /* Stuff for 'machineFolder' field: */
-    QString machineFolder() const { return m_strMachineFolder; }
-    void setMachineFolder(const QString &strMachineFolder) { m_strMachineFolder = strMachineFolder; }
-
-    /* Stuff for 'machineBaseName' field: */
-    QString machineBaseName() const { return m_strMachineBaseName; }
-    void setMachineBaseName(const QString &strMachineBaseName) { m_strMachineBaseName = strMachineBaseName; }
-
-    /* Variables: */
-    QString m_strMachineFolder;
-    QString m_strMachineBaseName;
+    void onRamSliderValueChanged(int iValue);
+    void onRamEditorTextChanged(const QString &strText);
 
     /* Widgets: */
-    QGroupBox *m_pNameCnt;
-    QLineEdit *m_pNameEditor;
-    QGroupBox *m_pTypeCnt;
-    VBoxOSTypeSelectorWidget *m_pTypeSelector;
+    QGroupBox *m_pMemoryCnt;
+    VBoxGuestRAMSlider *m_pRamSlider;
+    QILineEdit *m_pRamEditor;
+    QLabel *m_pRamMin;
+    QLabel *m_pRamMax;
+    QLabel *m_pRamUnits;
 };
 
@@ -69,6 +55,4 @@
 {
     Q_OBJECT;
-    Q_PROPERTY(QString machineFolder READ machineFolder WRITE setMachineFolder);
-    Q_PROPERTY(QString machineBaseName READ machineBaseName WRITE setMachineBaseName);
 
 public:
@@ -77,14 +61,9 @@
     UIWizardNewVMPageBasic2();
 
-protected:
-
-    /* Wrapper to access 'this' from base part: */
-    UIWizardPage* thisImp() { return this; }
-
 private slots:
 
     /* Handlers: */
-    void sltNameChanged(const QString &strNewText);
-    void sltOsTypeChanged();
+    void sltRamSliderValueChanged(int iValue);
+    void sltRamEditorTextChanged(const QString &strText);
 
 private:
@@ -95,13 +74,12 @@
     /* Prepare stuff: */
     void initializePage();
-    void cleanupPage();
 
     /* Validation stuff: */
-    bool validatePage();
+    bool isComplete() const;
 
     /* Widgets: */
-    QIRichTextLabel *m_pLabel;
+    QIRichTextLabel *m_pLabel1;
 };
 
-#endif // __UIWizardNewVMPageBasic2_h__
+#endif // __UINewVMWzd_h__
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 41373)
@@ -19,18 +19,19 @@
 
 /* Global includes: */
-#include <QIntValidator>
+#include <QMetaType>
 #include <QVBoxLayout>
 #include <QGridLayout>
-#include <QSpacerItem>
 #include <QGroupBox>
-#include <QLabel>
+#include <QRadioButton>
 
 /* Local includes: */
 #include "UIWizardNewVMPageBasic3.h"
 #include "UIWizardNewVM.h"
-#include "COMDefs.h"
-#include "VBoxGlobal.h"
-#include "VBoxGuestRAMSlider.h"
-#include "QILineEdit.h"
+#include "VBoxDefs.h"
+#include "UIMessageCenter.h"
+#include "UIIconPool.h"
+#include "VBoxMediaComboBox.h"
+#include "QIToolButton.h"
+#include "UIWizardNewVD.h"
 #include "QIRichTextLabel.h"
 
@@ -39,82 +40,153 @@
 }
 
-void UIWizardNewVMPage3::onRamSliderValueChanged(int iValue)
-{
-    /* Update 'ram' field editor connected to slider: */
-    m_pRamEditor->blockSignals(true);
-    m_pRamEditor->setText(QString::number(iValue));
-    m_pRamEditor->blockSignals(false);
-}
-
-void UIWizardNewVMPage3::onRamEditorTextChanged(const QString &strText)
-{
-    /* Update 'ram' field slider connected to editor: */
-    m_pRamSlider->blockSignals(true);
-    m_pRamSlider->setValue(strText.toInt());
-    m_pRamSlider->blockSignals(false);
+void UIWizardNewVMPage3::updateVirtualDiskSource()
+{
+    /* Enable/disable controls: */
+    m_pDiskCreate->setEnabled(m_pDiskCnt->isChecked());
+    m_pDiskPresent->setEnabled(m_pDiskCnt->isChecked());
+    m_pDiskSelector->setEnabled(m_pDiskPresent->isEnabled() && m_pDiskPresent->isChecked());
+    m_pVMMButton->setEnabled(m_pDiskPresent->isEnabled() && m_pDiskPresent->isChecked());
+
+    /* Fetch filed values: */
+    if (m_pDiskCnt->isChecked() && m_pDiskPresent->isChecked())
+    {
+        m_strVirtualDiskId = m_pDiskSelector->id();
+        m_strVirtualDiskName = m_pDiskSelector->currentText();
+        m_strVirtualDiskLocation = m_pDiskSelector->location();
+    }
+    else
+    {
+        m_strVirtualDiskId = QString();
+        m_strVirtualDiskName = QString();
+        m_strVirtualDiskLocation = QString();
+    }
+}
+
+void UIWizardNewVMPage3::getWithFileOpenDialog()
+{
+    /* Get opened medium id: */
+    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(VBoxDefs::MediumType_HardDisk, thisImp());
+    if (!strMediumId.isNull())
+    {
+        /* Update medium-combo if necessary: */
+        m_pDiskSelector->setCurrentItem(strMediumId);
+        /* Update hard disk source: */
+        updateVirtualDiskSource();
+        /* Focus on hard disk combo: */
+        m_pDiskSelector->setFocus();
+    }
+}
+
+bool UIWizardNewVMPage3::getWithNewVirtualDiskWizard()
+{
+    /* Create New Virtual Hard Drive wizard: */
+    UIWizardNewVD dlg(thisImp(),
+                      fieldImp("machineBaseName").toString(),
+                      fieldImp("machineFolder").toString(),
+                      fieldImp("type").value<CGuestOSType>().GetRecommendedHDD());
+    if (dlg.exec() == QDialog::Accepted)
+    {
+        m_virtualDisk = dlg.virtualDisk();
+        m_pDiskSelector->setCurrentItem(m_virtualDisk.GetId());
+        m_pDiskPresent->click();
+        return true;
+    }
+    return false;
+}
+
+void UIWizardNewVMPage3::ensureNewVirtualDiskDeleted()
+{
+    /* Make sure virtual-disk exists: */
+    if (m_virtualDisk.isNull())
+        return;
+
+    /* Remember virtual-disk ID: */
+    QString strId = m_virtualDisk.GetId();
+
+    /* 1st step: start delete-storage progress: */
+    CProgress progress = m_virtualDisk.DeleteStorage();
+    /* Get initial state: */
+    bool fSuccess = m_virtualDisk.isOk();
+
+    /* 2nd step: show delete-storage progress: */
+    if (fSuccess)
+    {
+        msgCenter().showModalProgressDialog(progress, thisImp()->windowTitle(), ":/progress_media_delete_90px.png", thisImp(), true);
+        fSuccess = progress.isOk() && progress.GetResultCode() == S_OK;
+    }
+
+    /* 3rd step: notify GUI about virtual-disk was deleted or show error if any: */
+    if (fSuccess)
+        vboxGlobal().removeMedium(VBoxDefs::MediumType_HardDisk, strId);
+    else
+        msgCenter().cannotDeleteHardDiskStorage(thisImp(), m_virtualDisk, progress);
+
+    /* Detach virtual-disk finally: */
+    m_virtualDisk.detach();
 }
 
 UIWizardNewVMPageBasic3::UIWizardNewVMPageBasic3()
 {
-    /* Create widget: */
+    /* Create widgets: */
     QVBoxLayout *pMainLayout = new QVBoxLayout(this);
     {
         m_pLabel1 = new QIRichTextLabel(this);
-        m_pMemoryCnt = new QGroupBox(this);
+        m_pDiskCnt = new QGroupBox(this);
         {
-            m_pMemoryCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QGridLayout *pMemoryCntLayout = new QGridLayout(m_pMemoryCnt);
+            m_pDiskCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            m_pDiskCnt->setCheckable(true);
+            QGridLayout *pDiskLayout = new QGridLayout(m_pDiskCnt);
             {
-                m_pRamSlider = new VBoxGuestRAMSlider(m_pMemoryCnt);
+                m_pDiskCreate = new QRadioButton(m_pDiskCnt);
+                m_pDiskPresent = new QRadioButton(m_pDiskCnt);
+                QStyleOptionButton options;
+                options.initFrom(m_pDiskCreate);
+                int iWidth = m_pDiskCreate->style()->subElementRect(QStyle::SE_RadioButtonIndicator, &options, m_pDiskCreate).width() +
+                             m_pDiskCreate->style()->pixelMetric(QStyle::PM_RadioButtonLabelSpacing, &options, m_pDiskCreate) -
+                             pDiskLayout->spacing() - 1;
+                QSpacerItem *pSpacer = new QSpacerItem(iWidth, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
+                m_pDiskSelector = new VBoxMediaComboBox(m_pDiskCnt);
                 {
-                    m_pRamSlider->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-                    m_pRamSlider->setOrientation(Qt::Horizontal);
-                    m_pRamSlider->setTickPosition(QSlider::TicksBelow);
+                    m_pDiskSelector->setType(VBoxDefs::MediumType_HardDisk);
+                    m_pDiskSelector->repopulate();
                 }
-                m_pRamEditor = new QILineEdit(m_pMemoryCnt);
+                m_pVMMButton = new QIToolButton(m_pDiskCnt);
                 {
-                    m_pRamEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-                    m_pRamEditor->setFixedWidthByText("88888");
-                    m_pRamEditor->setAlignment(Qt::AlignRight);
-                    m_pRamEditor->setValidator(new QIntValidator(m_pRamSlider->minRAM(), m_pRamSlider->maxRAM(), this));
+                    m_pVMMButton->setAutoRaise(true);
+                    m_pVMMButton->setIcon(UIIconPool::iconSet(":/select_file_16px.png", ":/select_file_dis_16px.png"));
                 }
-                m_pRamUnits = new QLabel(m_pMemoryCnt);
-                {
-                    m_pRamUnits->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
-                }
-                m_pRamMin = new QLabel(m_pMemoryCnt);
-                {
-                    m_pRamMin->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
-                }
-                QSpacerItem *m_pRamSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding);
-                m_pRamMax = new QLabel(m_pMemoryCnt);
-                {
-                    m_pRamMax->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
-                }
-                pMemoryCntLayout->addWidget(m_pRamSlider, 0, 0, 1, 3);
-                pMemoryCntLayout->addWidget(m_pRamEditor, 0, 3);
-                pMemoryCntLayout->addWidget(m_pRamUnits, 0, 4);
-                pMemoryCntLayout->addWidget(m_pRamMin, 1, 0);
-                pMemoryCntLayout->addItem(m_pRamSpacer, 1, 1);
-                pMemoryCntLayout->addWidget(m_pRamMax, 1, 2);
+                pDiskLayout->addWidget(m_pDiskCreate, 0, 0, 1, 3);
+                pDiskLayout->addWidget(m_pDiskPresent, 1, 0, 1, 3);
+                pDiskLayout->addItem(pSpacer, 2, 0);
+                pDiskLayout->addWidget(m_pDiskSelector, 2, 1);
+                pDiskLayout->addWidget(m_pVMMButton, 2, 2);
             }
         }
         pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pMemoryCnt);
+        pMainLayout->addWidget(m_pDiskCnt);
         pMainLayout->addStretch();
+        updateVirtualDiskSource();
     }
 
     /* Setup connections: */
-    connect(m_pRamSlider, SIGNAL(valueChanged(int)), this, SLOT(sltRamSliderValueChanged(int)));
-    connect(m_pRamEditor, SIGNAL(textChanged(const QString&)), this, SLOT(sltRamEditorTextChanged(const QString&)));
-
+    connect(m_pDiskCnt, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
+    connect(m_pDiskCreate, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
+    connect(m_pDiskPresent, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
+    connect(m_pDiskSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(sltVirtualDiskSourceChanged()));
+    connect(m_pVMMButton, SIGNAL(clicked()), this, SLOT(sltGetWithFileOpenDialog()));
+
+    /* Register classes: */
+    qRegisterMetaType<CMedium>();
     /* Register fields: */
-    registerField("ram", m_pRamSlider, "value", SIGNAL(valueChanged(int)));
-}
-
-void UIWizardNewVMPageBasic3::sltRamSliderValueChanged(int iValue)
+    registerField("virtualDisk", this, "virtualDisk");
+    registerField("virtualDiskId", this, "virtualDiskId");
+    registerField("virtualDiskName", this, "virtualDiskName");
+    registerField("virtualDiskLocation", this, "virtualDiskLocation");
+}
+
+void UIWizardNewVMPageBasic3::sltVirtualDiskSourceChanged()
 {
     /* Call to base-class: */
-    onRamSliderValueChanged(iValue);
+    updateVirtualDiskSource();
 
     /* Broadcast complete-change: */
@@ -122,11 +194,8 @@
 }
 
-void UIWizardNewVMPageBasic3::sltRamEditorTextChanged(const QString &strText)
+void UIWizardNewVMPageBasic3::sltGetWithFileOpenDialog()
 {
     /* Call to base-class: */
-    onRamEditorTextChanged(strText);
-
-    /* Broadcast complete-change: */
-    emit completeChanged();
+    getWithFileOpenDialog();
 }
 
@@ -134,17 +203,20 @@
 {
     /* Translate page: */
-    setTitle(UIWizardNewVM::tr("Memory size"));
+    setTitle(UIWizardNewVM::tr("Hard drive"));
 
     /* Translate widgets: */
-    QString strRecommendedRAM = field("type").value<CGuestOSType>().isNull() ?
-                                QString() : QString::number(field("type").value<CGuestOSType>().GetRecommendedRAM());
-    m_pLabel1->setText(UIWizardNewVM::tr("<p>Select the amount of memory (RAM) in megabytes "
-                                         "to be allocated to the virtual machine.</p>"
-                                         "<p>The recommended memory size is <b>%1</b> MB.</p>")
-                                         .arg(strRecommendedRAM));
-    m_pMemoryCnt->setTitle(UIWizardNewVM::tr("&Memory size"));
-    m_pRamUnits->setText(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
-    m_pRamMin->setText(QString("%1 %2").arg(m_pRamSlider->minRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
-    m_pRamMax->setText(QString("%1 %2").arg(m_pRamSlider->maxRAM()).arg(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes")));
+    QString strRecommendedHDD = field("type").value<CGuestOSType>().isNull() ? QString() :
+                                VBoxGlobal::formatSize(field("type").value<CGuestOSType>().GetRecommendedHDD());
+    m_pLabel1->setText(UIWizardNewVM::tr("<p>If you wish you can add a virtual hard drive to the new machine. "
+                                         "You can either create a new hard drive file or select one from the list "
+                                         "or from another location using the folder icon.</p>"
+                                         "<p>If you need a more complex storage set-up you can skip this step "
+                                         "and make the changes to the machine settings once the machine is created.</p>"
+                                         "<p>The recommended size of the hard drive is <b>%1</b>.</p>")
+                                         .arg(strRecommendedHDD));
+    m_pDiskCnt->setTitle(UIWizardNewVM::tr("Hard &drive"));
+    m_pDiskCreate->setText(UIWizardNewVM::tr("&Create new virtual hard drive"));
+    m_pDiskPresent->setText(UIWizardNewVM::tr("&Use existing virtual hard drive file"));
+    m_pVMMButton->setToolTip(UIWizardNewVM::tr("Choose a virtual hard drive file..."));
 }
 
@@ -154,18 +226,62 @@
     retranslateUi();
 
-    /* Get recommended 'ram' field value: */
-    CGuestOSType type = field("type").value<CGuestOSType>();
-    m_pRamSlider->setValue(type.GetRecommendedRAM());
-    m_pRamEditor->setText(QString::number(type.GetRecommendedRAM()));
-
-    /* 'Ram' field should have focus initially: */
-    m_pRamSlider->setFocus();
+    /* Prepare initial choice: */
+    m_pDiskCnt->setChecked(true);
+    m_pDiskSelector->setCurrentIndex(0);
+    m_pDiskCreate->setChecked(true);
+
+    /* 'Create new hard-disk' should have focus initially: */
+    m_pDiskCreate->setFocus();
+}
+
+void UIWizardNewVMPageBasic3::cleanupPage()
+{
+    /* Call to base-class: */
+    ensureNewVirtualDiskDeleted();
+    UIWizardPage::cleanupPage();
 }
 
 bool UIWizardNewVMPageBasic3::isComplete() const
 {
-    /* Make sure 'ram' field feats the bounds: */
-    return m_pRamSlider->value() >= qMax(1, (int)m_pRamSlider->minRAM()) &&
-           m_pRamSlider->value() <= (int)m_pRamSlider->maxRAM();
-}
-
+    /* Make sure 'virtualDisk' field feats the rules: */
+    return !m_pDiskCnt->isChecked() ||
+           !m_pDiskPresent->isChecked() ||
+           !vboxGlobal().findMedium(m_pDiskSelector->id()).isNull();
+}
+
+bool UIWizardNewVMPageBasic3::validatePage()
+{
+    /* Initial result: */
+    bool fResult = true;
+
+    /* Ensure unused virtual-disk is deleted: */
+    if (!m_pDiskCnt->isChecked() || m_pDiskCreate->isChecked() || (!m_virtualDisk.isNull() && m_strVirtualDiskId != m_virtualDisk.GetId()))
+        ensureNewVirtualDiskDeleted();
+
+    if (!m_pDiskCnt->isChecked())
+    {
+        /* Ask user about disk-less machine: */
+        fResult = msgCenter().confirmHardDisklessMachine(this);
+    }
+    else if (m_pDiskCreate->isChecked())
+    {
+        /* Show the New Virtual Hard Drive wizard: */
+        fResult = getWithNewVirtualDiskWizard();
+    }
+
+    if (fResult)
+    {
+        /* Lock finish button: */
+        startProcessing();
+
+        /* Try to create VM: */
+        fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM();
+
+        /* Unlock finish button: */
+        endProcessing();
+    }
+
+    /* Return result: */
+    return fResult;
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.h	(revision 41373)
@@ -20,12 +20,16 @@
 #define __UIWizardNewVMPageBasic3_h__
 
+/* Global includes: */
+#include <QVariant>
+
 /* Local includes: */
 #include "UIWizardPage.h"
+#include "COMDefs.h"
 
 /* Forward declarations: */
 class QGroupBox;
-class VBoxGuestRAMSlider;
-class QILineEdit;
-class QLabel;
+class QRadioButton;
+class VBoxMediaComboBox;
+class QIToolButton;
 class QIRichTextLabel;
 
@@ -39,14 +43,39 @@
 
     /* Handlers: */
-    void onRamSliderValueChanged(int iValue);
-    void onRamEditorTextChanged(const QString &strText);
+    void updateVirtualDiskSource();
+    void getWithFileOpenDialog();
+    bool getWithNewVirtualDiskWizard();
+
+    /* Stuff for 'virtualDisk' field: */
+    CMedium virtualDisk() const { return m_virtualDisk; }
+    void setVirtualDisk(const CMedium &virtualDisk) { m_virtualDisk = virtualDisk; }
+
+    /* Stuff for 'virtualDiskId' field: */
+    QString virtualDiskId() const { return m_strVirtualDiskId; }
+    void setVirtualDiskId(const QString &strVirtualDiskId) { m_strVirtualDiskId = strVirtualDiskId; }
+
+    /* Stuff for 'virtualDiskName' field: */
+    QString virtualDiskName() const { return m_strVirtualDiskName; }
+    void setVirtualDiskName(const QString &strVirtualDiskName) { m_strVirtualDiskName = strVirtualDiskName; }
+
+    /* Stuff for 'virtualDiskLocation' field: */
+    QString virtualDiskLocation() const { return m_strVirtualDiskLocation; }
+    void setVirtualDiskLocation(const QString &strVirtualDiskLocation) { m_strVirtualDiskLocation = strVirtualDiskLocation; }
+
+    /* Helpers: */
+    void ensureNewVirtualDiskDeleted();
+
+    /* Variables: */
+    CMedium m_virtualDisk;
+    QString m_strVirtualDiskId;
+    QString m_strVirtualDiskName;
+    QString m_strVirtualDiskLocation;
 
     /* Widgets: */
-    QGroupBox *m_pMemoryCnt;
-    VBoxGuestRAMSlider *m_pRamSlider;
-    QILineEdit *m_pRamEditor;
-    QLabel *m_pRamMin;
-    QLabel *m_pRamMax;
-    QLabel *m_pRamUnits;
+    QGroupBox *m_pDiskCnt;
+    QRadioButton *m_pDiskCreate;
+    QRadioButton *m_pDiskPresent;
+    VBoxMediaComboBox *m_pDiskSelector;
+    QIToolButton *m_pVMMButton;
 };
 
@@ -55,4 +84,8 @@
 {
     Q_OBJECT;
+    Q_PROPERTY(CMedium virtualDisk READ virtualDisk WRITE setVirtualDisk);
+    Q_PROPERTY(QString virtualDiskId READ virtualDiskId WRITE setVirtualDiskId);
+    Q_PROPERTY(QString virtualDiskName READ virtualDiskName WRITE setVirtualDiskName);
+    Q_PROPERTY(QString virtualDiskLocation READ virtualDiskLocation WRITE setVirtualDiskLocation);
 
 public:
@@ -61,20 +94,29 @@
     UIWizardNewVMPageBasic3();
 
+protected:
+
+    /* Wrapper to access 'this' from base part: */
+    UIWizardPage* thisImp() { return this; }
+    /* Wrapper to access 'wizard-field' from base part: */
+    QVariant fieldImp(const QString &strFieldName) const { return UIWizardPage::field(strFieldName); }
+
 private slots:
 
     /* Handlers: */
-    void sltRamSliderValueChanged(int iValue);
-    void sltRamEditorTextChanged(const QString &strText);
+    void sltVirtualDiskSourceChanged();
+    void sltGetWithFileOpenDialog();
 
 private:
 
-    /* Translation stuff: */
+    /* Translate stuff: */
     void retranslateUi();
 
     /* Prepare stuff: */
     void initializePage();
+    void cleanupPage();
 
     /* Validation stuff: */
     bool isComplete() const;
+    bool validatePage();
 
     /* Widgets: */
@@ -82,4 +124,4 @@
 };
 
-#endif // __UINewVMWzd_h__
+#endif // __UIWizardNewVMPageBasic3_h__
 
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.cpp	(revision 41372)
+++ 	(revision )
@@ -1,287 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVMPageBasic4 class implementation
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QMetaType>
-#include <QVBoxLayout>
-#include <QGridLayout>
-#include <QGroupBox>
-#include <QRadioButton>
-
-/* Local includes: */
-#include "UIWizardNewVMPageBasic4.h"
-#include "UIWizardNewVM.h"
-#include "VBoxDefs.h"
-#include "UIMessageCenter.h"
-#include "UIIconPool.h"
-#include "VBoxMediaComboBox.h"
-#include "QIToolButton.h"
-#include "UIWizardNewVD.h"
-#include "QIRichTextLabel.h"
-
-UIWizardNewVMPage4::UIWizardNewVMPage4()
-{
-}
-
-void UIWizardNewVMPage4::updateVirtualDiskSource()
-{
-    /* Enable/disable controls: */
-    m_pDiskCreate->setEnabled(m_pDiskCnt->isChecked());
-    m_pDiskPresent->setEnabled(m_pDiskCnt->isChecked());
-    m_pDiskSelector->setEnabled(m_pDiskPresent->isEnabled() && m_pDiskPresent->isChecked());
-    m_pVMMButton->setEnabled(m_pDiskPresent->isEnabled() && m_pDiskPresent->isChecked());
-
-    /* Fetch filed values: */
-    if (m_pDiskCnt->isChecked() && m_pDiskPresent->isChecked())
-    {
-        m_strVirtualDiskId = m_pDiskSelector->id();
-        m_strVirtualDiskName = m_pDiskSelector->currentText();
-        m_strVirtualDiskLocation = m_pDiskSelector->location();
-    }
-    else
-    {
-        m_strVirtualDiskId = QString();
-        m_strVirtualDiskName = QString();
-        m_strVirtualDiskLocation = QString();
-    }
-}
-
-void UIWizardNewVMPage4::getWithFileOpenDialog()
-{
-    /* Get opened medium id: */
-    QString strMediumId = vboxGlobal().openMediumWithFileOpenDialog(VBoxDefs::MediumType_HardDisk, thisImp());
-    if (!strMediumId.isNull())
-    {
-        /* Update medium-combo if necessary: */
-        m_pDiskSelector->setCurrentItem(strMediumId);
-        /* Update hard disk source: */
-        updateVirtualDiskSource();
-        /* Focus on hard disk combo: */
-        m_pDiskSelector->setFocus();
-    }
-}
-
-bool UIWizardNewVMPage4::getWithNewVirtualDiskWizard()
-{
-    /* Create New Virtual Hard Drive wizard: */
-    UIWizardNewVD dlg(thisImp(),
-                      fieldImp("machineBaseName").toString(),
-                      fieldImp("machineFolder").toString(),
-                      fieldImp("type").value<CGuestOSType>().GetRecommendedHDD());
-    if (dlg.exec() == QDialog::Accepted)
-    {
-        m_virtualDisk = dlg.virtualDisk();
-        m_pDiskSelector->setCurrentItem(m_virtualDisk.GetId());
-        m_pDiskPresent->click();
-        return true;
-    }
-    return false;
-}
-
-void UIWizardNewVMPage4::ensureNewVirtualDiskDeleted()
-{
-    /* Make sure virtual-disk exists: */
-    if (m_virtualDisk.isNull())
-        return;
-
-    /* Remember virtual-disk ID: */
-    QString strId = m_virtualDisk.GetId();
-
-    /* 1st step: start delete-storage progress: */
-    CProgress progress = m_virtualDisk.DeleteStorage();
-    /* Get initial state: */
-    bool fSuccess = m_virtualDisk.isOk();
-
-    /* 2nd step: show delete-storage progress: */
-    if (fSuccess)
-    {
-        msgCenter().showModalProgressDialog(progress, thisImp()->windowTitle(), ":/progress_media_delete_90px.png", thisImp(), true);
-        fSuccess = progress.isOk() && progress.GetResultCode() == S_OK;
-    }
-
-    /* 3rd step: notify GUI about virtual-disk was deleted or show error if any: */
-    if (fSuccess)
-        vboxGlobal().removeMedium(VBoxDefs::MediumType_HardDisk, strId);
-    else
-        msgCenter().cannotDeleteHardDiskStorage(thisImp(), m_virtualDisk, progress);
-
-    /* Detach virtual-disk finally: */
-    m_virtualDisk.detach();
-}
-
-UIWizardNewVMPageBasic4::UIWizardNewVMPageBasic4()
-{
-    /* Create widgets: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel1 = new QIRichTextLabel(this);
-        m_pDiskCnt = new QGroupBox(this);
-        {
-            m_pDiskCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            m_pDiskCnt->setCheckable(true);
-            QGridLayout *pDiskLayout = new QGridLayout(m_pDiskCnt);
-            {
-                m_pDiskCreate = new QRadioButton(m_pDiskCnt);
-                m_pDiskPresent = new QRadioButton(m_pDiskCnt);
-                QStyleOptionButton options;
-                options.initFrom(m_pDiskCreate);
-                int iWidth = m_pDiskCreate->style()->subElementRect(QStyle::SE_RadioButtonIndicator, &options, m_pDiskCreate).width() +
-                             m_pDiskCreate->style()->pixelMetric(QStyle::PM_RadioButtonLabelSpacing, &options, m_pDiskCreate) -
-                             pDiskLayout->spacing() - 1;
-                QSpacerItem *pSpacer = new QSpacerItem(iWidth, 0, QSizePolicy::Fixed, QSizePolicy::Fixed);
-                m_pDiskSelector = new VBoxMediaComboBox(m_pDiskCnt);
-                {
-                    m_pDiskSelector->setType(VBoxDefs::MediumType_HardDisk);
-                    m_pDiskSelector->repopulate();
-                }
-                m_pVMMButton = new QIToolButton(m_pDiskCnt);
-                {
-                    m_pVMMButton->setAutoRaise(true);
-                    m_pVMMButton->setIcon(UIIconPool::iconSet(":/select_file_16px.png", ":/select_file_dis_16px.png"));
-                }
-                pDiskLayout->addWidget(m_pDiskCreate, 0, 0, 1, 3);
-                pDiskLayout->addWidget(m_pDiskPresent, 1, 0, 1, 3);
-                pDiskLayout->addItem(pSpacer, 2, 0);
-                pDiskLayout->addWidget(m_pDiskSelector, 2, 1);
-                pDiskLayout->addWidget(m_pVMMButton, 2, 2);
-            }
-        }
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pDiskCnt);
-        pMainLayout->addStretch();
-        updateVirtualDiskSource();
-    }
-
-    /* Setup connections: */
-    connect(m_pDiskCnt, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
-    connect(m_pDiskCreate, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
-    connect(m_pDiskPresent, SIGNAL(toggled(bool)), this, SLOT(sltVirtualDiskSourceChanged()));
-    connect(m_pDiskSelector, SIGNAL(currentIndexChanged(int)), this, SLOT(sltVirtualDiskSourceChanged()));
-    connect(m_pVMMButton, SIGNAL(clicked()), this, SLOT(sltGetWithFileOpenDialog()));
-
-    /* Register classes: */
-    qRegisterMetaType<CMedium>();
-    /* Register fields: */
-    registerField("virtualDisk", this, "virtualDisk");
-    registerField("virtualDiskId", this, "virtualDiskId");
-    registerField("virtualDiskName", this, "virtualDiskName");
-    registerField("virtualDiskLocation", this, "virtualDiskLocation");
-}
-
-void UIWizardNewVMPageBasic4::sltVirtualDiskSourceChanged()
-{
-    /* Call to base-class: */
-    updateVirtualDiskSource();
-
-    /* Broadcast complete-change: */
-    emit completeChanged();
-}
-
-void UIWizardNewVMPageBasic4::sltGetWithFileOpenDialog()
-{
-    /* Call to base-class: */
-    getWithFileOpenDialog();
-}
-
-void UIWizardNewVMPageBasic4::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(UIWizardNewVM::tr("Hard drive"));
-
-    /* Translate widgets: */
-    QString strRecommendedHDD = field("type").value<CGuestOSType>().isNull() ? QString() :
-                                VBoxGlobal::formatSize(field("type").value<CGuestOSType>().GetRecommendedHDD());
-    m_pLabel1->setText(UIWizardNewVM::tr("<p>If you wish you can add a virtual hard drive to the new machine. "
-                                         "You can either create a new hard drive file or select one from the list "
-                                         "or from another location using the folder icon.</p>"
-                                         "<p>If you need a more complex storage set-up you can skip this step "
-                                         "and make the changes to the machine settings once the machine is created.</p>"
-                                         "<p>The recommended size of the hard drive is <b>%1</b>.</p>")
-                                         .arg(strRecommendedHDD));
-    m_pDiskCnt->setTitle(UIWizardNewVM::tr("Hard &drive"));
-    m_pDiskCreate->setText(UIWizardNewVM::tr("&Create new virtual hard drive"));
-    m_pDiskPresent->setText(UIWizardNewVM::tr("&Use existing virtual hard drive file"));
-    m_pVMMButton->setToolTip(UIWizardNewVM::tr("Choose a virtual hard drive file..."));
-}
-
-void UIWizardNewVMPageBasic4::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-
-    /* Prepare initial choice: */
-    m_pDiskCnt->setChecked(true);
-    m_pDiskSelector->setCurrentIndex(0);
-    m_pDiskCreate->setChecked(true);
-
-    /* 'Create new hard-disk' should have focus initially: */
-    m_pDiskCreate->setFocus();
-}
-
-void UIWizardNewVMPageBasic4::cleanupPage()
-{
-    /* Call to base-class: */
-    ensureNewVirtualDiskDeleted();
-    UIWizardPage::cleanupPage();
-}
-
-bool UIWizardNewVMPageBasic4::isComplete() const
-{
-    /* Make sure 'virtualDisk' field feats the rules: */
-    return !m_pDiskCnt->isChecked() ||
-           !m_pDiskPresent->isChecked() ||
-           !vboxGlobal().findMedium(m_pDiskSelector->id()).isNull();
-}
-
-bool UIWizardNewVMPageBasic4::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Ensure unused virtual-disk is deleted: */
-    if (!m_pDiskCnt->isChecked() || m_pDiskCreate->isChecked() || (!m_virtualDisk.isNull() && m_strVirtualDiskId != m_virtualDisk.GetId()))
-        ensureNewVirtualDiskDeleted();
-
-    if (!m_pDiskCnt->isChecked())
-    {
-        /* Ask user about disk-less machine: */
-        fResult = msgCenter().confirmHardDisklessMachine(this);
-    }
-    else if (m_pDiskCreate->isChecked())
-    {
-        /* Show the New Virtual Hard Drive wizard: */
-        fResult = getWithNewVirtualDiskWizard();
-    }
-
-    if (fResult)
-    {
-        /* Lock finish button: */
-        startProcessing();
-
-        /* Try to create VM: */
-        fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM();
-
-        /* Unlock finish button: */
-        endProcessing();
-    }
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.h	(revision 41372)
+++ 	(revision )
@@ -1,127 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVMPageBasic4 class declaration
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardNewVMPageBasic4_h__
-#define __UIWizardNewVMPageBasic4_h__
-
-/* Global includes: */
-#include <QVariant>
-
-/* Local includes: */
-#include "UIWizardPage.h"
-#include "COMDefs.h"
-
-/* Forward declarations: */
-class QGroupBox;
-class QRadioButton;
-class VBoxMediaComboBox;
-class QIToolButton;
-class QIRichTextLabel;
-
-/* 4th page of the New Virtual Machine wizard (base part): */
-class UIWizardNewVMPage4 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardNewVMPage4();
-
-    /* Handlers: */
-    void updateVirtualDiskSource();
-    void getWithFileOpenDialog();
-    bool getWithNewVirtualDiskWizard();
-
-    /* Stuff for 'virtualDisk' field: */
-    CMedium virtualDisk() const { return m_virtualDisk; }
-    void setVirtualDisk(const CMedium &virtualDisk) { m_virtualDisk = virtualDisk; }
-
-    /* Stuff for 'virtualDiskId' field: */
-    QString virtualDiskId() const { return m_strVirtualDiskId; }
-    void setVirtualDiskId(const QString &strVirtualDiskId) { m_strVirtualDiskId = strVirtualDiskId; }
-
-    /* Stuff for 'virtualDiskName' field: */
-    QString virtualDiskName() const { return m_strVirtualDiskName; }
-    void setVirtualDiskName(const QString &strVirtualDiskName) { m_strVirtualDiskName = strVirtualDiskName; }
-
-    /* Stuff for 'virtualDiskLocation' field: */
-    QString virtualDiskLocation() const { return m_strVirtualDiskLocation; }
-    void setVirtualDiskLocation(const QString &strVirtualDiskLocation) { m_strVirtualDiskLocation = strVirtualDiskLocation; }
-
-    /* Helpers: */
-    void ensureNewVirtualDiskDeleted();
-
-    /* Variables: */
-    CMedium m_virtualDisk;
-    QString m_strVirtualDiskId;
-    QString m_strVirtualDiskName;
-    QString m_strVirtualDiskLocation;
-
-    /* Widgets: */
-    QGroupBox *m_pDiskCnt;
-    QRadioButton *m_pDiskCreate;
-    QRadioButton *m_pDiskPresent;
-    VBoxMediaComboBox *m_pDiskSelector;
-    QIToolButton *m_pVMMButton;
-};
-
-/* 4th page of the New Virtual Machine wizard (basic extension): */
-class UIWizardNewVMPageBasic4 : public UIWizardPage, public UIWizardNewVMPage4
-{
-    Q_OBJECT;
-    Q_PROPERTY(CMedium virtualDisk READ virtualDisk WRITE setVirtualDisk);
-    Q_PROPERTY(QString virtualDiskId READ virtualDiskId WRITE setVirtualDiskId);
-    Q_PROPERTY(QString virtualDiskName READ virtualDiskName WRITE setVirtualDiskName);
-    Q_PROPERTY(QString virtualDiskLocation READ virtualDiskLocation WRITE setVirtualDiskLocation);
-
-public:
-
-    /* Constructor: */
-    UIWizardNewVMPageBasic4();
-
-protected:
-
-    /* Wrapper to access 'this' from base part: */
-    UIWizardPage* thisImp() { return this; }
-    /* Wrapper to access 'wizard-field' from base part: */
-    QVariant fieldImp(const QString &strFieldName) const { return UIWizardPage::field(strFieldName); }
-
-private slots:
-
-    /* Handlers: */
-    void sltVirtualDiskSourceChanged();
-    void sltGetWithFileOpenDialog();
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-    void cleanupPage();
-
-    /* Validation stuff: */
-    bool isComplete() const;
-    bool validatePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-};
-
-#endif // __UIWizardNewVMPageBasic4_h__
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.cpp	(revision 41372)
+++ 	(revision )
@@ -1,112 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVMPageBasic5 class implementation
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-/* Global includes: */
-#include <QVBoxLayout>
-
-/* Local includes: */
-#include "UIWizardNewVMPageBasic5.h"
-#include "UIWizardNewVM.h"
-#include "VBoxGlobal.h"
-#include "QIRichTextLabel.h"
-
-UIWizardNewVMPage5::UIWizardNewVMPage5()
-{
-}
-
-UIWizardNewVMPageBasic5::UIWizardNewVMPageBasic5()
-{
-    /* Create widget: */
-    QVBoxLayout *pMainLayout = new QVBoxLayout(this);
-    {
-        m_pLabel1 = new QIRichTextLabel(this);
-        m_pSummary = new QIRichTextLabel(this);
-        m_pLabel2 = new QIRichTextLabel(this);
-        pMainLayout->addWidget(m_pLabel1);
-        pMainLayout->addWidget(m_pSummary);
-        pMainLayout->addWidget(m_pLabel2);
-        pMainLayout->addStretch();
-    }
-}
-
-void UIWizardNewVMPageBasic5::retranslateUi()
-{
-    /* Translate page: */
-    setTitle(UIWizardNewVM::tr("Summary"));
-
-    /* Translate widgets: */
-    m_pLabel1->setText(UIWizardNewVM::tr("<p>You are going to create a new virtual machine with the following parameters:</p>"));
-    m_pLabel2->setText(UIWizardNewVM::tr("<p>If the above is correct press the <b>%1</b> button. Once "
-                                         "you press it, a new virtual machine will be created. </p><p>Note "
-                                         "that you can alter these and all other setting of the created "
-                                         "virtual machine at any time using the <b>Settings</b> dialog "
-                                         "accessible through the menu of the main window.</p>")
-                                        .arg(VBoxGlobal::replaceHtmlEntities(VBoxGlobal::removeAccelMark(wizard()->buttonText(QWizard::FinishButton)))));
-
-    /* Compose common summary: */
-    QString strSummary;
-    QString strName = field("name").toString();
-    QString strType = field("type").value<CGuestOSType>().isNull() ? QString() : field("type").value<CGuestOSType>().GetDescription();
-    QString strRam = QString::number(field("ram").toInt());
-    strSummary += QString
-    (
-        "<tr><td><nobr>%1: </nobr></td><td>%2</td></tr>"
-        "<tr><td><nobr>%3: </nobr></td><td>%4</td></tr>"
-        "<tr><td><nobr>%5: </nobr></td><td>%6 %7</td></tr>"
-    )
-    .arg(UIWizardNewVM::tr("Name", "summary"), strName)
-    .arg(UIWizardNewVM::tr("OS Type", "summary"), strType)
-    .arg(UIWizardNewVM::tr("Base Memory", "summary"), strRam, VBoxGlobal::tr("MB", "size suffix MBytes=1024KBytes"));
-    /* Add virtual-disk info: */
-    if (!field("virtualDiskId").toString().isNull())
-    {
-        strSummary += QString("<tr><td><nobr>%8: </nobr></td><td><nobr>%9</nobr></td></tr>")
-                             .arg(UIWizardNewVM::tr("Start-up Disk", "summary"), field("virtualDiskName").toString());
-    }
-    m_pSummary->setText("<table cellspacing=0 cellpadding=0>" + strSummary + "</table>");
-}
-
-void UIWizardNewVMPageBasic5::initializePage()
-{
-    /* Translate page: */
-    retranslateUi();
-
-    /* Summary should have focus initially: */
-    m_pSummary->setFocus();
-}
-
-bool UIWizardNewVMPageBasic5::validatePage()
-{
-    /* Initial result: */
-    bool fResult = true;
-
-    /* Lock finish button: */
-    startProcessing();
-
-    /* Try to create VM: */
-    if (fResult)
-        fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM();
-
-    /* Unlock finish button: */
-    endProcessing();
-
-    /* Return result: */
-    return fResult;
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.h	(revision 41372)
+++ 	(revision )
@@ -1,65 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt4 GUI ("VirtualBox"):
- * UIWizardNewVMPageBasic5 class declaration
- */
-
-/*
- * Copyright (C) 2006-2012 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef __UIWizardNewVMPageBasic5_h__
-#define __UIWizardNewVMPageBasic5_h__
-
-/* Local includes: */
-#include "UIWizardPage.h"
-
-/* Forward declarations: */
-class QIRichTextLabel;
-
-/* 5th page of the New Virtual Machine wizard (base part): */
-class UIWizardNewVMPage5 : public UIWizardPageBase
-{
-protected:
-
-    /* Constructor: */
-    UIWizardNewVMPage5();
-};
-
-/* 5th page of the New Virtual Machine wizard (basic extension): */
-class UIWizardNewVMPageBasic5 : public UIWizardPage, public UIWizardNewVMPage5
-{
-    Q_OBJECT;
-
-public:
-
-    /* Constructor: */
-    UIWizardNewVMPageBasic5();
-
-private:
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-    /* Prepare stuff: */
-    void initializePage();
-
-    /* Validation stuff: */
-    bool validatePage();
-
-    /* Widgets: */
-    QIRichTextLabel *m_pLabel1;
-    QIRichTextLabel *m_pSummary;
-    QIRichTextLabel *m_pLabel2;
-};
-
-#endif // __UIWizardNewVMPageBasic5_h__
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 41372)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 41373)
@@ -21,13 +21,13 @@
 
 /* Local includes: */
+#include "UIWizardNewVMPageBasic1.h"
 #include "UIWizardNewVMPageBasic2.h"
 #include "UIWizardNewVMPageBasic3.h"
-#include "UIWizardNewVMPageBasic4.h"
 
 /* Expert page of the New Virtual Machine wizard: */
 class UIWizardNewVMPageExpert : public UIWizardPage,
+                                public UIWizardNewVMPage1,
                                 public UIWizardNewVMPage2,
-                                public UIWizardNewVMPage3,
-                                public UIWizardNewVMPage4
+                                public UIWizardNewVMPage3
 {
     Q_OBJECT;
