Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 41819)
@@ -145,4 +145,5 @@
 VBOX_GUI_INC_DIRS = \
 	./src \
+	./src/converter \
 	./src/extensions \
 	./src/globals \
@@ -275,5 +276,4 @@
 	src/globals/VBoxGlobal.h \
 	src/globals/VBoxUtils.h \
-	src/globals/COMEnumsWrapper.h \
 	src/net/UINetworkManager.h \
 	src/net/UINetworkManagerDialog.h \
@@ -446,4 +446,7 @@
 	src/VBoxVMInformationDlg.cpp \
 	src/UIVMLogViewer.cpp \
+	src/converter/UIConverter.cpp \
+	src/converter/UIConverterBackendCOM.cpp \
+	src/converter/UIConverterBackendGlobal.cpp \
 	src/extensions/QIAdvancedSlider.cpp \
 	src/extensions/QIArrowButtonPress.cpp \
@@ -479,5 +482,4 @@
 	src/globals/UIMessageCenter.cpp \
 	src/globals/VBoxGlobal.cpp \
-	src/globals/COMEnumsWrapper.cpp \
 	src/medium/UIMediumDefs.cpp \
 	src/medium/UIMedium.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/UIMediumTypeChangeDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/UIMediumTypeChangeDialog.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/UIMediumTypeChangeDialog.cpp	(revision 41819)
@@ -30,5 +30,5 @@
 #include "QILabel.h"
 #include "QIDialogButtonBox.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* Constructor: */
@@ -126,5 +126,5 @@
     QList<QRadioButton*> buttons = findChildren<QRadioButton*>();
     for (int i = 0; i < buttons.size(); ++i)
-        buttons[i]->setText(gCOMenum->toString(buttons[i]->property("mediumType").value<KMediumType>()));
+        buttons[i]->setText(gpConverter->toString(buttons[i]->property("mediumType").value<KMediumType>()));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMInformationDlg.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMInformationDlg.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMInformationDlg.cpp	(revision 41819)
@@ -34,4 +34,5 @@
 #include "VBoxGlobal.h"
 #include "VBoxVMInformationDlg.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -664,5 +665,5 @@
     QString header = "<tr><td></td><td colspan=2><nobr>&nbsp;&nbsp;%1:</nobr></td></tr>";
     CStorageController ctr = mSession.GetMachine().GetStorageControllerByName (aCtrName);
-    QString name = vboxGlobal().toString (StorageSlot (ctr.GetBus(), aPort, aDevice));
+    QString name = gpConverter->toString (StorageSlot (ctr.GetBus(), aPort, aDevice));
     return header.arg (name) + composeArticle (aBelongsTo, 2);
 }
