Index: trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp	(revision 48537)
+++ trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendCOM.cpp	(revision 48538)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2012 Oracle Corporation
+ * Copyright (C) 2012-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -290,4 +290,5 @@
         case KNetworkAttachmentType_HostOnly: return QApplication::translate("VBoxGlobal", "Host-only Adapter", "NetworkAttachmentType");
         case KNetworkAttachmentType_Generic:  return QApplication::translate("VBoxGlobal", "Generic Driver", "NetworkAttachmentType");
+        case KNetworkAttachmentType_NATNetwork:  return QApplication::translate("VBoxGlobal", "NAT Network", "NetworkAttachmentType");
         default: AssertMsgFailed(("No text for %d", type)); break;
     }
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 48537)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 48538)
@@ -1397,4 +1397,7 @@
                     attType = attType.arg (tr ("Generic, '%1'",
                         "details report (network)").arg (adapter.GetGenericDriver()));
+                else if (type == KNetworkAttachmentType_NATNetwork)
+                    attType = attType.arg (tr ("NAT network, '%1'",
+                        "details report (network)").arg (adapter.GetNATNetwork()));
                 else
                     attType = attType.arg (gpConverter->toString (type));
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp	(revision 48537)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElements.cpp	(revision 48538)
@@ -677,4 +677,10 @@
                             break;
                         }
+                        case KNetworkAttachmentType_NATNetwork:
+                        {
+                            strAttachmentType = strAttachmentType.arg(QApplication::translate("UIGDetails", "NAT Network, '%1'", "details (network)")
+                                                                      .arg(adapter.GetNATNetwork()));
+                            break;
+                        }
                         default:
                         {
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 48537)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 48538)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2008-2012 Oracle Corporation
+ * Copyright (C) 2008-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -30,4 +30,5 @@
 #include "CNATEngine.h"
 #include "CHostNetworkInterface.h"
+#include "CNATNetwork.h"
 
 /* Other VBox includes: */
@@ -142,4 +143,7 @@
             adapterData.m_strGenericProperties = m_pGenericPropertiesTextEdit->toPlainText();
             break;
+        case KNetworkAttachmentType_NATNetwork:
+            adapterData.m_strNATNetworkName = alternativeName();
+            break;
         default:
             break;
@@ -211,4 +215,13 @@
             {
                 message.second << tr("No generic driver is currently selected.");
+                fPass = false;
+            }
+            break;
+        }
+        case KNetworkAttachmentType_NATNetwork:
+        {
+            if (alternativeName().isNull())
+            {
+                message.second << tr("No NAT network name is currently specified.");
                 fPass = false;
             }
@@ -289,4 +302,7 @@
         case KNetworkAttachmentType_Generic:
             strResult = m_strGenericDriverName;
+            break;
+        case KNetworkAttachmentType_NATNetwork:
+            strResult = m_strNATNetworkName;
             break;
         default:
@@ -420,4 +436,13 @@
             break;
         }
+        case KNetworkAttachmentType_NATNetwork:
+        {
+            m_pAdapterNameCombo->setWhatsThis(tr("Enter the name of the NAT network that this network card "
+                                                 "will be connected to. You can create and remove adapters "
+                                                 "using the global network settings in the virtual machine "
+                                                 "manager window."));
+            m_pAdapterNameCombo->setEditable(true);
+            break;
+        }
         default:
         {
@@ -480,4 +505,12 @@
                     emit sigTabUpdated();
             }
+            break;
+        }
+        case KNetworkAttachmentType_NATNetwork:
+        {
+            QString newName(m_pAdapterNameCombo->itemData(m_pAdapterNameCombo->currentIndex()).toString() == QString(pEmptyItemCode) ||
+                            m_pAdapterNameCombo->currentText().isEmpty() ? QString() : m_pAdapterNameCombo->currentText());
+            if (m_strNATNetworkName != newName)
+                m_strNATNetworkName = newName;
             break;
         }
@@ -560,4 +593,8 @@
         m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_Generic));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_Generic);
