Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.cpp	(revision 90669)
@@ -135,111 +135,100 @@
 bool UIWizardCloneVM::cloneVM()
 {
-    // /* Get the clone name: */
-    // QString strName = field("cloneName").toString();
-    // /* Get the clone setting file path: */
-    // QString strSettingsFile = field("cloneFilePath").toString();
-
-    // /* Should we create linked clone? */
-    // bool fLinked = field("linkedClone").toBool();
-    // /* Get clone mode: */
-    // KCloneMode cloneMode = (mode() == WizardMode_Basic && page(Page3)) ||
-    //                        (mode() == WizardMode_Expert && page(PageExpert)) ?
-    //                        field("cloneMode").value<KCloneMode>() : KCloneMode_MachineState;
-
-    // /* Get VBox object: */
-    // CVirtualBox vbox = uiCommon().virtualBox();
-
-    // /* Prepare machine for cloning: */
-    // CMachine srcMachine = m_machine;
-
-    // /* If the user like to create a linked clone from the current machine, we
-    //  * have to take a little bit more action. First we create an snapshot, so
-    //  * that new differencing images on the source VM are created. Based on that
-    //  * we could use the new snapshot machine for cloning. */
-    // if (fLinked && m_snapshot.isNull())
-    // {
-    //     /* Open session: */
-    //     CSession session = uiCommon().openSession(m_machine.GetId());
-    //     if (session.isNull())
-    //         return false;
-
-    //     /* Prepare machine: */
-    //     CMachine machine = session.GetMachine();
-
-    //     /* Take the snapshot: */
-    //     QString strSnapshotName = tr("Linked Base for %1 and %2").arg(m_machine.GetName()).arg(strName);
-    //     QUuid uSnapshotId;
-    //     CProgress progress = machine.TakeSnapshot(strSnapshotName, "", true, uSnapshotId);
-
-    //     if (machine.isOk())
-    //     {
-    //         /* Show the "Taking Snapshot" progress dialog: */
-    //         msgCenter().showModalProgressDialog(progress, m_machine.GetName(), ":/progress_snapshot_create_90px.png", this);
-
-    //         if (!progress.isOk() || progress.GetResultCode() != 0)
-    //         {
-    //             msgCenter().cannotTakeSnapshot(progress, m_machine.GetName(), this);
-    //             return false;
-    //         }
-    //     }
-    //     else
-    //     {
-    //         msgCenter().cannotTakeSnapshot(machine, m_machine.GetName(), this);
-    //         return false;
-    //     }
-
-    //     /* Unlock machine finally: */
-    //     session.UnlockMachine();
-
-    //     /* Get the new snapshot and the snapshot machine. */
-    //     const CSnapshot &newSnapshot = m_machine.FindSnapshot(uSnapshotId.toString());
-    //     if (newSnapshot.isNull())
-    //     {
-    //         msgCenter().cannotFindSnapshotByName(m_machine, strSnapshotName, this);
-    //         return false;
-    //     }
-    //     srcMachine = newSnapshot.GetMachine();
-    // }
-
-    // /* Create a new machine object. */
-    // CMachine cloneMachine = vbox.CreateMachine(strSettingsFile, strName, QVector<QString>(), QString(), QString());
-    // if (!vbox.isOk())
-    // {
-    //     msgCenter().cannotCreateMachine(vbox, this);
-    //     return false;
-    // }
-
-    // /* Clone options vector to pass to cloning: */
-    // QVector<KCloneOptions> options;
-    // /* Set the selected MAC address policy: */
-    // switch (field("macAddressClonePolicy").value<MACAddressClonePolicy>())
-    // {
-    //     case MACAddressClonePolicy_KeepAllMACs:
-    //         options.append(KCloneOptions_KeepAllMACs);
-    //         break;
-    //     case MACAddressClonePolicy_KeepNATMACs:
-    //         options.append(KCloneOptions_KeepNATMACs);
-    //         break;
-    //     default:
-    //         break;
-    // }
-
-    // if (field("keepDiskNames").value<bool>())
-    //     options.append(KCloneOptions_KeepDiskNames);
-    // if (field("keepHWUUIDs").value<bool>())
-    //     options.append(KCloneOptions_KeepHwUUIDs);
-
-    // /* Linked clones requested? */
-    // if (fLinked)
-    //     options.append(KCloneOptions_Link);
-
-    // /* Clone VM: */
-    // UINotificationProgressMachineCopy *pNotification = new UINotificationProgressMachineCopy(srcMachine,
-    //                                                                                          cloneMachine,
-    //                                                                                          cloneMode,
-    //                                                                                          options);
-    // connect(pNotification, &UINotificationProgressMachineCopy::sigMachineCopied,
-    //         &uiCommon(), &UICommon::sltHandleMachineCreated);
-    // gpNotificationCenter->append(pNotification);
+    /* Get VBox object: */
+    CVirtualBox vbox = uiCommon().virtualBox();
+
+    /* Prepare machine for cloning: */
+    CMachine srcMachine = m_machine;
+
+    /* If the user like to create a linked clone from the current machine, we
+     * have to take a little bit more action. First we create an snapshot, so
+     * that new differencing images on the source VM are created. Based on that
+     * we could use the new snapshot machine for cloning. */
+    if (m_fLinkedClone && m_snapshot.isNull())
+    {
+
+        /* Open session: */
+        CSession session = uiCommon().openSession(m_machine.GetId());
+        if (session.isNull())
+            return false;
+
+        /* Prepare machine: */
+        CMachine machine = session.GetMachine();
+
+        /* Take the snapshot: */
+        QString strSnapshotName = tr("Linked Base for %1 and %2").arg(m_machine.GetName()).arg(m_strCloneName);
+        QUuid uSnapshotId;
+        CProgress progress = machine.TakeSnapshot(strSnapshotName, "", true, uSnapshotId);
+
+        if (machine.isOk())
+        {
+            /* Show the "Taking Snapshot" progress dialog: */
+            msgCenter().showModalProgressDialog(progress, m_machine.GetName(), ":/progress_snapshot_create_90px.png", this);
+
+            if (!progress.isOk() || progress.GetResultCode() != 0)
+            {
+                msgCenter().cannotTakeSnapshot(progress, m_machine.GetName(), this);
+                return false;
+            }
+        }
+        else
+        {
+            msgCenter().cannotTakeSnapshot(machine, m_machine.GetName(), this);
+            return false;
+        }
+
+        /* Unlock machine finally: */
+        session.UnlockMachine();
+
+        /* Get the new snapshot and the snapshot machine. */
+        const CSnapshot &newSnapshot = m_machine.FindSnapshot(uSnapshotId.toString());
+        if (newSnapshot.isNull())
+        {
+            msgCenter().cannotFindSnapshotByName(m_machine, strSnapshotName, this);
+            return false;
+        }
+        srcMachine = newSnapshot.GetMachine();
+    }
+
+    /* Create a new machine object. */
+    CMachine cloneMachine = vbox.CreateMachine(m_strCloneFilePath, m_strCloneName, QVector<QString>(), QString(), QString());
+    if (!vbox.isOk())
+    {
+        msgCenter().cannotCreateMachine(vbox, this);
+        return false;
+    }
+
+    /* Clone options vector to pass to cloning: */
+    QVector<KCloneOptions> options;
+    /* Set the selected MAC address policy: */
+    switch (m_enmMACAddressClonePolicy)
+    {
+        case MACAddressClonePolicy_KeepAllMACs:
+            options.append(KCloneOptions_KeepAllMACs);
+            break;
+        case MACAddressClonePolicy_KeepNATMACs:
+            options.append(KCloneOptions_KeepNATMACs);
+            break;
+        default:
+            break;
+    }
+
+    if (m_fKeepDiskNames)
+        options.append(KCloneOptions_KeepDiskNames);
+    if (m_fKeepHardwareUUIDs)
+        options.append(KCloneOptions_KeepHwUUIDs);
+
+    /* Linked clones requested? */
+    if (m_fLinkedClone)
+        options.append(KCloneOptions_Link);
+
+    /* Clone VM: */
+    UINotificationProgressMachineCopy *pNotification = new UINotificationProgressMachineCopy(srcMachine,
+                                                                                             cloneMachine,
+                                                                                             m_enmCloneMode,
+                                                                                             options);
+    connect(pNotification, &UINotificationProgressMachineCopy::sigMachineCopied,
+            &uiCommon(), &UICommon::sltHandleMachineCreated);
+    gpNotificationCenter->append(pNotification);
 
     return true;
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVM.h	(revision 90669)
@@ -101,5 +101,5 @@
         bool m_fKeepHardwareUUIDs;
         bool m_fLinkedClone;
-       KCloneMode m_enmCloneMode;
+        KCloneMode m_enmCloneMode;
     /** @} */
 };
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic1.cpp	(revision 90669)
@@ -71,8 +71,24 @@
 void UIWizardCloneVMPageBasic1::initializePage()
 {
-    /* Translate page: */
-    // retranslateUi();
-    // if (m_pNameLineEdit)
-    //     m_pNameLineEdit->setFocus();
+    retranslateUi();
+    if (m_pNamePathEditor)
+        m_pNamePathEditor->setFocus();
+    if (m_pNamePathEditor)
+    {
+        if (!m_userModifiedParameters.contains("CloneName"))
+            cloneVMWizardPropertySet(CloneName, m_pNamePathEditor->cloneName());
+            if (!m_userModifiedParameters.contains("CloneFilePath"))
+                cloneVMWizardPropertySet(CloneFilePath,
+                             UIWizardCloneVMNamePage::composeCloneFilePath(m_pNamePathEditor->cloneName(), m_strGroup, m_pNamePathEditor->clonePath()));
+    }
+    if (m_pAdditionalOptionsEditor)
+    {
+        if (!m_userModifiedParameters.contains("MacAddressPolicy"))
+            cloneVMWizardPropertySet(MacAddressPolicy, m_pAdditionalOptionsEditor->macAddressClonePolicy());
+        if (!m_userModifiedParameters.contains("KeepDiskNames"))
+            cloneVMWizardPropertySet(KeepDiskNames, m_pAdditionalOptionsEditor->keepDiskNames());
+        if (!m_userModifiedParameters.contains("KeepHardwareUUIDs"))
+            cloneVMWizardPropertySet(KeepHardwareUUIDs, m_pAdditionalOptionsEditor->keepHardwareUUIDs());
+    }
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.cpp	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.cpp	(revision 90669)
@@ -91,6 +91,7 @@
 void UIWizardCloneVMPageBasic2::initializePage()
 {
-    /* Translate page: */
     retranslateUi();
+    if (m_pCloneTypeGroupBox && !m_userModifiedParameters.contains("LinkedClone"))
+        cloneVMWizardPropertySet(LinkedClone, !m_pCloneTypeGroupBox->isFullClone());
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.h	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic2.h	(revision 90669)
@@ -54,5 +54,4 @@
     bool m_fAdditionalInfo;
     UICloneVMCloneTypeGroupBox *m_pCloneTypeGroupBox;
-
     QSet<QString> m_userModifiedParameters;
 };
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic3.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic3.cpp	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/clonevm/UIWizardCloneVMPageBasic3.cpp	(revision 90669)
@@ -121,5 +121,8 @@
 void UIWizardCloneVMPageBasic3::initializePage()
 {
-    /* Translate page: */
+
+    if (m_pCloneModeGroupBox && !m_userModifiedParameters.contains("CloneMode"))
+        cloneVMWizardPropertySet(CloneMode, m_pCloneModeGroupBox->cloneMode());
+
     retranslateUi();
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.cpp	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.cpp	(revision 90669)
@@ -205,4 +205,18 @@
 }
 
+bool UICloneVMAdditionalOptionsEditor::keepHardwareUUIDs() const
+{
+    if (m_pKeepHWUUIDsCheckBox)
+        return m_pKeepHWUUIDsCheckBox->isChecked();
+    return false;
+}
+
+bool UICloneVMAdditionalOptionsEditor::keepDiskNames() const
+{
+    if (m_pKeepDiskNamesCheckBox)
+        m_pKeepDiskNamesCheckBox->isChecked();
+    return false;
+}
+
 void UICloneVMAdditionalOptionsEditor::prepare()
 {
@@ -225,6 +239,7 @@
                 this, &UICloneVMAdditionalOptionsEditor::sltMACAddressClonePolicyChanged);
     }
