Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.cpp	(revision 87980)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.cpp	(revision 87981)
@@ -18,4 +18,5 @@
 /* Qt includes: */
 #include <QButtonGroup>
+#include <QCheckBox>
 #include <QGridLayout>
 #include <QGroupBox>
@@ -246,17 +247,23 @@
 void UIWizardNewVMPageBasic4::createConnections()
 {
-    connect(m_pDiskSourceButtonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked),
-            this, &UIWizardNewVMPageBasic4::sltHandleSelectedDiskSourceChange);
-    connect(m_pDiskSelector, static_cast<void(UIMediaComboBox::*)(int)>(&UIMediaComboBox::currentIndexChanged),
-            this, &UIWizardNewVMPageBasic4::sltVirtualSelectedDiskSourceChanged);
-    connect(m_pDiskSelectionButton, &QIToolButton::clicked,
-            this, &UIWizardNewVMPageBasic4::sltGetWithFileOpenDialog);
-    connect(m_pSizeEditor, &UIMediumSizeEditor::sigSizeChanged,
-            this, &UIWizardNewVMPageBasic4::completeChanged);
-    connect(m_pSizeEditor, &UIMediumSizeEditor::sigSizeChanged,
-            this, &UIWizardNewVMPageBasic4::sltHandleSizeEditorChange);
-}
-
-void UIWizardNewVMPageBasic4::sltHandleSelectedDiskSourceChange()
+    if (m_pDiskSourceButtonGroup)
+        connect(m_pDiskSourceButtonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked),
+                this, &UIWizardNewVMPageBasic4::sltSelectedDiskSourceChanged);
+    if (m_pDiskSelector)
+        connect(m_pDiskSelector, static_cast<void(UIMediaComboBox::*)(int)>(&UIMediaComboBox::currentIndexChanged),
+                this, &UIWizardNewVMPageBasic4::sltMediaComboBoxIndexChanged);
+    if (m_pDiskSelectionButton)
+        connect(m_pDiskSelectionButton, &QIToolButton::clicked,
+                this, &UIWizardNewVMPageBasic4::sltGetWithFileOpenDialog);
+    if (m_pSizeEditor)
+    {
+        connect(m_pSizeEditor, &UIMediumSizeEditor::sigSizeChanged,
+                this, &UIWizardNewVMPageBasic4::completeChanged);
+        connect(m_pSizeEditor, &UIMediumSizeEditor::sigSizeChanged,
+                this, &UIWizardNewVMPageBasic4::sltHandleSizeEditorChange);
+    }
+}
+
+void UIWizardNewVMPageBasic4::sltSelectedDiskSourceChanged()
 {
     if (!m_pDiskSourceButtonGroup)
@@ -279,5 +286,5 @@
 }
 
-void UIWizardNewVMPageBasic4::sltVirtualSelectedDiskSourceChanged()
+void UIWizardNewVMPageBasic4::sltMediaComboBoxIndexChanged()
 {
     /* Make sure to set m_virtualDisk: */
@@ -423,10 +430,11 @@
 }
 
-void UIWizardNewVMPageBasic4::setEnableNewDiskWidgets(bool )
-{
-    // if (m_pMediumVariantContainer)
-    //     m_pMediumVariantContainer->setEnabled(fEnable);
-
-    // if (m_pSizeContainer)
-    //     m_pSizeContainer->setEnabled(fEnable);
-}
+void UIWizardNewVMPageBasic4::setEnableNewDiskWidgets(bool fEnable)
+{
+    if (m_pSizeEditor)
+        m_pSizeEditor->setEnabled(fEnable);
+    if (m_pSizeEditorLabel)
+        m_pSizeEditorLabel->setEnabled(fEnable);
+    if (m_pFixedCheckBox)
+        m_pFixedCheckBox->setEnabled(fEnable);
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.h	(revision 87980)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic4.h	(revision 87981)
@@ -119,6 +119,6 @@
 private slots:
 
-    void sltHandleSelectedDiskSourceChange();
-    void sltVirtualSelectedDiskSourceChanged();
+    void sltSelectedDiskSourceChanged();
+    void sltMediaComboBoxIndexChanged();
     void sltGetWithFileOpenDialog();
     void sltHandleSizeEditorChange();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 87980)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 87981)
@@ -73,4 +73,6 @@
     /* Register classes: */
     qRegisterMetaType<CMedium>();
+    qRegisterMetaType<SelectedDiskSource>();
+
     /* Register fields: */
     registerField("name*", m_pNameAndSystemEditor, "name", SIGNAL(sigNameChanged(const QString &)));
@@ -80,5 +82,4 @@
     registerField("machineBaseName", this, "machineBaseName");
     registerField("baseMemory", this, "baseMemory");
-    registerField("virtualDisk", this, "virtualDisk");
     registerField("guestOSFamiyId", this, "guestOSFamiyId");
     registerField("ISOFilePath", this, "ISOFilePath");
@@ -98,7 +99,11 @@
     registerField("mediumFormat", this, "mediumFormat");
     registerField("mediumSize", this, "mediumSize");
-
+    registerField("selectedDiskSource", this, "selectedDiskSource");
+    registerField("virtualDisk", this, "virtualDisk");
+    registerField("mediumVariant", this, "mediumVariant");
 
     disableEnableUnattendedRelatedWidgets(isUnattendedEnabled());