Index: unk/src/VBox/Frontends/VirtualBox/src/globals/COMEnumsWrapper.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/COMEnumsWrapper.cpp	(revision 41818)
+++ 	(revision )
@@ -1,758 +1,0 @@
-/* $Id$ */
-/** @file
- *
- * VBox frontends: Qt GUI ("VirtualBox"):
- * COMEnumsWrapper class implementation
- */
-
-/*
- * Copyright (C) 2006-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.
- */
-
-/* Qt includes: */
-#include <QApplication>
-#include <QColor>
-#include <QPixmap>
-
-/* GUI includes: */
-#include "COMEnumsWrapper.h"
-#include "UIDefs.h"
-
-/* static */
-COMEnumsWrapper* COMEnumsWrapper::m_spInstance = 0;
-
-/* static */
-void COMEnumsWrapper::prepare()
-{
-    /* Make sure instance WAS NOT created yet: */
-    if (m_spInstance)
-        return;
-
-    /* Prepare instance: */
-    m_spInstance = new COMEnumsWrapper;
-}
-
-/* static */
-void COMEnumsWrapper::cleanup()
-{
-    /* Make sure instance IS still created: */
-    if (!m_spInstance)
-        return;
-
-    /* Cleanup instance: */
-    delete m_spInstance;
-    m_spInstance = 0;
-}
-
-/* KMachineState => QString: */
-QString COMEnumsWrapper::toString(KMachineState state) const
-{
-    AssertMsg(!m_machineStateNames.value(state).isNull(), ("No text for %d", state));
-    return m_machineStateNames.value(state);
-}
-
-/* KMachineState => QColor: */
-const QColor& COMEnumsWrapper::toColor(KMachineState state) const
-{
-    static const QColor none;
-    AssertMsg(m_machineStateColors.value(state), ("No color for %d", state));
-    return m_machineStateColors.value(state) ? *m_machineStateColors.value(state) : none;
-}
-
-/* KMachineState => QPixmap: */
-QPixmap COMEnumsWrapper::toIcon(KMachineState state) const
-{
-    QPixmap *pPixMap = m_machineStateIcons.value(state);
-    AssertMsg(pPixMap, ("Icon for VM state %d must be defined", state));
-    return pPixMap ? *pPixMap : QPixmap();
-}
-
-/* KSessionState => QString: */
-QString COMEnumsWrapper::toString(KSessionState state) const
-{
-    AssertMsg(!m_sessionStateNames.value(state).isNull(), ("No text for %d", state));
-    return m_sessionStateNames.value(state);
-}
-
-/* KDeviceType => QString: */
-QString COMEnumsWrapper::toString(KDeviceType type) const
-{
-    AssertMsg(!m_deviceTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_deviceTypeNames.value(type);
-}
-
-/* QString => KDeviceType: */
-KDeviceType COMEnumsWrapper::toDeviceType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_deviceTypeNames.begin(), m_deviceTypeNames.end(), strType);
-    AssertMsg(it != m_deviceTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KDeviceType(it.key());
-}
-
-/* KClipboardMode => QString: */
-QString COMEnumsWrapper::toString(KClipboardMode mode) const
-{
-    AssertMsg(!m_clipboardTypeNames.value(mode).isNull(), ("No text for %d", mode));
-    return m_clipboardTypeNames.value(mode);
-}
-
-/* QString => KClipboardMode: */
-KClipboardMode COMEnumsWrapper::toClipboardModeType(const QString &strMode) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_clipboardTypeNames.begin(), m_clipboardTypeNames.end(), strMode);
-    AssertMsg(it != m_clipboardTypeNames.end(), ("No value for {%s}", strMode.toLatin1().constData()));
-    return KClipboardMode(it.key());
-}
-
-/* KMediumType => QString: */
-QString COMEnumsWrapper::toString(KMediumType type) const
-{
-    AssertMsg(!m_mediumTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_mediumTypeNames.value(type);
-}
-
-/* KMediumVariant => QString: */
-QString COMEnumsWrapper::toString(KMediumVariant variant) const
-{
-    /* note: KMediumVariant_Diff and KMediumVariant_Fixed are so far mutually exclusive */
-    switch (variant)
-    {
-        case KMediumVariant_Standard:
-            return m_mediumVariantNames[0];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Diff):
-            return m_mediumVariantNames[1];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed):
-            return m_mediumVariantNames[2];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkSplit2G):
-            return m_mediumVariantNames[3];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkSplit2G | KMediumVariant_Diff):
-            return m_mediumVariantNames[4];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed | KMediumVariant_VmdkSplit2G):
-            return m_mediumVariantNames[5];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkStreamOptimized):
-            return m_mediumVariantNames[6];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_VmdkStreamOptimized | KMediumVariant_Diff):
-            return m_mediumVariantNames[7];
-        case (KMediumVariant)(KMediumVariant_Standard | KMediumVariant_Fixed | KMediumVariant_VmdkESX):
-            return m_mediumVariantNames[8];
-        default:
-            AssertMsgFailed(("No text for %d", variant));
-            break;
-    }
-    return QString();
-}
-
-/* KNetworkAttachmentType => QString: */
-QString COMEnumsWrapper::toString(KNetworkAttachmentType type) const
-{
-    AssertMsg(!m_networkAttachmentTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_networkAttachmentTypeNames.value(type);
-}
-
-/* QString => KNetworkAttachmentType: */
-KNetworkAttachmentType COMEnumsWrapper::toNetworkAttachmentType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_networkAttachmentTypeNames.begin(), m_networkAttachmentTypeNames.end(), strType);
-    AssertMsg(it != m_networkAttachmentTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KNetworkAttachmentType(it.key());
-}
-
-/* KNetworkAdapterType => QString: */
-QString COMEnumsWrapper::toString(KNetworkAdapterType type) const
-{
-    AssertMsg(!m_networkAdapterTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_networkAdapterTypeNames.value(type);
-}
-
-/* QString => KNetworkAdapterType: */
-KNetworkAdapterType COMEnumsWrapper::toNetworkAdapterType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_networkAdapterTypeNames.begin(), m_networkAdapterTypeNames.end(), strType);
-    AssertMsg(it != m_networkAdapterTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KNetworkAdapterType(it.key());
-}
-
-/* KNetworkAdapterPromiscModePolicy => QString: */
-QString COMEnumsWrapper::toString(KNetworkAdapterPromiscModePolicy policy) const
-{
-    AssertMsg(!m_networkAdapterPromiscModePolicyNames.value(policy).isNull(), ("No text for %d", policy));
-    return m_networkAdapterPromiscModePolicyNames.value(policy);
-}
-
-/* QString => KNetworkAdapterPromiscModePolicy: */
-KNetworkAdapterPromiscModePolicy COMEnumsWrapper::toNetworkAdapterPromiscModePolicyType(const QString &strPolicy) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_networkAdapterPromiscModePolicyNames.begin(), m_networkAdapterPromiscModePolicyNames.end(), strPolicy);
-    AssertMsg(it != m_networkAdapterPromiscModePolicyNames.end(), ("No value for {%s}", strPolicy.toLatin1().constData()));
-    return KNetworkAdapterPromiscModePolicy(it.key());
-}
-
-/* KPortMode => QString: */
-QString COMEnumsWrapper::toString(KPortMode mode) const
-{
-    AssertMsg(!m_portModeTypeNames.value(mode).isNull(), ("No text for %d", mode));
-    return m_portModeTypeNames.value(mode);
-}
-
-/* QString => KPortMode: */
-KPortMode COMEnumsWrapper::toPortMode(const QString &strMode) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_portModeTypeNames.begin(), m_portModeTypeNames.end(), strMode);
-    AssertMsg(it != m_portModeTypeNames.end(), ("No value for {%s}", strMode.toLatin1().constData()));
-    return KPortMode(it.key());
-}
-
-/* KUSBDeviceState => QString: */
-QString COMEnumsWrapper::toString(KUSBDeviceState state) const
-{
-    AssertMsg(!m_usbDeviceStateNames.value(state).isNull(), ("No text for %d", state));
-    return m_usbDeviceStateNames.value(state);
-}
-
-/* KUSBDeviceFilterAction => QString: */
-QString COMEnumsWrapper::toString(KUSBDeviceFilterAction action) const
-{
-    AssertMsg(!m_usbDeviceFilterActionNames.value(action).isNull(), ("No text for %d", action));
-    return m_usbDeviceFilterActionNames.value(action);
-}
-
-/* QString => KUSBDeviceFilterAction: */
-KUSBDeviceFilterAction COMEnumsWrapper::toUSBDevFilterAction(const QString &strActions) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_usbDeviceFilterActionNames.begin(), m_usbDeviceFilterActionNames.end(), strActions);
-    AssertMsg(it != m_usbDeviceFilterActionNames.end(), ("No value for {%s}", strActions.toLatin1().constData()));
-    return KUSBDeviceFilterAction(it.key());
-}
-
-/* KAudioDriverType => QString: */
-QString COMEnumsWrapper::toString(KAudioDriverType type) const
-{
-    AssertMsg(!m_audioDriverTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_audioDriverTypeNames.value(type);
-}
-
-/* QString => KAudioDriverType: */
-KAudioDriverType COMEnumsWrapper::toAudioDriverType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_audioDriverTypeNames.begin(), m_audioDriverTypeNames.end(), strType);
-    AssertMsg(it != m_audioDriverTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KAudioDriverType(it.key());
-}
-
-/* KAudioControllerType => QString: */
-QString COMEnumsWrapper::toString(KAudioControllerType type) const
-{
-    AssertMsg(!m_audioControllerTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_audioControllerTypeNames.value(type);
-}
-
-/* QString => KAudioControllerType: */
-KAudioControllerType COMEnumsWrapper::toAudioControllerType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_audioControllerTypeNames.begin(), m_audioControllerTypeNames.end(), strType);
-    AssertMsg(it != m_audioControllerTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KAudioControllerType(it.key());
-}
-
-/* KAuthType => QString: */
-QString COMEnumsWrapper::toString(KAuthType type) const
-{
-    AssertMsg(!m_authTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_authTypeNames.value(type);
-}
-
-/* QString => KAuthType: */
-KAuthType COMEnumsWrapper::toAuthType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_authTypeNames.begin(), m_authTypeNames.end(), strType);
-    AssertMsg(it != m_authTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KAuthType(it.key());
-}
-
-/* KStorageBus => QString: */
-QString COMEnumsWrapper::toString(KStorageBus bus) const
-{
-    AssertMsg(!m_storageBusNames.value(bus).isNull(), ("No text for %d", bus));
-    return m_storageBusNames[bus];
-}
-
-/* QString => KStorageBus: */
-KStorageBus COMEnumsWrapper::toStorageBusType(const QString &strBus) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_storageBusNames.begin(), m_storageBusNames.end(), strBus);
-    AssertMsg(it != m_storageBusNames.end(), ("No value for {%s}", strBus.toLatin1().constData()));
-    return KStorageBus(it.key());
-}
-
-/* KStorageBus/LONG => QString: */
-QString COMEnumsWrapper::toString(KStorageBus bus, LONG iChannel) const
-{
-    QString strChannel;
-
-    switch (bus)
-    {
-        case KStorageBus_IDE:
-        {
-            if (iChannel == 0 || iChannel == 1)
-            {
-                strChannel = m_storageBusChannelNames[iChannel];
-                break;
-            }
-            AssertMsgFailed(("Invalid IDE channel %d\n", iChannel));
-            break;
-        }
-        case KStorageBus_SATA:
-        case KStorageBus_SCSI:
-        {
-            strChannel = m_storageBusChannelNames[2].arg(iChannel);
-            break;
-        }
-        case KStorageBus_Floppy:
-        {
-            AssertMsgFailed(("Floppy have no channels, only devices\n"));
-            break;
-        }
-        default:
-        {
-            AssertMsgFailed(("Invalid bus type %d\n", bus));
-            break;
-        }
-    }
-
-    Assert(!strChannel.isNull());
-    return strChannel;
-}
-
-/* KStorageBus/QString => LONG: */
-LONG COMEnumsWrapper::toStorageChannel(KStorageBus bus, const QString &strChannel) const
-{
-    LONG iChannel = 0;
-
-    switch (bus)
-    {
-        case KStorageBus_IDE:
-        {
-            UILongStringHash::const_iterator it = qFind(m_storageBusChannelNames.begin(), m_storageBusChannelNames.end(), strChannel);
-            AssertMsgBreak(it != m_storageBusChannelNames.end(), ("No value for {%s}\n", strChannel.toLatin1().constData()));
-            iChannel = it.key();
-            break;
-        }
-        case KStorageBus_SATA:
-        case KStorageBus_SCSI:
-        {
-            QString strTemplate = m_storageBusChannelNames[2].arg("");
-            if (strChannel.startsWith(strTemplate))
-            {
-                iChannel = strChannel.right(strChannel.length() - strTemplate.length()).toLong();
-                break;
-            }
-            AssertMsgFailed(("Invalid channel {%s}\n", strChannel.toLatin1().constData()));
-            break;
-        }
-        case KStorageBus_Floppy:
-        {
-            iChannel = 0;
-            break;
-        }
-        default:
-        {
-            AssertMsgFailed(("Invalid bus type %d\n", bus));
-            break;
-        }
-    }
-
-    return iChannel;
-}
-
-/* KStorageBus/LONG/LONG => QString: */
-QString COMEnumsWrapper::toString(KStorageBus bus, LONG iChannel, LONG iDevice) const
-{
-    NOREF(iChannel);
-
-    QString strDevice;
-
-    switch (bus)
-    {
-        case KStorageBus_IDE:
-        {
-            if (iDevice == 0 || iDevice == 1)
-            {
-                strDevice = m_storageBusDeviceNames[iDevice];
-                break;
-            }
-            AssertMsgFailed(("Invalid device %d\n", iDevice));
-            break;
-        }
-        case KStorageBus_SATA:
-        case KStorageBus_SCSI:
-        {
-            AssertMsgFailed(("SATA & SCSI have no devices, only channels\n"));
-            break;
-        }
-        case KStorageBus_Floppy:
-        {
-            AssertMsgBreak(iChannel == 0, ("Invalid channel %d\n", iChannel));
-            strDevice = m_storageBusDeviceNames[2].arg(iDevice);
-            break;
-        }
-        default:
-        {
-            AssertMsgFailed(("Invalid bus type %d\n", bus));
-            break;
-        }
-    }
-
-    Assert(!strDevice.isNull());
-    return strDevice;
-}
-
-/* KStorageBus/LONG/QString => LONG: */
-LONG COMEnumsWrapper::toStorageDevice(KStorageBus bus, LONG iChannel, const QString &strDevice) const
-{
-    NOREF (iChannel);
-
-    LONG iDevice = 0;
-
-    switch (bus)
-    {
-        case KStorageBus_IDE:
-        {
-            UILongStringHash::const_iterator it = qFind(m_storageBusDeviceNames.begin(), m_storageBusDeviceNames.end(), strDevice);
-            AssertMsgBreak(it != m_storageBusDeviceNames.end(), ("No value for {%s}", strDevice.toLatin1().constData()));
-            iDevice = it.key();
-            break;
-        }
-        case KStorageBus_SATA:
-        case KStorageBus_SCSI:
-        {
-            iDevice = 0;
-            break;
-        }
-        case KStorageBus_Floppy:
-        {
-            AssertMsgBreak(iChannel == 0, ("Invalid channel %d\n", iChannel));
-            QString strTemplate = m_storageBusDeviceNames[2].arg("");
-            if (strDevice.startsWith(strTemplate))
-            {
-                iDevice = strDevice.right(strDevice.length() - strTemplate.length()).toLong();
-                break;
-            }
-            AssertMsgFailed(("Invalid device {%s}\n", strDevice.toLatin1().constData()));
-            break;
-        }
-        default:
-        {
-            AssertMsgFailed(("Invalid bus type %d\n", bus));
-            break;
-        }
-    }
-
-    return iDevice;
-}
-
-/* KStorageControllerType => QString: */
-QString COMEnumsWrapper::toString(KStorageControllerType type) const
-{
-    AssertMsg(!m_storageControllerTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_storageControllerTypeNames.value(type);
-}
-
-/* QString => KStorageControllerType: */
-KStorageControllerType COMEnumsWrapper::toControllerType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_storageControllerTypeNames.begin(), m_storageControllerTypeNames.end(), strType);
-    AssertMsg(it != m_storageControllerTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KStorageControllerType(it.key());
-}
-
-/* KStorageControllerType => KStorageBus: */
-KStorageBus COMEnumsWrapper::toStorageBusType(KStorageControllerType type) const
-{
-    KStorageBus bus = KStorageBus_Null;
-    switch (type)
-    {
-        case KStorageControllerType_Null: bus = KStorageBus_Null; break;
-        case KStorageControllerType_PIIX3:
-        case KStorageControllerType_PIIX4:
-        case KStorageControllerType_ICH6: bus = KStorageBus_IDE; break;
-        case KStorageControllerType_IntelAhci: bus = KStorageBus_SATA; break;
-        case KStorageControllerType_LsiLogic:
-        case KStorageControllerType_BusLogic: bus = KStorageBus_SCSI; break;
-        case KStorageControllerType_I82078: bus = KStorageBus_Floppy; break;
-        default:
-            AssertMsgFailed(("toStorageBusType: %d not handled\n", type)); break;
-    }
-    return bus;
-}
-
-/* KChipsetType => QString: */
-QString COMEnumsWrapper::toString(KChipsetType type) const
-{
-    AssertMsg(!m_pchipsetTypeNames.value(type).isNull(), ("No text for %d", type));
-    return m_pchipsetTypeNames.value(type);
-}
-
-/* QString => KStorageControllerType: */
-KChipsetType COMEnumsWrapper::toChipsetType(const QString &strType) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_pchipsetTypeNames.begin(), m_pchipsetTypeNames.end(), strType);
-    AssertMsg(it != m_pchipsetTypeNames.end(), ("No value for {%s}", strType.toLatin1().constData()));
-    return KChipsetType(it.key());
-}
-
-/* KNATProtocol => QString: */
-QString COMEnumsWrapper::toString(KNATProtocol protocol) const
-{
-    AssertMsg(!m_natProtocolNames.value(protocol).isNull(), ("No text for %d", protocol));
-    return m_natProtocolNames.value(protocol);
-}
-
-/* QString => KNATProtocol: */
-KNATProtocol COMEnumsWrapper::toNATProtocolType(const QString &strProtocol) const
-{
-    UIULongStringHash::const_iterator it = qFind(m_natProtocolNames.begin(), m_natProtocolNames.end(), strProtocol);
-    AssertMsg(it != m_natProtocolNames.end(), ("No value for {%s}", strProtocol.toLatin1().constData()));
-    return KNATProtocol(it.key());
-}
-
-/* Constructor: */
-COMEnumsWrapper::COMEnumsWrapper()
-{
-    /* Initialize machine-state colors: */
-    m_machineStateColors.insert(KMachineState_Null,                   new QColor(Qt::red));
-    m_machineStateColors.insert(KMachineState_PoweredOff,             new QColor(Qt::gray));
-    m_machineStateColors.insert(KMachineState_Saved,                  new QColor(Qt::yellow));
-    m_machineStateColors.insert(KMachineState_Aborted,                new QColor(Qt::darkRed));
-    m_machineStateColors.insert(KMachineState_Teleported,             new QColor(Qt::red));
-    m_machineStateColors.insert(KMachineState_Running,                new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_Paused,                 new QColor(Qt::darkGreen));
-    m_machineStateColors.insert(KMachineState_Stuck,                  new QColor(Qt::darkMagenta));
-    m_machineStateColors.insert(KMachineState_Teleporting,            new QColor(Qt::blue));
-    m_machineStateColors.insert(KMachineState_LiveSnapshotting,       new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_Starting,               new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_Stopping,               new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_Saving,                 new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_Restoring,              new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_TeleportingPausedVM,    new QColor(Qt::blue));
-    m_machineStateColors.insert(KMachineState_TeleportingIn,          new QColor(Qt::blue));
-    m_machineStateColors.insert(KMachineState_RestoringSnapshot,      new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_DeletingSnapshot,       new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_DeletingSnapshotOnline, new QColor(Qt::green));
-    m_machineStateColors.insert(KMachineState_DeletingSnapshotPaused, new QColor(Qt::darkGreen));
-    m_machineStateColors.insert(KMachineState_SettingUp,              new QColor(Qt::green));
-
-    /* Initialize machine state icons: */
-    static const struct
-    {
-        KMachineState state;
-        const char *pName;
-    }
-    kVMStateIcons[] =
-    {
-        {KMachineState_Null, NULL},
-        {KMachineState_PoweredOff, ":/state_powered_off_16px.png"},
-        {KMachineState_Saved, ":/state_saved_16px.png"},
-        {KMachineState_Aborted, ":/state_aborted_16px.png"},
-        {KMachineState_Teleported, ":/state_saved_16px.png"},
-        {KMachineState_Running, ":/state_running_16px.png"},
-        {KMachineState_Paused, ":/state_paused_16px.png"},
-        {KMachineState_Teleporting, ":/state_running_16px.png"},
-        {KMachineState_LiveSnapshotting, ":/state_running_16px.png"},
-        {KMachineState_Stuck, ":/state_stuck_16px.png"},
-        {KMachineState_Starting, ":/state_running_16px.png"},
-        {KMachineState_Stopping, ":/state_running_16px.png"},
-        {KMachineState_Saving, ":/state_saving_16px.png"},
-        {KMachineState_Restoring, ":/state_restoring_16px.png"},
-        {KMachineState_TeleportingPausedVM, ":/state_saving_16px.png"},
-        {KMachineState_TeleportingIn, ":/state_restoring_16px.png"},
-        {KMachineState_RestoringSnapshot, ":/state_discarding_16px.png"},
-        {KMachineState_DeletingSnapshot, ":/state_discarding_16px.png"},
-        {KMachineState_DeletingSnapshotOnline, ":/state_discarding_16px.png"},
-        {KMachineState_DeletingSnapshotPaused, ":/state_discarding_16px.png"},
-        {KMachineState_SettingUp, ":/settings_16px.png"},
-    };
-    for (uint i = 0; i < SIZEOF_ARRAY(kVMStateIcons); ++i)
-        m_machineStateIcons.insert(kVMStateIcons[i].state, new QPixmap(kVMStateIcons[i].pName));
-
-    /* Translate finally: */
-    retranslateUi();
-}
-
-/* Constructor: */
-COMEnumsWrapper::~COMEnumsWrapper()
-{
-    qDeleteAll(m_machineStateIcons);
-    qDeleteAll(m_machineStateColors);
-}
-
-/* Translate stuff: */
-void COMEnumsWrapper::retranslateUi()
-{
-    /* KMachineState => QString: */
-    m_machineStateNames[KMachineState_PoweredOff] =             QApplication::translate("VBoxGlobal", "Powered Off", "MachineState");
-    m_machineStateNames[KMachineState_Saved] =                  QApplication::translate("VBoxGlobal", "Saved", "MachineState");
-    m_machineStateNames[KMachineState_Teleported] =             QApplication::translate("VBoxGlobal", "Teleported", "MachineState");
-    m_machineStateNames[KMachineState_Aborted] =                QApplication::translate("VBoxGlobal", "Aborted", "MachineState");
-    m_machineStateNames[KMachineState_Running] =                QApplication::translate("VBoxGlobal", "Running", "MachineState");
-    m_machineStateNames[KMachineState_Paused] =                 QApplication::translate("VBoxGlobal", "Paused", "MachineState");
-    m_machineStateNames[KMachineState_Stuck] =                  QApplication::translate("VBoxGlobal", "Guru Meditation", "MachineState");
-    m_machineStateNames[KMachineState_Teleporting] =            QApplication::translate("VBoxGlobal", "Teleporting", "MachineState");
-    m_machineStateNames[KMachineState_LiveSnapshotting] =       QApplication::translate("VBoxGlobal", "Taking Live Snapshot", "MachineState");
-    m_machineStateNames[KMachineState_Starting] =               QApplication::translate("VBoxGlobal", "Starting", "MachineState");
-    m_machineStateNames[KMachineState_Stopping] =               QApplication::translate("VBoxGlobal", "Stopping", "MachineState");
-    m_machineStateNames[KMachineState_Saving] =                 QApplication::translate("VBoxGlobal", "Saving", "MachineState");
-    m_machineStateNames[KMachineState_Restoring] =              QApplication::translate("VBoxGlobal", "Restoring", "MachineState");
-    m_machineStateNames[KMachineState_TeleportingPausedVM] =    QApplication::translate("VBoxGlobal", "Teleporting Paused VM", "MachineState");
-    m_machineStateNames[KMachineState_TeleportingIn] =          QApplication::translate("VBoxGlobal", "Teleporting", "MachineState");
-    m_machineStateNames[KMachineState_RestoringSnapshot] =      QApplication::translate("VBoxGlobal", "Restoring Snapshot", "MachineState");
-    m_machineStateNames[KMachineState_DeletingSnapshot] =       QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-    m_machineStateNames[KMachineState_DeletingSnapshotOnline] = QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-    m_machineStateNames[KMachineState_DeletingSnapshotPaused] = QApplication::translate("VBoxGlobal", "Deleting Snapshot", "MachineState");
-    m_machineStateNames[KMachineState_SettingUp] =              QApplication::translate("VBoxGlobal", "Setting Up", "MachineState");
-    m_machineStateNames[KMachineState_FaultTolerantSyncing] =   QApplication::translate("VBoxGlobal", "Fault Tolerant Syncing", "MachineState");
-
-    /* KSessionState => QString: */
-    m_sessionStateNames[KSessionState_Unlocked] =  QApplication::translate("VBoxGlobal", "Unlocked", "SessionState");
-    m_sessionStateNames[KSessionState_Locked] =    QApplication::translate("VBoxGlobal", "Locked", "SessionState");
-    m_sessionStateNames[KSessionState_Spawning] =  QApplication::translate("VBoxGlobal", "Spawning", "SessionState");
-    m_sessionStateNames[KSessionState_Unlocking] = QApplication::translate("VBoxGlobal", "Unlocking", "SessionState");
-
-    /* KDeviceType => QString: */
-    m_deviceTypeNames[KDeviceType_Null] =         QApplication::translate("VBoxGlobal", "None", "DeviceType");
-    m_deviceTypeNames[KDeviceType_Floppy] =       QApplication::translate("VBoxGlobal", "Floppy", "DeviceType");
-    m_deviceTypeNames[KDeviceType_DVD] =          QApplication::translate("VBoxGlobal", "CD/DVD-ROM", "DeviceType");
-    m_deviceTypeNames[KDeviceType_HardDisk] =     QApplication::translate("VBoxGlobal", "Hard Disk", "DeviceType");
-    m_deviceTypeNames[KDeviceType_Network] =      QApplication::translate("VBoxGlobal", "Network", "DeviceType");
-    m_deviceTypeNames[KDeviceType_USB] =          QApplication::translate("VBoxGlobal", "USB", "DeviceType");
-    m_deviceTypeNames[KDeviceType_SharedFolder] = QApplication::translate("VBoxGlobal", "Shared Folder", "DeviceType");
-
-    /* KClipboardMode => QString: */
-    m_clipboardTypeNames[KClipboardMode_Disabled] =      QApplication::translate("VBoxGlobal", "Disabled", "ClipboardType");
-    m_clipboardTypeNames[KClipboardMode_HostToGuest] =   QApplication::translate("VBoxGlobal", "Host To Guest", "ClipboardType");
-    m_clipboardTypeNames[KClipboardMode_GuestToHost] =   QApplication::translate("VBoxGlobal", "Guest To Host", "ClipboardType");
-    m_clipboardTypeNames[KClipboardMode_Bidirectional] = QApplication::translate("VBoxGlobal", "Bidirectional", "ClipboardType");
-
-    /* KMediumType => QString: */
-    m_mediumTypeNames[KMediumType_Normal] =       QApplication::translate("VBoxGlobal", "Normal", "MediumType");
-    m_mediumTypeNames[KMediumType_Immutable] =    QApplication::translate("VBoxGlobal", "Immutable", "MediumType");
-    m_mediumTypeNames[KMediumType_Writethrough] = QApplication::translate("VBoxGlobal", "Writethrough", "MediumType");
-    m_mediumTypeNames[KMediumType_Shareable] =    QApplication::translate("VBoxGlobal", "Shareable", "MediumType");
-    m_mediumTypeNames[KMediumType_Readonly] =     QApplication::translate("VBoxGlobal", "Readonly", "MediumType");
-    m_mediumTypeNames[KMediumType_MultiAttach] =  QApplication::translate("VBoxGlobal", "Multi-attach", "MediumType");
-
-    /* KMediumVariant => QString: */
-    m_mediumVariantNames[0] = QApplication::translate("VBoxGlobal", "Dynamically allocated storage", "MediumVariant");
-    m_mediumVariantNames[1] = QApplication::translate("VBoxGlobal", "Dynamically allocated differencing storage", "MediumVariant");
-    m_mediumVariantNames[2] = QApplication::translate("VBoxGlobal", "Fixed size storage", "MediumVariant");
-    m_mediumVariantNames[3] = QApplication::translate("VBoxGlobal", "Dynamically allocated storage split into files of less than 2GB", "MediumVariant");
-    m_mediumVariantNames[4] = QApplication::translate("VBoxGlobal", "Dynamically allocated differencing storage split into files of less than 2GB", "MediumVariant");
-    m_mediumVariantNames[5] = QApplication::translate("VBoxGlobal", "Fixed size storage split into files of less than 2GB", "MediumVariant");
-    m_mediumVariantNames[6] = QApplication::translate("VBoxGlobal", "Dynamically allocated compressed storage", "MediumVariant");
-    m_mediumVariantNames[7] = QApplication::translate("VBoxGlobal", "Dynamically allocated differencing compressed storage", "MediumVariant");
-    m_mediumVariantNames[8] = QApplication::translate("VBoxGlobal", "Fixed size ESX storage", "MediumVariant");
-
-    /* KNetworkAttachmentType => QString: */
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_Null] =     QApplication::translate("VBoxGlobal", "Not attached", "NetworkAttachmentType");
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_NAT] =      QApplication::translate("VBoxGlobal", "NAT", "NetworkAttachmentType");
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_Bridged] =  QApplication::translate("VBoxGlobal", "Bridged Adapter", "NetworkAttachmentType");
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_Internal] = QApplication::translate("VBoxGlobal", "Internal Network", "NetworkAttachmentType");
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_HostOnly] = QApplication::translate("VBoxGlobal", "Host-only Adapter", "NetworkAttachmentType");
-    m_networkAttachmentTypeNames[KNetworkAttachmentType_Generic] =  QApplication::translate("VBoxGlobal", "Generic Driver", "NetworkAttachmentType");
-
-    /* KNetworkAdapterType => QString: */
-    m_networkAdapterTypeNames[KNetworkAdapterType_Am79C970A] = QApplication::translate("VBoxGlobal", "PCnet-PCI II (Am79C970A)", "NetworkAdapterType");
-    m_networkAdapterTypeNames[KNetworkAdapterType_Am79C973] =  QApplication::translate("VBoxGlobal", "PCnet-FAST III (Am79C973)", "NetworkAdapterType");
-    m_networkAdapterTypeNames[KNetworkAdapterType_I82540EM] =  QApplication::translate("VBoxGlobal", "Intel PRO/1000 MT Desktop (82540EM)", "NetworkAdapterType");
-    m_networkAdapterTypeNames[KNetworkAdapterType_I82543GC] =  QApplication::translate("VBoxGlobal", "Intel PRO/1000 T Server (82543GC)", "NetworkAdapterType");
-    m_networkAdapterTypeNames[KNetworkAdapterType_I82545EM] =  QApplication::translate("VBoxGlobal", "Intel PRO/1000 MT Server (82545EM)", "NetworkAdapterType");
-#ifdef VBOX_WITH_VIRTIO
-    m_networkAdapterTypeNames[KNetworkAdapterType_Virtio] =    QApplication::translate("VBoxGlobal", "Paravirtualized Network (virtio-net)", "NetworkAdapterType");
-#endif /* VBOX_WITH_VIRTIO */
-
-    /* KNetworkAdapterPromiscModePolicy => QString: */
-    m_networkAdapterPromiscModePolicyNames[KNetworkAdapterPromiscModePolicy_Deny] =         QApplication::translate("VBoxGlobal", "Deny", "NetworkAdapterPromiscModePolicy");
-    m_networkAdapterPromiscModePolicyNames[KNetworkAdapterPromiscModePolicy_AllowNetwork] = QApplication::translate("VBoxGlobal", "Allow VMs", "NetworkAdapterPromiscModePolicy");
-    m_networkAdapterPromiscModePolicyNames[KNetworkAdapterPromiscModePolicy_AllowAll] =     QApplication::translate("VBoxGlobal", "Allow All", "NetworkAdapterPromiscModePolicy");
-
-    /* KPortMode => QString: */
-    m_portModeTypeNames[KPortMode_Disconnected] = QApplication::translate("VBoxGlobal", "Disconnected", "PortMode");
-    m_portModeTypeNames[KPortMode_HostPipe] =     QApplication::translate("VBoxGlobal", "Host Pipe", "PortMode");
-    m_portModeTypeNames[KPortMode_HostDevice] =   QApplication::translate("VBoxGlobal", "Host Device", "PortMode");
-    m_portModeTypeNames[KPortMode_RawFile] =      QApplication::translate("VBoxGlobal", "Raw File", "PortMode");
-
-    /* KUSBDeviceState => QString: */
-    m_usbDeviceStateNames[KUSBDeviceState_NotSupported] = QApplication::translate("VBoxGlobal", "Not supported", "USBDeviceState");
-    m_usbDeviceStateNames[KUSBDeviceState_Unavailable] =  QApplication::translate("VBoxGlobal", "Unavailable", "USBDeviceState");
-    m_usbDeviceStateNames[KUSBDeviceState_Busy] =         QApplication::translate("VBoxGlobal", "Busy", "USBDeviceState");
-    m_usbDeviceStateNames[KUSBDeviceState_Available] =    QApplication::translate("VBoxGlobal", "Available", "USBDeviceState");
-    m_usbDeviceStateNames[KUSBDeviceState_Held] =         QApplication::translate("VBoxGlobal", "Held", "USBDeviceState");
-    m_usbDeviceStateNames[KUSBDeviceState_Captured] =     QApplication::translate("VBoxGlobal", "Captured", "USBDeviceState");
-
-    /* KUSBDeviceFilterAction => QString: */
-    m_usbDeviceFilterActionNames[KUSBDeviceFilterAction_Ignore] = QApplication::translate("VBoxGlobal", "Ignore", "USBDeviceFilterAction");
-    m_usbDeviceFilterActionNames[KUSBDeviceFilterAction_Hold] =   QApplication::translate("VBoxGlobal", "Hold", "USBDeviceFilterAction");
-
-    /* KAudioDriverType => QString: */
-    m_audioDriverTypeNames[KAudioDriverType_Null] =        QApplication::translate("VBoxGlobal", "Null Audio Driver", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_WinMM] =       QApplication::translate("VBoxGlobal", "Windows Multimedia", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_SolAudio] =    QApplication::translate("VBoxGlobal", "Solaris Audio", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_OSS] =         QApplication::translate("VBoxGlobal", "OSS Audio Driver", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_ALSA] =        QApplication::translate("VBoxGlobal", "ALSA Audio Driver", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_DirectSound] = QApplication::translate("VBoxGlobal", "Windows DirectSound", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_CoreAudio] =   QApplication::translate("VBoxGlobal", "CoreAudio", "AudioDriverType");
-    m_audioDriverTypeNames[KAudioDriverType_Pulse] =       QApplication::translate("VBoxGlobal", "PulseAudio", "AudioDriverType");
-
-    /* KAudioControllerType => QString: */
-    m_audioControllerTypeNames[KAudioControllerType_AC97] = QApplication::translate("VBoxGlobal", "ICH AC97", "AudioControllerType");
-    m_audioControllerTypeNames[KAudioControllerType_SB16] = QApplication::translate("VBoxGlobal", "SoundBlaster 16", "AudioControllerType");
-    m_audioControllerTypeNames[KAudioControllerType_HDA] =  QApplication::translate("VBoxGlobal", "Intel HD Audio", "AudioControllerType");
-
-    /* KAuthType => QString: */
-    m_authTypeNames[KAuthType_Null] =     QApplication::translate("VBoxGlobal", "Null", "AuthType");
-    m_authTypeNames[KAuthType_External] = QApplication::translate("VBoxGlobal", "External", "AuthType");
-    m_authTypeNames[KAuthType_Guest] =    QApplication::translate("VBoxGlobal", "Guest", "AuthType");
-
-    /* KStorageBus => QString: */
-    m_storageBusNames[KStorageBus_IDE] =    QApplication::translate("VBoxGlobal", "IDE", "StorageBus");
-    m_storageBusNames[KStorageBus_SATA] =   QApplication::translate("VBoxGlobal", "SATA", "StorageBus");
-    m_storageBusNames[KStorageBus_SCSI] =   QApplication::translate("VBoxGlobal", "SCSI", "StorageBus");
-    m_storageBusNames[KStorageBus_Floppy] = QApplication::translate("VBoxGlobal", "Floppy", "StorageBus");
-    m_storageBusNames[KStorageBus_SAS] =    QApplication::translate("VBoxGlobal", "SAS", "StorageBus");
-
-    /* KStorageBus/LONG => QString: */
-    m_storageBusChannelNames[0] = QApplication::translate("VBoxGlobal", "Primary", "StorageBusChannel");
-    m_storageBusChannelNames[1] = QApplication::translate("VBoxGlobal", "Secondary", "StorageBusChannel");
-    m_storageBusChannelNames[2] = QApplication::translate("VBoxGlobal", "Port %1", "StorageBusChannel");
-
-    /* KStorageBus/LONG/LONG => QString: */
-    m_storageBusDeviceNames[0] = QApplication::translate("VBoxGlobal", "Master", "StorageBusDevice");
-    m_storageBusDeviceNames[1] = QApplication::translate("VBoxGlobal", "Slave", "StorageBusDevice");
-    m_storageBusDeviceNames[2] = QApplication::translate("VBoxGlobal", "Device %1", "StorageBusDevice");
-
-    /* KStorageControllerType => QString: */
-    m_storageControllerTypeNames[KStorageControllerType_PIIX3] =       QApplication::translate("VBoxGlobal", "PIIX3", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_PIIX4] =       QApplication::translate("VBoxGlobal", "PIIX4", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_ICH6] =        QApplication::translate("VBoxGlobal", "ICH6", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_IntelAhci] =   QApplication::translate("VBoxGlobal", "AHCI", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_LsiLogic] =    QApplication::translate("VBoxGlobal", "Lsilogic", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_BusLogic] =    QApplication::translate("VBoxGlobal", "BusLogic", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_I82078] =      QApplication::translate("VBoxGlobal", "I82078", "StorageControllerType");
-    m_storageControllerTypeNames[KStorageControllerType_LsiLogicSas] = QApplication::translate("VBoxGlobal", "LsiLogic SAS", "StorageControllerType");
-
-    /* KChipsetType => QString: */
-    m_pchipsetTypeNames[KChipsetType_PIIX3] = QApplication::translate("VBoxGlobal", "PIIX3", "ChipsetType");
-    m_pchipsetTypeNames[KChipsetType_ICH9] =  QApplication::translate("VBoxGlobal", "ICH9", "ChipsetType");
-
-    /* KNATProtocol => QString: */
-    m_natProtocolNames[KNATProtocol_UDP] = QApplication::translate("VBoxGlobal", "UDP", "NATProtocol");
-    m_natProtocolNames[KNATProtocol_TCP] = QApplication::translate("VBoxGlobal", "TCP", "NATProtocol");
-}
-
Index: unk/src/VBox/Frontends/VirtualBox/src/globals/COMEnumsWrapper.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/COMEnumsWrapper.h	(revision 41818)
+++ 	(revision )
@@ -1,195 +1,0 @@
-/** @file
- *
- * VBox frontends: Qt GUI ("VirtualBox"):
- * COMEnumsWrapper class declaration
- */
-
-/*
- * Copyright (C) 2006-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 __COMEnumExtension_h__
-#define __COMEnumExtension_h__
-
-/* Qt includes: */
-#include <QObject>
-#include <QHash>
-
-/* GUI includes: */
-#include "QIWithRetranslateUI.h"
-
-/* COM includes: */
-#include "COMEnums.h"
-
-/* Defines: */
-typedef QHash<ulong, QString> UIULongStringHash;
-typedef QHash<long, QString> UILongStringHash;
-typedef QHash<ulong, QColor*> UIULongColorHash;
-typedef QHash<ulong, QPixmap*> UIULongPixmapHash;
-
-/* Describes conversions between different COM enums and other Qt classes: */
-class COMEnumsWrapper : public QIWithRetranslateUI3<QObject>
-{
-    Q_OBJECT;
-
-public:
-
-    /* Singleton instance: */
-    static COMEnumsWrapper* instance() { return m_spInstance; }
-
-    /* Prepare/cleanup: */
-    static void prepare();
-    static void cleanup();
-
-    /* KMachineState => QString: */
-    QString toString(KMachineState state) const;
-    /* KMachineState => QColor: */
-    const QColor& toColor(KMachineState state) const;
-    /* KMachineState => QPixmap: */
-    QPixmap toIcon(KMachineState state) const;
-
-    /* KSessionState => QString: */
-    QString toString(KSessionState state) const;
-
-    /* KDeviceType => QString: */
-    QString toString(KDeviceType type) const;
-    /* QString => KDeviceType: */
-    KDeviceType toDeviceType(const QString &strType) const;
-
-    /* KClipboardMode => QString: */
-    QString toString(KClipboardMode mode) const;
-    /* QString => KClipboardMode: */
-    KClipboardMode toClipboardModeType(const QString &strMode) const;
-
-    /* KMediumType => QString: */
-    QString toString(KMediumType type) const;
-
-    /* KMediumVariant => QString: */
-    QString toString(KMediumVariant variant) const;
-
-    /* KNetworkAttachmentType => QString: */
-    QString toString(KNetworkAttachmentType type) const;
-    /* QString => KNetworkAttachmentType: */
-    KNetworkAttachmentType toNetworkAttachmentType(const QString &strType) const;
-
-    /* KNetworkAdapterType => QString: */
-    QString toString(KNetworkAdapterType type) const;
-    /* QString => KNetworkAdapterType: */
-    KNetworkAdapterType toNetworkAdapterType(const QString &strType) const;
-
-    /* KNetworkAdapterPromiscModePolicy => QString: */
-    QString toString(KNetworkAdapterPromiscModePolicy policy) const;
-    /* QString => KNetworkAdapterPromiscModePolicy: */
-    KNetworkAdapterPromiscModePolicy toNetworkAdapterPromiscModePolicyType(const QString &strPolicy) const;
-
-    /* KPortMode => QString: */
-    QString toString(KPortMode mode) const;
-    /* QString => KPortMode: */
-    KPortMode toPortMode(const QString &strMode) const;
-
-    /* KPortMode => QString: */
-    QString toString(KUSBDeviceState state) const;
-
-    /* KUSBDeviceFilterAction => QString: */
-    QString toString(KUSBDeviceFilterAction action) const;
-    /* QString => KUSBDeviceFilterAction: */
-    KUSBDeviceFilterAction toUSBDevFilterAction(const QString &strActions) const;
-
-    /* KAudioDriverType => QString: */
-    QString toString(KAudioDriverType type) const;
-    /* QString => KAudioDriverType: */
-    KAudioDriverType toAudioDriverType(const QString &strType) const;
-
-    /* KAudioControllerType => QString: */
-    QString toString(KAudioControllerType type) const;
-    /* QString => KAudioControllerType: */
-    KAudioControllerType toAudioControllerType(const QString &strType) const;
-
-    /* KAuthType => QString: */
-    QString toString(KAuthType type) const;
-    /* QString => KAuthType: */
-    KAuthType toAuthType(const QString &strType) const;
-
-    /* KStorageBus => QString: */
-    QString toString(KStorageBus bus) const;
-    /* QString => KStorageBus: */
-    KStorageBus toStorageBusType(const QString &strBus) const;
-    /* KStorageBus/LONG => QString: */
-    QString toString(KStorageBus bus, LONG iChannel) const;
-    /* KStorageBus/QString => LONG: */
-    LONG toStorageChannel(KStorageBus bus, const QString &strChannel) const;
-    /* KStorageBus/LONG/LONG => QString: */
-    QString toString(KStorageBus bus, LONG iChannel, LONG iDevice) const;
-    /* KStorageBus/LONG/QString => LONG: */
-    LONG toStorageDevice(KStorageBus bus, LONG iChannel, const QString &strDevice) const;
-
-    /* KStorageControllerType => QString: */
-    QString toString(KStorageControllerType type) const;
-    /* QString => KStorageControllerType: */
-    KStorageControllerType toControllerType(const QString &strType) const;
-    /* KStorageControllerType => KStorageBus: */
-    KStorageBus toStorageBusType(KStorageControllerType type) const;
-
-    /* KChipsetType => QString: */
-    QString toString(KChipsetType type) const;
-    /* QString => KStorageControllerType: */
-    KChipsetType toChipsetType(const QString &strType) const;
-
-    /* KNATProtocol => QString: */
-    QString toString(KNATProtocol protocol) const;
-    /* QString => KNATProtocol: */
-    KNATProtocol toNATProtocolType(const QString &strProtocol) const;
-
-protected:
-
-    /* Constructor/destructor: */
-    COMEnumsWrapper();
-    ~COMEnumsWrapper();
-
-    /* Translate stuff: */
-    void retranslateUi();
-
-private:
-
-    /* Static instance: */
-    static COMEnumsWrapper *m_spInstance;
-
-    /* Translate stuff: */
-    UIULongStringHash m_machineStateNames;
-    UIULongStringHash m_sessionStateNames;
-    UIULongStringHash m_deviceTypeNames;
-    UIULongStringHash m_clipboardTypeNames;
-    UIULongStringHash m_mediumTypeNames;
-    UIULongStringHash m_mediumVariantNames;
-    UIULongStringHash m_networkAttachmentTypeNames;
-    UIULongStringHash m_networkAdapterTypeNames;
-    UIULongStringHash m_networkAdapterPromiscModePolicyNames;
-    UIULongStringHash m_portModeTypeNames;
-    UIULongStringHash m_usbDeviceStateNames;
-    UIULongStringHash m_usbDeviceFilterActionNames;
-    UIULongStringHash m_audioDriverTypeNames;
-    UIULongStringHash m_audioControllerTypeNames;
-    UIULongStringHash m_authTypeNames;
-    UIULongStringHash m_storageBusNames;
-    UILongStringHash  m_storageBusChannelNames;
-    UILongStringHash  m_storageBusDeviceNames;
-    UIULongStringHash m_storageControllerTypeNames;
-    UIULongStringHash m_pchipsetTypeNames;
-    UIULongStringHash m_natProtocolNames;
-
-    /* Other stuff: */
-    UIULongColorHash  m_machineStateColors;
-    UIULongPixmapHash m_machineStateIcons;
-};
-#define gCOMenum COMEnumsWrapper::instance()
-
-#endif /* __COMEnumExtension_h__ */
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIDefs.h	(revision 41819)
@@ -23,4 +23,7 @@
 #include <QEvent>
 #include <QStringList>
