Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic2.cpp	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic2.cpp	(revision 87878)
@@ -31,4 +31,8 @@
 
 UIWizardNewVDPage2::UIWizardNewVDPage2()
+    : m_pVariantButtonGroup(0)
+    , m_pDynamicalButton(0)
+    , m_pFixedButton(0)
+    , m_pSplitBox(0)
 {
 }
@@ -40,11 +44,11 @@
 
     /* Exclusive options: */
-    if (m_pDynamicalButton->isChecked())
+    if (m_pDynamicalButton && m_pDynamicalButton->isChecked())
         uMediumVariant = (qulonglong)KMediumVariant_Standard;
-    else if (m_pFixedButton->isChecked())
+    else if (m_pFixedButton && m_pFixedButton->isChecked())
         uMediumVariant = (qulonglong)KMediumVariant_Fixed;
 
     /* Additional options: */
-    if (m_pSplitBox->isChecked())
+    if (m_pSplitBox && m_pSplitBox->isChecked())
         uMediumVariant |= (qulonglong)KMediumVariant_VmdkSplit2G;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.cpp	(revision 87878)
@@ -184,16 +184,10 @@
 }
 
-bool UIWizardNewVDPage3::checkFATSizeLimitation() const
-{
-    /* Acquire medium variant: */
-    const qulonglong uVariant = fieldImp("mediumVariant").toULongLong();
-
+/* static */
+bool UIWizardNewVDPage3::checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize)
+{
     /* If the hard disk is split into 2GB parts then no need to make further checks: */
     if (uVariant & KMediumVariant_VmdkSplit2G)
         return true;
-
-    /* Acquire medium path and size: */
-    const QString strMediumPath = fieldImp("mediumPath").toString();
-    const qulonglong uSize = fieldImp("mediumSize").toULongLong();
 
     RTFSTYPE enmType;
@@ -332,5 +326,7 @@
 
     /* Make sure we are passing FAT size limitation: */
-    fResult = checkFATSizeLimitation();
+    fResult = checkFATSizeLimitation(fieldImp("mediumVariant").toULongLong(),
+                                     fieldImp("mediumPath").toString(),
+                                     fieldImp("mediumSize").toULongLong());
     if (!fResult)
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.h	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageBasic3.h	(revision 87878)
@@ -40,4 +40,6 @@
 
     static QString defaultExtension(const CMediumFormat &mediumFormatRef);
+    /* Checks if the medium file is bigger than what is allowed in FAT file systems. */
+    static bool checkFATSizeLimitation(const qulonglong uVariant, const QString &strMediumPath, const qulonglong uSize);
 
 protected:
@@ -56,7 +58,4 @@
     /* Returns the full image file path including the extension. */
     static QString absoluteFilePath(const QString &strFileName, const QString &strPath, const QString &strExtension);
-
-    /* Checks if the medium file is bigger than what is allowed in FAT file systems. */
-    bool checkFATSizeLimitation() const;
 
     /* Stuff for 'mediumPath' field: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.cpp	(revision 87878)
@@ -258,5 +258,7 @@
 
     /* Make sure we are passing FAT size limitation: */
-    fResult = checkFATSizeLimitation();
+    fResult = UIWizardNewVDPage3::checkFATSizeLimitation(fieldImp("mediumVariant").toULongLong(),
+                                                         fieldImp("mediumPath").toString(),
+                                                         fieldImp("mediumSize").toULongLong());
     if (!fResult)
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.cpp	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.cpp	(revision 87878)
@@ -25,4 +25,5 @@
 #include "QIRichTextLabel.h"
 #include "UIBaseMemoryEditor.h"
+#include "UICommon.h"
 #include "UIVirtualCPUEditor.h"
 #include "UIWizardNewVM.h"
@@ -31,4 +32,5 @@
 /* COM includes: */
 #include "CGuestOSType.h"
+#include "CSystemProperties.h"
 
 UIWizardNewVMPageBasic5::UIWizardNewVMPageBasic5()
@@ -42,11 +44,23 @@
     registerField("mediumSize", this, "mediumSize");
 
-    // fieldImp("machineBaseName").toString(),
-    //     fieldImp("machineFolder").toString(),
-    //     fieldImp("type").value<CGuestOSType>().GetRecommendedHDD(),
-    QString strDefaultName = fieldImp("machineBaseName").toString();
-    m_strDefaultName = strDefaultName.isEmpty() ? QString("NewVirtualDisk1") : strDefaultName;
-    m_strDefaultPath = fieldImp("machineFolder").toString();
+    /* We do not have any UI elements for HDD format selection since we default to VDI in case of guided wizard mode: */
+    bool fFoundVDI = false;
+    CSystemProperties properties = uiCommon().virtualBox().GetSystemProperties();
+    const QVector<CMediumFormat> &formats = properties.GetMediumFormats();
+    foreach (const CMediumFormat &format, formats)
+    {
+        if (format.GetName() == "VDI")
+        {
+            m_mediumFormat = format;
+            fFoundVDI = true;
+        }
+    }
+    Assert(fFoundVDI);
+    m_strDefaultExtension =  defaultExtension(m_mediumFormat);
+}
 