+        m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
+        ++iAttachmentTypeIndex;
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_NATNetwork));
+        m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_NATNetwork);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
@@ -659,4 +696,7 @@
             m_pAdapterNameCombo->insertItems(0, m_pParent->genericDriverList());
             break;
+        case KNetworkAttachmentType_NATNetwork:
+            m_pAdapterNameCombo->insertItems(0, m_pParent->natNetworkList());
+            break;
         default:
             break;
@@ -670,4 +710,5 @@
             case KNetworkAttachmentType_Bridged:
             case KNetworkAttachmentType_HostOnly:
+            case KNetworkAttachmentType_NATNetwork:
             {
                 /* If adapter list is empty => add 'Not selected' item: */
@@ -706,4 +747,5 @@
         case KNetworkAttachmentType_HostOnly:
         case KNetworkAttachmentType_Generic:
+        case KNetworkAttachmentType_NATNetwork:
         {
             m_pAdapterNameCombo->setCurrentIndex(position(m_pAdapterNameCombo, alternativeName()));
@@ -770,4 +812,5 @@
     refreshHostInterfaceList();
     refreshGenericDriverList(true);
+    refreshNATNetworkList();
 
     /* For each network adapter: */
@@ -917,4 +960,7 @@
                                 updateGenericProperties(adapter, adapterData.m_strGenericProperties);
                                 break;
+                            case KNetworkAttachmentType_NATNetwork:
+                                adapter.SetNATNetwork(adapterData.m_strNATNetworkName);
+                                break;
                             default:
                                 break;
@@ -1091,4 +1137,16 @@
 }
 
+void UIMachineSettingsNetworkPage::refreshNATNetworkList()
+{
+    /* Reload NAT network list: */
+    m_natNetworkList.clear();
+    const CNATNetworkVector &nws = vboxGlobal().virtualBox().GetNATNetworks();
+    for (int i = 0; i < nws.size(); ++i)
+    {
+        const CNATNetwork &nw = nws[i];
+        m_natNetworkList << nw.GetNetworkName();
+    }
+}
+
 /* static */
 QStringList UIMachineSettingsNetworkPage::otherInternalNetworkList()
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h	(revision 48537)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.h	(revision 48538)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2008-2012 Oracle Corporation
+ * Copyright (C) 2008-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -44,4 +44,5 @@
         , m_strGenericDriverName(QString())
         , m_strGenericProperties(QString())
+        , m_strNATNetworkName(QString())
         , m_strMACAddress(QString())
         , m_fCableConnected(false)
@@ -60,4 +61,5 @@
                (m_strGenericDriverName == other.m_strGenericDriverName) &&
                (m_strGenericProperties == other.m_strGenericProperties) &&
+               (m_strNATNetworkName == other.m_strNATNetworkName) &&
                (m_strMACAddress == other.m_strMACAddress) &&
                (m_fCableConnected == other.m_fCableConnected) &&
@@ -78,4 +80,5 @@
     QString m_strGenericDriverName;
     QString m_strGenericProperties;
+    QString m_strNATNetworkName;
     QString m_strMACAddress;
     bool m_fCableConnected;
@@ -165,4 +168,5 @@
     QString m_strHostInterfaceName;
     QString m_strGenericDriverName;
+    QString m_strNATNetworkName;
     UIPortForwardingDataList m_portForwardingRules;
 };
@@ -186,4 +190,6 @@
     /* Generic driver list: */
     const QStringList& genericDriverList() const { return m_genericDriverList; }
+    /* NAT network list: */
+    const QStringList& natNetworkList() const { return m_natNetworkList; }
 
 protected:
@@ -225,4 +231,5 @@
     void refreshHostInterfaceList();
     void refreshGenericDriverList(bool fFullRefresh = false);
+    void refreshNATNetworkList();
 
     /* Various static stuff: */
@@ -240,4 +247,5 @@
     QStringList m_hostInterfaceList;
     QStringList m_genericDriverList;
+    QStringList m_natNetworkList;
 
     /* Cache: */