+
+/* COM includes: */
+#include "COMEnums.h"
 
 /* Other VBox defines: */
@@ -207,4 +210,23 @@
 using namespace UIDefs /* globally */;
 
+struct StorageSlot
+{
+    StorageSlot() : bus(KStorageBus_Null), port(0), device(0) {}
+    StorageSlot(const StorageSlot &other) : bus(other.bus), port(other.port), device(other.device) {}
+    StorageSlot(KStorageBus otherBus, LONG iPort, LONG iDevice) : bus(otherBus), port(iPort), device(iDevice) {}
+    StorageSlot& operator=(const StorageSlot &other) { bus = other.bus; port = other.port; device = other.device; return *this; }
+    bool operator==(const StorageSlot &other) const { return bus == other.bus && port == other.port && device == other.device; }
+    bool operator!=(const StorageSlot &other) const { return bus != other.bus || port != other.port || device != other.device; }
+    bool operator<(const StorageSlot &other) const { return (bus <  other.bus) ||
+                                                            (bus == other.bus && port <  other.port) ||
+                                                            (bus == other.bus && port == other.port && device < other.device); }
+    bool operator>(const StorageSlot &other) const { return (bus >  other.bus) ||
+                                                            (bus == other.bus && port >  other.port) ||
+                                                            (bus == other.bus && port == other.port && device > other.device); }
+    bool isNull() const { return bus == KStorageBus_Null; }
+    KStorageBus bus; LONG port; LONG device;
+};
+Q_DECLARE_METATYPE(StorageSlot);
+
 #endif // __UIDefs_h__
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp	(revision 41819)
@@ -36,5 +36,5 @@
 #include "UINetworkManager.h"
 #include "UINetworkManagerDialog.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 #ifdef VBOX_OSE
 # include "UIDownloaderUserManual.h"
