Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41387)
@@ -356,5 +356,5 @@
 	src/widgets/VBoxMiniToolBar.h \
 	src/widgets/VBoxOSTypeSelectorButton.h \
-	src/widgets/VBoxOSTypeSelectorWidget.h \
+	src/widgets/UINameAndSystemEditor.h \
 	src/widgets/VBoxWarningPane.h \
 	src/wizards/UIWizard.h \
@@ -565,5 +565,5 @@
 	src/widgets/VBoxMiniToolBar.cpp \
 	src/widgets/VBoxOSTypeSelectorButton.cpp \
-	src/widgets/VBoxOSTypeSelectorWidget.cpp \
+	src/widgets/UINameAndSystemEditor.cpp \
 	src/widgets/VBoxWarningPane.cpp \
 	src/wizards/UIWizard.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/precomp.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/precomp.h	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/precomp.h	(revision 41387)
@@ -229,5 +229,5 @@
 #include "VBoxNewVMWzd.h"
 #include "VBoxOSTypeSelectorButton.h"
-#include "VBoxOSTypeSelectorWidget.h"
+#include "UINameAndSystemEditor.h"
 #include "UIMessageCenter.h"
 #include "VBoxProgressDialog.h"
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 41387)
@@ -24,4 +24,5 @@
 
 #include <QDir>
+#include <QLineEdit>
 
 UIMachineSettingsGeneral::UIMachineSettingsGeneral()
@@ -33,5 +34,5 @@
 
     /* Setup validators */
-    mLeName->setValidator (new QRegExpValidator (QRegExp (".+"), this));
+    m_pNameAndSystemEditor->nameEditor()->setValidator(new QRegExpValidator(QRegExp(".+"), this));
 
     /* Shared Clipboard mode */
@@ -51,5 +52,5 @@
 CGuestOSType UIMachineSettingsGeneral::guestOSType() const
 {
-    return mOSTypeSelector->type();
+    return m_pNameAndSystemEditor->type();
 }
 
@@ -61,5 +62,5 @@
 bool UIMachineSettingsGeneral::is64BitOSTypeSelected() const
 {
-    return mOSTypeSelector->type().GetIs64Bit();
+    return m_pNameAndSystemEditor->type().GetIs64Bit();
 }
 
@@ -67,5 +68,5 @@
 bool UIMachineSettingsGeneral::isWindowsOSTypeSelected() const
 {
-    return mOSTypeSelector->type().GetFamilyId() == "Windows";
+    return m_pNameAndSystemEditor->type().GetFamilyId() == "Windows";
 }
 #endif /* VBOX_WITH_VIDEOHWACCEL */
@@ -113,6 +114,6 @@
 
     /* Load general data to page: */
-    mLeName->setText(generalData.m_strName);
-    mOSTypeSelector->setType(vboxGlobal().vmGuestOSType(generalData.m_strGuestOsTypeId));
+    m_pNameAndSystemEditor->setName(generalData.m_strName);
+    m_pNameAndSystemEditor->setType(vboxGlobal().vmGuestOSType(generalData.m_strGuestOsTypeId));
     mCbSaveMounted->setChecked(generalData.m_fSaveMountedAtRuntime);
     mCbShowToolBar->setChecked(generalData.m_fShowMiniToolBar);
@@ -139,6 +140,6 @@
 
     /* Gather general data: */
-    generalData.m_strName = mLeName->text();
-    generalData.m_strGuestOsTypeId = mOSTypeSelector->type().GetId();
+    generalData.m_strName = m_pNameAndSystemEditor->name();
+    generalData.m_strGuestOsTypeId = m_pNameAndSystemEditor->type().GetId();
     generalData.m_fSaveMountedAtRuntime = mCbSaveMounted->isChecked();
     generalData.m_fShowMiniToolBar = mCbShowToolBar->isChecked();
@@ -197,5 +198,5 @@
 {
     mValidator = aVal;
-    connect (mOSTypeSelector, SIGNAL (osTypeChanged()), mValidator, SLOT (revalidate()));
+    connect (m_pNameAndSystemEditor, SIGNAL (sigOsTypeChanged()), mValidator, SLOT (revalidate()));
 }
 
@@ -213,9 +214,8 @@
     /* Basic tab-order */
     setTabOrder (aWidget, mTwGeneral->focusProxy());
-    setTabOrder (mTwGeneral->focusProxy(), mLeName);
-    setTabOrder (mLeName, mOSTypeSelector);
+    setTabOrder (mTwGeneral->focusProxy(), m_pNameAndSystemEditor);
 
     /* Advanced tab-order */
-    setTabOrder (mOSTypeSelector, mPsSnapshot);
+    setTabOrder (m_pNameAndSystemEditor, mPsSnapshot);
     setTabOrder (mPsSnapshot, mCbClipboard);
     setTabOrder (mCbClipboard, mCbSaveMounted);