+    setEnableDiskSelectionWidgets(m_enmSelectedDiskSource == SelectedDiskSource_Existing);
+    setEnableNewDiskWidgets(m_enmSelectedDiskSource == SelectedDiskSource_New);
 }
 
@@ -277,4 +282,12 @@
         connect(m_pSizeEditor, &UIMediumSizeEditor::sigSizeChanged,
                 this, &UIWizardNewVMPageExpert::sltMediumSizeChanged);
+
+    if (m_pDiskSelector)
+        connect(m_pDiskSelector, static_cast<void(UIMediaComboBox::*)(int)>(&UIMediaComboBox::currentIndexChanged),
+                this, &UIWizardNewVMPageExpert::sltMediaComboBoxIndexChanged);
+
+    if (m_pDiskSourceButtonGroup)
+        connect(m_pDiskSourceButtonGroup, static_cast<void(QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked),
+                this, &UIWizardNewVMPageExpert::sltSelectedDiskSourceChanged);
 }
 
@@ -572,5 +585,4 @@
     if (!pSenderWidget)
         return;
-
     m_userSetWidgets << pSenderWidget;
 }
@@ -590,4 +602,32 @@
 }
 
+void UIWizardNewVMPageExpert::sltMediaComboBoxIndexChanged()
+{
+    /* Make sure to set m_virtualDisk: */
+    setVirtualDiskFromDiskCombo();
+    emit completeChanged();
+}
+
+void UIWizardNewVMPageExpert::sltSelectedDiskSourceChanged()
+{
+    if (!m_pDiskSourceButtonGroup)
+        return;
+
+    if (m_pDiskSourceButtonGroup->checkedButton() == m_pDiskEmpty)
+        setSelectedDiskSource(SelectedDiskSource_Empty);
+    else if (m_pDiskSourceButtonGroup->checkedButton() == m_pDiskExisting)
+    {
+        setSelectedDiskSource(SelectedDiskSource_Existing);
+        setVirtualDiskFromDiskCombo();
+    }
+    else
+        setSelectedDiskSource(SelectedDiskSource_New);
+
+    setEnableDiskSelectionWidgets(m_enmSelectedDiskSource == SelectedDiskSource_Existing);
+    setEnableNewDiskWidgets(m_enmSelectedDiskSource == SelectedDiskSource_New);
+
+    completeChanged();
+}
+
 void UIWizardNewVMPageExpert::updateVirtualDiskPathFromMachinePathName()
 {
@@ -617,2 +657,12 @@
     updateLocationEditorAfterFormatChange(comMediumFormat, m_formatExtensions);
 }
+
+void UIWizardNewVMPageExpert::setEnableNewDiskWidgets(bool fEnable)
+{
+    if (m_pSizeEditor)
+        m_pSizeEditor->setEnabled(fEnable);
+    if (m_pSizeEditorLabel)
+        m_pSizeEditorLabel->setEnabled(fEnable);
+    if (m_pFixedCheckBox)
+        m_pFixedCheckBox->setEnabled(fEnable);
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 87980)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.h	(revision 87981)
@@ -51,5 +51,4 @@
     Q_PROPERTY(QString machineBaseName READ machineBaseName WRITE setMachineBaseName);
     Q_PROPERTY(QString machineFilePath READ machineFilePath WRITE setMachineFilePath);
-    Q_PROPERTY(CMedium virtualDisk READ virtualDisk WRITE setVirtualDisk);
     Q_PROPERTY(int baseMemory READ baseMemory);
     Q_PROPERTY(QString guestOSFamiyId READ guestOSFamiyId);
@@ -68,8 +67,8 @@
 
 
-    // Q_PROPERTY(CMedium virtualDisk READ virtualDisk WRITE setVirtualDisk);
-    // Q_PROPERTY(SelectedDiskSource selectedDiskSource READ selectedDiskSource WRITE setSelectedDiskSource);
+    Q_PROPERTY(CMedium virtualDisk READ virtualDisk WRITE setVirtualDisk);
+    Q_PROPERTY(SelectedDiskSource selectedDiskSource READ selectedDiskSource WRITE setSelectedDiskSource);
     Q_PROPERTY(CMediumFormat mediumFormat READ mediumFormat);
-    // Q_PROPERTY(qulonglong mediumVariant READ mediumVariant WRITE setMediumVariant);
+    Q_PROPERTY(qulonglong mediumVariant READ mediumVariant WRITE setMediumVariant);
     Q_PROPERTY(QString mediumPath READ mediumPath);
     Q_PROPERTY(qulonglong mediumSize READ mediumSize WRITE setMediumSize);
@@ -103,4 +102,6 @@
     void sltMediumFormatChanged();
     void sltMediumSizeChanged();
+    void sltMediaComboBoxIndexChanged();
+    void sltSelectedDiskSourceChanged();
 
 private:
@@ -138,4 +139,5 @@
     void updateVirtualDiskPathFromMachinePathName();
     void updateWidgetAterMediumFormatChange();
+    void setEnableNewDiskWidgets(bool fEnable);
 
     UIToolBox  *m_pToolBox;