@@ -1353,5 +1353,5 @@
     message(pParent ? pParent : mainWindowShown(), Error,
             tr("<p>Error changing medium type from <b>%1</b> to <b>%2</b>.</p>")
-                .arg(gCOMenum->toString(oldMediumType)).arg(gCOMenum->toString(newMediumType)),
+                .arg(gpConverter->toString(oldMediumType)).arg(gpConverter->toString(newMediumType)),
             formatErrorInfo(medium));
 }
@@ -1541,5 +1541,5 @@
         {
             strMessage = tr("Failed to detach the hard disk (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
@@ -1547,5 +1547,5 @@
         {
             strMessage = tr("Failed to detach the CD/DVD device (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
@@ -1553,5 +1553,5 @@
         {
             strMessage = tr("Failed to detach the floppy device (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
@@ -3082,5 +3082,5 @@
         {
             strMessage = tr("Failed to attach the hard disk (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
@@ -3088,5 +3088,5 @@
         {
             strMessage = tr("Failed to attach the CD/DVD device (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
@@ -3094,5 +3094,5 @@
         {
             strMessage = tr("Failed to attach the floppy device (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.")
-                           .arg(strLocation).arg(vboxGlobal().toString(storageSlot)).arg(CMachine(machine).GetName());
+                           .arg(strLocation).arg(gpConverter->toString(storageSlot)).arg(CMachine(machine).GetName());
             break;
         }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 41819)
@@ -65,5 +65,5 @@
 #include "UIMachine.h"
 #include "UISession.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 #ifdef Q_WS_X11
@@ -959,147 +959,4 @@
 }
 
-/**
- * Returns a full string representation of the given device of the given channel on the given storage bus.
- * This method does not uses any separate string tags related to bus, channel, device, it has own
- * separately translated string tags allowing to translate a full slot name into human readable format
- * to be consistent with i18n.
- * Complementary to #toStorageSlot (const QString &) const.
- */
-QString VBoxGlobal::toString (StorageSlot aSlot) const
-{
-    switch (aSlot.bus)
-    {
-        case KStorageBus_IDE:
-        case KStorageBus_SATA:
-        case KStorageBus_SCSI:
-        case KStorageBus_SAS:
-        case KStorageBus_Floppy:
-            break;
-
-        default:
-        {
-            AssertMsgFailed (("Invalid bus type %d\n", aSlot.bus));
-            break;
-        }
-    }
-
-    int maxPort = virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus (aSlot.bus);
-    int maxDevice = virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus (aSlot.bus);
-    if (aSlot.port < 0 || aSlot.port > maxPort)
-        AssertMsgFailed (("Invalid port %d\n", aSlot.port));
-    if (aSlot.device < 0 || aSlot.device > maxDevice)
-        AssertMsgFailed (("Invalid device %d\n", aSlot.device));
-
-    QString result;
-    switch (aSlot.bus)
-    {
-        case KStorageBus_IDE:
-        {
-            result = mSlotTemplates [aSlot.port * maxDevice + aSlot.device];
-            break;
-        }
-        case KStorageBus_SATA:
-        {
-            result = mSlotTemplates [4].arg (aSlot.port);
-            break;
-        }
-        case KStorageBus_SCSI:
-        {
-            result = mSlotTemplates [5].arg (aSlot.port);
-            break;
-        }
-        case KStorageBus_SAS:
-        {
-            result = mSlotTemplates [6].arg (aSlot.port);
-            break;
-        }
-        case KStorageBus_Floppy:
-        {
-            result = mSlotTemplates [7].arg (aSlot.device);
-            break;
-        }
-        default:
-        {
-            AssertMsgFailed (("Invalid bus type %d\n", aSlot.bus));
-            break;
-        }
-    }
-    return result;
-}
-
-/**
- * Returns a StorageSlot based on the given device of the given channel on the given storage bus.
- * Complementary to #toFullString (StorageSlot) const.
- */
-StorageSlot VBoxGlobal::toStorageSlot (const QString &aSlot) const
-{
-    int index = -1;
-    QRegExp regExp;
-    for (int i = 0; i < mSlotTemplates.size(); ++ i)
-    {
-        regExp = QRegExp (i >= 0 && i <= 3 ? mSlotTemplates [i] : mSlotTemplates [i].arg ("(\\d+)"));
-        if (regExp.indexIn (aSlot) != -1)
-        {
-            index = i;
-            break;
-        }
-    }
-
-    StorageSlot result;
-    switch (index)
-    {
-        case 0:
-        case 1:
-        case 2:
-        case 3:
-        {
-            result.bus = KStorageBus_IDE;
-            int maxPort = virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus (result.bus);
-            result.port = index / maxPort;
-            result.device = index % maxPort;
-            break;
-        }
-        case 4:
-        {
-            result.bus = KStorageBus_SATA;
-            int maxPort = virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus (result.bus);
-            result.port = regExp.cap (1).toInt();
-            if (result.port < 0 || result.port > maxPort)
-                AssertMsgFailed (("Invalid port %d\n", result.port));
-            break;
-        }
-        case 5:
-        {
-            result.bus = KStorageBus_SCSI;
-            int maxPort = virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus (result.bus);
-            result.port = regExp.cap (1).toInt();
-            if (result.port < 0 || result.port > maxPort)
-                AssertMsgFailed (("Invalid port %d\n", result.port));
-            break;
-        }
-        case 6:
-        {
-            result.bus = KStorageBus_SAS;
-            int maxPort = virtualBox().GetSystemProperties().GetMaxPortCountForStorageBus (result.bus);
-            result.port = regExp.cap (1).toInt();
-            if (result.port < 0 || result.port > maxPort)
-                AssertMsgFailed (("Invalid port %d\n", result.port));
-            break;
-        }
-        case 7:
-        {
-            result.bus = KStorageBus_Floppy;
-            int maxDevice = virtualBox().GetSystemProperties().GetMaxDevicesPerPortForStorageBus (result.bus);
-            result.device = regExp.cap (1).toInt();
-            if (result.device < 0 || result.device > maxDevice)
-                AssertMsgFailed (("Invalid device %d\n", result.device));
-            break;
-        }
-        default:
-            break;
-    }
-    return result;
-}
-
 struct PortConfig
 {
@@ -1139,5 +996,5 @@
         return mDiskTypes_Differencing;
     }
-    return gCOMenum->toString(medium.GetType());
+    return gpConverter->toString(medium.GetType());
 }
 
@@ -1324,5 +1181,5 @@
     {
         tip += QString (tr ("<br><nobr>State: %1</nobr>", "USB device tooltip"))
-                        .arg (gCOMenum->toString (hostDev.GetState()));
+                        .arg (gpConverter->toString (hostDev.GetState()));
     }
 
@@ -1377,5 +1234,5 @@
     {
         tip += tip.isEmpty() ? "":"<br/>" + tr ("<nobr>State: %1</nobr>", "USB filter tooltip")
-                                                .arg (gCOMenum->toString (hostDev.GetState()));
+                                                .arg (gpConverter->toString (hostDev.GetState()));
     }
 
@@ -1448,8 +1305,8 @@
             if (!bootOrder.isEmpty())
                 bootOrder += ", ";
-            bootOrder += gCOMenum->toString (device);
+            bootOrder += gpConverter->toString (device);
         }
         if (bootOrder.isEmpty())
-            bootOrder = gCOMenum->toString (KDeviceType_Null);
+            bootOrder = gpConverter->toString (KDeviceType_Null);
 
         iRowCount += 1; /* Boot-order row. */
@@ -1617,7 +1474,7 @@
                                             QString(sSectionItemTpl2)
                                             .arg(QString("&nbsp;&nbsp;") +
-                                                 toString(StorageSlot(controller.GetBus(),
-                                                                      attachment.GetPort(),
-                                                                      attachment.GetDevice())) + strDeviceType)
+                                                 gpConverter->toString(StorageSlot(controller.GetBus(),
+                                                                                   attachment.GetPort(),
+                                                                                   attachment.GetDevice())) + strDeviceType)
                                             .arg(details(medium, false));
                 /* Insert that attachment into map: */
@@ -1661,8 +1518,8 @@
             item = QString (sSectionItemTpl2)
                    .arg (tr ("Host Driver", "details report (audio)"),
-                         gCOMenum->toString (audio.GetAudioDriver())) +
+                         gpConverter->toString (audio.GetAudioDriver())) +
                    QString (sSectionItemTpl2)
                    .arg (tr ("Controller", "details report (audio)"),
-                         gCOMenum->toString (audio.GetAudioController()));
+                         gpConverter->toString (audio.GetAudioController()));
         else
             item = QString (sSectionItemTpl1)
@@ -1689,5 +1546,5 @@
             {
                 KNetworkAttachmentType type = adapter.GetAttachmentType();
-                QString attType = gCOMenum->toString (adapter.GetAdapterType())
+                QString attType = gpConverter->toString (adapter.GetAdapterType())
                                   .replace (QRegExp ("\\s\\(.+\\)"), " (%1)");
                 /* don't use the adapter type string for types that have
@@ -1707,5 +1564,5 @@
                         "details report (network)").arg (adapter.GetGenericDriver()));
                 else
-                    attType = attType.arg (gCOMenum->toString (type));
+                    attType = attType.arg (gpConverter->toString (type));
 
                 item += QString (sSectionItemTpl2)
@@ -1749,8 +1606,8 @@
                     mode == KPortMode_RawFile)
                     data += QString ("%1 (<nobr>%2</nobr>)")
-                            .arg (gCOMenum->toString (mode))
+                            .arg (gpConverter->toString (mode))
                             .arg (QDir::toNativeSeparators (port.GetPath()));
                 else
-                    data += gCOMenum->toString (mode);
+                    data += gpConverter->toString (mode);
 
                 item += QString (sSectionItemTpl2)
@@ -2577,14 +2434,5 @@
 void VBoxGlobal::retranslateUi()
 {
-    mSlotTemplates [0] = tr ("IDE Primary Master", "New Storage UI : Slot Name");
-    mSlotTemplates [1] = tr ("IDE Primary Slave", "New Storage UI : Slot Name");
-    mSlotTemplates [2] = tr ("IDE Secondary Master", "New Storage UI : Slot Name");
-    mSlotTemplates [3] = tr ("IDE Secondary Slave", "New Storage UI : Slot Name");
-    mSlotTemplates [4] = tr ("SATA Port %1", "New Storage UI : Slot Name");
-    mSlotTemplates [5] = tr ("SCSI Port %1", "New Storage UI : Slot Name");
-    mSlotTemplates [6] = tr ("SAS Port %1", "New Storage UI : Slot Name");
-    mSlotTemplates [7] = tr ("Floppy Device %1", "New Storage UI : Slot Name");
-
-    mDiskTypes_Differencing =                   tr ("Differencing", "DiskType");
+    mDiskTypes_Differencing = tr ("Differencing", "DiskType");
 
     mUserDefinedPortName = tr ("User-defined", "serial port");
@@ -4661,6 +4509,5 @@
     mValid = true;
 
-    /* Prepare COM enum extensions: */
-    COMEnumsWrapper::prepare();
+    UIConverter::prepare();
 
     /* Cache IMedium data.
@@ -4762,6 +4609,5 @@
         delete m_pVirtualMachine;
 
-    /* Cleanup COM enum extensions: */
-    COMEnumsWrapper::cleanup();
+    UIConverter::cleanup();
 
     /* ensure CGuestOSType objects are no longer used */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 41819)
@@ -35,5 +35,4 @@
 /* COM includes: */
 #include "VBox/com/Guid.h"
-#include "COMEnums.h"
 #include "CHost.h"
 #include "CVirtualBox.h"
@@ -50,23 +49,4 @@
 class CUSBDevice;
 
-struct StorageSlot
-{
-    StorageSlot() : bus (KStorageBus_Null), port (0), device (0) {}
-    StorageSlot (const StorageSlot &aOther) : bus (aOther.bus), port (aOther.port), device (aOther.device) {}
-    StorageSlot (KStorageBus aBus, LONG aPort, LONG aDevice) : bus (aBus), port (aPort), device (aDevice) {}
-    StorageSlot& operator= (const StorageSlot &aOther) { bus = aOther.bus; port = aOther.port; device = aOther.device; return *this; }
-    bool operator== (const StorageSlot &aOther) const { return bus == aOther.bus && port == aOther.port && device == aOther.device; }
-    bool operator!= (const StorageSlot &aOther) const { return bus != aOther.bus || port != aOther.port || device != aOther.device; }
-    bool operator< (const StorageSlot &aOther) const { return (bus < aOther.bus) ||
-                                                              (bus == aOther.bus && port < aOther.port) ||
-                                                              (bus == aOther.bus && port == aOther.port && device < aOther.device); }
-    bool operator> (const StorageSlot &aOther) const { return (bus > aOther.bus) ||
-                                                              (bus == aOther.bus && port > aOther.port) ||
-                                                              (bus == aOther.bus && port == aOther.port && device > aOther.device); }
-    bool isNull() { return bus == KStorageBus_Null; }
-    KStorageBus bus; LONG port; LONG device;
-};
-Q_DECLARE_METATYPE (StorageSlot);
-
 // VBoxGlobal class
 ////////////////////////////////////////////////////////////////////////////////
@@ -81,6 +61,4 @@
 
 public:
-
-    typedef QHash <ulong, QString> QULongStringHash;
 
     static VBoxGlobal &instance();
@@ -208,7 +186,4 @@
         return tr("%n second(s)", "", cVal);
     }
-
-    QString toString (StorageSlot aSlot) const;
-    StorageSlot toStorageSlot (const QString &aSlot) const;
 
     QString differencingMediumTypeName() const { return mDiskTypes_Differencing; }
@@ -548,6 +523,4 @@
     QPixmap mOfflineSnapshotIcon, mOnlineSnapshotIcon;
 
-    QULongStringHash mSlotTemplates;
-
     QString mDiskTypes_Differencing;
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMedium.cpp	(revision 41819)
@@ -29,5 +29,5 @@
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -142,5 +142,5 @@
         mHardDiskFormat = mMedium.GetFormat();
         mHardDiskType = vboxGlobal().mediumTypeString (mMedium);
-        mStorageDetails = gCOMenum->toString((KMediumVariant)mMedium.GetVariant());
+        mStorageDetails = gpConverter->toString((KMediumVariant)mMedium.GetVariant());
         mIsReadOnly = mMedium.GetReadOnly();
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIIndicatorsPool.cpp	(revision 41819)
@@ -26,5 +26,5 @@
 #include "UIMachineDefs.h"
 #include "QIWithRetranslateUI.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -88,5 +88,5 @@
                     continue;
                 strAttData += QString("<br>&nbsp;<nobr>%1:&nbsp;%2</nobr>")
-                    .arg(vboxGlobal().toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
+                    .arg(gpConverter->toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
                     .arg(UIMedium(attachment.GetMedium(), UIMediumType_HardDisk).location());
                 fAttachmentsPresent = true;
@@ -157,5 +157,5 @@
                 UIMedium vboxMedium(attachment.GetMedium(), UIMediumType_DVD);
                 strAttData += QString("<br>&nbsp;<nobr>%1:&nbsp;%2</nobr>")
-                    .arg(vboxGlobal().toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
+                    .arg(gpConverter->toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
                     .arg(vboxMedium.isNull() || vboxMedium.isHostDrive() ? vboxMedium.name() : vboxMedium.location());
                 fAttachmentsPresent = true;
@@ -228,5 +228,5 @@
                 UIMedium vboxMedium(attachment.GetMedium(), UIMediumType_Floppy);
                 strAttData += QString("<br>&nbsp;<nobr>%1:&nbsp;%2</nobr>")
-                    .arg(vboxGlobal().toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
+                    .arg(gpConverter->toString(StorageSlot(controller.GetBus(), attachment.GetPort(), attachment.GetDevice())))
                     .arg(vboxMedium.isNull() || vboxMedium.isHostDrive() ? vboxMedium.name() : vboxMedium.location());
                 fAttachmentsPresent = true;
@@ -328,5 +328,5 @@
                                "<br><nobr><b>Adapter %1 (%2)</b>: %3 cable %4</nobr>", "Network adapters tooltip")
                     .arg(uSlot + 1)
-                    .arg(gCOMenum->toString(adapter.GetAttachmentType()))
+                    .arg(gpConverter->toString(adapter.GetAttachmentType()))
                     .arg(strGuestIp.isEmpty() ? "" : "IP " + strGuestIp + ", ")
                     .arg(adapter.GetCableConnected() ?
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 41819)
@@ -48,4 +48,5 @@
 #include "UISettingsDialogSpecific.h"
 #include "UIVMLogViewer.h"
+#include "UIConverter.h"
 #ifdef Q_WS_MAC
 # include "DockIconPreview.h"
@@ -1153,5 +1154,5 @@
                 pAttachmentMenu = new QMenu(pMenu);
                 pAttachmentMenu->setTitle(QString("%1 (%2)").arg(controller.GetName())
-                                          .arg(vboxGlobal().toString(StorageSlot(controller.GetBus(),
+                                          .arg(gpConverter->toString(StorageSlot(controller.GetBus(),
                                                                                  attachment.GetPort(),
                                                                                  attachment.GetDevice()))));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineWindow.cpp	(revision 41819)
@@ -37,5 +37,5 @@
 #include "UISession.h"
 #include "UIVMCloseDialog.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -609,5 +609,5 @@
         QString strMachineName = m.GetName() + strSnapshotName;
         if (state != KMachineState_Null)
-            strMachineName += " [" + gCOMenum->toString(state) + "]";
+            strMachineName += " [" + gpConverter->toString(state) + "]";
         /* Unusual on the Mac. */
 #ifndef Q_WS_MAC
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMDesktop.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMDesktop.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMDesktop.cpp	(revision 41819)
@@ -42,5 +42,5 @@
 #include "UIToolBar.h"
 #include "VBoxUtils.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -755,8 +755,8 @@
                     if (device == KDeviceType_Null)
                         continue;
-                    bootOrder << gCOMenum->toString(device);
+                    bootOrder << gpConverter->toString(device);
                 }
                 if (bootOrder.isEmpty())
-                    bootOrder << gCOMenum->toString(KDeviceType_Null);
+                    bootOrder << gpConverter->toString(KDeviceType_Null);
 
                 item += sSectionItemTpl2.arg(tr("Boot Order", "details report"), bootOrder.join(", "));
@@ -929,5 +929,5 @@
                                                 QString(sSectionItemTpl2)
                                                 .arg(QString("&nbsp;&nbsp;") +
-                                                     vboxGlobal().toString(StorageSlot(controller.GetBus(),
+                                                     gpConverter->toString(StorageSlot(controller.GetBus(),
                                                                                        attachment.GetPort(),
                                                                                        attachment.GetDevice())) +
@@ -981,7 +981,7 @@
             if (audio.GetEnabled())
                 item = QString(sSectionItemTpl2).arg(tr("Host Driver", "details report (audio)"),
-                                                     gCOMenum->toString(audio.GetAudioDriver())) +
+                                                     gpConverter->toString(audio.GetAudioDriver())) +
                        QString(sSectionItemTpl2).arg(tr("Controller", "details report (audio)"),
-                                                     gCOMenum->toString(audio.GetAudioController()));
+                                                     gpConverter->toString(audio.GetAudioController()));
             else
                 item = QString(sSectionItemTpl1).arg(tr("Disabled", "details report (audio)"));
@@ -1020,5 +1020,5 @@
                 {
                     KNetworkAttachmentType type = adapter.GetAttachmentType();
-                    QString attType = gCOMenum->toString(adapter.GetAdapterType())
+                    QString attType = gpConverter->toString(adapter.GetAdapterType())
                                       .replace(QRegExp("\\s\\(.+\\)"), " (%1)");
                     /* Don't use the adapter type string for types that have
@@ -1040,5 +1040,5 @@
                     }
                     else
-                        attType = attType.arg(gCOMenum->toString(type));
+                        attType = attType.arg(gpConverter->toString(type));
 
                     item += QString(sSectionItemTpl2).arg(tr("Adapter %1", "details report (network)").arg(adapter.GetSlot() + 1))
@@ -1084,7 +1084,7 @@
                     QString data = vboxGlobal().toCOMPortName(port.GetIRQ(), port.GetIOBase()) + ", ";
                     if (mode == KPortMode_HostPipe || mode == KPortMode_HostDevice || mode == KPortMode_RawFile)
-                        data += QString("%1 (<nobr>%2</nobr>)").arg(gCOMenum->toString(mode)).arg(QDir::toNativeSeparators(port.GetPath()));
+                        data += QString("%1 (<nobr>%2</nobr>)").arg(gpConverter->toString(mode)).arg(QDir::toNativeSeparators(port.GetPath()));
                     else
-                        data += gCOMenum->toString(mode);
+                        data += gpConverter->toString(mode);
 
                     item += QString(sSectionItemTpl2).arg(tr("Port %1", "details report (serial ports)").arg(port.GetSlot() + 1))
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 41819)
@@ -29,5 +29,5 @@
 #include "UIVMItem.h"
 #include "VBoxGlobal.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 #ifdef Q_WS_MAC
 # include <ApplicationServices/ApplicationServices.h>
@@ -161,5 +161,5 @@
 QString UIVMItem::machineStateName() const
 {
-    return m_fAccessible ? gCOMenum->toString(m_machineState) :
+    return m_fAccessible ? gpConverter->toString(m_machineState) :
            QApplication::translate("UIVMListView", "Inaccessible");
 }
@@ -167,5 +167,5 @@
 QIcon UIVMItem::machineStateIcon() const
 {
-    return m_fAccessible ? gCOMenum->toIcon(m_machineState) :
+    return m_fAccessible ? gpConverter->toPixmap(m_machineState) :
                            QPixmap(":/state_aborted_16px.png");
 }
@@ -173,5 +173,5 @@
 QString UIVMItem::sessionStateName() const
 {
-    return m_fAccessible ? gCOMenum->toString(m_sessionState) :
+    return m_fAccessible ? gpConverter->toString(m_sessionState) :
            QApplication::translate("UIVMListView", "Inaccessible");
 }
@@ -196,7 +196,7 @@
             "VM tooltip (name, last state change, session state)")
             .arg(toolTip)
-            .arg(gCOMenum->toString(m_machineState))
+            .arg(gpConverter->toString(m_machineState))
             .arg(dateTime)
-            .arg(gCOMenum->toString(m_sessionState));
+            .arg(gpConverter->toString(m_sessionState));
     }
     else
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 41819)
@@ -39,5 +39,5 @@
 #include "UIVirtualBoxEventHandler.h"
 #include "UISelectorShortcuts.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -190,5 +190,5 @@
             return;
 
-        setIcon (0, gCOMenum->toIcon (aState));
+        setIcon (0, gpConverter->toPixmap (aState));
         mMachineState = aState;
         mTimestamp.setTime_t (mMachine.GetLastStateChange() / 1000);
@@ -277,5 +277,5 @@
         {
             dateTime = VBoxSnapshotsWgt::tr ("%1 since %2", "Current State (time or date + time)")
-                .arg (gCOMenum->toString (mMachineState)).arg (dateTime);
+                .arg (gpConverter->toString (mMachineState)).arg (dateTime);
         }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsAudio.cpp	(revision 41819)
@@ -20,5 +20,5 @@
 /* GUI includes: */
 #include "UIMachineSettingsAudio.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -72,6 +72,6 @@
     /* Load audio data to page: */
     mGbAudio->setChecked(audioData.m_fAudioEnabled);
-    mCbAudioDriver->setCurrentIndex(mCbAudioDriver->findText(gCOMenum->toString(audioData.m_audioDriverType)));
-    mCbAudioController->setCurrentIndex(mCbAudioController->findText(gCOMenum->toString(audioData.m_audioControllerType)));
+    mCbAudioDriver->setCurrentIndex(mCbAudioDriver->findText(gpConverter->toString(audioData.m_audioDriverType)));
+    mCbAudioController->setCurrentIndex(mCbAudioController->findText(gpConverter->toString(audioData.m_audioControllerType)));
 
     /* Polish page finally: */
@@ -88,6 +88,6 @@
     /* Gather audio data: */
     audioData.m_fAudioEnabled = mGbAudio->isChecked();
-    audioData.m_audioDriverType = gCOMenum->toAudioDriverType(mCbAudioDriver->currentText());
-    audioData.m_audioControllerType = gCOMenum->toAudioControllerType(mCbAudioController->currentText());
+    audioData.m_audioDriverType = gpConverter->fromString<KAudioDriverType>(mCbAudioDriver->currentText());
+    audioData.m_audioControllerType = gpConverter->fromString<KAudioControllerType>(mCbAudioController->currentText());
 
     /* Cache audio data: */
@@ -148,30 +148,30 @@
     mCbAudioDriver->clear();
     /* Refill them */
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_Null));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_Null));
 #if defined Q_WS_WIN32
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_DirectSound));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_DirectSound));
 # ifdef VBOX_WITH_WINMM
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_WinMM));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_WinMM));
 # endif
 #endif
 #if defined Q_OS_SOLARIS
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_SolAudio));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_SolAudio));
 # if defined VBOX_WITH_SOLARIS_OSS
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_OSS));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_OSS));
 #endif
 #endif
 #if defined Q_OS_LINUX || defined Q_OS_FREEBSD
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_OSS));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_OSS));
 # ifdef VBOX_WITH_PULSE
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_Pulse));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_Pulse));
 # endif
 #endif
 #if defined Q_OS_LINUX
 # ifdef VBOX_WITH_ALSA
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_ALSA));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_ALSA));
 # endif
 #endif
 #if defined Q_OS_MACX