@@ -248,7 +248,5 @@
 {
     /* Basic tab: */
-    mLbName->setEnabled(isMachineOffline());
-    mLeName->setEnabled(isMachineOffline());
-    mOSTypeSelector->setEnabled(isMachineOffline());
+    m_pNameAndSystemEditor->setEnabled(isMachineOffline());
     /* Advanced tab: */
     mLbSnapshot->setEnabled(isMachineOffline());
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.ui	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.ui	(revision 41387)
@@ -38,31 +38,5 @@
        </property>
        <item>
-        <widget class="VBoxOSTypeSelectorWidget" native="1" name="mOSTypeSelector" >
-         <layout class="QGridLayout" name="mLtOSTypeSelector" >
-          <property name="margin" >
-           <number>0</number>
-          </property>
-          <item row="0" column="0" >
-           <widget class="QLabel" name="mLbName" >
-            <property name="text" >
-             <string>&amp;Name:</string>
-            </property>
-            <property name="alignment" >
-             <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-            </property>
-            <property name="buddy" >
-             <cstring>mLeName</cstring>
-            </property>
-           </widget>
-          </item>
-          <item row="0" column="1" colspan="2" >
-           <widget class="QLineEdit" name="mLeName" >
-            <property name="whatsThis" >
-             <string>Displays the name of the virtual machine.</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </widget>
+        <widget class="UINameAndSystemEditor" native="1" name="m_pNameAndSystemEditor" />
        </item>
        <item>
@@ -278,7 +252,7 @@
  <customwidgets>
   <customwidget>
-   <class>VBoxOSTypeSelectorWidget</class>
+   <class>UINameAndSystemEditor</class>
    <extends>QWidget</extends>
-   <header>VBoxOSTypeSelectorWidget.h</header>
+   <header>UINameAndSystemEditor.h</header>
   </customwidget>
   <customwidget>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 41387)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 41387)