+CMediumFormat UIWizardNewVMPageBasic5::mediumFormat() const
+{
+    return m_mediumFormat;
 }
 
@@ -57,5 +71,4 @@
     m_pLabel = new QIRichTextLabel(this);
     pMainLayout->addWidget(m_pLabel);
-    //pMainLayout->addWidget(createHardwareWidgets());
 
     pMainLayout->addStretch();
@@ -80,17 +93,10 @@
 void UIWizardNewVMPageBasic5::initializePage()
 {
+    /* We set the medium name and path according to machine name/path and do let user change these in the guided mode: */
+    QString strDefaultName = fieldImp("machineBaseName").toString();
+    m_strDefaultName = strDefaultName.isEmpty() ? QString("NewVirtualDisk1") : strDefaultName;
+    m_strDefaultPath = fieldImp("machineFolder").toString();
+    // fieldImp("type").value<CGuestOSType>().GetRecommendedHDD()
     retranslateUi();
-
-    // if (!field("type").canConvert<CGuestOSType>())
-    //     return;
-
-    // CGuestOSType type = field("type").value<CGuestOSType>();
-    // ULONG recommendedRam = type.GetRecommendedRAM();
-    // if (m_pBaseMemoryEditor)
-    //     m_pBaseMemoryEditor->setValue(recommendedRam);
-
-    // KFirmwareType fwType = type.GetRecommendedFirmware();
-    // if (m_pEFICheckBox)
-    //     m_pEFICheckBox->setChecked(fwType != KFirmwareType_BIOS);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.h	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic5.h	(revision 87878)
@@ -48,5 +48,5 @@
 {
     Q_OBJECT;
-    Q_PROPERTY(CMediumFormat mediumFormat READ mediumFormat WRITE setMediumFormat);
+    Q_PROPERTY(CMediumFormat mediumFormat READ mediumFormat);
     Q_PROPERTY(qulonglong mediumVariant READ mediumVariant WRITE setMediumVariant);
     Q_PROPERTY(QString mediumPath READ mediumPath);
@@ -57,4 +57,5 @@
     /** Constructor. */
     UIWizardNewVMPageBasic5();
+    CMediumFormat mediumFormat() const;
 
 protected:
@@ -85,4 +86,6 @@
     /** Widgets. */
     QIRichTextLabel *m_pLabel;
+    /** For guided new vm wizard VDI is the only format. Thus we have no UI item for it. */
+    CMediumFormat m_mediumFormat;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic8.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic8.cpp	(revision 87877)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic8.cpp	(revision 87878)
@@ -18,4 +18,5 @@
 /* Qt includes: */
 #include <QCheckBox>
+#include <QFileInfo>
 #include <QGridLayout>
 #include <QMetaType>
@@ -25,7 +26,9 @@
 #include "QIRichTextLabel.h"
 #include "UIBaseMemoryEditor.h"
+#include "UIMessageCenter.h"
 #include "UIVirtualCPUEditor.h"
 #include "UIWizardNewVM.h"
 #include "UIWizardNewVMPageBasic8.h"
+#include "UIWizardNewVDPageBasic3.h"
 
 /* COM includes: */
@@ -152,12 +155,31 @@
 bool UIWizardNewVMPageBasic8::validatePage()
 {
-    /* Lock finish button: */
+    bool fResult = true;
+
+    const QString strMediumPath(fieldImp("mediumPath").toString());
+    fResult = !QFileInfo(strMediumPath).exists();
+    if (!fResult)
+    {
+        msgCenter().cannotOverwriteHardDiskStorage(strMediumPath, this);
+        return fResult;
+    }
+
+    fResult = UIWizardNewVDPage3::checkFATSizeLimitation(fieldImp("mediumVariant").toULongLong(),
+                                                         fieldImp("mediumPath").toString(),
+                                                         fieldImp("mediumSize").toULongLong());
+    if (!fResult)
+    {
+        msgCenter().cannotCreateHardDiskStorageInFAT(strMediumPath, this);
+        return fResult;
+    }
+
+
     startProcessing();
 
-    /* Try to create VM: */
-    bool fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM();
+    fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVirtualDisk();
+    fResult = qobject_cast<UIWizardNewVM*>(wizard())->createVM();
 
-    /* Unlock finish button: */
     endProcessing();
+
 
     return fResult;