-    mCbAudioDriver->addItem (gCOMenum->toString (KAudioDriverType_CoreAudio));
+    mCbAudioDriver->addItem (gpConverter->toString (KAudioDriverType_CoreAudio));
 #endif
     /* Set the old value */
@@ -184,9 +184,9 @@
     /* Refill them */
     mCbAudioController->insertItem (mCbAudioController->count(),
-        gCOMenum->toString (KAudioControllerType_HDA));
+        gpConverter->toString (KAudioControllerType_HDA));
     mCbAudioController->insertItem (mCbAudioController->count(),
-        gCOMenum->toString (KAudioControllerType_AC97));
+        gpConverter->toString (KAudioControllerType_AC97));
     mCbAudioController->insertItem (mCbAudioController->count(),
-        gCOMenum->toString (KAudioControllerType_SB16));
+        gpConverter->toString (KAudioControllerType_SB16));
     /* Set the old value */
     mCbAudioController->setCurrentIndex (currentController);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 41819)
@@ -26,5 +26,5 @@
 #include "VBoxGlobal.h"
 #include "UIMessageCenter.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -222,5 +222,5 @@
         mCbVRDE->setChecked(displayData.m_fVRDEServerEnabled);
         mLeVRDEPort->setText(displayData.m_strVRDEPort);
