Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.cpp	(revision 66579)
@@ -51,5 +51,4 @@
 {
     /* default settings */
-    guiFeatures = QString::null;
     languageId  = QString::null;
     maxGuestRes = QString::null;
@@ -61,5 +60,4 @@
 VBoxGlobalSettingsData::VBoxGlobalSettingsData (const VBoxGlobalSettingsData &that)
 {
-    guiFeatures = that.guiFeatures;
     languageId  = that.languageId;
     maxGuestRes = that.maxGuestRes;
@@ -76,6 +74,5 @@
 {
     return this == &that ||
-        (guiFeatures == that.guiFeatures &&
-         languageId  == that.languageId &&
+        (languageId  == that.languageId &&
          maxGuestRes == that.maxGuestRes &&
          remapScancodes == that.remapScancodes &&
@@ -103,5 +100,4 @@
 gPropertyMap[] =
 {
-    { "GUI/Customizations",                        "guiFeatures",             "\\S+", true },
     { "GUI/LanguageID",                            "languageId",              gVBoxLangIDRegExp, true },
     { "GUI/MaxGuestResolution",                    "maxGuestRes",             "\\d*[1-9]\\d*,\\d*[1-9]\\d*|any|auto", true },
@@ -110,10 +106,4 @@
     { "GUI/HostScreenSaverDisabled",               "hostScreenSaverDisabled", "true|false", true }
 };
-
-bool VBoxGlobalSettings::isFeatureActive (const char *aFeature) const
-{
-    QStringList featureList = data()->guiFeatures.split (',');
-    return featureList.contains (aFeature);
-}
 
 /**
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.h	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobalSettings.h	(revision 66579)
@@ -37,5 +37,4 @@
 private:
 
-    QString guiFeatures;
     QString languageId;
     QString maxGuestRes;
@@ -52,5 +51,4 @@
 {
     Q_OBJECT
-    Q_PROPERTY (QString guiFeatures READ guiFeatures WRITE setGuiFeatures)
     Q_PROPERTY (QString languageId READ languageId WRITE setLanguageId)
     Q_PROPERTY (QString maxGuestRes READ maxGuestRes WRITE setMaxGuestRes)
@@ -71,11 +69,4 @@
 
     // Properties
-
-    QString guiFeatures() const { return data()->guiFeatures; }
-    void setGuiFeatures (const QString &aFeatures)
-    {
-        mData()->guiFeatures = aFeatures;
-    }
-    bool isFeatureActive (const char*) const;
 
     QString languageId() const { return data()->languageId; }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackend.h	(revision 66579)
@@ -90,4 +90,5 @@
 template<> bool canConvert<PreviewUpdateIntervalType>();
 template<> bool canConvert<EventHandlingType>();
+template<> bool canConvert<GUIFeatureType>();
 template<> bool canConvert<GlobalSettingsPageType>();
 template<> bool canConvert<MachineSettingsPageType>();
@@ -167,4 +168,6 @@
 template<> PreviewUpdateIntervalType fromInternalInteger<PreviewUpdateIntervalType>(const int &iPreviewUpdateIntervalType);
 template<> EventHandlingType fromInternalString<EventHandlingType>(const QString &strEventHandlingType);
+template<> QString toInternalString(const GUIFeatureType &guiFeatureType);
+template<> GUIFeatureType fromInternalString<GUIFeatureType>(const QString &strGuiFeatureType);
 template<> QString toInternalString(const GlobalSettingsPageType &globalSettingsPageType);
 template<> GlobalSettingsPageType fromInternalString<GlobalSettingsPageType>(const QString &strGlobalSettingsPageType);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 66579)
@@ -57,4 +57,5 @@
 template<> bool canConvert<PreviewUpdateIntervalType>() { return true; }
 template<> bool canConvert<EventHandlingType>() { return true; }
+template<> bool canConvert<GUIFeatureType>() { return true; }
 template<> bool canConvert<GlobalSettingsPageType>() { return true; }
 template<> bool canConvert<MachineSettingsPageType>() { return true; }
@@ -1124,4 +1125,38 @@
 }
 
+/* QString <= GUIFeatureType: */
+template<> QString toInternalString(const GUIFeatureType &guiFeatureType)
+{
+    QString strResult;
+    switch (guiFeatureType)
+    {
+        case GUIFeatureType_NoSelector:  strResult = "noSelector"; break;
+        case GUIFeatureType_NoMenuBar:   strResult = "noMenuBar"; break;
+        case GUIFeatureType_NoStatusBar: strResult = "noStatusBar"; break;
+        default:
+        {
+            AssertMsgFailed(("No text for GUI feature type=%d", guiFeatureType));
+            break;
+        }
+    }
+    return strResult;
+}
+
+/* GUIFeatureType <= QString: */
+template<> GUIFeatureType fromInternalString<GUIFeatureType>(const QString &strGuiFeatureType)
+{
+    /* Here we have some fancy stuff allowing us
+     * to search through the keys using 'case-insensitive' rule: */
+    QStringList keys;      QList<GUIFeatureType> values;
+    keys << "noSelector";  values << GUIFeatureType_NoSelector;
+    keys << "noMenuBar";   values << GUIFeatureType_NoMenuBar;
+    keys << "noStatusBar"; values << GUIFeatureType_NoStatusBar;
+    /* None type for unknown words: */
+    if (!keys.contains(strGuiFeatureType, Qt::CaseInsensitive))
+        return GUIFeatureType_None;
+    /* Corresponding type for known words: */
+    return values.at(keys.indexOf(QRegExp(strGuiFeatureType, Qt::CaseInsensitive)));
+}
+
 /* QString <= GlobalSettingsPageType: */
 template<> QString toInternalString(const GlobalSettingsPageType &globalSettingsPageType)
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 66579)
@@ -45,4 +45,5 @@
 
 /* Settings: */
+const char* UIExtraDataDefs::GUI_Customizations = "GUI/Customizations";
 const char* UIExtraDataDefs::GUI_RestrictedGlobalSettingsPages = "GUI/RestrictedGlobalSettingsPages";
 const char* UIExtraDataDefs::GUI_RestrictedMachineSettingsPages = "GUI/RestrictedMachineSettingsPages";
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 66579)
@@ -65,4 +65,6 @@
     /** @name Settings
       * @{ */
+        /** Holds GUI feature list. */
+        extern const char* GUI_Customizations;
         /** Holds restricted Global Settings pages. */
         extern const char* GUI_RestrictedGlobalSettingsPages;
@@ -500,4 +502,14 @@
 };
 
+/** Common UI: GUI feature types. */
+enum GUIFeatureType
+{
+    GUIFeatureType_None        = 0,
+    GUIFeatureType_NoSelector  = RT_BIT(0),
+    GUIFeatureType_NoMenuBar   = RT_BIT(1),
+    GUIFeatureType_NoStatusBar = RT_BIT(2),
+    GUIFeatureType_All         = 0xFF
+};
+
 /** Common UI: Global settings page types. */
 enum GlobalSettingsPageType
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 66579)
@@ -2297,4 +2297,14 @@
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
 
+bool UIExtraDataManager::guiFeatureEnabled(GUIFeatureType enmFeature)
+{
+    /* Acquire GUI feature list: */
+    GUIFeatureType enmFeatures = GUIFeatureType_None;
+    foreach (const QString &strValue, extraDataStringList(GUI_Customizations))
+        enmFeatures = static_cast<GUIFeatureType>(enmFeatures | gpConverter->fromInternalString<GUIFeatureType>(strValue));
+    /* Return whether the requested feature is enabled: */
+    return enmFeatures & enmFeature;
+}
+
 QList<GlobalSettingsPageType> UIExtraDataManager::restrictedGlobalSettingsPages()
 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 66579)