+    m_pMACComboBox->blockSignals(true);
     populateMACAddressClonePolicies();
-
+    m_pMACComboBox->blockSignals(false);
 
     /* Load currently supported clone options: */
@@ -377,4 +392,11 @@
 }
 
+bool UICloneVMCloneTypeGroupBox::isFullClone() const
+{
+    if (m_pFullCloneRadio)
+        return m_pFullCloneRadio->isChecked();
+    return true;
+}
+
 void UICloneVMCloneTypeGroupBox::prepare()
 {
@@ -496,4 +518,9 @@
 void UICloneVMCloneModeGroupBox::sltButtonClicked()
 {
+    emit sigCloneModeChanged(cloneMode());
+}
+
+KCloneMode UICloneVMCloneModeGroupBox::cloneMode() const
+{
     KCloneMode enmCloneMode = KCloneMode_MachineState;
     if (m_pMachineAndChildsRadio && m_pMachineAndChildsRadio->isChecked())
@@ -501,4 +528,4 @@
     else if (m_pAllRadio && m_pAllRadio->isChecked())
         enmCloneMode = KCloneMode_AllStates;
-    emit sigCloneModeChanged(enmCloneMode);
-}
+    return enmCloneMode;
+}
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.h	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/editors/UIWizardCloneVMEditors.h	(revision 90669)
@@ -129,4 +129,7 @@
     int firstColumnWidth() const;
 
+    bool keepHardwareUUIDs() const;
+    bool keepDiskNames() const;
+
 private slots:
 
@@ -159,4 +162,5 @@
 
     UICloneVMCloneTypeGroupBox(QWidget *pParent = 0);
+    bool isFullClone() const;
 
 private slots:
@@ -186,4 +190,5 @@
 
     UICloneVMCloneModeGroupBox(bool fShowChildsOption, QWidget *pParent = 0);
+    KCloneMode cloneMode() const;
 
 private slots:
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.h	(revision 90664)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVDPageExpert.h	(revision 90669)
@@ -65,5 +65,4 @@
     void updateDiskWidgetsAfterMediumFormatChange();
 
-
     /* Widgets: */
     UIMediumSizeAndPathGroupBox *m_pSizeAndPathGroup;