-        mCbVRDEMethod->setCurrentIndex(mCbVRDEMethod->findText(gCOMenum->toString(displayData.m_VRDEAuthType)));
+        mCbVRDEMethod->setCurrentIndex(mCbVRDEMethod->findText(gpConverter->toString(displayData.m_VRDEAuthType)));
         mLeVRDETimeout->setText(QString::number(displayData.m_uVRDETimeout));
         mCbMultipleConn->setChecked(displayData.m_fMultipleConnectionsAllowed);
@@ -253,5 +253,5 @@
         displayData.m_fVRDEServerEnabled = mCbVRDE->isChecked();
         displayData.m_strVRDEPort = mLeVRDEPort->text();
-        displayData.m_VRDEAuthType = gCOMenum->toAuthType(mCbVRDEMethod->currentText());
+        displayData.m_VRDEAuthType = gpConverter->fromString<KAuthType>(mCbVRDEMethod->currentText());
         displayData.m_uVRDETimeout = mLeVRDETimeout->text().toULong();
         displayData.m_fMultipleConnectionsAllowed = mCbMultipleConn->isChecked();
@@ -436,9 +436,9 @@
 
     mCbVRDEMethod->setItemText (0,
-        gCOMenum->toString (KAuthType_Null));
+        gpConverter->toString (KAuthType_Null));
     mCbVRDEMethod->setItemText (1,
-        gCOMenum->toString (KAuthType_External));
+        gpConverter->toString (KAuthType_External));
     mCbVRDEMethod->setItemText (2,
-        gCOMenum->toString (KAuthType_Guest));
+        gpConverter->toString (KAuthType_Guest));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsGeneral.cpp	(revision 41819)
@@ -26,5 +26,5 @@
 #include "UIMessageCenter.h"
 #include "QIWidgetValidator.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 UIMachineSettingsGeneral::UIMachineSettingsGeneral()