@@ -0,0 +1,232 @@
+/* $Id$ */
+/** @file
+ *
+ * VBox frontends: Qt GUI ("VirtualBox"):
+ * UINameAndSystemEditor 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 <QGridLayout>
+#include <QVBoxLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QComboBox>
+
+/* Local includes: */
+#include "UINameAndSystemEditor.h"
+
+enum
+{
+    TypeID = Qt::UserRole + 1
+};
+
+UINameAndSystemEditor::UINameAndSystemEditor(QWidget *pParent)
+    : QIWithRetranslateUI<QWidget>(pParent)
+{
+    /* Register CGuestOSType type: */
+    qRegisterMetaType<CGuestOSType>();
+
+    /* Create widgets: */
+    QGridLayout *pMainLayout = new QGridLayout(this);
+    {
+        m_pNameLabel = new QLabel(this);
+        {
+            m_pNameLabel->setAlignment(Qt::AlignRight);
+            m_pNameLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+        }
+        m_pNameEditor = new QLineEdit(this);
+        {
+            m_pNameEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+            m_pNameLabel->setBuddy(m_pNameEditor);
+        }
+        m_pFamilyLabel = new QLabel(this);
+        {
+            m_pFamilyLabel->setAlignment(Qt::AlignRight);
+            m_pFamilyLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+        }
+        m_pFamilyCombo = new QComboBox(this);
+        {
+            m_pFamilyCombo->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            m_pFamilyLabel->setBuddy(m_pFamilyCombo);
+        }
+        m_pTypeLabel = new QLabel(this);
+        {
+            m_pTypeLabel->setAlignment(Qt::AlignRight);
+            m_pTypeLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
+        }
+        m_pTypeCombo = new QComboBox(this);
+        {
+            m_pTypeCombo->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            m_pTypeLabel->setBuddy(m_pTypeCombo);
+        }
+        QVBoxLayout *pIconLayout = new QVBoxLayout;
+        {
+            m_pTypeIcon = new QLabel(this);
+            {
+                m_pTypeIcon->setFixedSize(32, 32);
+            }
+            pIconLayout->addWidget(m_pTypeIcon);
+            pIconLayout->addStretch();
+        }
+        pMainLayout->addWidget(m_pNameLabel, 0, 0);
+        pMainLayout->addWidget(m_pNameEditor, 0, 1, 1, 2);
+        pMainLayout->addWidget(m_pFamilyLabel, 1, 0);
+        pMainLayout->addWidget(m_pFamilyCombo, 1, 1);
+        pMainLayout->addWidget(m_pTypeLabel, 2, 0);
+        pMainLayout->addWidget(m_pTypeCombo, 2, 1);
+        pMainLayout->addItem(pIconLayout, 1, 2, 2, 1);
+    }
+
+    /* Check if host supports (AMD-V or VT-x) and long mode: */
+    CHost host = vboxGlobal().host();
+    m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx);
+    m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode);
+
+    /* Fill OS family selector: */
+    QList<CGuestOSType> families(vboxGlobal().vmGuestOSFamilyList());
+    for (int i = 0; i < families.size(); ++i)
+    {
+        QString familyName(families[i].GetFamilyDescription());
+        m_pFamilyCombo->insertItem(i, familyName);
+        m_pFamilyCombo->setItemData(i, families[i].GetFamilyId(), TypeID);
+    }
+    m_pFamilyCombo->setCurrentIndex(0);
+    sltFamilyChanged(m_pFamilyCombo->currentIndex());
+
+    /* Setup connections: */
+    connect(m_pNameEditor, SIGNAL(textChanged(const QString &)), this, SIGNAL(sigNameChanged(const QString &)));
+    connect(m_pFamilyCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(sltFamilyChanged(int)));
+    connect(m_pTypeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(sltTypeChanged(int)));
+
+    /* Retranslate: */
+    retranslateUi();
+}
+
+QLineEdit* UINameAndSystemEditor::nameEditor() const
+{
+    return m_pNameEditor;
+}
+
+void UINameAndSystemEditor::setName(const QString &strName)
+{
+    m_pNameEditor->setText(strName);
+}
+
+QString UINameAndSystemEditor::name() const
+{
+    return m_pNameEditor->text();
+}
+
+void UINameAndSystemEditor::setType(const CGuestOSType &type)
+{
+    /* Initialize variables: */
+    QString strFamilyId(type.GetFamilyId());
+    QString strTypeId(type.GetId());
+
+    /* Get/check family index: */
+    int iFamilyIndex = m_pFamilyCombo->findData(strFamilyId, TypeID);
+    AssertMsg(iFamilyIndex != -1, ("Invalid family ID: '%s'", strFamilyId.toLatin1().constData()));
+    if (iFamilyIndex != -1)
+        m_pFamilyCombo->setCurrentIndex(iFamilyIndex);
+
+    /* Get/check type index: */
+    int iTypeIndex = m_pTypeCombo->findData(strTypeId, TypeID);
+    AssertMsg(iTypeIndex != -1, ("Invalid type ID: '%s'", strTypeId.toLatin1().constData()));
+    if (iTypeIndex != -1)
+        m_pTypeCombo->setCurrentIndex(iTypeIndex);
+}
+
+CGuestOSType UINameAndSystemEditor::type() const
+{
+    return m_type;
+}
+
+void UINameAndSystemEditor::retranslateUi()
+{
+    m_pNameLabel->setText(tr("&Name:"));
+    m_pNameEditor->setWhatsThis(tr("Displays the name of the virtual machine."));
+    m_pFamilyLabel->setText(tr("&Type:"));
+    m_pFamilyCombo->setWhatsThis(tr("Displays the operating system family that "
+                                    "you plan to install into this virtual machine."));
+    m_pTypeLabel->setText(tr("&Version:"));
+    m_pTypeCombo->setWhatsThis(tr("Displays the operating system type that "
+                                  "you plan to install into this virtual machine "
+                                  "(called a guest operating system)."));
+}
+
+void UINameAndSystemEditor::sltFamilyChanged(int iIndex)
+{
+    /* Lock the signals of m_pTypeCombo to prevent it's reaction on clearing: */
+    m_pTypeCombo->blockSignals(true);
+    m_pTypeCombo->clear();
+
+    /* Populate combo-box with OS types related to currently selected family id: */
+    QString strFamilyId(m_pFamilyCombo->itemData(iIndex, TypeID).toString());
+    QList<CGuestOSType> types(vboxGlobal().vmGuestOSTypeList(strFamilyId));
+    for (int i = 0; i < types.size(); ++i)
+    {
+        if (types[i].GetIs64Bit() && (!m_fSupportsHWVirtEx || !m_fSupportsLongMode))
+            continue;
+        int iIndex = m_pTypeCombo->count();
+        m_pTypeCombo->insertItem(iIndex, types[i].GetDescription());
+        m_pTypeCombo->setItemData(iIndex, types[i].GetId(), TypeID);
+    }
+
+    /* Select the most recently chosen item: */
+    if (m_currentIds.contains(strFamilyId))
+    {
+        QString strTypeId(m_currentIds[strFamilyId]);
+        int iTypeIndex = m_pTypeCombo->findData(strTypeId, TypeID);
+        if (iTypeIndex != -1)
+            m_pTypeCombo->setCurrentIndex(iTypeIndex);
+    }
+    /* Or select WinXP item for Windows family as default: */
+    else if (strFamilyId == "Windows")
+    {
+        int iIndexWinXP = m_pTypeCombo->findData("WindowsXP", TypeID);
+        if (iIndexWinXP != -1)
+            m_pTypeCombo->setCurrentIndex(iIndexWinXP);
+    }
+    /* Or select Ubuntu item for Linux family as default: */
+    else if (strFamilyId == "Linux")
+    {
+        int iIndexUbuntu = m_pTypeCombo->findData("Ubuntu", TypeID);
+        if (iIndexUbuntu != -1)
+            m_pTypeCombo->setCurrentIndex(iIndexUbuntu);
+    }
+    /* Else simply select the first one present: */
+    else m_pTypeCombo->setCurrentIndex(0);
+
+    /* Update all the stuff: */
+    sltTypeChanged(m_pTypeCombo->currentIndex());
+
+    /* Unlock the signals of m_pTypeCombo: */
+    m_pTypeCombo->blockSignals (false);
+}
+
+void UINameAndSystemEditor::sltTypeChanged(int iIndex)
+{
+    /* Save the new selected OS Type: */
+    m_type = vboxGlobal().vmGuestOSType(m_pTypeCombo->itemData(iIndex, TypeID).toString(),
+                                        m_pFamilyCombo->itemData(m_pFamilyCombo->currentIndex(), TypeID).toString());
+    m_pTypeIcon->setPixmap(vboxGlobal().vmGuestOSTypeIcon(m_type.GetId()));
+
+    /* Save the most recently used item: */
+    m_currentIds[m_type.GetFamilyId()] = m_type.GetId();
+
+    /* Notifies listeners about OS type change: */
+    emit sigOsTypeChanged();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.h	(revision 41387)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.h	(revision 41387)
@@ -0,0 +1,95 @@
+/** @file
+ *
+ * VBox frontends: Qt GUI ("VirtualBox"):
+ * UINameAndSystemEditor 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 __UINameAndSystemEditor_h__
+#define __UINameAndSystemEditor_h__
+
+/* Global includes: */
+#include <QWidget>
+
+/* Local includes: */
+#include "QIWithRetranslateUI.h"
+#include "VBoxGlobal.h"
+
+/* Forward declarations: */
+class QLabel;
+class QLineEdit;
+class QComboBox;
+
+/* QWidget reimplementation providing editor for basic VM parameters: */
+class UINameAndSystemEditor : public QIWithRetranslateUI<QWidget>
+{
+    Q_OBJECT;
+    Q_PROPERTY(QString name READ name WRITE setName);
+    Q_PROPERTY(CGuestOSType type READ type WRITE setType);
+
+signals:
+
+    /* Notifies listeners about VM name change: */
+    void sigNameChanged(const QString &strNewName);
+
+    /* Notifies listeners about VM operating system type change: */
+    void sigOsTypeChanged();
+
+public:
+
+    /* Constructor: */
+    UINameAndSystemEditor(QWidget *pParent);
+
+    /* Name stuff: */
+    QLineEdit* nameEditor() const;
+    void setName(const QString &strName);
+    QString name() const;
+
+    /* Operating system type stuff: */
+    void setType(const CGuestOSType &type);
+    CGuestOSType type() const;
+
+protected:
+
+    /* Translation stuff: */
+    void retranslateUi();
+
+private slots:
+
+    /* Handles OS family change: */
+    void sltFamilyChanged(int iIndex);
+
+    /* Handles OS type change: */
+    void sltTypeChanged(int iIndex);
+
+private:
+
+    /* Widgets: */
+    QLabel *m_pNameLabel;
+    QLabel *m_pFamilyLabel;
+    QLabel *m_pTypeLabel;
+    QLabel *m_pTypeIcon;
+    QLineEdit *m_pNameEditor;
+    QComboBox *m_pFamilyCombo;
+    QComboBox *m_pTypeCombo;
+
+    /* Variables: */
+    CGuestOSType m_type;
+    QMap<QString, QString> m_currentIds;
+    bool m_fSupportsHWVirtEx;
+    bool m_fSupportsLongMode;
+};
+
+#endif /* __UINameAndSystemEditor_h__ */
+
Index: unk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.cpp	(revision 41386)
+++ 	(revision )
@@ -1,233 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt GUI ("VirtualBox"):
- * VBoxOSTypeSelectorWidget class implementation
- */
-
-/*
- * Copyright (C) 2008-2010 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.
- */
-
-#include "VBoxOSTypeSelectorWidget.h"
-
-#include <QComboBox>
-#include <QLabel>
-#include <QVBoxLayout>
-
-enum
-{
-    RoleTypeID = Qt::UserRole + 1
-};
-
-VBoxOSTypeSelectorWidget::VBoxOSTypeSelectorWidget (QWidget *aParent)
-    : QIWithRetranslateUI <QWidget> (aParent)
-    , mTxFamilyName (new QLabel (this))
-    , mTxTypeName (new QLabel (this))
-    , mPxTypeIcon (new QLabel (this))
-    , mCbFamily (new QComboBox (this))
-    , mCbType (new QComboBox (this))
-    , mLayoutPosition (-1)
-    , mLayoutActivated (false)
-{
-    /* Register CGuestOSType type */
-    qRegisterMetaType<CGuestOSType>();
-
-    /* Setup widgets */
-    mTxFamilyName->setAlignment (Qt::AlignRight);
-    mTxTypeName->setAlignment (Qt::AlignRight);
-    mTxFamilyName->setBuddy (mCbFamily);
-    mTxTypeName->setBuddy (mCbType);
-    mTxFamilyName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed);
-    mTxTypeName->setSizePolicy (QSizePolicy::Minimum, QSizePolicy::Fixed);
-    mCbFamily->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed);
-    mCbType->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Fixed);
-    mPxTypeIcon->setFixedSize (32, 32);
-
-    /* Check if host supports (AMD-V or VT-x) and long mode */
-    CHost host = vboxGlobal().host();
-    m_fSupportsHWVirtEx = host.GetProcessorFeature(KProcessorFeature_HWVirtEx);
-    m_fSupportsLongMode = host.GetProcessorFeature(KProcessorFeature_LongMode);
-
-    /* Fill OS family selector */
-    int maximumSize = 0;
-    QFontMetrics fm (mCbFamily->font());
-    QList <CGuestOSType> families (vboxGlobal().vmGuestOSFamilyList());
-    for (int i = 0; i < families.size(); ++ i)
-    {
-        /* Search for maximum length among family names */
-        QString familyName (families [i].GetFamilyDescription());
-        maximumSize = maximumSize < fm.width (familyName) ?
-                      fm.width (familyName) : maximumSize;
-        mCbFamily->insertItem (i, familyName);
-        mCbFamily->setItemData (i, families [i].GetFamilyId(), RoleTypeID);
-        /* Search for maximum length among type names */
-        QList <CGuestOSType> types (vboxGlobal().vmGuestOSTypeList (families [i].GetFamilyId()));
-        for (int j = 0; j < types.size(); ++ j)
-        {
-            QString typeName (types [j].GetDescription());
-            maximumSize = maximumSize < fm.width (typeName) ?
-                          fm.width (typeName) : maximumSize;
-        }
-    }
-    mCbFamily->setCurrentIndex (0);
-    onFamilyChanged (mCbFamily->currentIndex());
-
-    /* Set the minimum size for OS Type & Family selectors. */
-    QStyleOptionComboBox options;
-    options.initFrom (mCbFamily);
-    QSize size (style()->sizeFromContents (QStyle::CT_ComboBox, &options,
-                QSize (maximumSize, fm.height()), mCbFamily));
-    mCbFamily->setMinimumWidth (size.width());
-    mCbType->setMinimumWidth (size.width());
-
-    /* Slots connections */
-    connect (mCbFamily, SIGNAL (currentIndexChanged (int)),
-             this, SLOT (onFamilyChanged (int)));
-    connect (mCbType, SIGNAL (currentIndexChanged (int)),
-             this, SLOT (onTypeChanged (int)));
-
-    /* Retranslate */
-    retranslateUi();
-}
-
-void VBoxOSTypeSelectorWidget::setType (const CGuestOSType &aType)
-{
-    QString familyId (aType.GetFamilyId());
-    QString typeId (aType.GetId());
-
-    int familyIndex = mCbFamily->findData (familyId, RoleTypeID);
-    AssertMsg (familyIndex != -1, ("Family ID should be valid: '%s'", familyId.toLatin1().constData()));
-    if (familyIndex != -1)
-        mCbFamily->setCurrentIndex (familyIndex);
-
-    int typeIndex = mCbType->findData (typeId, RoleTypeID);
-    AssertMsg (typeIndex != -1, ("Type ID should be valid: '%s'", typeId.toLatin1().constData()));
-    if (typeIndex != -1)
-        mCbType->setCurrentIndex (typeIndex);
-}
-
-CGuestOSType VBoxOSTypeSelectorWidget::type() const
-{
-    return mType;
-}
-
-void VBoxOSTypeSelectorWidget::setLayoutPosition (int aPos)
-{
-    mLayoutPosition = aPos;
-}
-
-void VBoxOSTypeSelectorWidget::activateLayout()
-{
-    if (mLayoutActivated)
-        return;
-
-    mLayoutActivated = true;
-
-    /* Layouting widgets */
-    QVBoxLayout *layout1 = new QVBoxLayout();
-    layout1->setSpacing (0);
-    layout1->addWidget (mPxTypeIcon);
-    layout1->addStretch();
-
-    QGridLayout *layout2 = layout() ? static_cast <QGridLayout*> (layout()) :
-                                      new QGridLayout (this);
-    layout2->setMargin (0);
-    int row = mLayoutPosition == -1 ? layout2->rowCount() : mLayoutPosition;
-    layout2->addWidget (mTxFamilyName, row, 0);
-    layout2->addWidget (mCbFamily, row, 1);
-    layout2->addWidget (mTxTypeName, row + 1, 0);
-    layout2->addWidget (mCbType, row + 1, 1);
-    layout2->addLayout (layout1, row, 2, 2, 1);
-}
-
-void VBoxOSTypeSelectorWidget::retranslateUi()
-{
-    mTxFamilyName->setText (tr ("&Type:"));
-    mCbFamily->setWhatsThis (tr ("Displays the operating system family that "
-                                 "you plan to install into this virtual machine."));
-    mTxTypeName->setText (tr ("&Version:"));
-    mCbType->setWhatsThis (tr ("Displays the operating system type that "
-                               "you plan to install into this virtual "
-                               "machine (called a guest operating system)."));
-}
-
-void VBoxOSTypeSelectorWidget::showEvent (QShowEvent *aEvent)
-{
-    activateLayout(); /* if not yet */
-    QIWithRetranslateUI <QWidget>::showEvent (aEvent);
-}
-
-void VBoxOSTypeSelectorWidget::onFamilyChanged (int aIndex)
-{
-    /* Lock the signals of mCbType to prevent it's reaction on clearing */
-    mCbType->blockSignals (true);
-    mCbType->clear();
-
-    /* Populate combo-box with OS Types related to currently selected Family ID */
-    QString familyId (mCbFamily->itemData (aIndex, RoleTypeID).toString());
-    QList <CGuestOSType> types (vboxGlobal().vmGuestOSTypeList (familyId));
-    for (int i = 0; i < types.size(); ++ i)
-    {
-        if (types [i].GetIs64Bit() && (!m_fSupportsHWVirtEx || !m_fSupportsLongMode))
-            continue;
-        int index = mCbType->count();
-        mCbType->insertItem (index, types [i].GetDescription());
-        mCbType->setItemData (index, types [i].GetId(), RoleTypeID);
-    }
-
-    /* Select the most recently chosen item */
-    if (mCurrentIds.contains (familyId))
-    {
-        QString typeId (mCurrentIds [familyId]);
-        int typeIndex = mCbType->findData (typeId, RoleTypeID);
-        if (typeIndex != -1)
-            mCbType->setCurrentIndex (typeIndex);
-    }
-    /* Or select WinXP item for Windows family as default */
-    else if (familyId == "Windows")
-    {
-        int xpIndex = mCbType->findData ("WindowsXP", RoleTypeID);
-        if (xpIndex != -1)
-            mCbType->setCurrentIndex (xpIndex);
-    }
-    /* Or select Ubuntu item for Linux family as default */
-    else if (familyId == "Linux")
-    {
-        int ubIndex = mCbType->findData ("Ubuntu", RoleTypeID);
-        if (ubIndex != -1)
-            mCbType->setCurrentIndex (ubIndex);
-    }
-    /* Else simply select the first one present */
-    else mCbType->setCurrentIndex (0);
-
-    /* Update all the stuff with new type */
-    onTypeChanged (mCbType->currentIndex());
-
-    /* Unlock the signals of mCbType */
-    mCbType->blockSignals (false);
-}
-
-void VBoxOSTypeSelectorWidget::onTypeChanged (int aIndex)
-{
-    /* Save the new selected OS Type */
-    mType = vboxGlobal().vmGuestOSType (
-        mCbType->itemData (aIndex, RoleTypeID).toString(),
-        mCbFamily->itemData (mCbFamily->currentIndex(), RoleTypeID).toString());
-    mPxTypeIcon->setPixmap (vboxGlobal().vmGuestOSTypeIcon (mType.GetId()));
-
-    /* Save the most recently used item */
-    mCurrentIds [mType.GetFamilyId()] = mType.GetId();
-
-    /* Notify connected objects about type was changed */
-    emit osTypeChanged();
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorWidget.h	(revision 41386)
+++ 	(revision )
@@ -1,78 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt GUI ("VirtualBox"):
- * VBoxOSTypeSelectorWidget class declaration
- */
-
-/*
- * Copyright (C) 2008-2010 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 __VBoxOSTypeSelectorWidget_h__
-#define __VBoxOSTypeSelectorWidget_h__
-
-#include "QIWithRetranslateUI.h"
-#include "VBoxGlobal.h"
-
-#include <QWidget>
-
-class QComboBox;
-class QLabel;
-
-class VBoxOSTypeSelectorWidget : public QIWithRetranslateUI <QWidget>
-{
-    Q_OBJECT;
-    Q_PROPERTY(CGuestOSType type READ type WRITE setType);
-
-public:
-
-    VBoxOSTypeSelectorWidget (QWidget *aParent);
-
-    void setType (const CGuestOSType &aType);
-    CGuestOSType type() const;
-
-    void setLayoutPosition (int aPos);
-    void activateLayout();
-
-signals:
-
-    void osTypeChanged();
-
-protected:
-
-    void retranslateUi();
-    void showEvent (QShowEvent *aEvent);
-
-private slots:
-
-    void onFamilyChanged (int aIndex);
-    void onTypeChanged (int aIndex);
-
-private:
-
-    QLabel *mTxFamilyName;
-    QLabel *mTxTypeName;
-    QLabel *mPxTypeIcon;
-    QComboBox *mCbFamily;
-    QComboBox *mCbType;
-
-    CGuestOSType mType;
-    QMap <QString, QString> mCurrentIds;
-
-    int mLayoutPosition;
-    bool mLayoutActivated;
-
-    bool m_fSupportsHWVirtEx;
-    bool m_fSupportsLongMode;
-};
-
-#endif /* __VBoxOSTypeSelectorWidget_h__ */
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 41387)
@@ -402,9 +402,4 @@
     switch (m_type)
     {
-        /* New VM wizard much wider than others, fixing: */
-        case UIWizardType_NewVM:
-            dRatio -= 0.5;
-            break;
-        /* New VD wizard much taller than others, fixing: */
         case UIWizardType_NewVD:
         case UIWizardType_CloneVD:
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp	(revision 41387)
@@ -29,5 +29,5 @@
 #include "UIWizardNewVM.h"
 #include "UIMessageCenter.h"
-#include "VBoxOSTypeSelectorWidget.h"
+#include "UINameAndSystemEditor.h"
 #include "QIRichTextLabel.h"
 
@@ -148,7 +148,7 @@
         if (strNewName.contains(gs_OSTypePattern[i].pattern))
         {
-            m_pTypeSelector->blockSignals(true);
-            m_pTypeSelector->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
-            m_pTypeSelector->blockSignals(false);
+            m_pNameAndSystemEditor->blockSignals(true);
+            m_pNameAndSystemEditor->setType(vboxGlobal().vmGuestOSType(gs_OSTypePattern[i].pcstId));
+            m_pNameAndSystemEditor->blockSignals(false);
             break;
         }
@@ -159,5 +159,5 @@
     /* 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());
+    m_pNameAndSystemEditor->disconnect(SIGNAL(sigNameChanged(const QString &)), thisImp(), SLOT(sltNameChanged(const QString &)));
 }
 
@@ -181,5 +181,5 @@
     QString strDefaultMachinesFolder = vbox.GetSystemProperties().GetDefaultMachineFolder();
     /* Compose machine filename: */
-    QString strMachineFilename = vbox.ComposeMachineFilename(m_pNameEditor->text(), strDefaultMachinesFolder);
+    QString strMachineFilename = vbox.ComposeMachineFilename(m_pNameAndSystemEditor->name(), strDefaultMachinesFolder);
     /* Compose machine folder/basename: */
     QFileInfo fileInfo(strMachineFilename);
@@ -228,38 +228,25 @@
     {
         m_pLabel = new QIRichTextLabel(this);
-        m_pNameCnt = new QGroupBox(this);
+        m_pNameAndSystemCnt = new QGroupBox(this);
         {
-            m_pNameCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pNameCntLayout = new QHBoxLayout(m_pNameCnt);
+            m_pNameAndSystemCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QHBoxLayout *pNameAndSystemLayout = new QHBoxLayout(m_pNameAndSystemCnt);
             {
-                m_pNameEditor = new QLineEdit(m_pNameCnt);
-                pNameCntLayout->addWidget(m_pNameEditor);
-            }
-        }
-        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);
+                m_pNameAndSystemEditor = new UINameAndSystemEditor(m_pNameAndSystemCnt);
+                pNameAndSystemLayout->addWidget(m_pNameAndSystemEditor);
             }
         }
         pMainLayout->addWidget(m_pLabel);