@@ -179,4 +179,7 @@
     /** @name Settings
       * @{ */
+        /** Returns whether GUI @a enmFeature is enabled. */
+        bool guiFeatureEnabled(GUIFeatureType enmFeature);
+
         /** Returns restricted global settings pages. */
         QList<GlobalSettingsPageType> restrictedGlobalSettingsPages();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 66579)
@@ -4821,12 +4821,9 @@
 void VBoxGlobal::showUI()
 {
-    /* Load application settings: */
-    VBoxGlobalSettings appSettings = settings();
-
     /* Show Selector UI: */
     if (!isVMConsoleProcess())
     {
         /* Make sure Selector UI is permitted, quit if not: */
-        if (appSettings.isFeatureActive("noSelector"))
+        if (gEDataManager->guiFeatureEnabled(GUIFeatureType_NoSelector))
         {
             msgCenter().cannotStartSelector();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 66578)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 66579)
@@ -1312,5 +1312,5 @@
         /* Menu-bar options: */
         {
-            const bool fEnabledGlobally = !vboxGlobal().settings().isFeatureActive("noMenuBar");
+            const bool fEnabledGlobally = !gEDataManager->guiFeatureEnabled(GUIFeatureType_NoMenuBar);
             const bool fEnabledForMachine = gEDataManager->menuBarEnabled(strMachineID);
             const bool fEnabled = fEnabledGlobally && fEnabledForMachine;
@@ -1326,5 +1326,5 @@
         /* Status-bar options: */
         {
-            const bool fEnabledGlobally = !vboxGlobal().settings().isFeatureActive("noStatusBar");
+            const bool fEnabledGlobally = !gEDataManager->guiFeatureEnabled(GUIFeatureType_NoStatusBar);
             const bool fEnabledForMachine = gEDataManager->statusBarEnabled(strMachineID);
             const bool fEnabled = fEnabledGlobally && fEnabledForMachine;