@@ -241,8 +241,8 @@
 
     /* Shared Clipboard mode */
-    mCbClipboard->setItemText (0, gCOMenum->toString (KClipboardMode_Disabled));
-    mCbClipboard->setItemText (1, gCOMenum->toString (KClipboardMode_HostToGuest));
-    mCbClipboard->setItemText (2, gCOMenum->toString (KClipboardMode_GuestToHost));
-    mCbClipboard->setItemText (3, gCOMenum->toString (KClipboardMode_Bidirectional));
+    mCbClipboard->setItemText (0, gpConverter->toString (KClipboardMode_Disabled));
+    mCbClipboard->setItemText (1, gpConverter->toString (KClipboardMode_HostToGuest));
+    mCbClipboard->setItemText (2, gpConverter->toString (KClipboardMode_GuestToHost));
+    mCbClipboard->setItemText (3, gpConverter->toString (KClipboardMode_Bidirectional));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsNetwork.cpp	(revision 41819)
@@ -24,5 +24,5 @@
 #include "QITabWidget.h"
 #include "VBoxGlobal.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -509,25 +509,25 @@
         /* Populate attachments: */
         int iAttachmentTypeIndex = 0;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_Null));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_Null));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_Null);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_NAT));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_NAT));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_NAT);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_Bridged));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_Bridged));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_Bridged);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_Internal));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_Internal));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_Internal);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_HostOnly));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_HostOnly));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_HostOnly);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
         ++iAttachmentTypeIndex;
-        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gCOMenum->toString(KNetworkAttachmentType_Generic));
+        m_pAttachmentTypeComboBox->insertItem(iAttachmentTypeIndex, gpConverter->toString(KNetworkAttachmentType_Generic));
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, KNetworkAttachmentType_Generic);
         m_pAttachmentTypeComboBox->setItemData(iAttachmentTypeIndex, m_pAttachmentTypeComboBox->itemText(iAttachmentTypeIndex), Qt::ToolTipRole);
@@ -548,22 +548,22 @@
         /* Populate adapter types: */
         int iAdapterTypeIndex = 0;
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_Am79C970A));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Am79C970A));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Am79C970A);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
         ++iAdapterTypeIndex;
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_Am79C973));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Am79C973));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Am79C973);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
         ++iAdapterTypeIndex;
 #ifdef VBOX_WITH_E1000
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_I82540EM));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82540EM));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82540EM);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
         ++iAdapterTypeIndex;
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_I82543GC));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82543GC));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82543GC);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
         ++iAdapterTypeIndex;
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_I82545EM));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_I82545EM));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_I82545EM);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
@@ -571,5 +571,5 @@
 #endif /* VBOX_WITH_E1000 */
 #ifdef VBOX_WITH_VIRTIO
-        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gCOMenum->toString(KNetworkAdapterType_Virtio));
+        m_pAdapterTypeCombo->insertItem(iAdapterTypeIndex, gpConverter->toString(KNetworkAdapterType_Virtio));
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, KNetworkAdapterType_Virtio);
         m_pAdapterTypeCombo->setItemData(iAdapterTypeIndex, m_pAdapterTypeCombo->itemText(iAdapterTypeIndex), Qt::ToolTipRole);
@@ -591,13 +591,13 @@
         /* Populate promiscuous modes: */
         int iPromiscuousModeIndex = 0;
-        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gCOMenum->toString(KNetworkAdapterPromiscModePolicy_Deny));
+        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gpConverter->toString(KNetworkAdapterPromiscModePolicy_Deny));
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, KNetworkAdapterPromiscModePolicy_Deny);
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, m_pPromiscuousModeCombo->itemText(iPromiscuousModeIndex), Qt::ToolTipRole);
         ++iPromiscuousModeIndex;
-        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gCOMenum->toString(KNetworkAdapterPromiscModePolicy_AllowNetwork));
+        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gpConverter->toString(KNetworkAdapterPromiscModePolicy_AllowNetwork));
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, KNetworkAdapterPromiscModePolicy_AllowNetwork);
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, m_pPromiscuousModeCombo->itemText(iPromiscuousModeIndex), Qt::ToolTipRole);
         ++iPromiscuousModeIndex;
-        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gCOMenum->toString(KNetworkAdapterPromiscModePolicy_AllowAll));
+        m_pPromiscuousModeCombo->insertItem(iPromiscuousModeIndex, gpConverter->toString(KNetworkAdapterPromiscModePolicy_AllowAll));
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, KNetworkAdapterPromiscModePolicy_AllowAll);
         m_pPromiscuousModeCombo->setItemData(iPromiscuousModeIndex, m_pPromiscuousModeCombo->itemText(iPromiscuousModeIndex), Qt::ToolTipRole);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsPortForwardingDlg.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsPortForwardingDlg.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsPortForwardingDlg.cpp	(revision 41819)
@@ -38,5 +38,5 @@
 #include "QIDialogButtonBox.h"
 #include "UIIconPool.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* Other VBox includes: */
@@ -111,6 +111,6 @@
     ProtocolEditor(QWidget *pParent = 0) : QComboBox(pParent)
     {
-        addItem(gCOMenum->toString(KNATProtocol_UDP), QVariant::fromValue(KNATProtocol_UDP));
-        addItem(gCOMenum->toString(KNATProtocol_TCP), QVariant::fromValue(KNATProtocol_TCP));
+        addItem(gpConverter->toString(KNATProtocol_UDP), QVariant::fromValue(KNATProtocol_UDP));
+        addItem(gpConverter->toString(KNATProtocol_TCP), QVariant::fromValue(KNATProtocol_TCP));
     }
 
@@ -284,5 +284,5 @@
                 {
                     case UIPortForwardingDataType_Name: return m_dataList[index.row()].name;
-                    case UIPortForwardingDataType_Protocol: return gCOMenum->toString(m_dataList[index.row()].protocol);
+                    case UIPortForwardingDataType_Protocol: return gpConverter->toString(m_dataList[index.row()].protocol);
                     case UIPortForwardingDataType_HostIp: return m_dataList[index.row()].hostIp;
                     case UIPortForwardingDataType_HostPort: return m_dataList[index.row()].hostPort.value();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSerial.cpp	(revision 41819)
@@ -26,5 +26,5 @@
 #include "VBoxGlobal.h"
 #include "QITabWidget.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -76,5 +76,5 @@
     ulong uIRQ, uIOBase;
     bool fStd = vboxGlobal().toCOMPortNumbers(mCbNumber->currentText(), uIRQ, uIOBase);
-    KPortMode mode = gCOMenum->toPortMode(mCbMode->currentText());
+    KPortMode mode = gpConverter->fromString<KPortMode>(mCbMode->currentText());
 
     mGbSerial->setEnabled(m_pParent->isMachineOffline());
@@ -105,5 +105,5 @@
     mLeIRQ->setText(QString::number(portData.m_uIRQ));
     mLeIOPort->setText("0x" + QString::number(portData.m_uIOBase, 16).toUpper());
-    mCbMode->setCurrentIndex(mCbMode->findText(gCOMenum->toString(portData.m_hostMode)));
+    mCbMode->setCurrentIndex(mCbMode->findText(gpConverter->toString(portData.m_hostMode)));
     mCbPipe->setChecked(portData.m_fServer);
     mLePath->setText(portData.m_strPath);
@@ -123,5 +123,5 @@
     portData.m_uIOBase = mLeIOPort->text().toULong (NULL, 0);
     portData.m_fServer = mCbPipe->isChecked();
-    portData.m_hostMode = gCOMenum->toPortMode(mCbMode->currentText());
+    portData.m_hostMode = gpConverter->fromString<KPortMode>(mCbMode->currentText());
     portData.m_strPath = QDir::toNativeSeparators(mLePath->text());
 
@@ -173,8 +173,8 @@
     mCbNumber->setItemText (mCbNumber->count() - 1, vboxGlobal().toCOMPortName (0, 0));
 
-    mCbMode->setItemText (3, gCOMenum->toString (KPortMode_RawFile));
-    mCbMode->setItemText (2, gCOMenum->toString (KPortMode_HostDevice));
-    mCbMode->setItemText (1, gCOMenum->toString (KPortMode_HostPipe));
-    mCbMode->setItemText (0, gCOMenum->toString (KPortMode_Disconnected));
+    mCbMode->setItemText (3, gpConverter->toString (KPortMode_RawFile));
+    mCbMode->setItemText (2, gpConverter->toString (KPortMode_HostDevice));
+    mCbMode->setItemText (1, gpConverter->toString (KPortMode_HostPipe));
+    mCbMode->setItemText (0, gpConverter->toString (KPortMode_Disconnected));
 }
 