-        pMainLayout->addWidget(m_pNameCnt);
-        pMainLayout->addWidget(m_pTypeCnt);
+        pMainLayout->addWidget(m_pNameAndSystemCnt);
         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_pNameAndSystemEditor, SIGNAL(sigNameChanged(const QString &)), this, SLOT(sltNameChanged(const QString &)));
+    connect(m_pNameAndSystemEditor, SIGNAL(sigOsTypeChanged()), this, SLOT(sltOsTypeChanged()));
 
     /* Register fields: */
-    registerField("name*", m_pNameEditor);
-    registerField("type", m_pTypeSelector, "type", SIGNAL(osTypeChanged()));
+    registerField("name*", m_pNameAndSystemEditor, "name", SIGNAL(sigNameChanged(const QString &)));
+    registerField("type", m_pNameAndSystemEditor, "type", SIGNAL(sigOsTypeChanged()));
     registerField("machineFolder", this, "machineFolder");
     registerField("machineBaseName", this, "machineBaseName");
@@ -288,6 +275,5 @@
                                         "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"));
+    m_pNameAndSystemCnt->setTitle(UIWizardNewVM::tr("Name and operating system"));
 }
 
@@ -296,7 +282,4 @@
     /* Translate page: */
     retranslateUi();
-
-    /* 'Name' field should have focus initially: */
-    m_pNameEditor->setFocus();
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.h	(revision 41387)
@@ -25,6 +25,5 @@
 /* Forward declarations: */
 class QGroupBox;