@@ -206,5 +206,5 @@
 void UIMachineSettingsSerial::mCbModeActivated (const QString &aText)
 {
-    KPortMode mode = gCOMenum->toPortMode (aText);
+    KPortMode mode = gpConverter->fromString<KPortMode> (aText);
     mCbPipe->setEnabled (mode == KPortMode_HostPipe);
     mLePath->setEnabled (mode != KPortMode_Disconnected);
@@ -409,5 +409,5 @@
         /* Check the port path emptiness & unicity */
         KPortMode mode =
-            gCOMenum->toPortMode (page->mCbMode->currentText());
+            gpConverter->fromString<KPortMode> (page->mCbMode->currentText());
         if (mode != KPortMode_Disconnected)
         {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 41819)
@@ -36,5 +36,5 @@
 #include "UIMessageCenter.h"
 #include "UIMachineSettingsStorage.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -550,6 +550,6 @@
                                  "<nobr>Type:&nbsp;&nbsp;%3</nobr>")
                                  .arg (mCtrName)
-                                 .arg (gCOMenum->toString (mCtrType->busType()))
-                                 .arg (gCOMenum->toString (mCtrType->ctrType()));
+                                 .arg (gpConverter->toString (mCtrType->busType()))
+                                 .arg (gpConverter->toString (mCtrType->ctrType()));
 }
 
@@ -2126,5 +2126,5 @@
             KDeviceType attDevice = mStorageModel->data (attIndex, StorageModel::R_AttDevice).value <KDeviceType>();
             QString key (mStorageModel->data (attIndex, StorageModel::R_AttMediumId).toString());
-            QString value (QString ("%1 (%2)").arg (ctrName, vboxGlobal().toString (attSlot)));
+            QString value (QString ("%1 (%2)").arg (ctrName, gpConverter->toString (attSlot)));
             /* Check for emptiness */
             if (vboxGlobal().findMedium (key).isNull() && attDevice == KDeviceType_HardDisk)
@@ -2153,5 +2153,5 @@
         {
             QString strExcessiveRecord = QString("%1 (%2)");
-            strExcessiveRecord = strExcessiveRecord.arg(QString("<b>%1</b>").arg(gCOMenum->toString((KStorageBus)iStorageBusType)));
+            strExcessiveRecord = strExcessiveRecord.arg(QString("<b>%1</b>").arg(gpConverter->toString((KStorageBus)iStorageBusType)));
             strExcessiveRecord = strExcessiveRecord.arg(maximumType[(KStorageBus)iStorageBusType] == 1 ?
                                                         tr("at most one supported", "controller") :
@@ -2165,5 +2165,5 @@
                         "Please change the chipset type on the System settings page or reduce the number "
                         "of the following storage controllers on the Storage settings page: %2.")
-                        .arg(gCOMenum->toString(mStorageModel->chipsetType()))
+                        .arg(gpConverter->toString(mStorageModel->chipsetType()))
                         .arg(excessiveList.join(", "));
         return false;
@@ -2431,7 +2431,7 @@
                 ControllerTypeList controllerTypeList (mStorageModel->data (index, StorageModel::R_CtrTypes).value <ControllerTypeList>());
                 for (int i = 0; i < controllerTypeList.size(); ++ i)
-                    mCbType->insertItem (mCbType->count(), gCOMenum->toString (controllerTypeList [i]));
+                    mCbType->insertItem (mCbType->count(), gpConverter->toString (controllerTypeList [i]));
                 KStorageControllerType type = mStorageModel->data (index, StorageModel::R_CtrType).value <KStorageControllerType>();
-                int ctrPos = mCbType->findText (gCOMenum->toString (type));
+                int ctrPos = mCbType->findText (gpConverter->toString (type));
                 mCbType->setCurrentIndex (ctrPos == -1 ? 0 : ctrPos);
 
@@ -2455,7 +2455,7 @@
                 SlotsList slotsList (mStorageModel->data (index, StorageModel::R_AttSlots).value <SlotsList>());
                 for (int i = 0; i < slotsList.size(); ++ i)
-                    mCbSlot->insertItem (mCbSlot->count(), vboxGlobal().toString (slotsList [i]));
+                    mCbSlot->insertItem (mCbSlot->count(), gpConverter->toString (slotsList [i]));
                 StorageSlot slt = mStorageModel->data (index, StorageModel::R_AttSlot).value <StorageSlot>();
-                int attSlotPos = mCbSlot->findText (vboxGlobal().toString (slt));
+                int attSlotPos = mCbSlot->findText (gpConverter->toString (slt));
                 mCbSlot->setCurrentIndex (attSlotPos == -1 ? 0 : attSlotPos);
                 mCbSlot->setToolTip (mCbSlot->itemText (mCbSlot->currentIndex()));
@@ -2551,5 +2551,5 @@
             /* Setting Controller Sub-Type */
             else if (sdr == mCbType)
-                mStorageModel->setData (index, QVariant::fromValue (gCOMenum->toControllerType (mCbType->currentText())),
+                mStorageModel->setData (index, QVariant::fromValue (gpConverter->fromString<KStorageControllerType> (mCbType->currentText())),
                                         StorageModel::R_CtrType);
             else if (sdr == mSbPortCount)
@@ -2565,5 +2565,5 @@
             {
                 QModelIndex controllerIndex = mStorageModel->parent(index);
-                StorageSlot attachmentStorageSlot = vboxGlobal().toStorageSlot(mCbSlot->currentText());
+                StorageSlot attachmentStorageSlot = gpConverter->fromString<StorageSlot>(mCbSlot->currentText());
                 mStorageModel->setData(index, QVariant::fromValue(attachmentStorageSlot), StorageModel::R_AttSlot);
                 QModelIndex theSameIndexAtNewPosition = mStorageModel->attachmentBySlot(controllerIndex, attachmentStorageSlot);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsSystem.cpp	(revision 41819)
@@ -26,5 +26,5 @@
 #include "VBoxGlobal.h"
 #include "UIMachineSettingsSystem.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -163,6 +163,6 @@
 
     /* Populate chipset combo: */
-    mCbChipset->insertItem(0, gCOMenum->toString(KChipsetType_PIIX3), QVariant(KChipsetType_PIIX3));
-    mCbChipset->insertItem(1, gCOMenum->toString(KChipsetType_ICH9), QVariant(KChipsetType_ICH9));
+    mCbChipset->insertItem(0, gpConverter->toString(KChipsetType_PIIX3), QVariant(KChipsetType_PIIX3));
+    mCbChipset->insertItem(1, gpConverter->toString(KChipsetType_ICH9), QVariant(KChipsetType_ICH9));
 
     /* Install global event filter */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSB.cpp	(revision 41819)
@@ -31,5 +31,5 @@
 #include "UIMachineSettingsUSB.h"
 #include "UIMachineSettingsUSBFilterDetails.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -821,5 +821,5 @@
             case UISettingsPageType_Global:
             {
-                usbFilterData.m_action = gCOMenum->toUSBDevFilterAction(dlgFilterDetails.mCbAction->currentText());
+                usbFilterData.m_action = gpConverter->fromString<KUSBDeviceFilterAction>(dlgFilterDetails.mCbAction->currentText());
                 break;
             }
@@ -1020,5 +1020,5 @@
     {
         strToolTip += strToolTip.isEmpty() ? "":"<br/>" + tr("<nobr>State: %1</nobr>", "USB filter tooltip")
-                                                          .arg(gCOMenum->toString(usbFilterData.m_hostUSBDeviceState));
+                                                          .arg(gpConverter->toString(usbFilterData.m_hostUSBDeviceState));
     }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSBFilterDetails.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSBFilterDetails.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsUSBFilterDetails.cpp	(revision 41819)
@@ -20,5 +20,5 @@
 /* GUI includes: */
 #include "UIMachineSettingsUSBFilterDetails.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 UIMachineSettingsUSBFilterDetails::UIMachineSettingsUSBFilterDetails(UISettingsPageType type, QWidget *pParent /* = 0 */)
@@ -63,7 +63,7 @@
 
     mCbAction->setItemText (0,
-        gCOMenum->toString (KUSBDeviceFilterAction_Ignore));
+        gpConverter->toString (KUSBDeviceFilterAction_Ignore));
     mCbAction->setItemText (1,
-        gCOMenum->toString (KUSBDeviceFilterAction_Hold));
+        gpConverter->toString (KUSBDeviceFilterAction_Hold));
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 41819)
@@ -33,5 +33,5 @@
 #include "VBoxOSTypeSelectorButton.h"
 #include "UILineTextEdit.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 /* COM includes: */
@@ -239,6 +239,6 @@
                     case KVirtualSystemDescriptionType_OS:             v = vboxGlobal().vmGuestOSTypeDescription(m_strConfigValue); break;
                     case KVirtualSystemDescriptionType_Memory:         v = m_strConfigValue + " " + VBoxGlobal::tr("MB", "size suffix MBytes=1024 KBytes"); break;
-                    case KVirtualSystemDescriptionType_SoundCard:      v = gCOMenum->toString(static_cast<KAudioControllerType>(m_strConfigValue.toInt())); break;
-                    case KVirtualSystemDescriptionType_NetworkAdapter: v = gCOMenum->toString(static_cast<KNetworkAdapterType>(m_strConfigValue.toInt())); break;
+                    case KVirtualSystemDescriptionType_SoundCard:      v = gpConverter->toString(static_cast<KAudioControllerType>(m_strConfigValue.toInt())); break;
+                    case KVirtualSystemDescriptionType_NetworkAdapter: v = gpConverter->toString(static_cast<KNetworkAdapterType>(m_strConfigValue.toInt())); break;
                     default:                                           v = m_strConfigValue; break;
                 }
@@ -436,7 +436,7 @@
             {
                 QComboBox *e = new QComboBox(pParent);
-                e->addItem(gCOMenum->toString(KAudioControllerType_AC97), KAudioControllerType_AC97);
-                e->addItem(gCOMenum->toString(KAudioControllerType_SB16), KAudioControllerType_SB16);
-                e->addItem(gCOMenum->toString(KAudioControllerType_HDA),  KAudioControllerType_HDA);
+                e->addItem(gpConverter->toString(KAudioControllerType_AC97), KAudioControllerType_AC97);
+                e->addItem(gpConverter->toString(KAudioControllerType_SB16), KAudioControllerType_SB16);
+                e->addItem(gpConverter->toString(KAudioControllerType_HDA),  KAudioControllerType_HDA);
                 editor = e;
                 break;
@@ -445,13 +445,13 @@
             {
                 QComboBox *e = new QComboBox(pParent);
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_Am79C970A), KNetworkAdapterType_Am79C970A);
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_Am79C973), KNetworkAdapterType_Am79C973);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_Am79C970A), KNetworkAdapterType_Am79C970A);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_Am79C973), KNetworkAdapterType_Am79C973);
 #ifdef VBOX_WITH_E1000
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_I82540EM), KNetworkAdapterType_I82540EM);
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_I82543GC), KNetworkAdapterType_I82543GC);
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_I82545EM), KNetworkAdapterType_I82545EM);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_I82540EM), KNetworkAdapterType_I82540EM);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_I82543GC), KNetworkAdapterType_I82543GC);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_I82545EM), KNetworkAdapterType_I82545EM);
 #endif /* VBOX_WITH_E1000 */
 #ifdef VBOX_WITH_VIRTIO
-                e->addItem(gCOMenum->toString(KNetworkAdapterType_Virtio), KNetworkAdapterType_Virtio);
+                e->addItem(gpConverter->toString(KNetworkAdapterType_Virtio), KNetworkAdapterType_Virtio);
 #endif /* VBOX_WITH_VIRTIO */
                 editor = e;
@@ -461,7 +461,7 @@
             {
                 QComboBox *e = new QComboBox(pParent);
-                e->addItem(gCOMenum->toString(KStorageControllerType_PIIX3), "PIIX3");
-                e->addItem(gCOMenum->toString(KStorageControllerType_PIIX4), "PIIX4");
-                e->addItem(gCOMenum->toString(KStorageControllerType_ICH6),  "ICH6");
+                e->addItem(gpConverter->toString(KStorageControllerType_PIIX3), "PIIX3");
+                e->addItem(gpConverter->toString(KStorageControllerType_PIIX4), "PIIX4");
+                e->addItem(gpConverter->toString(KStorageControllerType_ICH6),  "ICH6");
                 editor = e;
                 break;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIBootTable.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIBootTable.cpp	(revision 41818)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIBootTable.cpp	(revision 41819)
@@ -23,5 +23,5 @@
 /* Local includes */
 #include "UIBootTable.h"
-#include "COMEnumsWrapper.h"
+#include "UIConverter.h"
 
 UIBootTableItem::UIBootTableItem(KDeviceType type)
@@ -62,5 +62,5 @@
 void UIBootTableItem::retranslateUi()
 {
-    setText(gCOMenum->toString(m_type));
+    setText(gpConverter->toString(m_type));
 }
 