-class QLineEdit;
-class VBoxOSTypeSelectorWidget;
+class UINameAndSystemEditor;
 class QIRichTextLabel;
 
@@ -59,8 +58,6 @@
 
     /* Widgets: */
-    QGroupBox *m_pNameCnt;
-    QLineEdit *m_pNameEditor;
-    QGroupBox *m_pTypeCnt;
-    VBoxOSTypeSelectorWidget *m_pTypeSelector;
+    QGroupBox *m_pNameAndSystemCnt;
+    UINameAndSystemEditor *m_pNameAndSystemEditor;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 41386)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageExpert.cpp	(revision 41387)
@@ -32,5 +32,5 @@
 #include "UIWizardNewVM.h"
 #include "UIIconPool.h"
-#include "VBoxOSTypeSelectorWidget.h"
+#include "UINameAndSystemEditor.h"
 #include "VBoxGuestRAMSlider.h"
 #include "VBoxMediaComboBox.h"
@@ -44,23 +44,11 @@
     {
         pMainLayout->setContentsMargins(8, 6, 8, 6);
-        m_pNameCnt = new QGroupBox(this);
-        {
-            m_pNameCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pNameCntLayout = new QHBoxLayout(m_pNameCnt);
-            {
-                m_pNameEditor = new QLineEdit(m_pNameCnt);
-                pNameCntLayout->addWidget(m_pNameEditor);
-            }
-        }
-        m_pTypeCnt = new QGroupBox(this);
-        {
-            m_pTypeCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
-            QHBoxLayout *pTypeCntLayout = new QHBoxLayout(m_pTypeCnt);
-            {
-                m_pTypeSelector = new VBoxOSTypeSelectorWidget(m_pTypeCnt);
-                {
-                    m_pTypeSelector->activateLayout();
-                }
-                pTypeCntLayout->addWidget(m_pTypeSelector);
+        m_pNameAndSystemCnt = new QGroupBox(this);
+        {
+            m_pNameAndSystemCnt->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
+            QHBoxLayout *pNameAndSystemLayout = new QHBoxLayout(m_pNameAndSystemCnt);
+            {
+                m_pNameAndSystemEditor = new UINameAndSystemEditor(m_pNameAndSystemCnt);
+                pNameAndSystemLayout->addWidget(m_pNameAndSystemEditor);
             }
         }
@@ -75,5 +63,5 @@
                     m_pRamSlider->setOrientation(Qt::Horizontal);
                     m_pRamSlider->setTickPosition(QSlider::TicksBelow);
-                    m_pRamSlider->setValue(m_pTypeSelector->type().GetRecommendedRAM());
+                    m_pRamSlider->setValue(m_pNameAndSystemEditor->type().GetRecommendedRAM());
                 }
                 m_pRamEditor = new QILineEdit(m_pMemoryCnt);
@@ -83,5 +71,5 @@
                     m_pRamEditor->setAlignment(Qt::AlignRight);
                     m_pRamEditor->setValidator(new QIntValidator(m_pRamSlider->minRAM(), m_pRamSlider->maxRAM(), this));
-                    m_pRamEditor->setText(QString::number(m_pTypeSelector->type().GetRecommendedRAM()));
+                    m_pRamEditor->setText(QString::number(m_pNameAndSystemEditor->type().GetRecommendedRAM()));
                 }
                 m_pRamUnits = new QLabel(m_pMemoryCnt);
@@ -141,6 +129,5 @@
             }
         }
-        pMainLayout->addWidget(m_pNameCnt);
-        pMainLayout->addWidget(m_pTypeCnt);
+        pMainLayout->addWidget(m_pNameAndSystemCnt);
         pMainLayout->addWidget(m_pMemoryCnt);
         pMainLayout->addWidget(m_pDiskCnt);
@@ -150,6 +137,6 @@
 
     /* Setup connections: */
-    connect(m_pNameEditor, SIGNAL(textChanged(const QString &)), this, SLOT(sltNameChanged(const QString &)));
-    connect(m_pTypeSelector, SIGNAL(osTypeChanged()), this, SLOT(sltOsTypeChanged()));
+    connect(m_pNameAndSystemEditor, SIGNAL(sigNameChanged(const QString &)), this, SLOT(sltNameChanged(const QString &)));
+    connect(m_pNameAndSystemEditor, SIGNAL(sigOsTypeChanged()), 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 &)));
@@ -163,6 +150,6 @@
     qRegisterMetaType<CMedium>();
     /* Register fields: */
-    registerField("name*", m_pNameEditor);
-    registerField("type", m_pTypeSelector, "type", SIGNAL(osTypeChanged()));
+    registerField("name*", m_pNameAndSystemEditor, "name", SIGNAL(sigNameChanged(const QString &)));
+    registerField("type", m_pNameAndSystemEditor, "type", SIGNAL(sigOsTypeChanged()));
     registerField("machineFolder", this, "machineFolder");
     registerField("machineBaseName", this, "machineBaseName");
@@ -179,5 +166,5 @@
 
     /* Fetch recommended RAM value: */
-    CGuestOSType type = m_pTypeSelector->type();
+    CGuestOSType type = m_pNameAndSystemEditor->type();
     m_pRamSlider->setValue(type.GetRecommendedRAM());
     m_pRamEditor->setText(QString::number(type.GetRecommendedRAM()));
@@ -193,5 +180,5 @@
 
     /* Fetch recommended RAM value: */
-    CGuestOSType type = m_pTypeSelector->type();
+    CGuestOSType type = m_pNameAndSystemEditor->type();
     m_pRamSlider->setValue(type.GetRecommendedRAM());
     m_pRamEditor->setText(QString::number(type.GetRecommendedRAM()));
@@ -237,6 +224,5 @@
 {
     /* Translate widgets: */
-    m_pNameCnt->setTitle(UIWizardNewVM::tr("&Name"));
-    m_pTypeCnt->setTitle(UIWizardNewVM::tr("Operating system"));
+    m_pNameAndSystemCnt->setTitle(UIWizardNewVM::tr("Name and operating system"));
     m_pMemoryCnt->setTitle(UIWizardNewVM::tr("&Memory size"));
     m_pRamUnits->setText(VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"));
@@ -253,7 +239,4 @@
     /* Translate page: */
     retranslateUi();
-
-    /* 'Name' field should have focus initially: */
-    m_pNameEditor->setFocus();
 }
 
