diff --git a/GUI/coregui/Models/GroupItemController.cpp b/GUI/coregui/Models/GroupItemController.cpp
index 42310cfba023e03df7ee381edab9c18bb66b981f..513d6bdcec67adc9b551159911813e570a698d5a 100644
--- a/GUI/coregui/Models/GroupItemController.cpp
+++ b/GUI/coregui/Models/GroupItemController.cpp
@@ -89,9 +89,12 @@ void GroupItemController::setCurrentIndex(int index)
     setCurrentType(toString(index));
 }
 
-QString GroupItemController::currentLabel() const
+QVariant GroupItemController::createCombo() const
 {
-    return itemLabels().at(currentIndex());
+    ComboProperty result;
+    result.setValues(itemLabels());
+    result.setCurrentIndex(currentIndex());
+    return result.variant();
 }
 
 QStringList GroupItemController::itemTypes() const
@@ -104,14 +107,6 @@ QStringList GroupItemController::itemLabels() const
     return m_groupInfo.itemLabels();
 }
 
-QVariant GroupItemController::createCombo() const
-{
-    ComboProperty result;
-    result.setValues(itemLabels());
-    result.setCurrentIndex(currentIndex());
-    return result.variant();
-}
-
 SessionItem* GroupItemController::addItem(const QString& item_type)
 {
     return ItemFactory::createItem(item_type);
diff --git a/GUI/coregui/Models/GroupItemController.h b/GUI/coregui/Models/GroupItemController.h
index b2055b688c8f36d9fbc5b18c104b1bc4d673f112..29327affe9040ac8e05a37c9b39ad4901449f6ac 100644
--- a/GUI/coregui/Models/GroupItemController.h
+++ b/GUI/coregui/Models/GroupItemController.h
@@ -40,18 +40,12 @@ public:
     int currentIndex() const;
     void setCurrentIndex(int index);
 
-    // FIXME remove after qtpropertybrowserframework removal
-    QString currentLabel() const;
-
-    QStringList itemTypes() const;
-
-    // FIXME make private after qtpropertybrowserframework removal
-    QStringList itemLabels() const;
 
     QVariant createCombo() const;
 
 private:
-
+    QStringList itemTypes() const;
+    QStringList itemLabels() const;
     SessionItem* addItem(const QString& item_type);
     SessionItem* createCorrespondingItem();
     int toIndex(const QString& type) const;
@@ -62,9 +56,4 @@ private:
     GroupInfo m_groupInfo;
 };
 
-// TODO Remove simultaneously with qtpropertybrowserframework
-#include <QSharedPointer>
-typedef QSharedPointer<GroupItemController> ObsoleteGroupProperty_t;
-Q_DECLARE_METATYPE(ObsoleteGroupProperty_t)
-
 #endif // GROUPITEMCONTROLLER_H
diff --git a/GUI/coregui/Models/ObsoleteColorProperty.h b/GUI/coregui/Models/ObsoleteColorProperty.h
deleted file mode 100644
index 52980ec6aba892a693ce92e88fdc448c60ed2fd6..0000000000000000000000000000000000000000
--- a/GUI/coregui/Models/ObsoleteColorProperty.h
+++ /dev/null
@@ -1,60 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Models/ObsoleteColorProperty.h
-//! @brief     Defines class ObsoleteColorProperty
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOLORPROPERTY_H
-#define OBSOLETECOLORPROPERTY_H
-
-#include "WinDllMacros.h"
-#include <QPixmap>
-#include <QVariant>
-
-//! The ColorProperty for SessionItem and PropertyEditor
-//!
-//! The reason is to have simple color editor in PropertyEditor instead of
-//! original one which is too sophisticated.
-class BA_CORE_API_ ObsoleteColorProperty
-{
-public:
-    ObsoleteColorProperty() : m_color(Qt::red) {}
-    ObsoleteColorProperty(QColor color) : m_color(color) {}
-    QPixmap getPixmap() const {
-        QPixmap pixmap(10,10);
-        pixmap.fill(m_color);
-        return pixmap;
-    }
-    QColor getColor() const { return m_color; }
-    void setColor(QColor color) { m_color = color; }
-    QString getText() const {
-        return QString("[%1, %2, %3] (%4)")
-               .arg(m_color.red()).arg(m_color.green()).arg(m_color.blue()).arg(m_color.alpha());
-    }
-
-    QVariant getVariant() const
-    {
-        QVariant variant;
-        variant.setValue(*this);
-        return variant;
-    }
-
-private:
-    QColor m_color;
-};
-
-Q_DECLARE_METATYPE(ObsoleteColorProperty)
-
-
-
-#endif // OBSOLETECOLORPROPERTY_H
diff --git a/GUI/coregui/Models/ObsoleteScientificDoubleProperty.h b/GUI/coregui/Models/ObsoleteScientificDoubleProperty.h
deleted file mode 100644
index c5310c1c78e700c6d0bf624dd9157bcc8b1a1bd6..0000000000000000000000000000000000000000
--- a/GUI/coregui/Models/ObsoleteScientificDoubleProperty.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Models/ObsoleteScientificDoubleProperty.h
-//! @brief     Defines class ObsoleteScientificDoubleProperty
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETESCIENTIFICDOUBLEPROPERTY_H
-#define OBSOLETESCIENTIFICDOUBLEPROPERTY_H
-
-#include "WinDllMacros.h"
-#include <QString>
-#include <QVariant>
-
-//! The ScientificDoubleProperty for SessionItem and PropertyEditor
-//!
-//! The reason is to have simple editor for doubles in scientific notation
-//! in PropertyEditor instead of inconvenient QDoubleSpinBox
-
-class BA_CORE_API_ ObsoleteScientificDoubleProperty
-{
-public:
-    explicit ObsoleteScientificDoubleProperty(double value = 0) : m_value(value) { }
-
-    double getValue() const { return m_value; }
-
-    void setValue(double value) { m_value = value; }
-
-    QString getText() const { return QString::number(m_value, 'g'); }
-
-    QVariant getVariant() const
-    {
-        QVariant result;
-        result.setValue(*this);
-        return result;
-    }
-
-private:
-    double m_value;
-};
-
-Q_DECLARE_METATYPE(ObsoleteScientificDoubleProperty)
-
-#endif // OBSOLETESCIENTIFICDOUBLEPROPERTY_H
-
diff --git a/GUI/coregui/Models/SessionXML.cpp b/GUI/coregui/Models/SessionXML.cpp
index 6315bd32277dcfe715fc15cd79a4dc108f7172cf..723a5c6e498a125641750a3c52a1691838eccc28 100644
--- a/GUI/coregui/Models/SessionXML.cpp
+++ b/GUI/coregui/Models/SessionXML.cpp
@@ -14,7 +14,6 @@
 //
 // ************************************************************************** //
 
-#include "ObsoleteColorProperty.h"
 #include "ComboProperty.h"
 #include "GUIHelpers.h"
 #include "GroupItem.h"
diff --git a/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.cpp b/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.cpp
deleted file mode 100644
index 4c4fbd4653ff7b09746199cd58966470eed89aa1..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.cpp
-//! @brief     Implements class ObsoleteComponentInfoBox
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#include "ObsoleteComponentInfoBox.h"
-#include "ObsoleteComponentBoxEditor.h"
-#include <QGroupBox>
-#include <QVBoxLayout>
-#include <iostream>
-
-ObsoleteComponentInfoBox::ObsoleteComponentInfoBox(const QString &title, QWidget *parent)
-    : QWidget(parent)
-    , m_groupBox(new GroupInfoBox(title))
-    , m_editor(new ObsoleteComponentBoxEditor)
-    , m_item(0)
-    , m_title(title)
-{
-    QVBoxLayout *mainLayout = new QVBoxLayout;
-
-    QVBoxLayout *groupBoxLayout = new QVBoxLayout;
-    groupBoxLayout->setContentsMargins( 0, 0, 0, 0 );
-    groupBoxLayout->addWidget(m_editor);
-    m_groupBox->setLayout(groupBoxLayout);
-
-    connect(m_groupBox, SIGNAL(clicked()), this, SLOT(dialogRequest()));
-
-    mainLayout->addWidget(m_groupBox);
-    mainLayout->addStretch();
-
-    setLayout(mainLayout);
-}
-
-void ObsoleteComponentInfoBox::addPropertyItems(SessionItem *item)
-{
-    m_editor->addPropertyItems(item);
-    m_item = item;
-}
-
-void ObsoleteComponentInfoBox::clearEditor()
-{
-    m_editor->clearEditor();
-    m_item = 0;
-}
-
-void ObsoleteComponentInfoBox::dialogRequest()
-{
-    emit onDialogRequest(m_item, m_title);
-}
diff --git a/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.h b/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.h
deleted file mode 100644
index b6ff621e652a723ebfd3cf14d505acab33d1307d..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/InstrumentWidgets/ObsoleteComponentInfoBox.h
-//! @brief     Defines class ObsoleteComponentInfoBox
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOMPONENTINFOBOX_H
-#define OBSOLETECOMPONENTINFOBOX_H
-
-#include "GroupInfoBox.h"
-#include "WinDllMacros.h"
-#include <QWidget>
-
-class ObsoleteComponentBoxEditor;
-class SessionItem;
-
-//! The ComponentEditorBox is a widget to display ComponentEditor inside
-//! custom group box equipped with help sign functionality
-//! (used to summon DistributionEditor)
-
-class BA_CORE_API_ ObsoleteComponentInfoBox : public QWidget
-{
-    Q_OBJECT
-public:
-    ObsoleteComponentInfoBox(const QString& title, QWidget* parent = 0);
-
-    void addPropertyItems(SessionItem* item);
-
-    void clearEditor();
-
-signals:
-    void onDialogRequest(SessionItem* item, const QString& names);
-
-private slots:
-    void dialogRequest();
-
-private:
-    GroupInfoBox* m_groupBox;
-    ObsoleteComponentBoxEditor* m_editor;
-    SessionItem* m_item;
-    QString m_title;
-};
-
-#endif // OBSOLETECOMPONENTINFOBOX_H
diff --git a/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.h b/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.h
index e083455f644489d109fa9ddd8ca98f11a7e50963..61147c38fd8ad2dc794299afd86254efb6b05f35 100644
--- a/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.h
+++ b/GUI/coregui/Views/MaterialEditor/MaterialItemUtils.h
@@ -17,7 +17,6 @@
 #ifndef MATERIALITEMUTILS_H
 #define MATERIALITEMUTILS_H
 
-#include "ObsoleteColorProperty.h"
 #include "MaterialItem.h"
 #include "ExternalProperty.h"
 #include <QColor>
diff --git a/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp b/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp
index 6393a9be6aef85ccf3c61f0f270e4bae37394c90..f2153e2aaaf2a5b8c61022980a362a5e1da6c802 100644
--- a/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp
+++ b/GUI/coregui/Views/PropertyEditor/CustomEditors.cpp
@@ -19,7 +19,6 @@
 #include "ExternalProperty.h"
 #include "GroupItemController.h"
 #include "ComboProperty.h"
-#include "ObsoleteColorProperty.h"
 #include "MaterialItemUtils.h"
 #include "GUIHelpers.h"
 #include <QBoxLayout>
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.cpp b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.cpp
deleted file mode 100644
index 5c056e5224e43d60d8bf7a85b1dd24c14099ba33..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.cpp
-//! @brief     Implements class ObsoleteComponentBoxEditor
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-#include "ObsoleteComponentBoxEditor.h"
-#include "ObsoleteComponentEditorPrivate.h"
-#include "CustomEventFilters.h"
-#include "SessionModel.h"
-#include <QModelIndex>
-
-ObsoleteComponentBoxEditor::ObsoleteComponentBoxEditor(QWidget *parent)
-    : ObsoleteComponentEditor(ObsoleteComponentEditorFlags::BROWSER_GROUPBOX, parent)
-{
-
-}
-
-////! adds all property items to thr PropertyGroup with given name
-void ObsoleteComponentBoxEditor::addPropertyItems(SessionItem *item, const QString &group_name)
-{
-    Q_ASSERT(item);
-    QtVariantProperty *groupProperty = m_d->processPropertyGroupForName(group_name);
-    updatePropertyItems(item, groupProperty);
-}
-
-void ObsoleteComponentBoxEditor::updatePropertyItems(SessionItem *item, QtVariantProperty *parentProperty)
-{
-    if(item->modelType() == Constants::PropertyType ||
-            item->modelType() == Constants::GroupItemType) {
-            updateItem(item, parentProperty);
-    }
-
-    if(m_d->m_item_to_insert_mode.contains(item)) {
-        if(m_d->m_item_to_insert_mode[item] == ObsoleteComponentEditorFlags::SINGLE) return;
-    }
-    foreach (SessionItem *childItem, componentItems(item)) {
-        updateItem(childItem, parentProperty);
-    }
-
-}
-
-//! add single item to property group with given name
-void ObsoleteComponentBoxEditor::addItem(SessionItem *item, const QString &group_name)
-{
-    Q_ASSERT(item);
-    QtVariantProperty *groupProperty = m_d->processPropertyGroupForName(group_name);
-    updateItem(item, groupProperty);
-    m_d->m_item_to_insert_mode[item] = ObsoleteComponentEditorFlags::SINGLE;
-}
-
-void ObsoleteComponentBoxEditor::updateItem(SessionItem *item, QtVariantProperty *parentProperty)
-{
-    connectModel(item->model());
-    m_d->processPropertyForItem(item, parentProperty);
-
-}
-
-void ObsoleteComponentBoxEditor::onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles)
-{
-    Q_UNUSED(bottomRight);
-//    if (topLeft != bottomRight)
-//        return;
-
-    SessionModel *model = qobject_cast<SessionModel *>(sender());
-    Q_ASSERT(model);
-    SessionItem *item = model->itemForIndex(topLeft);
-    Q_ASSERT(item);
-
-    if (QtVariantProperty *property = m_d->getPropertyForItem(item)) {
-        // updating editor's property appearance (tooltips, limits)
-        if (roles.contains(SessionFlags::FlagRole)) {
-            m_d->updatePropertyAppearance(property, item);
-        }
-
-        // updating editor's property values
-        if (roles.contains(Qt::DisplayRole) || roles.contains(Qt::EditRole)) {
-            disconnectManager();
-            property->setValue(item->value());
-            connectManager();
-
-            if(item->modelType() == Constants::GroupItemType) {
-                m_d->cleanChildren(item);
-                updatePropertyItems(item, m_d->m_item_to_qtparent[item]);
-//                updateEditor(item, m_d->getPropertyForItem(item->parent()));
-            }
-
-        }
-    }
-
-}
-
-void ObsoleteComponentBoxEditor::onRowsInserted(const QModelIndex &, int , int )
-{
-    // intentionally empty
-}
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.h b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.h
deleted file mode 100644
index 64f24dbe31c2631138188f719a2a4729c41807a4..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.h
+++ /dev/null
@@ -1,43 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentBoxEditor.h
-//! @brief     Defines class ObsoleteComponentBoxEditor
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOMPONENTBOXEDITOR_H
-#define OBSOLETECOMPONENTBOXEDITOR_H
-
-#include "ObsoleteComponentEditor.h"
-#include "WinDllMacros.h"
-
-//! Special version of editor to show property item as standard qt widgets
-
-class BA_CORE_API_ ObsoleteComponentBoxEditor : public ObsoleteComponentEditor
-{
-    Q_OBJECT
-public:
-    ObsoleteComponentBoxEditor(QWidget *parent = 0);
-
-    void addPropertyItems(SessionItem *item, const QString &group_name=QString());
-    void updatePropertyItems(SessionItem *item, QtVariantProperty *parentProperty=0);
-
-    void addItem(SessionItem *item, const QString &group_name=QString());
-    void updateItem(SessionItem *item, QtVariantProperty *parentProperty);
-
-public slots:
-    void onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
-                       const QVector<int> &roles);
-    void onRowsInserted(const QModelIndex &, int, int);
-};
-
-#endif // OBSOLETECOMPONENTBOXEDITOR_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp
deleted file mode 100644
index 427d608dfd8a1aa292d23834e60960c46328dd8c..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.cpp
-//! @brief     Implements class ObsoleteComponentEditor
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-#include "ObsoleteComponentEditor.h"
-#include "ObsoleteComponentEditorPrivate.h"
-#include "GroupItem.h"
-#include "GroupItemController.h"
-#include "SessionItem.h"
-#include "SessionModel.h"
-#include "qtpropertybrowser.h"
-#include <QVBoxLayout>
-#include <QVariant>
-#include <QTreeView>
-
-ObsoleteComponentEditor::ObsoleteComponentEditor(ObsoleteComponentEditorFlags::PresentationType flags, QWidget *parent)
-    : QWidget(parent)
-    , m_d(new ObsoleteComponentEditorPrivate(flags, this))
-{
-    setWindowTitle(QLatin1String("Property Editor"));
-    setObjectName(QLatin1String("ComponentEditor"));
-
-    QVBoxLayout *layout = new QVBoxLayout(this);
-    layout->setMargin(0);
-    layout->setSpacing(0);
-    layout->setContentsMargins(0,0,0,0);
-    layout->addWidget(m_d->m_browser);
-//    layout->addStretch();
-
-    connectManager();
-}
-
-ObsoleteComponentEditor::~ObsoleteComponentEditor()
-{
-}
-
-//! Sets editor to display all recursive properties of given item
-void ObsoleteComponentEditor::setItem(SessionItem *item, const QString &group_name)
-{
-    if(item == m_d->m_topItem)
-        return;
-
-    clearEditor();
-
-    m_d->m_topItem = item;
-    if(!item)
-        return;
-
-    connectModel(item->model());
-
-    QtVariantProperty *groupVariantProperty = m_d->processPropertyGroupForName(group_name);
-
-    foreach (SessionItem *childItem, componentItems(item)) {
-        updateEditor(childItem, groupVariantProperty);
-    }
-}
-
-
-//! Main function to run through SessionItem tree and fill editor with
-//! properties
-void ObsoleteComponentEditor::updateEditor(SessionItem *item,
-                                   QtVariantProperty *parentProperty)
-{
-    if (QtVariantProperty *childProperty
-        = m_d->processPropertyForItem(item, parentProperty)) {
-        parentProperty = childProperty;
-    }
-
-    foreach (SessionItem *childItem, componentItems(item)) {
-        updateEditor(childItem, parentProperty);
-    }
-}
-
-//! Clear editor from all properties, ready to accept new items
-void ObsoleteComponentEditor::clearEditor()
-{
-    if(m_d->m_topItem)
-        disconnectModel(m_d->m_topItem->model());
-    disconnect();
-    disconnectManager();
-    m_d->clear();
-    connectManager();
-}
-
-void ObsoleteComponentEditor::setHeaderHidden(bool hide)
-{
-    const QObjectList list = m_d->m_browser->children();
-    foreach(QObject *obj, list) {
-        QTreeView *view = dynamic_cast<QTreeView *>(obj);
-        if(view)
-            view->setHeaderHidden(hide);
-    }
-
-}
-
-//! Propagates data from SessionItem to editor
-void ObsoleteComponentEditor::onDataChanged(const QModelIndex &topLeft,
-                                    const QModelIndex &bottomRight,
-                                    const QVector<int> &roles)
-{
-//    if (topLeft != bottomRight)
-//        return;
-    Q_UNUSED(bottomRight);
-
-    SessionModel *model = qobject_cast<SessionModel *>(sender());
-    Q_ASSERT(model);
-    SessionItem *item = model->itemForIndex(topLeft);
-    Q_ASSERT(item);
-
-    if(m_d->m_changedItems.contains(item)) return;
-
-    if (QtVariantProperty *property = m_d->getPropertyForItem(item)) {
-        // updating editor's property appearance (tooltips, limits)
-        if (roles.contains(SessionFlags::FlagRole)) {
-            m_d->updatePropertyAppearance(property, item);
-        }
-
-        // updating editor's property values
-        if (roles.contains(Qt::DisplayRole) || roles.contains(Qt::EditRole)) {
-            disconnectManager();
-            property->setValue(item->value());
-            connectManager();
-
-            if(item->modelType() == Constants::GroupItemType) {
-                m_d->cleanChildren(item);
-                updateEditor(item, m_d->getPropertyForItem(item->parent()));
-            }
-
-        }
-    }
-}
-
-//! Updates the editor starting from given SessionItem's parent.
-//! Editor should know already about given item (i.e. corresponding
-//! QtVariantProperty should exist.
-void ObsoleteComponentEditor::onRowsInserted(const QModelIndex &parent, int,
-                                     int )
-{
-    SessionModel *model = qobject_cast<SessionModel *>(sender());
-
-    SessionItem *item = model->itemForIndex(parent);
-    Q_ASSERT(item);
-    if(m_d->m_changedItems.contains(item)) return;
-
-    if (QtVariantProperty *property = m_d->getPropertyForItem(item)) {
-        updateEditor(item, property);
-    }
-}
-
-//! Propagates value from the editor to SessionItem
-void ObsoleteComponentEditor::onQtPropertyChanged(QtProperty *property,
-                                          const QVariant &value)
-{
-    if (SessionItem *item = m_d->getItemForProperty(property)) {
-        Q_ASSERT(item);
-//        disconnectModel(item->model());
-        m_d->m_changedItems.append(item);
-        item->setValue(value);
-//        connectModel(item->model());
-        m_d->m_changedItems.removeAll(item);
-    }
-}
-
-//! Returns list of children suitable for displaying in ComponentEditor.
-QList<SessionItem *>
-ObsoleteComponentEditor::componentItems(SessionItem *item) const
-{
-    QList<SessionItem *> result;
-    foreach (SessionItem *child, item->children()) {
-        if (!child->isVisible())
-            continue;
-
-        if (child->modelType() == Constants::PropertyType) {
-            result.append(child);
-        }
-
-        else if (child->modelType() == Constants::GroupItemType) {
-            result.append(child);
-        }
-
-        else if (child->modelType() == Constants::VectorType) {
-            result.append(child);
-        }
-
-        else if (child->modelType() == Constants::MaterialDataType) {
-            result.append(child);
-        }
-
-        else if (child->modelType() == Constants::BasicAxisType ||
-                 child->modelType() == Constants::AmplitudeAxisType) {
-            result.append(child);
-        }
-
-        if (item->modelType() == Constants::GroupItemType) {
-            foreach (SessionItem *childOfChild, child->children()) {
-                if (childOfChild->isVisible())
-                    result.append(childOfChild);
-            }
-        }
-
-    }
-
-    return result;
-}
-
-
-void ObsoleteComponentEditor::disconnectModel(SessionModel *model)
-{
-    if(!model) return;
-
-    disconnect(
-        model, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &,
-                                  const QVector<int> &)),
-        this, SLOT(onDataChanged(const QModelIndex &, const QModelIndex &,
-                                 const QVector<int> &)));
-
-    disconnect(model, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this,
-               SLOT(onRowsInserted(const QModelIndex &, int, int)));
-}
-
-void ObsoleteComponentEditor::connectModel(SessionModel *model)
-{
-    if(!model) return;
-
-    connect(model, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &,
-                                      const QVector<int> &)),
-            this, SLOT(onDataChanged(const QModelIndex &, const QModelIndex &,
-                                     const QVector<int> &)),
-            Qt::UniqueConnection);
-
-    connect(model, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this,
-            SLOT(onRowsInserted(const QModelIndex &, int, int)),
-            Qt::UniqueConnection);
-}
-
-void ObsoleteComponentEditor::disconnectManager()
-{
-    disconnect(m_d->m_manager,
-               SIGNAL(valueChanged(QtProperty *, const QVariant &)), this,
-               SLOT(onQtPropertyChanged(QtProperty *, const QVariant &)));
-}
-
-void ObsoleteComponentEditor::connectManager()
-{
-    connect(m_d->m_manager,
-            SIGNAL(valueChanged(QtProperty *, const QVariant &)), this,
-            SLOT(onQtPropertyChanged(QtProperty *, const QVariant &)),
-            Qt::UniqueConnection);
-}
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.h b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.h
deleted file mode 100644
index 52ff3fc3647c52dce4d3c579441ed12e104358da..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.h
+++ /dev/null
@@ -1,67 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditor.h
-//! @brief     Defines class ObsoleteComponentEditor
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOMPONENTEDITOR_H
-#define OBSOLETECOMPONENTEDITOR_H
-
-#include "ObsoleteComponentEditorFlags.h"
-#include "WinDllMacros.h"
-#include <QWidget>
-#include <memory>
-
-class ObsoleteComponentEditorPrivate;
-class SessionItem;
-class SessionModel;
-class QtVariantProperty;
-class QtProperty;
-
-class BA_CORE_API_ ObsoleteComponentEditor : public QWidget
-{
-    Q_OBJECT
-public:
-    ObsoleteComponentEditor(ObsoleteComponentEditorFlags::PresentationType flags = ObsoleteComponentEditorFlags::BROWSER_TABLE, QWidget *parent = 0);
-
-    virtual ~ObsoleteComponentEditor();
-
-    void setItem(SessionItem *item, const QString &group_name=QString());
-
-    void updateEditor(SessionItem *item, QtVariantProperty *parentProperty = 0);
-
-    void clearEditor();
-
-    void setHeaderHidden(bool hide);
-
-public slots:
-    virtual void onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles);
-    virtual void onRowsInserted(const QModelIndex &parent, int first, int last);
-
-private slots:
-    void onQtPropertyChanged(QtProperty *, const QVariant &value);
-
-protected:
-    QList<SessionItem *> componentItems(SessionItem *item) const;
-    void cleanChildren(SessionItem *item);
-
-    void disconnectModel(SessionModel *model);
-    void connectModel(SessionModel *model);
-    void disconnectManager();
-    void connectManager();
-
-    std::unique_ptr<ObsoleteComponentEditorPrivate> m_d;
-};
-
-
-#endif // OBSOLETECOMPONENTEDITOR_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorFlags.h b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorFlags.h
deleted file mode 100644
index bcd06e839581570eff3507d58acd8229ac1ab9d9..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorFlags.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorFlags.h
-//! @brief     Defines class ObsoleteComponentEditorFlags
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOMPONENTEDITORFLAGS_H
-#define OBSOLETECOMPONENTEDITORFLAGS_H
-
-#include "WinDllMacros.h"
-#include <QObject>
-
-class BA_CORE_API_ ObsoleteComponentEditorFlags
-{
-public:
-    enum EPresentationType {
-        BROWSER_TABLE = 0x001,    // table-like browser
-        BROWSER_GROUPBOX = 0x002, // groupbox-like browser
-        BROWSER_BUTTON = 0x004    // button-like browser
-    };
-    Q_DECLARE_FLAGS(PresentationType, EPresentationType)
-
-    enum EInsertModeType {
-        RECURSIVE = 0x001,
-        SINGLE = 0x002,
-    };
-    Q_DECLARE_FLAGS(InsertMode, EInsertModeType)
-
-
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(ObsoleteComponentEditorFlags::PresentationType)
-
-
-#endif // OBSOLETECOMPONENTEDITORFLAGS_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.cpp b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.cpp
deleted file mode 100644
index 673345038bb195de64ec8c8ef474bef4d418a3ef..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.cpp
-//! @brief     Implements class ObsoleteComponentEditorPrivate
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#include "ObsoleteComponentEditorPrivate.h"
-#include "CustomEventFilters.h"
-#include "GUIHelpers.h"
-#include <QComboBox>
-#include <QString>
-#include <cmath>
-
-ObsoleteComponentEditorPrivate::ObsoleteComponentEditorPrivate(ObsoleteComponentEditorFlags::PresentationType flags, QWidget *parent)
-    : m_browser(0), m_manager(0), m_read_only_manager(0)
-    , m_propertyFactory(new ObsoletePropertyVariantFactory(parent))
-    , m_presentationType(flags)
-    , m_wheel_event_filter(new WheelEventEater)
-    , m_topItem(0)
-{
-    m_read_only_manager = new ObsoletePropertyVariantManager(parent);
-    m_manager = new ObsoletePropertyVariantManager(parent);
-    init_browser();
-}
-
-ObsoleteComponentEditorPrivate::~ObsoleteComponentEditorPrivate()
-{
-    clear();
-}
-
-void ObsoleteComponentEditorPrivate::clear()
-{
-    m_browser->clear();
-
-    auto it = m_qtproperty_to_item.begin();
-    while (it != m_qtproperty_to_item.end()) {
-        delete it.key();
-        it++;
-    }
-
-    m_qtproperty_to_item.clear();
-    m_item_to_qtvariantproperty.clear();
-    m_groupname_to_qtvariant.clear();
-    m_item_to_qtparent.clear();
-    m_item_to_insert_mode.clear();
-    m_changedItems.clear();
-}
-
-void ObsoleteComponentEditorPrivate::init_browser()
-{
-    delete m_browser;
-    m_browser = 0;
-
-    if (m_presentationType & ObsoleteComponentEditorFlags::BROWSER_TABLE) {
-        QtTreePropertyBrowser *browser = new QtTreePropertyBrowser;
-        browser->setResizeMode(QtTreePropertyBrowser::Interactive);
-        browser->setRootIsDecorated(false);
-        m_browser = browser;
-    }
-
-    else if (m_presentationType & ObsoleteComponentEditorFlags::BROWSER_GROUPBOX) {
-        m_browser = new QtGroupBoxPropertyBrowser;
-    }
-
-    else if (m_presentationType & ObsoleteComponentEditorFlags::BROWSER_BUTTON) {
-        m_browser = new QtButtonPropertyBrowser;
-
-    } else {
-        throw GUIHelpers::Error(
-            "ComponentEditorPrivate::init_browser() -> Error. "
-            "Unknown browser type.");
-    }
-    m_browser->setAttribute(Qt::WA_MacShowFocusRect, false);
-    m_browser->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
-    m_browser->setFactoryForManager(m_manager, m_propertyFactory);
-}
-
-//! Creates, if necessary, qtVariantProperty for given item and place it in the editor
-QtVariantProperty *ObsoleteComponentEditorPrivate::
-    processPropertyForItem(SessionItem *item, QtVariantProperty *parentProperty)
-{
-    QtVariantProperty *itemProperty = getPropertyForItem(item);
-    if (!itemProperty) {
-        itemProperty = createQtVariantProperty(item);
-        if (itemProperty) {
-            m_qtproperty_to_item[itemProperty] = item;
-            m_item_to_qtvariantproperty[item] = itemProperty;
-        }
-
-        if (itemProperty) {
-            if (parentProperty) {
-                parentProperty->addSubProperty(itemProperty);
-                m_item_to_qtparent[item] = parentProperty;
-            } else {
-                m_browser->addProperty(itemProperty);
-            }
-        }
-    }
-
-    install_custom_filters();
-
-    return itemProperty;
-}
-
-//! Returns QtVariantProperty representing given item in ComponentEditor.
-QtVariantProperty *ObsoleteComponentEditorPrivate::getPropertyForItem(SessionItem *item)
-{
-    if (m_item_to_qtvariantproperty.contains(item)) {
-        return m_item_to_qtvariantproperty[item];
-    }
-    return nullptr;
-}
-
-//! Returns SessionItem corresponding to QtVariantProperty representation
-SessionItem *ObsoleteComponentEditorPrivate::getItemForProperty(QtProperty *property)
-{
-    if (m_qtproperty_to_item.contains(property)) {
-        return m_qtproperty_to_item[property];
-    }
-    return nullptr;
-}
-
-//! creates QtVariantProperty for given SessionItem's property
-QtVariantProperty *ObsoleteComponentEditorPrivate::createQtVariantProperty(SessionItem *item)
-{
-    QtVariantProperty *result(0);
-
-    QString property_name = item->itemName();
-    QVariant prop_value = item->value();
-
-    if (!prop_value.isValid()) {
-        result = m_manager->addProperty(QtVariantPropertyManager::groupTypeId(), property_name);
-
-    } else {
-        int type = GUIHelpers::getVariantType(prop_value);
-
-        QtVariantPropertyManager *manager = m_manager;
-        if (!item->isEditable())
-            manager = m_read_only_manager;
-
-        if (!manager->isPropertyTypeSupported(type)) {
-            throw GUIHelpers::Error(
-                "ComponentEditor::createQtVariantProperty() -> Error. Not supported property type "
-                + property_name);
-        }
-
-        result = manager->addProperty(type, property_name);
-        result->setValue(prop_value);
-    }
-
-    updatePropertyAppearance(result, item);
-    return result;
-}
-
-QtVariantProperty *ObsoleteComponentEditorPrivate::processPropertyGroupForName(const QString &name)
-{
-    QtVariantProperty *result = getPropertyForGroupName(name);
-    if(result == nullptr && name.size()) {
-        result = m_manager->addProperty(QtVariantPropertyManager::groupTypeId(), name);
-        m_groupname_to_qtvariant[name] = result;
-        m_browser->addProperty(result);
-    }
-    return result;
-}
-
-QtVariantProperty *ObsoleteComponentEditorPrivate::getPropertyForGroupName(const QString &name)
-{
-    if (m_groupname_to_qtvariant.contains(name)) {
-        return m_groupname_to_qtvariant[name];
-    }
-    return nullptr;
-}
-
-//! removes given qtVariantProperty from browser and all maps
-void ObsoleteComponentEditorPrivate::removeQtVariantProperty(QtVariantProperty *property)
-{
-    m_browser->removeProperty(property);
-    delete property;
-    auto it = m_qtproperty_to_item.find(property);
-    if (it != m_qtproperty_to_item.end()) {
-        SessionItem *item = it.value();
-        m_item_to_qtvariantproperty.remove(item);
-        m_item_to_qtparent.remove(item);
-        m_item_to_insert_mode.remove(item);
-        m_qtproperty_to_item.erase(it);
-    }
-}
-
-//! update visual apperance of qtVariantProperty using SessionItem's attribute
-void ObsoleteComponentEditorPrivate::updatePropertyAppearance(QtVariantProperty *property,
-                                                      SessionItem* item)
-{
-    Q_ASSERT(property);
-
-    QString toolTip = item->toolTip();
-    if (!toolTip.isEmpty())
-        property->setToolTip(toolTip);
-
-    if (item->isEnabled()) {
-        property->setEnabled(true);
-    } else {
-        property->setEnabled(false);
-    }
-
-    QVariant prop_value = property->value();
-    if (!prop_value.isValid())
-        return;
-    int type = GUIHelpers::getVariantType(prop_value);
-
-    if (type == QVariant::Double) {
-        RealLimits limits = item->limits();
-        if (limits.hasLowerLimit())
-            property->setAttribute(QStringLiteral("minimum"), limits.getLowerLimit());
-        if (limits.hasUpperLimit())
-            property->setAttribute(QStringLiteral("maximum"), limits.getUpperLimit());
-        property->setAttribute(QStringLiteral("decimals"), item->decimals());
-        property->setAttribute(QStringLiteral("singleStep"),
-                               1. / std::pow(10., item->decimals() - 1));
-    } else if (type == QVariant::Int) {
-        RealLimits limits = item->limits();
-        if (limits.hasLowerLimit())
-            property->setAttribute(QStringLiteral("minimum"), int(limits.getLowerLimit()));
-        if (limits.hasUpperLimit())
-            property->setAttribute(QStringLiteral("maximum"), int(limits.getUpperLimit()));
-    }
-}
-
-//! removes properties of all child items
-void ObsoleteComponentEditorPrivate::cleanChildren(SessionItem *item)
-{
-    foreach(SessionItem *child, item->children()) {
-        if (QtVariantProperty *property = getPropertyForItem(child)) {
-            removeQtVariantProperty(property);
-        }
-        cleanChildren(child);
-    }
-}
-
-//! installs WheelEventEater on all comboxes
-// hack to change behaviour of ComboBoxes and SpinBoxes produced by QtGroupBoxPropertyBrowser
-// with the goal to react on mouse wheel event only when there is keyboard focus
-void ObsoleteComponentEditorPrivate::install_custom_filters()
-{
-    if(m_presentationType & ObsoleteComponentEditorFlags::BROWSER_GROUPBOX) {
-        QList<QAbstractSpinBox*> spinboxes = m_browser->findChildren<QAbstractSpinBox *>();
-        QList<QComboBox*> comboboxes = m_browser->findChildren<QComboBox *>();
-        foreach(QAbstractSpinBox *w, spinboxes) {
-            w->removeEventFilter(m_wheel_event_filter.get());
-            w->installEventFilter(m_wheel_event_filter.get());
-            w->setFocusPolicy(Qt::StrongFocus);
-        }
-        foreach(QComboBox *w, comboboxes) {
-            w->removeEventFilter(m_wheel_event_filter.get());
-            w->installEventFilter(m_wheel_event_filter.get());
-        }
-    }
-}
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.h b/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.h
deleted file mode 100644
index 9166b5a5bddca926b7b9aed02fccad38b389aac1..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.h
+++ /dev/null
@@ -1,82 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoleteComponentEditorPrivate.h
-//! @brief     Defines class ObsoleteComponentEditorPrivate
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETECOMPONENTEDITORPRIVATE_H
-#define OBSOLETECOMPONENTEDITORPRIVATE_H
-
-#include "ObsoleteComponentEditorFlags.h"
-#include "ObsoletePropertyVariantFactory.h"
-#include "ObsoletePropertyVariantManager.h"
-#include "SessionItem.h"
-#include "WinDllMacros.h"
-#include "qtbuttonpropertybrowser.h"
-#include "qtgroupboxpropertybrowser.h"
-#include "qttreepropertybrowser.h"
-#include <QMap>
-#include <memory>
-
-class WheelEventEater;
-
-//! Holds logic for ComponentEditor
-
-class BA_CORE_API_ ObsoleteComponentEditorPrivate
-{
-public:
-    ObsoleteComponentEditorPrivate(ObsoleteComponentEditorFlags::PresentationType flags
-                           = ObsoleteComponentEditorFlags::BROWSER_TABLE,
-                           QWidget *parent = 0);
-
-
-    ~ObsoleteComponentEditorPrivate();
-
-    void clear();
-    void init_browser();
-
-    QtVariantProperty *
-    processPropertyForItem(SessionItem *item,
-                           QtVariantProperty *parentProperty);
-    QtVariantProperty *getPropertyForItem(SessionItem *item);
-    SessionItem *getItemForProperty(QtProperty *property);
-    QtVariantProperty *createQtVariantProperty(SessionItem *item);
-
-    QtVariantProperty *processPropertyGroupForName(const QString &name);
-    QtVariantProperty *getPropertyForGroupName(const QString &name);
-
-    void removeQtVariantProperty(QtVariantProperty *property);
-    void updatePropertyAppearance(QtVariantProperty *property,
-                                  SessionItem* item);
-    void cleanChildren(SessionItem *item);
-
-    void install_custom_filters();
-
-    QtAbstractPropertyBrowser *m_browser;
-    QtVariantPropertyManager *m_manager;
-    QtVariantPropertyManager *m_read_only_manager;
-    ObsoletePropertyVariantFactory *m_propertyFactory;
-
-    QMap<QtProperty *, SessionItem *> m_qtproperty_to_item;
-    QMap<SessionItem *, QtVariantProperty *> m_item_to_qtvariantproperty;
-    QMap<QString, QtVariantProperty *> m_groupname_to_qtvariant;
-    QMap<SessionItem *, QtVariantProperty *> m_item_to_qtparent;
-    QMap<SessionItem *, ObsoleteComponentEditorFlags::InsertMode> m_item_to_insert_mode;
-
-    ObsoleteComponentEditorFlags::PresentationType m_presentationType;
-    QList<SessionItem *> m_changedItems;
-    std::unique_ptr<WheelEventEater> m_wheel_event_filter;
-    SessionItem *m_topItem;
-};
-
-#endif // OBSOLETECOMPONENTEDITORPRIVATE_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.cpp b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.cpp
deleted file mode 100644
index 2127f8e0c8c3aed28f7e409a9c1063163761a963..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.cpp
+++ /dev/null
@@ -1,375 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.cpp
-//! @brief     Implements class ObsoletePropertyBrowserUtils
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#include "ObsoletePropertyBrowserUtils.h"
-#include "CustomEventFilters.h"
-#include "MaterialItemUtils.h"
-#include <QColorDialog>
-#include <QComboBox>
-#include <QDoubleValidator>
-#include <QFileDialog>
-#include <QFocusEvent>
-#include <QHBoxLayout>
-#include <QIcon>
-#include <QLabel>
-#include <QLineEdit>
-#include <QPixmap>
-#include <QRgb>
-#include <QToolButton>
-
-// -----------------------------------------------------------------------------
-// MaterialPropertyEdit
-// -----------------------------------------------------------------------------
-
-ObsoleteMaterialPropertyEdit::ObsoleteMaterialPropertyEdit(QWidget *parent)
-    : QWidget(parent)
-    , m_focusFilter(new LostFocusFilter(this))
-{
-    setMouseTracking(true);
-    setAutoFillBackground(true);
-
-    QHBoxLayout *layout = new QHBoxLayout;
-    layout->setMargin(2);
-    layout->setSpacing(0);
-
-    m_textLabel = new QLabel;
-    m_textLabel->setText(m_materialProperty.text());
-
-    m_pixmapLabel = new QLabel;
-    m_pixmapLabel->setPixmap(m_materialProperty.pixmap());
-
-    QToolButton *button = new QToolButton;
-    button->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,
-                                      QSizePolicy::Preferred));
-    button->setText(QLatin1String("..."));
-    layout->addWidget(m_pixmapLabel, Qt::AlignLeft);
-    layout->addWidget(m_textLabel, Qt::AlignLeft);
-    layout->addStretch(1);
-    layout->addWidget(button);
-    setFocusPolicy(Qt::StrongFocus);
-    setAttribute(Qt::WA_InputMethodEnabled);
-    connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-
-    setLayout(layout);
-}
-
-void ObsoleteMaterialPropertyEdit::buttonClicked()
-{
-    // temporarily installing filter to prevent loss of focus caused by too  insistent dialog
-    installEventFilter(m_focusFilter);
-    ExternalProperty mat = MaterialItemUtils::selectMaterialProperty(m_materialProperty);
-    removeEventFilter(m_focusFilter);
-
-    if(mat.isValid() ) {
-        setMaterialProperty(mat);
-        emit materialPropertyChanged(m_materialProperty);
-    }
-}
-
-
-void ObsoleteMaterialPropertyEdit::setMaterialProperty(
-        const ExternalProperty &materialProperty)
-{
-    m_materialProperty = materialProperty;
-    m_textLabel->setText(m_materialProperty.text());
-    m_pixmapLabel->setPixmap(m_materialProperty.pixmap());
-}
-
-
-// -----------------------------------------------------------------------------
-// GroupPropertyEdit
-// -----------------------------------------------------------------------------
-ObsoleteGroupPropertyEdit::ObsoleteGroupPropertyEdit(QWidget *parent)
-    : QWidget(parent)
-    , m_box(new QComboBox())
-    , m_label(new QLabel())
-    , m_groupProperty(0)
-{
-    setAutoFillBackground(true);
-    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
-    QVBoxLayout *layout = new QVBoxLayout();
-    layout->setMargin(0);
-    layout->setSpacing(0);
-    layout->addWidget(m_box);
-    layout->addWidget(m_label);
-    m_label->hide();
-
-    connect(m_box, SIGNAL(currentIndexChanged(int)),
-            this, SLOT(indexChanged(int)));
-
-    setLayout(layout);
-}
-
-ObsoleteGroupPropertyEdit::~ObsoleteGroupPropertyEdit()
-{
-}
-
-void ObsoleteGroupPropertyEdit::setGroupProperty(ObsoleteGroupProperty_t groupProperty)
-{
-    if(groupProperty) {
-        m_groupProperty = groupProperty;
-        processGroup();
-    }
-}
-
-void ObsoleteGroupPropertyEdit::processGroup()
-{
-    disconnect(m_box, SIGNAL(currentIndexChanged(int)),
-            this, SLOT(indexChanged(int)));
-
-    if(m_box->count() != m_groupProperty->itemLabels().size()) {
-        m_box->clear();
-        m_box->insertItems(0, m_groupProperty->itemLabels());
-    }
-    m_box->setCurrentIndex(m_groupProperty->currentIndex());
-
-    connect(m_box, SIGNAL(currentIndexChanged(int)),
-            this, SLOT(indexChanged(int)), Qt::UniqueConnection);
-}
-
-void ObsoleteGroupPropertyEdit::indexChanged(int index)
-{
-    m_groupProperty->setCurrentIndex(index);
-}
-
-QSize ObsoleteGroupPropertyEdit::sizeHint() const
-{
-    if(m_box)
-        return m_box->sizeHint();
-
-    if(m_label)
-        return m_label->sizeHint();
-
-    return QSize(100,10);
-}
-
-QSize ObsoleteGroupPropertyEdit::minimumSizeHint() const
-{
-    if(m_box)
-        return m_box->minimumSizeHint();
-
-    if(m_label)
-        return m_label->minimumSizeHint();
-
-    return QSize(100,10);
-}
-
-ObsoleteGroupProperty_t ObsoleteGroupPropertyEdit::group() const
-{
-    return m_groupProperty;
-}
-
-void ObsoleteGroupPropertyEdit::setGroup(ObsoleteGroupProperty_t group)
-{
-    setGroupProperty(group);
-}
-
-
-// -----------------------------------------------------------------------------
-// ColorPropertyEdit
-// -----------------------------------------------------------------------------
-
-ObsoleteColorPropertyEdit::ObsoleteColorPropertyEdit(QWidget *parent)
-    : QWidget(parent)
-{
-    setAutoFillBackground(true);
-
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->setMargin(2);
-    layout->setSpacing(2);
-
-    m_textLabel = new QLabel(this);
-    m_textLabel->setText(colorValueText(m_colorProperty.getColor()));
-
-    m_pixmapLabel = new QLabel(this);
-    m_pixmapLabel->setPixmap(m_colorProperty.getPixmap());
-
-    QToolButton *button = new QToolButton(this);
-    button->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,
-                                      QSizePolicy::Preferred));
-    button->setText(QLatin1String("..."));
-    layout->insertSpacing(-1,1);
-    layout->addWidget(m_pixmapLabel);
-    layout->insertSpacing(-1,6);
-    layout->addWidget(m_textLabel);
-    layout->addStretch(1);
-    layout->addWidget(button);
-
-    setFocusPolicy(Qt::StrongFocus);
-    setAttribute(Qt::WA_InputMethodEnabled);
-    connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-}
-
-
-void ObsoleteColorPropertyEdit::buttonClicked()
-{
-    bool ok = false;
-    QRgb oldRgba = m_colorProperty.getColor().rgba();
-    QRgb newRgba = QColorDialog::getRgba(oldRgba, &ok, this);
-    if (ok && newRgba != oldRgba) {
-        m_colorProperty.setColor(QColor::fromRgba(newRgba));
-        m_pixmapLabel->setPixmap(m_colorProperty.getPixmap());
-        emit colorPropertyChanged(m_colorProperty);
-    }
-
-}
-
-void ObsoleteColorPropertyEdit::setColorProperty(
-        const ObsoleteColorProperty &colorProperty)
-{
-    m_colorProperty = colorProperty;
-    m_textLabel->setText(colorValueText(m_colorProperty.getColor()));
-    m_pixmapLabel->setPixmap(m_colorProperty.getPixmap());
-}
-
-QString ObsoleteColorPropertyEdit::colorValueText(const QColor &c)
-{
-    return QString("[%1, %2, %3] (%4)")
-           .arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha());
-}
-
-
-// -----------------------------------------------------------------------------
-// ScientificDoublePropertyEdit
-// -----------------------------------------------------------------------------
-
-
-ObsoleteScientificDoublePropertyEdit::ObsoleteScientificDoublePropertyEdit(QWidget *parent)
-    : QWidget(parent)
-{
-    setAutoFillBackground(true);
-    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
-    QVBoxLayout *layout = new QVBoxLayout();
-    layout->setMargin(0);
-    layout->setSpacing(0);
-
-    m_lineEdit = new QLineEdit(this);
-    layout->addWidget(m_lineEdit);
-
-    m_validator  = new QDoubleValidator(0.0, 1e+100, 1000, this);
-    m_validator->setNotation(QDoubleValidator::ScientificNotation);
-    m_lineEdit->setValidator(m_validator);
-
-    connect(m_lineEdit, SIGNAL(editingFinished()),
-            this, SLOT(onEditingFinished()));
-
-    setLayout(layout);
-}
-
-void ObsoleteScientificDoublePropertyEdit::setScientificDoubleProperty(
-        const ObsoleteScientificDoubleProperty &doubleProperty)
-{
-    m_lineEdit->setText(doubleProperty.getText());
-    m_scientificDoubleProperty = doubleProperty;
-}
-
-void ObsoleteScientificDoublePropertyEdit::onEditingFinished()
-{
-    double new_value = m_lineEdit->text().toDouble();
-    if(new_value != m_scientificDoubleProperty.getValue()) {
-        ObsoleteScientificDoubleProperty doubleProperty(new_value);
-        setScientificDoubleProperty(doubleProperty);
-        emit scientificDoublePropertyChanged(m_scientificDoubleProperty);
-    }
-}
-
-QSize ObsoleteScientificDoublePropertyEdit::sizeHint() const
-{
-    return m_lineEdit->sizeHint();
-}
-
-QSize ObsoleteScientificDoublePropertyEdit::minimumSizeHint() const
-{
-    return m_lineEdit->minimumSizeHint();
-}
-
-// -----------------------------------------------------------------------------
-// ComboPropertyEdit
-// -----------------------------------------------------------------------------
-
-//ComboPropertyEdit::ComboPropertyEdit(QWidget *parent)
-//    : QWidget(parent)
-//    , m_comboBox(0)
-//{
-//    m_comboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-//}
-
-ObsoleteComboPropertyEdit::ObsoleteComboPropertyEdit(QWidget *parent)
-    : QComboBox(parent)
-{
-    setAutoFillBackground(true);
-}
-
-//ComboPropertyEdit::~ComboPropertyEdit()
-//{
-//}
-
-void ObsoleteComboPropertyEdit::setComboProperty(
-        const ComboProperty &combo_property)
-{
-    m_combo_property = combo_property;
-//    if (!m_comboBox) {
-//        m_comboBox = new QComboBox(this);
-//    }
-
-    disconnect(this, SIGNAL(currentIndexChanged(QString)),
-            this, SLOT(onCurrentIndexChanged(QString)));
-
-//    m_comboBox->clear();
-    if(count() !=m_combo_property.getValues().size()) {
-        clear();
-        QStringList value_list = m_combo_property.getValues();
-
-        addItems(value_list);
-
-        int index(0);
-        foreach(QString descr, m_combo_property.toolTips())
-            setItemData(index++, descr, Qt::ToolTipRole);
-
-    }
-    setCurrentText(comboValueText());
-
-    connect(this, SIGNAL(currentIndexChanged(QString)),
-            this, SLOT(onCurrentIndexChanged(QString)));
-}
-
-QString ObsoleteComboPropertyEdit::comboValueText()
-{
-    return m_combo_property.getValue();
-}
-
-//QSize ComboPropertyEdit::sizeHint() const
-//{
-//    Q_ASSERT(m_comboBox);
-//    return m_comboBox->sizeHint();
-
-//}
-
-//QSize ComboPropertyEdit::minimumSizeHint() const
-//{
-//    Q_ASSERT(m_comboBox);
-//    return m_comboBox->minimumSizeHint();
-//}
-
-void ObsoleteComboPropertyEdit::onCurrentIndexChanged(QString current_value)
-{
-    m_combo_property.setValue(current_value);
-    emit comboPropertyChanged(m_combo_property);
-}
-
-
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h
deleted file mode 100644
index 9d082894770a93179282662dec55913cda2838a5..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h
+++ /dev/null
@@ -1,169 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyBrowserUtils.h
-//! @brief     Defines class ObsoletePropertyBrowserUtils
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETEPROPERTYBROWSERUTILS_H
-#define OBSOLETEPROPERTYBROWSERUTILS_H
-
-#include <QWidget>
-#include "ExternalProperty.h"
-#include "ObsoleteColorProperty.h"
-#include "ObsoleteScientificDoubleProperty.h"
-#include "GroupItemController.h"
-#include "ComboProperty.h"
-
-class QLabel;
-class QIcon;
-class QComboBox;
-class QLineEdit;
-class QDoubleValidator;
-class LostFocusFilter;
-
-//! The MaterialPropertyEdit class provides PropertyVariantFactory with editing
-//! widget for MaterialProperty.
-class BA_CORE_API_ ObsoleteMaterialPropertyEdit : public QWidget
-{
-    Q_OBJECT
-public:
-    ObsoleteMaterialPropertyEdit(QWidget *parent = 0);
-
-    void setMaterialProperty(const ExternalProperty &materialProperty);
-    ExternalProperty getMaterialProperty() const {return m_materialProperty; }
-signals:
-    void materialPropertyChanged(const ExternalProperty &material);
-private slots:
-    void buttonClicked();
-private:
-    QLabel *m_textLabel;
-    QLabel *m_pixmapLabel;
-    ExternalProperty m_materialProperty;
-    LostFocusFilter* m_focusFilter;
-};
-
-
-class BA_CORE_API_ ObsoleteGroupPropertyEdit : public QWidget
-{
-    Q_OBJECT
-
-    Q_PROPERTY(ObsoleteGroupProperty_t group READ group WRITE setGroup USER true)
-
-public:
-    ObsoleteGroupPropertyEdit(QWidget *parent = 0);
-    virtual ~ObsoleteGroupPropertyEdit();
-
-    void setGroupProperty(ObsoleteGroupProperty_t groupProperty);
-    ObsoleteGroupProperty_t getGroupProperty() const;
-
-    virtual QSize sizeHint() const;
-    virtual QSize minimumSizeHint() const;
-
-    ObsoleteGroupProperty_t group() const;
-    void setGroup(ObsoleteGroupProperty_t group);
-
-signals:
-    void groupPropertyChanged(const ObsoleteGroupProperty_t &group_property);
-
-private slots:
-    void indexChanged(int index);
-
-private:
-    void processGroup();
-    QComboBox *m_box;
-    QLabel *m_label;
-    ObsoleteGroupProperty_t m_groupProperty;
-};
-
-inline ObsoleteGroupProperty_t ObsoleteGroupPropertyEdit::getGroupProperty() const
-{
-    return m_groupProperty;
-}
-
-
-//! The ColorPropertyEdit class provides PropertyVariantFactory with editing
-//! widget for ColorProperty
-class BA_CORE_API_ ObsoleteColorPropertyEdit : public QWidget
-{
-    Q_OBJECT
-public:
-    ObsoleteColorPropertyEdit(QWidget *parent = 0);
-
-    void setColorProperty(const ObsoleteColorProperty &colorProperty);
-    ObsoleteColorProperty getColorProperty() const {return m_colorProperty; }
-
-    QString colorValueText(const QColor &c);
-
-signals:
-    void colorPropertyChanged(const ObsoleteColorProperty &material_color);
-
-private slots:
-    void buttonClicked();
-private:
-    QLabel *m_textLabel;
-    QLabel *m_pixmapLabel;
-    ObsoleteColorProperty m_colorProperty;
-};
-
-
-//! The ScientificDoublePropertyEdit class provides PropertyVariantFactory with editing
-//! widget for ScientificDoubleProperty
-class BA_CORE_API_ ObsoleteScientificDoublePropertyEdit : public QWidget
-{
-    Q_OBJECT
-public:
-    ObsoleteScientificDoublePropertyEdit(QWidget *parent = 0);
-
-    void setScientificDoubleProperty(const ObsoleteScientificDoubleProperty &doubleProperty);
-    ObsoleteScientificDoubleProperty getScientificDoubleProperty() const {
-        return m_scientificDoubleProperty;
-    }
-
-    QSize sizeHint() const;
-    QSize minimumSizeHint() const;
-
-signals:
-    void scientificDoublePropertyChanged(const ObsoleteScientificDoubleProperty &doubleProperty);
-private slots:
-    void onEditingFinished();
-private:
-    QLineEdit *m_lineEdit;
-    QDoubleValidator *m_validator;
-    ObsoleteScientificDoubleProperty m_scientificDoubleProperty;
-};
-
-#include <QComboBox>
-
-//! The ComboPropertyEdit class provides PropertyVariantFactory with editing
-//! widget for ComboProperty
-class BA_CORE_API_ ObsoleteComboPropertyEdit : public QComboBox
-{
-    Q_OBJECT
-public:
-    ObsoleteComboPropertyEdit(QWidget *parent = 0);
-
-    void setComboProperty(const ComboProperty &combo_property);
-    ComboProperty getComboProperty() const {return m_combo_property; }
-
-    QString comboValueText();
-
-signals:
-    void comboPropertyChanged(const ComboProperty &combo_property);
-private slots:
-    void onCurrentIndexChanged(QString current_value);
-
-private:
-    ComboProperty m_combo_property;
-};
-
-#endif // OBSOLETEPROPERTYBROWSERUTILS_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.cpp b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.cpp
deleted file mode 100644
index 3c23860285b3a801cb3f44b0ee3673e3a1270a69..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.cpp
-//! @brief     Implements class ObsoletePropertyVariantFactory
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#include "ObsoletePropertyVariantFactory.h"
-#include "ObsoletePropertyBrowserUtils.h"
-#include "ObsoletePropertyVariantManager.h"
-
-ObsoletePropertyVariantFactory::~ObsoletePropertyVariantFactory()
-{
-    QList<ObsoleteMaterialPropertyEdit *> mat_editors =
-            m_material_editor_to_property.keys();
-    QListIterator<ObsoleteMaterialPropertyEdit *> mat_it(mat_editors);
-    while (mat_it.hasNext())
-        delete mat_it.next();
-
-    QList<ObsoleteColorPropertyEdit *> color_editors =
-            m_color_editor_to_property.keys();
-    QListIterator<ObsoleteColorPropertyEdit *> color_it(color_editors);
-    while (color_it.hasNext())
-        delete color_it.next();
-
-    QList<ObsoleteScientificDoublePropertyEdit *> scdouble_editors =
-            m_scdouble_editor_to_property.keys();
-    QListIterator<ObsoleteScientificDoublePropertyEdit *> scdouble_it(scdouble_editors);
-    while (scdouble_it.hasNext())
-        delete scdouble_it.next();
-
-    QList<ObsoleteGroupPropertyEdit *> fancy_editors =
-            m_fancygroup_editor_to_property.keys();
-    QListIterator<ObsoleteGroupPropertyEdit *> fancy_it(fancy_editors);
-    while (fancy_it.hasNext())
-        delete fancy_it.next();
-
-    QList<ObsoleteComboPropertyEdit *> combo_editors =
-            m_combo_editor_to_property.keys();
-    QListIterator<ObsoleteComboPropertyEdit *> combo_it(combo_editors);
-    while (combo_it.hasNext())
-        delete combo_it.next();
-}
-
-void ObsoletePropertyVariantFactory::connectPropertyManager(
-        QtVariantPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty *, const QVariant &)),
-                this, SLOT(slotPropertyChanged(QtProperty *,
-                                               const QVariant &)));
-    connect(manager, SIGNAL(attributeChanged(QtProperty *, const QString &,
-                                             const QVariant &)),
-                this, SLOT(slotPropertyAttributeChanged(QtProperty *,
-                                    const QString &, const QVariant &)));
-    QtVariantEditorFactory::connectPropertyManager(manager);
-}
-
-
-QWidget *ObsoletePropertyVariantFactory::createEditor(QtVariantPropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    if (manager->propertyType(property) ==
-            ObsoletePropertyVariantManager::materialTypeId()) {
-        ObsoleteMaterialPropertyEdit *editor = new ObsoleteMaterialPropertyEdit(parent);
-        QVariant var = manager->value(property);
-        ExternalProperty mat = var.value<ExternalProperty>();
-        editor->setMaterialProperty(mat);
-
-        m_property_to_material_editors[property].append(editor);
-        m_material_editor_to_property[editor] = property;
-
-        connect(editor, SIGNAL(materialPropertyChanged(const ExternalProperty &)),
-                this, SLOT(slotSetValue(const ExternalProperty &)));
-        connect(editor, SIGNAL(destroyed(QObject *)),
-                this, SLOT(slotEditorDestroyed(QObject *)));
-        return editor;
-    }
-
-    if (manager->propertyType(property) ==
-            ObsoletePropertyVariantManager::colorPropertyTypeId()) {
-        ObsoleteColorPropertyEdit *editor = new ObsoleteColorPropertyEdit(parent);
-        QVariant var = manager->value(property);
-        ObsoleteColorProperty mat = var.value<ObsoleteColorProperty>();
-        editor->setColorProperty(mat);
-
-        m_property_to_color_editors[property].append(editor);
-        m_color_editor_to_property[editor] = property;
-
-        connect(editor, SIGNAL(colorPropertyChanged(const ObsoleteColorProperty &)),
-                this, SLOT(slotSetValue(const ObsoleteColorProperty &)));
-        connect(editor, SIGNAL(destroyed(QObject *)),
-                this, SLOT(slotEditorDestroyed(QObject *)));
-        return editor;
-    }
-
-    if (manager->propertyType(property) ==
-            ObsoletePropertyVariantManager::scientificDoubleTypeId()) {
-        ObsoleteScientificDoublePropertyEdit *editor = new ObsoleteScientificDoublePropertyEdit(parent);
-        QVariant var = manager->value(property);
-        ObsoleteScientificDoubleProperty sc = var.value<ObsoleteScientificDoubleProperty>();
-        editor->setScientificDoubleProperty(sc);
-
-        m_property_to_scdouble_editors[property].append(editor);
-        m_scdouble_editor_to_property[editor] = property;
-
-        connect(editor,
-                SIGNAL(scientificDoublePropertyChanged(const ObsoleteScientificDoubleProperty &)),
-                this, SLOT(slotSetValue(const ObsoleteScientificDoubleProperty &)));
-        connect(editor, SIGNAL(destroyed(QObject *)),
-                this, SLOT(slotEditorDestroyed(QObject *)));
-        return editor;
-    }
-
-    if (manager->propertyType(property) ==
-            ObsoletePropertyVariantManager::fancyGroupTypeId()) {
-        ObsoleteGroupPropertyEdit *editor = new ObsoleteGroupPropertyEdit(parent);
-        QVariant var = manager->value(property);
-        ObsoleteGroupProperty_t ff = var.value<ObsoleteGroupProperty_t>();
-        editor->setGroupProperty(ff);
-
-        m_property_to_fancygroup_editors[property].append(editor);
-        m_fancygroup_editor_to_property[editor] = property;
-
-        connect(editor,
-                SIGNAL(groupPropertyChanged(ObsoleteGroupProperty_t)),
-                this, SLOT(slotSetValue(ObsoleteGroupProperty_t)));
-
-        connect(editor, SIGNAL(destroyed(QObject *)),
-                this, SLOT(slotEditorDestroyed(QObject *)));
-        return editor;
-    }
-
-    if (manager->propertyType(property) ==
-            ObsoletePropertyVariantManager::comboPropertyTypeId()) {
-        ObsoleteComboPropertyEdit *editor = new ObsoleteComboPropertyEdit(parent);
-
-        QVariant var = manager->value(property);
-        ComboProperty combo = var.value<ComboProperty>();
-        editor->setComboProperty(combo);
-
-        m_property_to_combo_editors[property].append(editor);
-        m_combo_editor_to_property[editor] = property;
-
-        connect(editor, SIGNAL(comboPropertyChanged(const ComboProperty &)),
-                this, SLOT(slotSetValue(const ComboProperty &)));
-        connect(editor, SIGNAL(destroyed(QObject *)),
-                this, SLOT(slotEditorDestroyed(QObject *)));
-        return editor;
-    }
-
-    return QtVariantEditorFactory::createEditor(manager, property, parent);
-}
-
-
-void ObsoletePropertyVariantFactory::disconnectPropertyManager(
-        QtVariantPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty *, const QVariant &)),
-               this, SLOT(slotPropertyChanged(QtProperty *, const QVariant &)));
-    disconnect(manager, SIGNAL(attributeChanged(QtProperty *, const QString &,
-                                     const QVariant &)),
-                this, SLOT(slotPropertyAttributeChanged(QtProperty *,
-                                     const QString &, const QVariant &)));
-    QtVariantEditorFactory::disconnectPropertyManager(manager);
-}
-
-
-void ObsoletePropertyVariantFactory::slotPropertyChanged(QtProperty *property,
-                const QVariant &value)
-{
-    if (m_property_to_material_editors.contains(property)) {
-        QList<ObsoleteMaterialPropertyEdit *> editors =
-                m_property_to_material_editors[property];
-        QListIterator<ObsoleteMaterialPropertyEdit *> itEditor(editors);
-        while (itEditor.hasNext()) {
-            ExternalProperty mat = value.value<ExternalProperty>();
-            itEditor.next()->setMaterialProperty(mat);
-        }
-    }
-    else if (m_property_to_color_editors.contains(property)) {
-        QList<ObsoleteColorPropertyEdit *> editors =
-                m_property_to_color_editors[property];
-        QListIterator<ObsoleteColorPropertyEdit *> itEditor(editors);
-        while (itEditor.hasNext()) {
-            ObsoleteColorProperty mat = value.value<ObsoleteColorProperty>();
-            itEditor.next()->setColorProperty(mat);
-        }
-    }
-    else if (m_property_to_scdouble_editors.contains(property)) {
-        QList<ObsoleteScientificDoublePropertyEdit *> editors =
-                m_property_to_scdouble_editors[property];
-        QListIterator<ObsoleteScientificDoublePropertyEdit *> itEditor(editors);
-        while (itEditor.hasNext()) {
-            ObsoleteScientificDoubleProperty mat = value.value<ObsoleteScientificDoubleProperty>();
-            itEditor.next()->setScientificDoubleProperty(mat);
-        }
-    }
-    else if (m_property_to_fancygroup_editors.contains(property)) {
-        QList<ObsoleteGroupPropertyEdit *> editors =
-                m_property_to_fancygroup_editors[property];
-        QListIterator<ObsoleteGroupPropertyEdit *> itEditor(editors);
-        while (itEditor.hasNext()) {
-            ObsoleteGroupProperty_t mat = value.value<ObsoleteGroupProperty_t>();
-            itEditor.next()->setGroupProperty(mat);
-        }
-    }
-    else if (m_property_to_combo_editors.contains(property)) {
-        QList<ObsoleteComboPropertyEdit *> editors =
-                m_property_to_combo_editors[property];
-        QListIterator<ObsoleteComboPropertyEdit *> itEditor(editors);
-        while (itEditor.hasNext()) {
-            ComboProperty combo = value.value<ComboProperty>();
-            itEditor.next()->setComboProperty(combo);
-        }
-    }
-}
-
-
-void ObsoletePropertyVariantFactory::slotSetValue(const ExternalProperty &value)
-{
-    QObject *object = sender();
-    QMap<ObsoleteMaterialPropertyEdit *, QtProperty *>::ConstIterator itEditor =
-                m_material_editor_to_property.constBegin();
-    while (itEditor != m_material_editor_to_property.constEnd()) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtVariantPropertyManager *manager = propertyManager(property);
-            if (!manager) return;
-            QVariant var;
-            var.setValue(value);
-            manager->setValue(property, var);
-            return;
-        }
-        itEditor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotSetValue(const ObsoleteColorProperty &value)
-{
-    QObject *object = sender();
-    QMap<ObsoleteColorPropertyEdit *, QtProperty *>::ConstIterator itEditor =
-                m_color_editor_to_property.constBegin();
-    while (itEditor != m_color_editor_to_property.constEnd()) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtVariantPropertyManager *manager = propertyManager(property);
-            if (!manager) return;
-            QVariant var;
-            var.setValue(value);
-            manager->setValue(property, var);
-            return;
-        }
-        itEditor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotSetValue(const ObsoleteScientificDoubleProperty &value)
-{
-    QObject *object = sender();
-    QMap<ObsoleteScientificDoublePropertyEdit *, QtProperty *>::ConstIterator itEditor =
-                m_scdouble_editor_to_property.constBegin();
-    while (itEditor != m_scdouble_editor_to_property.constEnd()) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtVariantPropertyManager *manager = propertyManager(property);
-            if (!manager) return;
-            QVariant var;
-            var.setValue(value);
-            manager->setValue(property, var);
-            return;
-        }
-        itEditor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotSetValue(const ObsoleteGroupProperty_t &value)
-{
-    QObject *object = sender();
-    QMap<ObsoleteGroupPropertyEdit *, QtProperty *>::ConstIterator itEditor =
-                m_fancygroup_editor_to_property.constBegin();
-    while (itEditor != m_fancygroup_editor_to_property.constEnd()) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtVariantPropertyManager *manager = propertyManager(property);
-            if (!manager) return;
-            QVariant var;
-            var.setValue(value);
-            manager->setValue(property, var);
-            return;
-        }
-        itEditor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotSetValue(const ComboProperty &value)
-{
-    QObject *object = sender();
-    QMap<ObsoleteComboPropertyEdit *, QtProperty *>::ConstIterator itEditor =
-                m_combo_editor_to_property.constBegin();
-    while (itEditor != m_combo_editor_to_property.constEnd()) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtVariantPropertyManager *manager = propertyManager(property);
-            if (!manager) return;
-            QVariant var;
-            var.setValue(value);
-            manager->setValue(property, var);
-            return;
-        }
-        itEditor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotEditorDestroyed(QObject *object)
-{
-    QMap<ObsoleteMaterialPropertyEdit *, QtProperty *>::ConstIterator mat_it_editor =
-                m_material_editor_to_property.constBegin();
-    while (mat_it_editor != m_material_editor_to_property.constEnd()) {
-        if (mat_it_editor.key() == object) {
-            ObsoleteMaterialPropertyEdit *editor = mat_it_editor.key();
-            QtProperty *property = mat_it_editor.value();
-            m_material_editor_to_property.remove(editor);
-            m_property_to_material_editors[property].removeAll(editor);
-            if (m_property_to_material_editors[property].isEmpty())
-                m_property_to_material_editors.remove(property);
-            return;
-        }
-        mat_it_editor++;
-    }
-
-    QMap<ObsoleteColorPropertyEdit *, QtProperty *>::ConstIterator color_it_editor =
-                m_color_editor_to_property.constBegin();
-    while (color_it_editor != m_color_editor_to_property.constEnd()) {
-        if (color_it_editor.key() == object) {
-            ObsoleteColorPropertyEdit *editor = color_it_editor.key();
-            QtProperty *property = color_it_editor.value();
-            m_color_editor_to_property.remove(editor);
-            m_property_to_color_editors[property].removeAll(editor);
-            if (m_property_to_color_editors[property].isEmpty())
-                m_property_to_color_editors.remove(property);
-            return;
-        }
-        color_it_editor++;
-    }
-
-    QMap<ObsoleteScientificDoublePropertyEdit *, QtProperty *>::ConstIterator scdouble_it_editor =
-                m_scdouble_editor_to_property.constBegin();
-    while (scdouble_it_editor != m_scdouble_editor_to_property.constEnd()) {
-        if (scdouble_it_editor.key() == object) {
-            ObsoleteScientificDoublePropertyEdit *editor = scdouble_it_editor.key();
-            QtProperty *property = scdouble_it_editor.value();
-            m_scdouble_editor_to_property.remove(editor);
-            m_property_to_scdouble_editors[property].removeAll(editor);
-            if (m_property_to_scdouble_editors[property].isEmpty())
-                m_property_to_scdouble_editors.remove(property);
-            return;
-        }
-        scdouble_it_editor++;
-    }
-
-    QMap<ObsoleteGroupPropertyEdit *, QtProperty *>::ConstIterator fancygroup_editor_it =
-                m_fancygroup_editor_to_property.constBegin();
-    while (fancygroup_editor_it != m_fancygroup_editor_to_property.constEnd()) {
-        if (fancygroup_editor_it.key() == object) {
-            ObsoleteGroupPropertyEdit *editor = fancygroup_editor_it.key();
-            QtProperty *property = fancygroup_editor_it.value();
-            m_fancygroup_editor_to_property.remove(editor);
-            m_property_to_fancygroup_editors[property].removeAll(editor);
-            if (m_property_to_fancygroup_editors[property].isEmpty())
-                m_property_to_fancygroup_editors.remove(property);
-            return;
-        }
-        fancygroup_editor_it++;
-    }
-
-    QMap<ObsoleteComboPropertyEdit *, QtProperty *>::ConstIterator combo_it_editor =
-                m_combo_editor_to_property.constBegin();
-    while (combo_it_editor != m_combo_editor_to_property.constEnd()) {
-        if (combo_it_editor.key() == object) {
-            ObsoleteComboPropertyEdit *editor = combo_it_editor.key();
-            QtProperty *property = combo_it_editor.value();
-            m_combo_editor_to_property.remove(editor);
-            m_property_to_combo_editors[property].removeAll(editor);
-            if (m_property_to_combo_editors[property].isEmpty())
-                m_property_to_combo_editors.remove(property);
-            return;
-        }
-        combo_it_editor++;
-    }
-}
-
-void ObsoletePropertyVariantFactory::slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &)
-{
-
-}
-
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h
deleted file mode 100644
index e37002e0da8dc31c8e1109769871dde2a8a0c6be..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantFactory.h
-//! @brief     Defines class ObsoletePropertyVariantFactory
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef PROPERTYVARIANTFACTORY_H
-#define PROPERTYVARIANTFACTORY_H
-
-//! collection of classes extending QtPropertyBrowser functionality
-
-#include "GroupItemController.h"
-#include <QtVariantEditorFactory>
-
-class ObsoleteMaterialPropertyEdit;
-class ExternalProperty;
-class ObsoleteColorPropertyEdit;
-class ObsoleteColorProperty;
-class ObsoleteScientificDoublePropertyEdit;
-class ObsoleteScientificDoubleProperty;
-class ObsoleteGroupPropertyEdit;
-class ObsoleteComboPropertyEdit;
-class ComboProperty;
-
-//! The PropertyVariantFactory class provides and manages user defined
-//! QVariant based properties.
-class BA_CORE_API_ ObsoletePropertyVariantFactory : public QtVariantEditorFactory
-{
-    Q_OBJECT
-public:
-    ObsoletePropertyVariantFactory(QObject *parent = 0)
-        : QtVariantEditorFactory(parent)
-            { }
-
-    virtual ~ObsoletePropertyVariantFactory();
-protected:
-    virtual void connectPropertyManager(QtVariantPropertyManager *manager);
-    using QtVariantEditorFactory::createEditor;
-    virtual QWidget *createEditor(QtVariantPropertyManager *manager,
-                                  QtProperty *property, QWidget *parent);
-    virtual void disconnectPropertyManager(QtVariantPropertyManager *manager);
-private slots:
-    void slotPropertyChanged(QtProperty *property, const QVariant &value);
-    void slotSetValue(const ExternalProperty &value);
-    void slotSetValue(const ObsoleteColorProperty &value);
-    void slotSetValue(const ObsoleteScientificDoubleProperty &value);
-    void slotSetValue(const ObsoleteGroupProperty_t &value);
-    void slotSetValue(const ComboProperty &value);
-    void slotEditorDestroyed(QObject *object);
-    void slotPropertyAttributeChanged(QtProperty *, const QString &, const QVariant &);
-
-private:
-    QMap<QtProperty *, QList<ObsoleteMaterialPropertyEdit *> >
-        m_property_to_material_editors;
-    QMap<ObsoleteMaterialPropertyEdit *, QtProperty *>
-        m_material_editor_to_property;
-
-    QMap<QtProperty *, QList<ObsoleteColorPropertyEdit *> >
-        m_property_to_color_editors;
-    QMap<ObsoleteColorPropertyEdit *, QtProperty *>
-        m_color_editor_to_property;
-
-    QMap<QtProperty *, QList<ObsoleteScientificDoublePropertyEdit *> >
-        m_property_to_scdouble_editors;
-    QMap<ObsoleteScientificDoublePropertyEdit *, QtProperty *>
-        m_scdouble_editor_to_property;
-
-    QMap<QtProperty *, QList<ObsoleteGroupPropertyEdit *> >
-        m_property_to_fancygroup_editors;
-    QMap<ObsoleteGroupPropertyEdit *, QtProperty *>
-        m_fancygroup_editor_to_property;
-
-    QMap<QtProperty *, QList<ObsoleteComboPropertyEdit *> >
-        m_property_to_combo_editors;
-    QMap<ObsoleteComboPropertyEdit *, QtProperty *>
-        m_combo_editor_to_property;
-
-};
-
-#endif // PROPERTYVARIANTFACTORY_H
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.cpp b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.cpp
deleted file mode 100644
index 782f0396e447793f3d834b322921b154a226f7dc..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.cpp
-//! @brief     Implements class ObsoletePropertyVariantManager
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#include "ObsoletePropertyVariantManager.h"
-#include "DesignerHelper.h"
-#include "SessionItem.h"
-
-ObsoletePropertyVariantManager::ObsoletePropertyVariantManager(QObject *parent)
-    : QtVariantPropertyManager(parent)
-{
-
-}
-
-
-int ObsoletePropertyVariantManager::materialTypeId()
-{
-    int result = qMetaTypeId<ExternalProperty>();
-    return result;
-}
-
-int ObsoletePropertyVariantManager::colorPropertyTypeId()
-{
-    int result = qMetaTypeId<ObsoleteColorProperty>();
-    return result;
-}
-
-int ObsoletePropertyVariantManager::scientificDoubleTypeId()
-{
-    int result = qMetaTypeId<ObsoleteScientificDoubleProperty>();
-    return result;
-}
-
-int ObsoletePropertyVariantManager::fancyGroupTypeId()
-{
-    int result = qMetaTypeId<ObsoleteGroupProperty_t>();
-    return result;
-}
-
-int ObsoletePropertyVariantManager::comboPropertyTypeId()
-{
-    int result = qMetaTypeId<ComboProperty>();
-    return result;
-}
-
-bool ObsoletePropertyVariantManager::isPropertyTypeSupported(int propertyType) const
-{
-    if (propertyType == materialTypeId())
-        return true;
-    if (propertyType == colorPropertyTypeId())
-        return true;
-    if (propertyType == scientificDoubleTypeId())
-        return true;
-    if (propertyType == fancyGroupTypeId())
-        return true;
-    if (propertyType == comboPropertyTypeId())
-        return true;
-    return QtVariantPropertyManager::isPropertyTypeSupported(propertyType);
-}
-
-
-int ObsoletePropertyVariantManager::valueType(int propertyType) const
-{
-    if (propertyType == materialTypeId())
-        return materialTypeId();
-    if (propertyType == colorPropertyTypeId())
-        return colorPropertyTypeId();
-    if (propertyType == scientificDoubleTypeId())
-        return scientificDoubleTypeId();
-    if (propertyType == fancyGroupTypeId())
-        return fancyGroupTypeId();
-    if (propertyType == comboPropertyTypeId())
-        return comboPropertyTypeId();
-    return QtVariantPropertyManager::valueType(propertyType);
-}
-
-
-QVariant ObsoletePropertyVariantManager::value(const QtProperty *property) const
-{
-    if (m_theMaterialValues.contains(property)) {
-        QVariant v;
-        v.setValue(m_theMaterialValues[property]);
-        return v;
-    }
-    if(m_theColorValues.contains(property)) {
-        QVariant v;
-        v.setValue(m_theColorValues[property]);
-        return v;
-    }
-    if(m_theScientificDoubleValues.contains(property)) {
-        QVariant v;
-        v.setValue(m_theScientificDoubleValues[property]);
-        return v;
-    }
-    if(m_theFancyGroupValues.contains(property)) {
-        QVariant v;
-        v.setValue(m_theFancyGroupValues[property]);
-        return v;
-    }
-    if(m_theComboValues.contains(property)) {
-        QVariant v;
-        v.setValue(m_theComboValues[property]);
-        return v;
-    }
-
-    return QtVariantPropertyManager::value(property);
-}
-
-
-QString ObsoletePropertyVariantManager::valueText(const QtProperty *property) const
-{
-    if (m_theMaterialValues.contains(property)) {
-        return m_theMaterialValues[property].text();
-    }
-    if (m_theColorValues.contains(property)) {
-        return m_theColorValues[property].getText();
-    }
-    if (m_theScientificDoubleValues.contains(property)) {
-        return m_theScientificDoubleValues[property].getText();
-    }
-    if (m_theFancyGroupValues.contains(property)) {
-        return m_theFancyGroupValues[property]->currentLabel();
-    }
-    if (m_theComboValues.contains(property)) {
-        return m_theComboValues[property].getValue();
-    }
-    return QtVariantPropertyManager::valueText(property);
-}
-
-
-QIcon ObsoletePropertyVariantManager::valueIcon(const QtProperty *property) const
-{
-    if (m_theMaterialValues.contains(property)) {
-        return QIcon(m_theMaterialValues[property].pixmap());
-    }
-    if (m_theColorValues.contains(property)) {
-        return QIcon(m_theColorValues[property].getPixmap());
-    }
-    return QtVariantPropertyManager::valueIcon(property);
-}
-
-
-void ObsoletePropertyVariantManager::setValue(QtProperty *property, const QVariant &val)
-{
-    if (m_theMaterialValues.contains(property)) {
-        if( val.userType() != materialTypeId() ) return;
-        ExternalProperty mat = val.value<ExternalProperty>();
-        m_theMaterialValues[property] = mat;
-        QVariant v2;
-        v2.setValue(mat);
-        emit propertyChanged(property);
-        emit valueChanged(property, v2);
-        return;
-    }
-    if (m_theColorValues.contains(property)) {
-        if( val.userType() != colorPropertyTypeId() ) return;
-        ObsoleteColorProperty mat = val.value<ObsoleteColorProperty>();
-        m_theColorValues[property] = mat;
-        QVariant v2;
-        v2.setValue(mat);
-        emit propertyChanged(property);
-        emit valueChanged(property, v2);
-        return;
-    }
-    if (m_theScientificDoubleValues.contains(property)) {
-        if( val.userType() != scientificDoubleTypeId() ) return;
-        ObsoleteScientificDoubleProperty double_prop = val.value<ObsoleteScientificDoubleProperty>();
-        m_theScientificDoubleValues[property] = double_prop;
-        QVariant v2;
-        v2.setValue(double_prop);
-        emit propertyChanged(property);
-        emit valueChanged(property, v2);
-        return;
-    }
-    if (m_theFancyGroupValues.contains(property)) {
-        if( val.userType() != fancyGroupTypeId() ) return;
-        ObsoleteGroupProperty_t group_prop = val.value<ObsoleteGroupProperty_t>();
-        m_theFancyGroupValues[property] = group_prop;
-        QVariant v2;
-        v2.setValue(group_prop);
-        emit propertyChanged(property);
-        emit valueChanged(property, v2);
-        return;
-    }
-    if (m_theComboValues.contains(property)) {
-        if( val.userType() != comboPropertyTypeId() ) return;
-        ComboProperty comboprop = val.value<ComboProperty>();
-        m_theComboValues[property] = comboprop;
-        QVariant v2;
-        v2.setValue(comboprop);
-        emit propertyChanged(property);
-        emit valueChanged(property, v2);
-        return;
-    }
-
-    QtVariantPropertyManager::setValue(property, val);
-}
-
-
-void ObsoletePropertyVariantManager::initializeProperty(QtProperty *property)
-{
-    if (propertyType(property) == materialTypeId()) {
-        ExternalProperty m;
-        m_theMaterialValues[property] = m;
-    }
-    if (propertyType(property) == colorPropertyTypeId()) {
-        ObsoleteColorProperty m;
-        m_theColorValues[property] = m;
-    }
-    if (propertyType(property) == scientificDoubleTypeId()) {
-        ObsoleteScientificDoubleProperty m;
-        m_theScientificDoubleValues[property] = m;
-    }
-    if (propertyType(property) == fancyGroupTypeId()) {
-        ObsoleteGroupProperty_t m;
-        m_theFancyGroupValues[property] = m;
-    }
-    if (propertyType(property) == comboPropertyTypeId()) {
-        ComboProperty m;
-        m_theComboValues[property] = m;
-    }
-
-    QtVariantPropertyManager::initializeProperty(property);
-}
-
-
-void ObsoletePropertyVariantManager::uninitializeProperty(QtProperty *property)
-{
-    m_theMaterialValues.remove(property);
-    m_theColorValues.remove(property);
-    m_theScientificDoubleValues.remove(property);
-    m_theFancyGroupValues.remove(property);
-    m_theComboValues.remove(property);
-    QtVariantPropertyManager::uninitializeProperty(property);
-}
-
diff --git a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h b/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h
deleted file mode 100644
index 04c7b71aa40735e801e530126e7b067ad7b84fff..0000000000000000000000000000000000000000
--- a/GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      GUI/coregui/Views/PropertyEditor/ObsoletePropertyVariantManager.h
-//! @brief     Defines class ObsoletePropertyVariantManager
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2016
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
-//! @authors   Walter Van Herck, Joachim Wuttke
-//
-// ************************************************************************** //
-
-#ifndef OBSOLETEPROPERTYVARIANTMANAGER_H
-#define OBSOLETEPROPERTYVARIANTMANAGER_H
-
-//! collection of classes extending QtPropertyBrowser functionality
-
-#include "ObsoleteColorProperty.h"
-#include "ComboProperty.h"
-#include "GroupItemController.h"
-#include "ExternalProperty.h"
-#include "ObsoleteScientificDoubleProperty.h"
-#include <QtVariantPropertyManager>
-
-class QObject;
-
-//! The ObjectVariantManager class provides and manages user defined
-//! QVariant based properties.
-class BA_CORE_API_ ObsoletePropertyVariantManager : public QtVariantPropertyManager
-{
-    Q_OBJECT
-public:
-    ObsoletePropertyVariantManager(QObject *parent = 0);
-
-    virtual QVariant value(const QtProperty *property) const;
-    using QtVariantPropertyManager::valueType;
-    virtual int valueType(int propertyType) const;
-    virtual bool isPropertyTypeSupported(int propertyType) const;
-    static int materialTypeId();
-    static int groupTypeId();
-    static int colorPropertyTypeId();
-    static int scientificDoubleTypeId();
-    static int fancyGroupTypeId();
-    static int comboPropertyTypeId();
-
-public slots:
-    virtual void setValue(QtProperty *property, const QVariant &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    QIcon valueIcon(const QtProperty *property) const;
-
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QMap<const QtProperty *, ExternalProperty> m_theMaterialValues;
-    QMap<const QtProperty *, ObsoleteColorProperty> m_theColorValues;
-    QMap<const QtProperty *, ObsoleteScientificDoubleProperty> m_theScientificDoubleValues;
-    QMap<const QtProperty *, ObsoleteGroupProperty_t> m_theFancyGroupValues;
-    QMap<const QtProperty *, ComboProperty> m_theComboValues;
-};
-
-#endif // OBSOLETEPROPERTYVARIANTMANAGER_H
diff --git a/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp b/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
index 898d42f06d87db321e51efab5d2f633dc4828355..3a5f99bce95d25a313a1030e8c3004b4ea2e5cfd 100644
--- a/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
+++ b/GUI/coregui/Views/PropertyEditor/TestComponentView.cpp
@@ -26,9 +26,7 @@
 #include "MultiLayer.h"
 #include "SampleModel.h"
 #include "ComponentTreeView.h"
-#include "ObsoleteComponentEditor.h"
 #include "minisplitter.h"
-#include "ObsoleteComponentBoxEditor.h"
 #include "ComponentFlatView.h"
 #include "MaterialItem.h"
 #include "MaterialDataItem.h"
@@ -52,8 +50,6 @@ TestComponentView::TestComponentView(MainWindow* mainWindow)
     , m_updateButton(new QPushButton("Update models"))
     , m_addItemButton(new QPushButton("Add item"))
     , m_expandButton(new QPushButton("Expand tree"))
-    , m_obsoleteEditor(new ObsoleteComponentEditor)
-    , m_obsoleteBoxEditor(new ObsoleteComponentBoxEditor)
     , m_splitter(new Manhattan::MiniSplitter)
     , m_delegate(new SessionModelDelegate(this))
     , m_isExpaned(false)
@@ -166,10 +162,6 @@ void TestComponentView::onSelectionChanged(const QItemSelection& selected, const
 
         auto item = m_sampleModel->itemForIndex(indices.front());
         m_componentTree->setItem(item);
-        m_obsoleteEditor->setItem(item, item->modelType());
-        m_obsoleteBoxEditor->clearEditor();
-        m_obsoleteBoxEditor->addPropertyItems(item);
-
         m_componentFlat->setItem(item);
     }
 
@@ -179,10 +171,8 @@ QWidget* TestComponentView::componentTreePanel()
 {
     Manhattan::MiniSplitter* result = new Manhattan::MiniSplitter(Qt::Vertical);
     result->addWidget(m_componentTree);
-    result->addWidget(m_obsoleteEditor);
 
     m_componentTree->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
-    m_obsoleteEditor->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
     return result;
 }
 
@@ -190,10 +180,8 @@ QWidget* TestComponentView::componentBoxPanel()
 {
     Manhattan::MiniSplitter* result = new Manhattan::MiniSplitter(Qt::Vertical);
     result->addWidget(m_componentFlat);
-    result->addWidget(m_obsoleteBoxEditor);
 
     m_componentFlat->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
-    m_obsoleteBoxEditor->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
 
     return result;
 }
diff --git a/GUI/coregui/Views/PropertyEditor/TestComponentView.h b/GUI/coregui/Views/PropertyEditor/TestComponentView.h
index 70a72e22ac46ec5946ba492ed4ff330102b4dff3..21a620bd78bab442994ccde6bdb2f32e10bf900b 100644
--- a/GUI/coregui/Views/PropertyEditor/TestComponentView.h
+++ b/GUI/coregui/Views/PropertyEditor/TestComponentView.h
@@ -30,8 +30,6 @@ class ComponentEditor;
 class ComponentTreeView;
 namespace Manhattan { class MiniSplitter; }
 class QBoxLayout;
-class ObsoleteComponentEditor;
-class ObsoleteComponentBoxEditor;
 class ComponentFlatView;
 class MaterialModel;
 
@@ -63,8 +61,6 @@ private:
     QPushButton* m_updateButton;
     QPushButton* m_addItemButton;
     QPushButton* m_expandButton;
-    ObsoleteComponentEditor *m_obsoleteEditor;
-    ObsoleteComponentBoxEditor* m_obsoleteBoxEditor;
     Manhattan::MiniSplitter* m_splitter;
     SessionModelDelegate* m_delegate;
     bool m_isExpaned;
diff --git a/Tests/UnitTests/GUI/TestMaterialPropertyController.h b/Tests/UnitTests/GUI/TestMaterialPropertyController.h
index 35e6a82788f9def730481626b1b7c7067a42bf79..792923b20eca6db52ac7495b846085af7412888b 100644
--- a/Tests/UnitTests/GUI/TestMaterialPropertyController.h
+++ b/Tests/UnitTests/GUI/TestMaterialPropertyController.h
@@ -5,7 +5,6 @@
 #include "LayerItem.h"
 #include "MaterialItem.h"
 #include "ExternalProperty.h"
-#include "ObsoleteColorProperty.h"
 #include "MaterialItemUtils.h"
 
 class TestMaterialPropertyController : public QObject
diff --git a/ThirdParty/GUI/CMakeLists.txt b/ThirdParty/GUI/CMakeLists.txt
index 9d0254f574219c768b08e15cf9110d7d0a1649f9..c8f8cea6c2d31bb285d9172486c874f54be59203 100644
--- a/ThirdParty/GUI/CMakeLists.txt
+++ b/ThirdParty/GUI/CMakeLists.txt
@@ -1,15 +1,12 @@
 add_subdirectory(qt-manhattan-style)
 add_subdirectory(qcustomplot)
-add_subdirectory(qtpropertybrowser)
 
 set(QtAddOn_INCLUDE_DIRS
     ${ManhattanStyle_INCLUDE_DIRS}
     ${qcustomplot_INCLUDE_DIRS}
-    ${qtpropertybrowser_INCLUDE_DIRS}
     PARENT_SCOPE)
 
 set(QtAddOn_LIBRARIES
     ${ManhattanStyle_LIBRARY}
     ${qcustomplot_LIBRARY}
-    ${qtpropertybrowser_LIBRARY}
     PARENT_SCOPE)
diff --git a/ThirdParty/GUI/qtpropertybrowser/CMakeLists.txt b/ThirdParty/GUI/qtpropertybrowser/CMakeLists.txt
deleted file mode 100644
index b9502617b476e6413e5d37cd8d8f6c749877df01..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/CMakeLists.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-############################################################################
-# CMakeLists.txt file for building static qtpropertybrowser library from qtsolutions
-############################################################################
-if(POLICY CMP0020)
-    cmake_policy(SET CMP0020 NEW)
-endif()
-if(POLICY CMP0043)
-    cmake_policy(SET CMP0043 NEW)
-endif()
-set(library_name qtpropertybrowser)
-
-file(GLOB source_files "*.cpp")
-file(GLOB include_files "*.h")
-
-set(include_dirs
-    ${CMAKE_CURRENT_SOURCE_DIR}
-    ${CMAKE_CURRENT_BINARY_DIR} # qtpropertybrowser needs some moc files
-)
-
-include_directories(${include_dirs})
-
-set(resource_files
-    "qtpropertybrowser.qrc"
-)
-
-
-# --- definitions ---------
-if(NOT WIN32)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overloaded-virtual")
-endif()
-
-
-# --- Qt configuration ---------
-set(CMAKE_INCLUDE_CURRENT_DIR ON)
-set(CMAKE_AUTOMOC ON)
-qt5_add_resources(RC_SRCS ${resource_files})
-
-
-# --- library ---------
-add_library(
-    ${library_name}
-    STATIC
-    ${source_files} ${include_files} ${RC_SRCS} ${mocfiles}
-)
-set(${library_name}_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
-set(${library_name}_LIBRARY ${library_name} PARENT_SCOPE)
-
-
-# --- dependencies ---------
-target_link_libraries(${library_name} ${Qt5Widgets_LIBRARIES})
-target_link_libraries(${library_name} Qt5::Widgets)
-
-
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtAbstractEditorFactoryBase b/ThirdParty/GUI/qtpropertybrowser/QtAbstractEditorFactoryBase
deleted file mode 100644
index ab4e7104a4c6146c65f899d9a7816464ae197436..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtAbstractEditorFactoryBase
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyBrowser b/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyBrowser
deleted file mode 100644
index ab4e7104a4c6146c65f899d9a7816464ae197436..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyBrowser
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyManager
deleted file mode 100644
index ab4e7104a4c6146c65f899d9a7816464ae197436..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtAbstractPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtBoolPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtBoolPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtBoolPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtBrowserItem b/ThirdParty/GUI/qtpropertybrowser/QtBrowserItem
deleted file mode 100644
index ab4e7104a4c6146c65f899d9a7816464ae197436..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtBrowserItem
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtButtonPropertyBrowser b/ThirdParty/GUI/qtpropertybrowser/QtButtonPropertyBrowser
deleted file mode 100644
index 56e089704acc0bfbb84da89ea6d8cb55fc829c2c..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtButtonPropertyBrowser
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtbuttonpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtCharEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtCharEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtCharEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtCharPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtCharPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtCharPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtCheckBoxFactory b/ThirdParty/GUI/qtpropertybrowser/QtCheckBoxFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtCheckBoxFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtColorEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtColorEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtColorEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtColorPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtColorPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtColorPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtCursorEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtCursorEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtCursorEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtCursorPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtCursorPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtCursorPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDateEditFactory b/ThirdParty/GUI/qtpropertybrowser/QtDateEditFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDateEditFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDatePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtDatePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDatePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDateTimeEditFactory b/ThirdParty/GUI/qtpropertybrowser/QtDateTimeEditFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDateTimeEditFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDateTimePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtDateTimePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDateTimePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDoublePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtDoublePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDoublePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtDoubleSpinBoxFactory b/ThirdParty/GUI/qtpropertybrowser/QtDoubleSpinBoxFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtDoubleSpinBoxFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtEnumEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtEnumEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtEnumEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtEnumPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtEnumPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtEnumPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtFlagPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtFlagPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtFlagPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtFontEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtFontEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtFontEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtFontPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtFontPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtFontPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtGroupBoxPropertyBrowser b/ThirdParty/GUI/qtpropertybrowser/QtGroupBoxPropertyBrowser
deleted file mode 100644
index 27964c08034d74ce98f807d4911bd0d561c2862a..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtGroupBoxPropertyBrowser
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtgroupboxpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtGroupPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtGroupPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtGroupPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtIntPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtIntPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtIntPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtKeySequenceEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtKeySequenceEditorFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtKeySequenceEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtKeySequencePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtKeySequencePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtKeySequencePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtLineEditFactory b/ThirdParty/GUI/qtpropertybrowser/QtLineEditFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtLineEditFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtLocalePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtLocalePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtLocalePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtPointFPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtPointFPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtPointFPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtPointPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtPointPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtPointPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtProperty b/ThirdParty/GUI/qtpropertybrowser/QtProperty
deleted file mode 100644
index ab4e7104a4c6146c65f899d9a7816464ae197436..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtProperty
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtRectFPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtRectFPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtRectFPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtRectPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtRectPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtRectPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtScrollBarFactory b/ThirdParty/GUI/qtpropertybrowser/QtScrollBarFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtScrollBarFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtSizeFPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtSizeFPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtSizeFPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtSizePolicyPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtSizePolicyPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtSizePolicyPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtSizePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtSizePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtSizePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtSliderFactory b/ThirdParty/GUI/qtpropertybrowser/QtSliderFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtSliderFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtSpinBoxFactory b/ThirdParty/GUI/qtpropertybrowser/QtSpinBoxFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtSpinBoxFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtStringPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtStringPropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtStringPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtTimeEditFactory b/ThirdParty/GUI/qtpropertybrowser/QtTimeEditFactory
deleted file mode 100644
index 75f35adabc6dba82246c4f3c0741637739af4957..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtTimeEditFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qteditorfactory.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtTimePropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtTimePropertyManager
deleted file mode 100644
index 1842e431d3a55dcacd53500d7da9b930551bc046..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtTimePropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtpropertymanager.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtTreePropertyBrowser b/ThirdParty/GUI/qtpropertybrowser/QtTreePropertyBrowser
deleted file mode 100644
index aab106c75301d35ef666c0a00652a0edd9b6ca1d..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtTreePropertyBrowser
+++ /dev/null
@@ -1 +0,0 @@
-#include "qttreepropertybrowser.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtVariantEditorFactory b/ThirdParty/GUI/qtpropertybrowser/QtVariantEditorFactory
deleted file mode 100644
index 8118190d503968715600525fa17c2c2b06006709..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtVariantEditorFactory
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtvariantproperty.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtVariantProperty b/ThirdParty/GUI/qtpropertybrowser/QtVariantProperty
deleted file mode 100644
index 8118190d503968715600525fa17c2c2b06006709..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtVariantProperty
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtvariantproperty.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/QtVariantPropertyManager b/ThirdParty/GUI/qtpropertybrowser/QtVariantPropertyManager
deleted file mode 100644
index 8118190d503968715600525fa17c2c2b06006709..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/QtVariantPropertyManager
+++ /dev/null
@@ -1 +0,0 @@
-#include "qtvariantproperty.h"
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-arrow.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-arrow.png
deleted file mode 100644
index a69ef4eb6158503c7c67c916aea86e65fdc81f72..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-arrow.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-busy.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-busy.png
deleted file mode 100644
index 53717e49928a5d0e791baf971e95adc0bbe318d2..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-busy.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-closedhand.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-closedhand.png
deleted file mode 100644
index b78dd1dac5a827fa698f1993718f22c282019505..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-closedhand.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-cross.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-cross.png
deleted file mode 100644
index fe38e744805f61abefcc555e07d399725c3fd7e6..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-cross.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-forbidden.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-forbidden.png
deleted file mode 100644
index 2b08c4e2a3cafc992459a8f484e6c8e6c3e74857..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-forbidden.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-hand.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-hand.png
deleted file mode 100644
index d2004aefa7337edc3e15327992e1d69fda5b1831..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-hand.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-hsplit.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-hsplit.png
deleted file mode 100644
index a5667e3ffba185fd0138ddfca3d4d88049928812..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-hsplit.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-ibeam.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-ibeam.png
deleted file mode 100644
index 097fc5fa7287da71ffd907b3a11adbda4516aca6..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-ibeam.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-openhand.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-openhand.png
deleted file mode 100644
index 9181c859edaf9aa2c16bc7dbc753609beddd8351..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-openhand.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeall.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeall.png
deleted file mode 100644
index 69f13eb347a6c299e06844729a14f657b282fe8f..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeall.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeb.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeb.png
deleted file mode 100644
index f37d7b91e8cde73243fa78df45c7808aba1c5fa0..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeb.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizef.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizef.png
deleted file mode 100644
index 3b127a05d34b48a2f4f9b9cc77b681c6b43afcdd..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizef.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeh.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeh.png
deleted file mode 100644
index a9f40cbc3d77c566c11c32c0631b4f94f44dd441..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizeh.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizev.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizev.png
deleted file mode 100644
index 1edbab27a5b05555aaf515931f69ad6bf7e417f0..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-sizev.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-uparrow.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-uparrow.png
deleted file mode 100644
index d3e70ef4c2413c6f81c7cfffa32be7228b2b27b9..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-uparrow.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-vsplit.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-vsplit.png
deleted file mode 100644
index 1beda2570e4328382ea43512acfe23d386214f37..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-vsplit.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-wait.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-wait.png
deleted file mode 100644
index 69056c479e9b2f009e366dfd71999a7c74f97620..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-wait.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/images/cursor-whatsthis.png b/ThirdParty/GUI/qtpropertybrowser/images/cursor-whatsthis.png
deleted file mode 100644
index b47601c3780eec780fdae43bab7481bbfebdddae..0000000000000000000000000000000000000000
Binary files a/ThirdParty/GUI/qtpropertybrowser/images/cursor-whatsthis.png and /dev/null differ
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.cpp b/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.cpp
deleted file mode 100644
index a98a8be67af383220ffdf04bb7a8f351962cc376..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.cpp
+++ /dev/null
@@ -1,616 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtbuttonpropertybrowser.h"
-#include <QtCore/QSet>
-#include <QtWidgets/QGridLayout>
-#include <QtWidgets/QLabel>
-#include <QtCore/QTimer>
-#include <QtCore/QMap>
-#include <QtWidgets/QToolButton>
-#include <QtWidgets/QStyle>
-
-QT_BEGIN_NAMESPACE
-
-class QtButtonPropertyBrowserPrivate
-{
-    QtButtonPropertyBrowser *q_ptr;
-    Q_DECLARE_PUBLIC(QtButtonPropertyBrowser)
-public:
-
-    void init(QWidget *parent);
-
-    void propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex);
-    void propertyRemoved(QtBrowserItem *index);
-    void propertyChanged(QtBrowserItem *index);
-    QWidget *createEditor(QtProperty *property, QWidget *parent) const
-        { return q_ptr->createEditor(property, parent); }
-
-    void slotEditorDestroyed();
-    void slotUpdate();
-    void slotToggled(bool checked);
-
-    struct WidgetItem
-    {
-        WidgetItem() : widget(0), label(0), widgetLabel(0),
-                button(0), container(0), layout(0), /*line(0), */parent(0), expanded(false) { }
-        QWidget *widget; // can be null
-        QLabel *label; // main label with property name
-        QLabel *widgetLabel; // label substitute showing the current value if there is no widget
-        QToolButton *button; // expandable button for items with children
-        QWidget *container; // container which is expanded when the button is clicked
-        QGridLayout *layout; // layout in container
-        WidgetItem *parent;
-        QList<WidgetItem *> children;
-        bool expanded;
-    };
-private:
-    void updateLater();
-    void updateItem(WidgetItem *item);
-    void insertRow(QGridLayout *layout, int row) const;
-    void removeRow(QGridLayout *layout, int row) const;
-    int gridRow(WidgetItem *item) const;
-    int gridSpan(WidgetItem *item) const;
-    void setExpanded(WidgetItem *item, bool expanded);
-    QToolButton *createButton(QWidget *panret = 0) const;
-
-    QMap<QtBrowserItem *, WidgetItem *> m_indexToItem;
-    QMap<WidgetItem *, QtBrowserItem *> m_itemToIndex;
-    QMap<QWidget *, WidgetItem *> m_widgetToItem;
-    QMap<QObject *, WidgetItem *> m_buttonToItem;
-    QGridLayout *m_mainLayout;
-    QList<WidgetItem *> m_children;
-    QList<WidgetItem *> m_recreateQueue;
-};
-
-QToolButton *QtButtonPropertyBrowserPrivate::createButton(QWidget *parent) const
-{
-    QToolButton *button = new QToolButton(parent);
-    button->setCheckable(true);
-    button->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed));
-    button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
-    button->setArrowType(Qt::DownArrow);
-    button->setIconSize(QSize(3, 16));
-    /*
-    QIcon icon;
-    icon.addPixmap(q_ptr->style()->standardPixmap(QStyle::SP_ArrowDown), QIcon::Normal, QIcon::Off);
-    icon.addPixmap(q_ptr->style()->standardPixmap(QStyle::SP_ArrowUp), QIcon::Normal, QIcon::On);
-    button->setIcon(icon);
-    */
-    return button;
-}
-
-int QtButtonPropertyBrowserPrivate::gridRow(WidgetItem *item) const
-{
-    QList<WidgetItem *> siblings;
-    if (item->parent)
-        siblings = item->parent->children;
-    else
-        siblings = m_children;
-
-    int row = 0;
-    QListIterator<WidgetItem *> it(siblings);
-    while (it.hasNext()) {
-        WidgetItem *sibling = it.next();
-        if (sibling == item)
-            return row;
-        row += gridSpan(sibling);
-    }
-    return -1;
-}
-
-int QtButtonPropertyBrowserPrivate::gridSpan(WidgetItem *item) const
-{
-    if (item->container && item->expanded)
-        return 2;
-    return 1;
-}
-
-void QtButtonPropertyBrowserPrivate::init(QWidget *parent)
-{
-    m_mainLayout = new QGridLayout();
-    parent->setLayout(m_mainLayout);
-    QLayoutItem *item = new QSpacerItem(0, 0,
-                QSizePolicy::Fixed, QSizePolicy::Expanding);
-    m_mainLayout->addItem(item, 0, 0);
-}
-
-void QtButtonPropertyBrowserPrivate::slotEditorDestroyed()
-{
-    QWidget *editor = qobject_cast<QWidget *>(q_ptr->sender());
-    if (!editor)
-        return;
-    if (!m_widgetToItem.contains(editor))
-        return;
-    m_widgetToItem[editor]->widget = 0;
-    m_widgetToItem.remove(editor);
-}
-
-void QtButtonPropertyBrowserPrivate::slotUpdate()
-{
-    QListIterator<WidgetItem *> itItem(m_recreateQueue);
-    while (itItem.hasNext()) {
-        WidgetItem *item = itItem.next();
-
-        WidgetItem *parent = item->parent;
-        QWidget *w = 0;
-        QGridLayout *l = 0;
-        const int oldRow = gridRow(item);
-        if (parent) {
-            w = parent->container;
-            l = parent->layout;
-        } else {
-            w = q_ptr;
-            l = m_mainLayout;
-        }
-
-        int span = 1;
-        if (!item->widget && !item->widgetLabel)
-            span = 2;
-        item->label = new QLabel(w);
-        item->label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
-        l->addWidget(item->label, oldRow, 0, 1, span);
-
-        updateItem(item);
-    }
-    m_recreateQueue.clear();
-}
-
-void QtButtonPropertyBrowserPrivate::setExpanded(WidgetItem *item, bool expanded)
-{
-    if (item->expanded == expanded)
-        return;
-
-    if (!item->container)
-        return;
-
-    item->expanded = expanded;
-    const int row = gridRow(item);
-    WidgetItem *parent = item->parent;
-    QGridLayout *l = 0;
-    if (parent)
-        l = parent->layout;
-    else
-        l = m_mainLayout;
-
-    if (expanded) {
-        insertRow(l, row + 1);
-        l->addWidget(item->container, row + 1, 0, 1, 2);
-        item->container->show();
-    } else {
-        l->removeWidget(item->container);
-        item->container->hide();
-        removeRow(l, row + 1);
-    }
-
-    item->button->setChecked(expanded);
-    item->button->setArrowType(expanded ? Qt::UpArrow : Qt::DownArrow);
-}
-
-void QtButtonPropertyBrowserPrivate::slotToggled(bool checked)
-{
-    WidgetItem *item = m_buttonToItem.value(q_ptr->sender());
-    if (!item)
-        return;
-
-    setExpanded(item, checked);
-
-    if (checked)
-        emit q_ptr->expanded(m_itemToIndex.value(item));
-    else
-        emit q_ptr->collapsed(m_itemToIndex.value(item));
-}
-
-void QtButtonPropertyBrowserPrivate::updateLater()
-{
-    QTimer::singleShot(0, q_ptr, SLOT(slotUpdate()));
-}
-
-void QtButtonPropertyBrowserPrivate::propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex)
-{
-    WidgetItem *afterItem = m_indexToItem.value(afterIndex);
-    WidgetItem *parentItem = m_indexToItem.value(index->parent());
-
-    WidgetItem *newItem = new WidgetItem();
-    newItem->parent = parentItem;
-
-    QGridLayout *layout = 0;
-    QWidget *parentWidget = 0;
-    int row = -1;
-    if (!afterItem) {
-        row = 0;
-        if (parentItem)
-            parentItem->children.insert(0, newItem);
-        else
-            m_children.insert(0, newItem);
-    } else {
-        row = gridRow(afterItem) + gridSpan(afterItem);
-        if (parentItem)
-            parentItem->children.insert(parentItem->children.indexOf(afterItem) + 1, newItem);
-        else
-            m_children.insert(m_children.indexOf(afterItem) + 1, newItem);
-    }
-
-    if (!parentItem) {
-        layout = m_mainLayout;
-        parentWidget = q_ptr;
-    } else {
-        if (!parentItem->container) {
-            m_recreateQueue.removeAll(parentItem);
-            WidgetItem *grandParent = parentItem->parent;
-            QGridLayout *l = 0;
-            const int oldRow = gridRow(parentItem);
-            if (grandParent) {
-                l = grandParent->layout;
-            } else {
-                l = m_mainLayout;
-            }
-            QFrame *container = new QFrame();
-            container->setFrameShape(QFrame::Panel);
-            container->setFrameShadow(QFrame::Raised);
-            parentItem->container = container;
-            parentItem->button = createButton();
-            m_buttonToItem[parentItem->button] = parentItem;
-            q_ptr->connect(parentItem->button, SIGNAL(toggled(bool)), q_ptr, SLOT(slotToggled(bool)));
-            parentItem->layout = new QGridLayout();
-            container->setLayout(parentItem->layout);
-            if (parentItem->label) {
-                l->removeWidget(parentItem->label);
-                delete parentItem->label;
-                parentItem->label = 0;
-            }
-            int span = 1;
-            if (!parentItem->widget && !parentItem->widgetLabel)
-                span = 2;
-            l->addWidget(parentItem->button, oldRow, 0, 1, span);
-            updateItem(parentItem);
-        }
-        layout = parentItem->layout;
-        parentWidget = parentItem->container;
-    }
-
-    newItem->label = new QLabel(parentWidget);
-    newItem->label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
-    newItem->widget = createEditor(index->property(), parentWidget);
-    if (newItem->widget) {
-        QObject::connect(newItem->widget, SIGNAL(destroyed()), q_ptr, SLOT(slotEditorDestroyed()));
-        m_widgetToItem[newItem->widget] = newItem;
-    } else if (index->property()->hasValue()) {
-        newItem->widgetLabel = new QLabel(parentWidget);
-        newItem->widgetLabel->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed));
-    }
-
-    insertRow(layout, row);
-    int span = 1;
-    if (newItem->widget)
-        layout->addWidget(newItem->widget, row, 1);
-    else if (newItem->widgetLabel)
-        layout->addWidget(newItem->widgetLabel, row, 1);
-    else
-        span = 2;
-    layout->addWidget(newItem->label, row, 0, span, 1);
-
-    m_itemToIndex[newItem] = index;
-    m_indexToItem[index] = newItem;
-
-    updateItem(newItem);
-}
-
-void QtButtonPropertyBrowserPrivate::propertyRemoved(QtBrowserItem *index)
-{
-    WidgetItem *item = m_indexToItem.value(index);
-
-    m_indexToItem.remove(index);
-    m_itemToIndex.remove(item);
-
-    WidgetItem *parentItem = item->parent;
-
-    const int row = gridRow(item);
-
-    if (parentItem)
-        parentItem->children.removeAt(parentItem->children.indexOf(item));
-    else
-        m_children.removeAt(m_children.indexOf(item));
-
-    const int colSpan = gridSpan(item);
-
-    m_buttonToItem.remove(item->button);
-
-    if (item->widget)
-        delete item->widget;
-    if (item->label)
-        delete item->label;
-    if (item->widgetLabel)
-        delete item->widgetLabel;
-    if (item->button)
-        delete item->button;
-    if (item->container)
-        delete item->container;
-
-    if (!parentItem) {
-        removeRow(m_mainLayout, row);
-        if (colSpan > 1)
-            removeRow(m_mainLayout, row);
-    } else if (parentItem->children.count() != 0) {
-        removeRow(parentItem->layout, row);
-        if (colSpan > 1)
-            removeRow(parentItem->layout, row);
-    } else {
-        const WidgetItem *grandParent = parentItem->parent;
-        QGridLayout *l = 0;
-        if (grandParent) {
-            l = grandParent->layout;
-        } else {
-            l = m_mainLayout;
-        }
-
-        const int parentRow = gridRow(parentItem);
-        const int parentSpan = gridSpan(parentItem);
-
-        l->removeWidget(parentItem->button);
-        l->removeWidget(parentItem->container);
-        delete parentItem->button;
-        delete parentItem->container;
-        parentItem->button = 0;
-        parentItem->container = 0;
-        parentItem->layout = 0;
-        if (!m_recreateQueue.contains(parentItem))
-            m_recreateQueue.append(parentItem);
-        if (parentSpan > 1)
-            removeRow(l, parentRow + 1);
-
-        updateLater();
-    }
-    m_recreateQueue.removeAll(item);
-
-    delete item;
-}
-
-void QtButtonPropertyBrowserPrivate::insertRow(QGridLayout *layout, int row) const
-{
-    QMap<QLayoutItem *, QRect> itemToPos;
-    int idx = 0;
-    while (idx < layout->count()) {
-        int r, c, rs, cs;
-        layout->getItemPosition(idx, &r, &c, &rs, &cs);
-        if (r >= row) {
-            itemToPos[layout->takeAt(idx)] = QRect(r + 1, c, rs, cs);
-        } else {
-            idx++;
-        }
-    }
-
-    const QMap<QLayoutItem *, QRect>::ConstIterator icend =  itemToPos.constEnd();
-    for(QMap<QLayoutItem *, QRect>::ConstIterator it = itemToPos.constBegin(); it != icend; ++it) {
-        const QRect r = it.value();
-        layout->addItem(it.key(), r.x(), r.y(), r.width(), r.height());
-    }
-}
-
-void QtButtonPropertyBrowserPrivate::removeRow(QGridLayout *layout, int row) const
-{
-    QMap<QLayoutItem *, QRect> itemToPos;
-    int idx = 0;
-    while (idx < layout->count()) {
-        int r, c, rs, cs;
-        layout->getItemPosition(idx, &r, &c, &rs, &cs);
-        if (r > row) {
-            itemToPos[layout->takeAt(idx)] = QRect(r - 1, c, rs, cs);
-        } else {
-            idx++;
-        }
-    }
-
-    const QMap<QLayoutItem *, QRect>::ConstIterator icend =  itemToPos.constEnd();
-    for(QMap<QLayoutItem *, QRect>::ConstIterator it = itemToPos.constBegin(); it != icend; ++it) {
-        const QRect r = it.value();
-        layout->addItem(it.key(), r.x(), r.y(), r.width(), r.height());
-    }
-}
-
-void QtButtonPropertyBrowserPrivate::propertyChanged(QtBrowserItem *index)
-{
-    WidgetItem *item = m_indexToItem.value(index);
-
-    updateItem(item);
-}
-
-void QtButtonPropertyBrowserPrivate::updateItem(WidgetItem *item)
-{
-    QtProperty *property = m_itemToIndex[item]->property();
-    if (item->button) {
-        QFont font = item->button->font();
-        font.setUnderline(property->isModified());
-        item->button->setFont(font);
-        item->button->setText(property->propertyName());
-        item->button->setToolTip(property->toolTip());
-        item->button->setStatusTip(property->statusTip());
-        item->button->setWhatsThis(property->whatsThis());
-        item->button->setEnabled(property->isEnabled());
-    }
-    if (item->label) {
-        QFont font = item->label->font();
-        font.setUnderline(property->isModified());
-        item->label->setFont(font);
-        item->label->setText(property->propertyName());
-        item->label->setToolTip(property->toolTip());
-        item->label->setStatusTip(property->statusTip());
-        item->label->setWhatsThis(property->whatsThis());
-        item->label->setEnabled(property->isEnabled());
-    }
-    if (item->widgetLabel) {
-        QFont font = item->widgetLabel->font();
-        font.setUnderline(false);
-        item->widgetLabel->setFont(font);
-        item->widgetLabel->setText(property->valueText());
-        item->widgetLabel->setToolTip(property->valueText());
-        item->widgetLabel->setEnabled(property->isEnabled());
-    }
-    if (item->widget) {
-        QFont font = item->widget->font();
-        font.setUnderline(false);
-        item->widget->setFont(font);
-        item->widget->setEnabled(property->isEnabled());
-        item->widget->setToolTip(property->valueText());
-    }
-}
-
-
-
-/*!
-    \class QtButtonPropertyBrowser
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtButtonPropertyBrowser class provides a drop down QToolButton
-    based property browser.
-
-    A property browser is a widget that enables the user to edit a
-    given set of properties. Each property is represented by a label
-    specifying the property's name, and an editing widget (e.g. a line
-    edit or a combobox) holding its value. A property can have zero or
-    more subproperties.
-
-    QtButtonPropertyBrowser provides drop down button for all nested
-    properties, i.e. subproperties are enclosed by a container associated with
-    the drop down button. The parent property's name is displayed as button text. For example:
-
-    \image qtbuttonpropertybrowser.png
-
-    Use the QtAbstractPropertyBrowser API to add, insert and remove
-    properties from an instance of the QtButtonPropertyBrowser
-    class. The properties themselves are created and managed by
-    implementations of the QtAbstractPropertyManager class.
-
-    \sa QtTreePropertyBrowser, QtAbstractPropertyBrowser
-*/
-
-/*!
-    \fn void QtButtonPropertyBrowser::collapsed(QtBrowserItem *item)
-
-    This signal is emitted when the \a item is collapsed.
-
-    \sa expanded(), setExpanded()
-*/
-
-/*!
-    \fn void QtButtonPropertyBrowser::expanded(QtBrowserItem *item)
-
-    This signal is emitted when the \a item is expanded.
-
-    \sa collapsed(), setExpanded()
-*/
-
-/*!
-    Creates a property browser with the given \a parent.
-*/
-QtButtonPropertyBrowser::QtButtonPropertyBrowser(QWidget *parent)
-    : QtAbstractPropertyBrowser(parent), d_ptr(new QtButtonPropertyBrowserPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->init(this);
-}
-
-/*!
-    Destroys this property browser.
-
-    Note that the properties that were inserted into this browser are
-    \e not destroyed since they may still be used in other
-    browsers. The properties are owned by the manager that created
-    them.
-
-    \sa QtProperty, QtAbstractPropertyManager
-*/
-QtButtonPropertyBrowser::~QtButtonPropertyBrowser()
-{
-    const QMap<QtButtonPropertyBrowserPrivate::WidgetItem *, QtBrowserItem *>::ConstIterator icend = d_ptr->m_itemToIndex.constEnd();
-    for (QMap<QtButtonPropertyBrowserPrivate::WidgetItem *, QtBrowserItem *>::ConstIterator  it =  d_ptr->m_itemToIndex.constBegin(); it != icend; ++it)
-        delete it.key();
-}
-
-/*!
-    \reimp
-*/
-void QtButtonPropertyBrowser::itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem)
-{
-    d_ptr->propertyInserted(item, afterItem);
-}
-
-/*!
-    \reimp
-*/
-void QtButtonPropertyBrowser::itemRemoved(QtBrowserItem *item)
-{
-    d_ptr->propertyRemoved(item);
-}
-
-/*!
-    \reimp
-*/
-void QtButtonPropertyBrowser::itemChanged(QtBrowserItem *item)
-{
-    d_ptr->propertyChanged(item);
-}
-
-/*!
-    Sets the \a item to either collapse or expanded, depending on the value of \a expanded.
-
-    \sa isExpanded(), expanded(), collapsed()
-*/
-
-void QtButtonPropertyBrowser::setExpanded(QtBrowserItem *item, bool expanded)
-{
-    QtButtonPropertyBrowserPrivate::WidgetItem *itm = d_ptr->m_indexToItem.value(item);
-    if (itm)
-        d_ptr->setExpanded(itm, expanded);
-}
-
-/*!
-    Returns true if the \a item is expanded; otherwise returns false.
-
-    \sa setExpanded()
-*/
-
-bool QtButtonPropertyBrowser::isExpanded(QtBrowserItem *item) const
-{
-    QtButtonPropertyBrowserPrivate::WidgetItem *itm = d_ptr->m_indexToItem.value(item);
-    if (itm)
-        return itm->expanded;
-    return false;
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qtbuttonpropertybrowser.cpp"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.h b/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.h
deleted file mode 100644
index 871fcc0c600dce851c49da7304353af3c99d1fac..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtbuttonpropertybrowser.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTBUTTONPROPERTYBROWSER_H
-#define QTBUTTONPROPERTYBROWSER_H
-
-#include "qtpropertybrowser.h"
-
-QT_BEGIN_NAMESPACE
-
-class QtButtonPropertyBrowserPrivate;
-
-class QtButtonPropertyBrowser : public QtAbstractPropertyBrowser
-{
-    Q_OBJECT
-
-public:
-    QtButtonPropertyBrowser(QWidget *parent = 0);
-    virtual ~QtButtonPropertyBrowser();
-
-    void setExpanded(QtBrowserItem *item, bool expanded);
-    bool isExpanded(QtBrowserItem *item) const;
-
-Q_SIGNALS:
-    void collapsed(QtBrowserItem *item);
-    void expanded(QtBrowserItem *item);
-
-protected:
-    virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
-    virtual void itemRemoved(QtBrowserItem *item);
-    virtual void itemChanged(QtBrowserItem *item);
-
-private:
-    QScopedPointer<QtButtonPropertyBrowserPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtButtonPropertyBrowser)
-    Q_DISABLE_COPY(QtButtonPropertyBrowser)
-    Q_PRIVATE_SLOT(d_func(), void slotUpdate())
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed())
-    Q_PRIVATE_SLOT(d_func(), void slotToggled(bool))
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.cpp b/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.cpp
deleted file mode 100644
index ce2669a30971f7f4eadc4708d00f5692036c8b0f..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.cpp
+++ /dev/null
@@ -1,2553 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qteditorfactory.h"
-#include "qtpropertybrowserutils_p.h"
-#include <QtWidgets/QSpinBox>
-#include <QtWidgets/QScrollBar>
-#include <QtWidgets/QComboBox>
-#include <QtWidgets/QAbstractItemView>
-#include <QtWidgets/QLineEdit>
-#include <QtWidgets/QDateTimeEdit>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QMenu>
-#include <QtGui/QKeyEvent>
-#include <QtWidgets/QApplication>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QToolButton>
-#include <QtWidgets/QColorDialog>
-#include <QtWidgets/QFontDialog>
-#include <QtWidgets/QSpacerItem>
-#include <QtWidgets/QKeySequenceEdit>
-#include <QtCore/QMap>
-
-#if defined(Q_CC_MSVC)
-#    pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
-#endif
-
-QT_BEGIN_NAMESPACE
-
-// Set a hard coded left margin to account for the indentation
-// of the tree view icon when switching to an editor
-
-static inline void setupTreeViewEditorMargin(QLayout *lt)
-{
-    enum { DecorationMargin = 4 };
-    if (QApplication::layoutDirection() == Qt::LeftToRight)
-        lt->setContentsMargins(DecorationMargin, 0, 0, 0);
-    else
-        lt->setContentsMargins(0, 0, DecorationMargin, 0);
-}
-
-// ---------- EditorFactoryPrivate :
-// Base class for editor factory private classes. Manages mapping of properties to editors and vice versa.
-
-template <class Editor>
-class EditorFactoryPrivate
-{
-public:
-
-    typedef QList<Editor *> EditorList;
-    typedef QMap<QtProperty *, EditorList> PropertyToEditorListMap;
-    typedef QMap<Editor *, QtProperty *> EditorToPropertyMap;
-
-    Editor *createEditor(QtProperty *property, QWidget *parent);
-    void initializeEditor(QtProperty *property, Editor *e);
-    void slotEditorDestroyed(QObject *object);
-
-    PropertyToEditorListMap  m_createdEditors;
-    EditorToPropertyMap m_editorToProperty;
-};
-
-template <class Editor>
-Editor *EditorFactoryPrivate<Editor>::createEditor(QtProperty *property, QWidget *parent)
-{
-    Editor *editor = new Editor(parent);
-    initializeEditor(property, editor);
-    return editor;
-}
-
-template <class Editor>
-void EditorFactoryPrivate<Editor>::initializeEditor(QtProperty *property, Editor *editor)
-{
-    typename PropertyToEditorListMap::iterator it = m_createdEditors.find(property);
-    if (it == m_createdEditors.end())
-        it = m_createdEditors.insert(property, EditorList());
-    it.value().append(editor);
-    m_editorToProperty.insert(editor, property);
-}
-
-template <class Editor>
-void EditorFactoryPrivate<Editor>::slotEditorDestroyed(QObject *object)
-{
-    const typename EditorToPropertyMap::iterator ecend = m_editorToProperty.end();
-    for (typename EditorToPropertyMap::iterator itEditor = m_editorToProperty.begin(); itEditor !=  ecend; ++itEditor) {
-        if (itEditor.key() == object) {
-            Editor *editor = itEditor.key();
-            QtProperty *property = itEditor.value();
-            const typename PropertyToEditorListMap::iterator pit = m_createdEditors.find(property);
-            if (pit != m_createdEditors.end()) {
-                pit.value().removeAll(editor);
-                if (pit.value().empty())
-                    m_createdEditors.erase(pit);
-            }
-            m_editorToProperty.erase(itEditor);
-            return;
-        }
-    }
-}
-
-// ------------ QtSpinBoxFactory
-
-class QtSpinBoxFactoryPrivate : public EditorFactoryPrivate<QSpinBox>
-{
-    QtSpinBoxFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtSpinBoxFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, int value);
-    void slotRangeChanged(QtProperty *property, int min, int max);
-    void slotSingleStepChanged(QtProperty *property, int step);
-    void slotSetValue(int value);
-};
-
-void QtSpinBoxFactoryPrivate::slotPropertyChanged(QtProperty *property, int value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QSpinBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSpinBox *editor = itEditor.next();
-        if (editor->value() != value) {
-            editor->blockSignals(true);
-            editor->setValue(value);
-            editor->blockSignals(false);
-        }
-    }
-}
-
-void QtSpinBoxFactoryPrivate::slotRangeChanged(QtProperty *property, int min, int max)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QListIterator<QSpinBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSpinBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setRange(min, max);
-        editor->setValue(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtSpinBoxFactoryPrivate::slotSingleStepChanged(QtProperty *property, int step)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QSpinBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSpinBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setSingleStep(step);
-        editor->blockSignals(false);
-    }
-}
-
-void QtSpinBoxFactoryPrivate::slotSetValue(int value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QSpinBox *, QtProperty *>::ConstIterator  ecend = m_editorToProperty.constEnd();
-    for (QMap<QSpinBox *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor !=  ecend; ++itEditor) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-    }
-}
-
-/*!
-    \class QtSpinBoxFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtSpinBoxFactory class provides QSpinBox widgets for
-    properties created by QtIntPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtIntPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtSpinBoxFactory::QtSpinBoxFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtIntPropertyManager>(parent), d_ptr(new QtSpinBoxFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtSpinBoxFactory::~QtSpinBoxFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtSpinBoxFactory::connectPropertyManager(QtIntPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    connect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtSpinBoxFactory::createEditor(QtIntPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QSpinBox *editor = d_ptr->createEditor(property, parent);
-    editor->setSingleStep(manager->singleStep(property));
-    editor->setRange(manager->minimum(property), manager->maximum(property));
-    editor->setValue(manager->value(property));
-    editor->setKeyboardTracking(false);
-
-    connect(editor, SIGNAL(valueChanged(int)), this, SLOT(slotSetValue(int)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtSpinBoxFactory::disconnectPropertyManager(QtIntPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    disconnect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    disconnect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-// QtSliderFactory
-
-class QtSliderFactoryPrivate : public EditorFactoryPrivate<QSlider>
-{
-    QtSliderFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtSliderFactory)
-public:
-    void slotPropertyChanged(QtProperty *property, int value);
-    void slotRangeChanged(QtProperty *property, int min, int max);
-    void slotSingleStepChanged(QtProperty *property, int step);
-    void slotSetValue(int value);
-};
-
-void QtSliderFactoryPrivate::slotPropertyChanged(QtProperty *property, int value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QSlider *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSlider *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setValue(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtSliderFactoryPrivate::slotRangeChanged(QtProperty *property, int min, int max)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QListIterator<QSlider *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSlider *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setRange(min, max);
-        editor->setValue(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtSliderFactoryPrivate::slotSingleStepChanged(QtProperty *property, int step)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QSlider *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QSlider *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setSingleStep(step);
-        editor->blockSignals(false);
-    }
-}
-
-void QtSliderFactoryPrivate::slotSetValue(int value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QSlider *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QSlider *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor ) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-    }
-}
-
-/*!
-    \class QtSliderFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtSliderFactory class provides QSlider widgets for
-    properties created by QtIntPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtIntPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtSliderFactory::QtSliderFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtIntPropertyManager>(parent), d_ptr(new QtSliderFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtSliderFactory::~QtSliderFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtSliderFactory::connectPropertyManager(QtIntPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    connect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtSliderFactory::createEditor(QtIntPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QSlider *editor = new QSlider(Qt::Horizontal, parent);
-    d_ptr->initializeEditor(property, editor);
-    editor->setSingleStep(manager->singleStep(property));
-    editor->setRange(manager->minimum(property), manager->maximum(property));
-    editor->setValue(manager->value(property));
-
-    connect(editor, SIGNAL(valueChanged(int)), this, SLOT(slotSetValue(int)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtSliderFactory::disconnectPropertyManager(QtIntPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    disconnect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    disconnect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-// QtSliderFactory
-
-class QtScrollBarFactoryPrivate : public  EditorFactoryPrivate<QScrollBar>
-{
-    QtScrollBarFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtScrollBarFactory)
-public:
-    void slotPropertyChanged(QtProperty *property, int value);
-    void slotRangeChanged(QtProperty *property, int min, int max);
-    void slotSingleStepChanged(QtProperty *property, int step);
-    void slotSetValue(int value);
-};
-
-void QtScrollBarFactoryPrivate::slotPropertyChanged(QtProperty *property, int value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QScrollBar *> itEditor( m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QScrollBar *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setValue(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtScrollBarFactoryPrivate::slotRangeChanged(QtProperty *property, int min, int max)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QListIterator<QScrollBar *> itEditor( m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QScrollBar *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setRange(min, max);
-        editor->setValue(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtScrollBarFactoryPrivate::slotSingleStepChanged(QtProperty *property, int step)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QScrollBar *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QScrollBar *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setSingleStep(step);
-        editor->blockSignals(false);
-    }
-}
-
-void QtScrollBarFactoryPrivate::slotSetValue(int value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QScrollBar *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QScrollBar *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtIntPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtScrollBarFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtScrollBarFactory class provides QScrollBar widgets for
-    properties created by QtIntPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtIntPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtScrollBarFactory::QtScrollBarFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtIntPropertyManager>(parent), d_ptr(new QtScrollBarFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtScrollBarFactory::~QtScrollBarFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtScrollBarFactory::connectPropertyManager(QtIntPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    connect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtScrollBarFactory::createEditor(QtIntPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QScrollBar *editor = new QScrollBar(Qt::Horizontal, parent);
-    d_ptr->initializeEditor(property, editor);
-    editor->setSingleStep(manager->singleStep(property));
-    editor->setRange(manager->minimum(property), manager->maximum(property));
-    editor->setValue(manager->value(property));
-    connect(editor, SIGNAL(valueChanged(int)), this, SLOT(slotSetValue(int)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtScrollBarFactory::disconnectPropertyManager(QtIntPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    disconnect(manager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    disconnect(manager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-}
-
-// QtCheckBoxFactory
-
-class QtCheckBoxFactoryPrivate : public EditorFactoryPrivate<QtBoolEdit>
-{
-    QtCheckBoxFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtCheckBoxFactory)
-public:
-    void slotPropertyChanged(QtProperty *property, bool value);
-    void slotSetValue(bool value);
-};
-
-void QtCheckBoxFactoryPrivate::slotPropertyChanged(QtProperty *property, bool value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QtBoolEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QtBoolEdit *editor = itEditor.next();
-        editor->blockCheckBoxSignals(true);
-        editor->setChecked(value);
-        editor->blockCheckBoxSignals(false);
-    }
-}
-
-void QtCheckBoxFactoryPrivate::slotSetValue(bool value)
-{
-    QObject *object = q_ptr->sender();
-
-    const QMap<QtBoolEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QtBoolEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend;  ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtBoolPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtCheckBoxFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtCheckBoxFactory class provides QCheckBox widgets for
-    properties created by QtBoolPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtBoolPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtCheckBoxFactory::QtCheckBoxFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtBoolPropertyManager>(parent), d_ptr(new QtCheckBoxFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtCheckBoxFactory::~QtCheckBoxFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCheckBoxFactory::connectPropertyManager(QtBoolPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotPropertyChanged(QtProperty*,bool)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtCheckBoxFactory::createEditor(QtBoolPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QtBoolEdit *editor = d_ptr->createEditor(property, parent);
-    editor->setChecked(manager->value(property));
-
-    connect(editor, SIGNAL(toggled(bool)), this, SLOT(slotSetValue(bool)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCheckBoxFactory::disconnectPropertyManager(QtBoolPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotPropertyChanged(QtProperty*,bool)));
-}
-
-// QtDoubleSpinBoxFactory
-
-class QtDoubleSpinBoxFactoryPrivate : public EditorFactoryPrivate<QDoubleSpinBox>
-{
-    QtDoubleSpinBoxFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtDoubleSpinBoxFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, double value);
-    void slotRangeChanged(QtProperty *property, double min, double max);
-    void slotSingleStepChanged(QtProperty *property, double step);
-    void slotDecimalsChanged(QtProperty *property, int prec);
-    void slotSetValue(double value);
-};
-
-void QtDoubleSpinBoxFactoryPrivate::slotPropertyChanged(QtProperty *property, double value)
-{
-    QList<QDoubleSpinBox *> editors = m_createdEditors[property];
-    QListIterator<QDoubleSpinBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QDoubleSpinBox *editor = itEditor.next();
-        if (editor->value() != value) {
-            editor->blockSignals(true);
-            editor->setValue(value);
-            editor->blockSignals(false);
-        }
-    }
-}
-
-void QtDoubleSpinBoxFactoryPrivate::slotRangeChanged(QtProperty *property,
-            double min, double max)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtDoublePropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QList<QDoubleSpinBox *> editors = m_createdEditors[property];
-    QListIterator<QDoubleSpinBox *> itEditor(editors);
-    while (itEditor.hasNext()) {
-        QDoubleSpinBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setRange(min, max);
-        editor->setValue(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtDoubleSpinBoxFactoryPrivate::slotSingleStepChanged(QtProperty *property, double step)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtDoublePropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QList<QDoubleSpinBox *> editors = m_createdEditors[property];
-    QListIterator<QDoubleSpinBox *> itEditor(editors);
-    while (itEditor.hasNext()) {
-        QDoubleSpinBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setSingleStep(step);
-        editor->blockSignals(false);
-    }
-}
-
-void QtDoubleSpinBoxFactoryPrivate::slotDecimalsChanged(QtProperty *property, int prec)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtDoublePropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QList<QDoubleSpinBox *> editors = m_createdEditors[property];
-    QListIterator<QDoubleSpinBox *> itEditor(editors);
-    while (itEditor.hasNext()) {
-        QDoubleSpinBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setDecimals(prec);
-        editor->setValue(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtDoubleSpinBoxFactoryPrivate::slotSetValue(double value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QDoubleSpinBox *, QtProperty *>::ConstIterator itcend = m_editorToProperty.constEnd();
-    for (QMap<QDoubleSpinBox *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != itcend; ++itEditor) {
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtDoublePropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-    }
-}
-
-/*! \class QtDoubleSpinBoxFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDoubleSpinBoxFactory class provides QDoubleSpinBox
-    widgets for properties created by QtDoublePropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtDoublePropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtDoubleSpinBoxFactory::QtDoubleSpinBoxFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtDoublePropertyManager>(parent), d_ptr(new QtDoubleSpinBoxFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtDoubleSpinBoxFactory::~QtDoubleSpinBoxFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDoubleSpinBoxFactory::connectPropertyManager(QtDoublePropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotPropertyChanged(QtProperty*,double)));
-    connect(manager, SIGNAL(rangeChanged(QtProperty*,double,double)),
-                this, SLOT(slotRangeChanged(QtProperty*,double,double)));
-    connect(manager, SIGNAL(singleStepChanged(QtProperty*,double)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,double)));
-    connect(manager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtDoubleSpinBoxFactory::createEditor(QtDoublePropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QDoubleSpinBox *editor = d_ptr->createEditor(property, parent);
-    editor->setSingleStep(manager->singleStep(property));
-    editor->setDecimals(manager->decimals(property));
-    editor->setRange(manager->minimum(property), manager->maximum(property));
-    editor->setValue(manager->value(property));
-    editor->setKeyboardTracking(false);
-
-    connect(editor, SIGNAL(valueChanged(double)), this, SLOT(slotSetValue(double)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDoubleSpinBoxFactory::disconnectPropertyManager(QtDoublePropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotPropertyChanged(QtProperty*,double)));
-    disconnect(manager, SIGNAL(rangeChanged(QtProperty*,double,double)),
-                this, SLOT(slotRangeChanged(QtProperty*,double,double)));
-    disconnect(manager, SIGNAL(singleStepChanged(QtProperty*,double)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,double)));
-    disconnect(manager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-}
-
-// QtLineEditFactory
-
-class QtLineEditFactoryPrivate : public EditorFactoryPrivate<QLineEdit>
-{
-    QtLineEditFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtLineEditFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QString &value);
-    void slotRegExpChanged(QtProperty *property, const QRegExp &regExp);
-    void slotSetValue(const QString &value);
-};
-
-void QtLineEditFactoryPrivate::slotPropertyChanged(QtProperty *property,
-                const QString &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QLineEdit *> itEditor( m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QLineEdit *editor = itEditor.next();
-        if (editor->text() != value)
-            editor->setText(value);
-    }
-}
-
-void QtLineEditFactoryPrivate::slotRegExpChanged(QtProperty *property,
-            const QRegExp &regExp)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtStringPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QListIterator<QLineEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QLineEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        const QValidator *oldValidator = editor->validator();
-        QValidator *newValidator = 0;
-        if (regExp.isValid()) {
-            newValidator = new QRegExpValidator(regExp, editor);
-        }
-        editor->setValidator(newValidator);
-        if (oldValidator)
-            delete oldValidator;
-        editor->blockSignals(false);
-    }
-}
-
-void QtLineEditFactoryPrivate::slotSetValue(const QString &value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QLineEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QLineEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtStringPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtLineEditFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtLineEditFactory class provides QLineEdit widgets for
-    properties created by QtStringPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtStringPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtLineEditFactory::QtLineEditFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtStringPropertyManager>(parent), d_ptr(new QtLineEditFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtLineEditFactory::~QtLineEditFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtLineEditFactory::connectPropertyManager(QtStringPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QString)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QString)));
-    connect(manager, SIGNAL(regExpChanged(QtProperty*,QRegExp)),
-                this, SLOT(slotRegExpChanged(QtProperty*,QRegExp)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtLineEditFactory::createEditor(QtStringPropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-
-    QLineEdit *editor = d_ptr->createEditor(property, parent);
-    QRegExp regExp = manager->regExp(property);
-    if (regExp.isValid()) {
-        QValidator *validator = new QRegExpValidator(regExp, editor);
-        editor->setValidator(validator);
-    }
-    editor->setText(manager->value(property));
-
-    connect(editor, SIGNAL(textEdited(QString)),
-                this, SLOT(slotSetValue(QString)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtLineEditFactory::disconnectPropertyManager(QtStringPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QString)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QString)));
-    disconnect(manager, SIGNAL(regExpChanged(QtProperty*,QRegExp)),
-                this, SLOT(slotRegExpChanged(QtProperty*,QRegExp)));
-}
-
-// QtDateEditFactory
-
-class QtDateEditFactoryPrivate : public EditorFactoryPrivate<QDateEdit>
-{
-    QtDateEditFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtDateEditFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QDate &value);
-    void slotRangeChanged(QtProperty *property, const QDate &min, const QDate &max);
-    void slotSetValue(const QDate &value);
-};
-
-void QtDateEditFactoryPrivate::slotPropertyChanged(QtProperty *property, const QDate &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QDateEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QDateEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setDate(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtDateEditFactoryPrivate::slotRangeChanged(QtProperty *property,
-                const QDate &min, const QDate &max)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtDatePropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QListIterator<QDateEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QDateEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setDateRange(min, max);
-        editor->setDate(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtDateEditFactoryPrivate::slotSetValue(const QDate &value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QDateEdit *, QtProperty *>::ConstIterator  ecend = m_editorToProperty.constEnd();
-    for (QMap<QDateEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtDatePropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtDateEditFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDateEditFactory class provides QDateEdit widgets for
-    properties created by QtDatePropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtDatePropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtDateEditFactory::QtDateEditFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtDatePropertyManager>(parent), d_ptr(new QtDateEditFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtDateEditFactory::~QtDateEditFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDateEditFactory::connectPropertyManager(QtDatePropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QDate)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QDate)));
-    connect(manager, SIGNAL(rangeChanged(QtProperty*,QDate,QDate)),
-                this, SLOT(slotRangeChanged(QtProperty*,QDate,QDate)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtDateEditFactory::createEditor(QtDatePropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QDateEdit *editor = d_ptr->createEditor(property, parent);
-    editor->setDisplayFormat(QtPropertyBrowserUtils::dateFormat());
-    editor->setCalendarPopup(true);
-    editor->setDateRange(manager->minimum(property), manager->maximum(property));
-    editor->setDate(manager->value(property));
-
-    connect(editor, SIGNAL(dateChanged(QDate)),
-                this, SLOT(slotSetValue(QDate)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDateEditFactory::disconnectPropertyManager(QtDatePropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QDate)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QDate)));
-    disconnect(manager, SIGNAL(rangeChanged(QtProperty*,QDate,QDate)),
-                this, SLOT(slotRangeChanged(QtProperty*,QDate,QDate)));
-}
-
-// QtTimeEditFactory
-
-class QtTimeEditFactoryPrivate : public EditorFactoryPrivate<QTimeEdit>
-{
-    QtTimeEditFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtTimeEditFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QTime &value);
-    void slotSetValue(const QTime &value);
-};
-
-void QtTimeEditFactoryPrivate::slotPropertyChanged(QtProperty *property, const QTime &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-    QListIterator<QTimeEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QTimeEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setTime(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtTimeEditFactoryPrivate::slotSetValue(const QTime &value)
-{
-    QObject *object = q_ptr->sender();
-    const  QMap<QTimeEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QTimeEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtTimePropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtTimeEditFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtTimeEditFactory class provides QTimeEdit widgets for
-    properties created by QtTimePropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtTimePropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtTimeEditFactory::QtTimeEditFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtTimePropertyManager>(parent), d_ptr(new QtTimeEditFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtTimeEditFactory::~QtTimeEditFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtTimeEditFactory::connectPropertyManager(QtTimePropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QTime)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QTime)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtTimeEditFactory::createEditor(QtTimePropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QTimeEdit *editor = d_ptr->createEditor(property, parent);
-    editor->setDisplayFormat(QtPropertyBrowserUtils::timeFormat());
-    editor->setTime(manager->value(property));
-
-    connect(editor, SIGNAL(timeChanged(QTime)),
-                this, SLOT(slotSetValue(QTime)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtTimeEditFactory::disconnectPropertyManager(QtTimePropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QTime)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QTime)));
-}
-
-// QtDateTimeEditFactory
-
-class QtDateTimeEditFactoryPrivate : public EditorFactoryPrivate<QDateTimeEdit>
-{
-    QtDateTimeEditFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtDateTimeEditFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QDateTime &value);
-    void slotSetValue(const QDateTime &value);
-
-};
-
-void QtDateTimeEditFactoryPrivate::slotPropertyChanged(QtProperty *property,
-            const QDateTime &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QDateTimeEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QDateTimeEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setDateTime(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtDateTimeEditFactoryPrivate::slotSetValue(const QDateTime &value)
-{
-    QObject *object = q_ptr->sender();
-    const  QMap<QDateTimeEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QDateTimeEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend;  ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtDateTimePropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtDateTimeEditFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDateTimeEditFactory class provides QDateTimeEdit
-    widgets for properties created by QtDateTimePropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtDateTimePropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtDateTimeEditFactory::QtDateTimeEditFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtDateTimePropertyManager>(parent), d_ptr(new QtDateTimeEditFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtDateTimeEditFactory::~QtDateTimeEditFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDateTimeEditFactory::connectPropertyManager(QtDateTimePropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QDateTime)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QDateTime)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtDateTimeEditFactory::createEditor(QtDateTimePropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QDateTimeEdit *editor =  d_ptr->createEditor(property, parent);
-    editor->setDisplayFormat(QtPropertyBrowserUtils::dateTimeFormat());
-    editor->setDateTime(manager->value(property));
-
-    connect(editor, SIGNAL(dateTimeChanged(QDateTime)),
-                this, SLOT(slotSetValue(QDateTime)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtDateTimeEditFactory::disconnectPropertyManager(QtDateTimePropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QDateTime)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QDateTime)));
-}
-
-// QtKeySequenceEditorFactory
-
-class QtKeySequenceEditorFactoryPrivate : public EditorFactoryPrivate<QKeySequenceEdit>
-{
-    QtKeySequenceEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtKeySequenceEditorFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QKeySequence &value);
-    void slotSetValue(const QKeySequence &value);
-};
-
-void QtKeySequenceEditorFactoryPrivate::slotPropertyChanged(QtProperty *property,
-            const QKeySequence &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QKeySequenceEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QKeySequenceEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setKeySequence(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtKeySequenceEditorFactoryPrivate::slotSetValue(const QKeySequence &value)
-{
-    QObject *object = q_ptr->sender();
-    const  QMap<QKeySequenceEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QKeySequenceEdit *, QtProperty *>::ConstIterator itEditor =  m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtKeySequencePropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtKeySequenceEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtKeySequenceEditorFactory class provides editor
-    widgets for properties created by QtKeySequencePropertyManager objects.
-
-    \sa QtAbstractEditorFactory
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtKeySequenceEditorFactory::QtKeySequenceEditorFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtKeySequencePropertyManager>(parent), d_ptr(new QtKeySequenceEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtKeySequenceEditorFactory::~QtKeySequenceEditorFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtKeySequenceEditorFactory::connectPropertyManager(QtKeySequencePropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QKeySequence)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QKeySequence)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtKeySequenceEditorFactory::createEditor(QtKeySequencePropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QKeySequenceEdit *editor = d_ptr->createEditor(property, parent);
-    editor->setKeySequence(manager->value(property));
-
-    connect(editor, SIGNAL(keySequenceChanged(QKeySequence)),
-                this, SLOT(slotSetValue(QKeySequence)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtKeySequenceEditorFactory::disconnectPropertyManager(QtKeySequencePropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QKeySequence)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QKeySequence)));
-}
-
-// QtCharEdit
-
-class QtCharEdit : public QWidget
-{
-    Q_OBJECT
-public:
-    QtCharEdit(QWidget *parent = 0);
-
-    QChar value() const;
-    bool eventFilter(QObject *o, QEvent *e);
-public Q_SLOTS:
-    void setValue(const QChar &value);
-Q_SIGNALS:
-    void valueChanged(const QChar &value);
-protected:
-    void focusInEvent(QFocusEvent *e);
-    void focusOutEvent(QFocusEvent *e);
-    void keyPressEvent(QKeyEvent *e);
-    void keyReleaseEvent(QKeyEvent *e);
-    bool event(QEvent *e);
-private slots:
-    void slotClearChar();
-private:
-    void handleKeyEvent(QKeyEvent *e);
-
-    QChar m_value;
-    QLineEdit *m_lineEdit;
-};
-
-QtCharEdit::QtCharEdit(QWidget *parent)
-    : QWidget(parent),  m_lineEdit(new QLineEdit(this))
-{
-    QHBoxLayout *layout = new QHBoxLayout(this);
-    layout->addWidget(m_lineEdit);
-    layout->setMargin(0);
-    m_lineEdit->installEventFilter(this);
-    m_lineEdit->setReadOnly(true);
-    m_lineEdit->setFocusProxy(this);
-    setFocusPolicy(m_lineEdit->focusPolicy());
-    setAttribute(Qt::WA_InputMethodEnabled);
-}
-
-bool QtCharEdit::eventFilter(QObject *o, QEvent *e)
-{
-    if (o == m_lineEdit && e->type() == QEvent::ContextMenu) {
-        QContextMenuEvent *c = static_cast<QContextMenuEvent *>(e);
-        QMenu *menu = m_lineEdit->createStandardContextMenu();
-        QList<QAction *> actions = menu->actions();
-        QListIterator<QAction *> itAction(actions);
-        while (itAction.hasNext()) {
-            QAction *action = itAction.next();
-            action->setShortcut(QKeySequence());
-            QString actionString = action->text();
-            const int pos = actionString.lastIndexOf(QLatin1Char('\t'));
-            if (pos > 0)
-                actionString = actionString.remove(pos, actionString.length() - pos);
-            action->setText(actionString);
-        }
-        QAction *actionBefore = 0;
-        if (actions.count() > 0)
-            actionBefore = actions[0];
-        QAction *clearAction = new QAction(tr("Clear Char"), menu);
-        menu->insertAction(actionBefore, clearAction);
-        menu->insertSeparator(actionBefore);
-        clearAction->setEnabled(!m_value.isNull());
-        connect(clearAction, SIGNAL(triggered()), this, SLOT(slotClearChar()));
-        menu->exec(c->globalPos());
-        delete menu;
-        e->accept();
-        return true;
-    }
-
-    return QWidget::eventFilter(o, e);
-}
-
-void QtCharEdit::slotClearChar()
-{
-    if (m_value.isNull())
-        return;
-    setValue(QChar());
-    emit valueChanged(m_value);
-}
-
-void QtCharEdit::handleKeyEvent(QKeyEvent *e)
-{
-    const int key = e->key();
-    switch (key) {
-    case Qt::Key_Control:
-    case Qt::Key_Shift:
-    case Qt::Key_Meta:
-    case Qt::Key_Alt:
-    case Qt::Key_Super_L:
-    case Qt::Key_Return:
-        return;
-    default:
-        break;
-    }
-
-    const QString text = e->text();
-    if (text.count() != 1)
-        return;
-
-    const QChar c = text.at(0);
-    if (!c.isPrint())
-        return;
-
-    if (m_value == c)
-        return;
-
-    m_value = c;
-    const QString str = m_value.isNull() ? QString() : QString(m_value);
-    m_lineEdit->setText(str);
-    e->accept();
-    emit valueChanged(m_value);
-}
-
-void QtCharEdit::setValue(const QChar &value)
-{
-    if (value == m_value)
-        return;
-
-    m_value = value;
-    QString str = value.isNull() ? QString() : QString(value);
-    m_lineEdit->setText(str);
-}
-
-QChar QtCharEdit::value() const
-{
-    return m_value;
-}
-
-void QtCharEdit::focusInEvent(QFocusEvent *e)
-{
-    m_lineEdit->event(e);
-    m_lineEdit->selectAll();
-    QWidget::focusInEvent(e);
-}
-
-void QtCharEdit::focusOutEvent(QFocusEvent *e)
-{
-    m_lineEdit->event(e);
-    QWidget::focusOutEvent(e);
-}
-
-void QtCharEdit::keyPressEvent(QKeyEvent *e)
-{
-    handleKeyEvent(e);
-    e->accept();
-}
-
-void QtCharEdit::keyReleaseEvent(QKeyEvent *e)
-{
-    m_lineEdit->event(e);
-}
-
-bool QtCharEdit::event(QEvent *e)
-{
-    switch(e->type()) {
-    case QEvent::Shortcut:
-    case QEvent::ShortcutOverride:
-    case QEvent::KeyRelease:
-        e->accept();
-        return true;
-    default:
-        break;
-    }
-    return QWidget::event(e);
-}
-
-// QtCharEditorFactory
-
-class QtCharEditorFactoryPrivate : public EditorFactoryPrivate<QtCharEdit>
-{
-    QtCharEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtCharEditorFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QChar &value);
-    void slotSetValue(const QChar &value);
-
-};
-
-void QtCharEditorFactoryPrivate::slotPropertyChanged(QtProperty *property,
-            const QChar &value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QtCharEdit *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QtCharEdit *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setValue(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtCharEditorFactoryPrivate::slotSetValue(const QChar &value)
-{
-    QObject *object = q_ptr->sender();
-    const QMap<QtCharEdit *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QtCharEdit *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend;  ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtCharPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtCharEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtCharEditorFactory class provides editor
-    widgets for properties created by QtCharPropertyManager objects.
-
-    \sa QtAbstractEditorFactory
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtCharEditorFactory::QtCharEditorFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtCharPropertyManager>(parent), d_ptr(new QtCharEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtCharEditorFactory::~QtCharEditorFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCharEditorFactory::connectPropertyManager(QtCharPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QChar)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QChar)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtCharEditorFactory::createEditor(QtCharPropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QtCharEdit *editor = d_ptr->createEditor(property, parent);
-    editor->setValue(manager->value(property));
-
-    connect(editor, SIGNAL(valueChanged(QChar)),
-                this, SLOT(slotSetValue(QChar)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCharEditorFactory::disconnectPropertyManager(QtCharPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QChar)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QChar)));
-}
-
-// QtEnumEditorFactory
-
-class QtEnumEditorFactoryPrivate : public EditorFactoryPrivate<QComboBox>
-{
-    QtEnumEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtEnumEditorFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, int value);
-    void slotEnumNamesChanged(QtProperty *property, const QStringList &);
-    void slotEnumIconsChanged(QtProperty *property, const QMap<int, QIcon> &);
-    void slotSetValue(int value);
-};
-
-void QtEnumEditorFactoryPrivate::slotPropertyChanged(QtProperty *property, int value)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QListIterator<QComboBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QComboBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->setCurrentIndex(value);
-        editor->blockSignals(false);
-    }
-}
-
-void QtEnumEditorFactoryPrivate::slotEnumNamesChanged(QtProperty *property,
-                const QStringList &enumNames)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtEnumPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    QMap<int, QIcon> enumIcons = manager->enumIcons(property);
-
-    QListIterator<QComboBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QComboBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        editor->clear();
-        editor->addItems(enumNames);
-        const int nameCount = enumNames.count();
-        for (int i = 0; i < nameCount; i++)
-            editor->setItemIcon(i, enumIcons.value(i));
-        editor->setCurrentIndex(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtEnumEditorFactoryPrivate::slotEnumIconsChanged(QtProperty *property,
-                const QMap<int, QIcon> &enumIcons)
-{
-    if (!m_createdEditors.contains(property))
-        return;
-
-    QtEnumPropertyManager *manager = q_ptr->propertyManager(property);
-    if (!manager)
-        return;
-
-    const QStringList enumNames = manager->enumNames(property);
-    QListIterator<QComboBox *> itEditor(m_createdEditors[property]);
-    while (itEditor.hasNext()) {
-        QComboBox *editor = itEditor.next();
-        editor->blockSignals(true);
-        const int nameCount = enumNames.count();
-        for (int i = 0; i < nameCount; i++)
-            editor->setItemIcon(i, enumIcons.value(i));
-        editor->setCurrentIndex(manager->value(property));
-        editor->blockSignals(false);
-    }
-}
-
-void QtEnumEditorFactoryPrivate::slotSetValue(int value)
-{
-    QObject *object = q_ptr->sender();
-    const  QMap<QComboBox *, QtProperty *>::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (QMap<QComboBox *, QtProperty *>::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtEnumPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtEnumEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtEnumEditorFactory class provides QComboBox widgets for
-    properties created by QtEnumPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtEnumPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtEnumEditorFactory::QtEnumEditorFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtEnumPropertyManager>(parent), d_ptr(new QtEnumEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtEnumEditorFactory::~QtEnumEditorFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtEnumEditorFactory::connectPropertyManager(QtEnumPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    connect(manager, SIGNAL(enumNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotEnumNamesChanged(QtProperty*,QStringList)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtEnumEditorFactory::createEditor(QtEnumPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QComboBox *editor = d_ptr->createEditor(property, parent);
-    editor->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
-    editor->view()->setTextElideMode(Qt::ElideRight);
-    QStringList enumNames = manager->enumNames(property);
-    editor->addItems(enumNames);
-    QMap<int, QIcon> enumIcons = manager->enumIcons(property);
-    const int enumNamesCount = enumNames.count();
-    for (int i = 0; i < enumNamesCount; i++)
-        editor->setItemIcon(i, enumIcons.value(i));
-    editor->setCurrentIndex(manager->value(property));
-
-    connect(editor, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetValue(int)));
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtEnumEditorFactory::disconnectPropertyManager(QtEnumPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotPropertyChanged(QtProperty*,int)));
-    disconnect(manager, SIGNAL(enumNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotEnumNamesChanged(QtProperty*,QStringList)));
-}
-
-// QtCursorEditorFactory
-
-Q_GLOBAL_STATIC(QtCursorDatabase, cursorDatabase)
-
-class QtCursorEditorFactoryPrivate
-{
-    QtCursorEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtCursorEditorFactory)
-public:
-    QtCursorEditorFactoryPrivate();
-
-    void slotPropertyChanged(QtProperty *property, const QCursor &cursor);
-    void slotEnumChanged(QtProperty *property, int value);
-    void slotEditorDestroyed(QObject *object);
-
-    QtEnumEditorFactory *m_enumEditorFactory;
-    QtEnumPropertyManager *m_enumPropertyManager;
-
-    QMap<QtProperty *, QtProperty *> m_propertyToEnum;
-    QMap<QtProperty *, QtProperty *> m_enumToProperty;
-    QMap<QtProperty *, QList<QWidget *> > m_enumToEditors;
-    QMap<QWidget *, QtProperty *> m_editorToEnum;
-    bool m_updatingEnum;
-};
-
-QtCursorEditorFactoryPrivate::QtCursorEditorFactoryPrivate()
-    : m_updatingEnum(false)
-{
-
-}
-
-void QtCursorEditorFactoryPrivate::slotPropertyChanged(QtProperty *property, const QCursor &cursor)
-{
-    // update enum property
-    QtProperty *enumProp = m_propertyToEnum.value(property);
-    if (!enumProp)
-        return;
-
-    m_updatingEnum = true;
-    m_enumPropertyManager->setValue(enumProp, cursorDatabase()->cursorToValue(cursor));
-    m_updatingEnum = false;
-}
-
-void QtCursorEditorFactoryPrivate::slotEnumChanged(QtProperty *property, int value)
-{
-    if (m_updatingEnum)
-        return;
-    // update cursor property
-    QtProperty *prop = m_enumToProperty.value(property);
-    if (!prop)
-        return;
-    QtCursorPropertyManager *cursorManager = q_ptr->propertyManager(prop);
-    if (!cursorManager)
-        return;
-#ifndef QT_NO_CURSOR
-    cursorManager->setValue(prop, QCursor(cursorDatabase()->valueToCursor(value)));
-#endif
-}
-
-void QtCursorEditorFactoryPrivate::slotEditorDestroyed(QObject *object)
-{
-    // remove from m_editorToEnum map;
-    // remove from m_enumToEditors map;
-    // if m_enumToEditors doesn't contains more editors delete enum property;
-    const  QMap<QWidget *, QtProperty *>::ConstIterator ecend = m_editorToEnum.constEnd();
-    for (QMap<QWidget *, QtProperty *>::ConstIterator itEditor = m_editorToEnum.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QWidget *editor = itEditor.key();
-            QtProperty *enumProp = itEditor.value();
-            m_editorToEnum.remove(editor);
-            m_enumToEditors[enumProp].removeAll(editor);
-            if (m_enumToEditors[enumProp].isEmpty()) {
-                m_enumToEditors.remove(enumProp);
-                QtProperty *property = m_enumToProperty.value(enumProp);
-                m_enumToProperty.remove(enumProp);
-                m_propertyToEnum.remove(property);
-                delete enumProp;
-            }
-            return;
-        }
-}
-
-/*!
-    \class QtCursorEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtCursorEditorFactory class provides QComboBox widgets for
-    properties created by QtCursorPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtCursorPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtCursorEditorFactory::QtCursorEditorFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtCursorPropertyManager>(parent), d_ptr(new QtCursorEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_enumEditorFactory = new QtEnumEditorFactory(this);
-    d_ptr->m_enumPropertyManager = new QtEnumPropertyManager(this);
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotEnumChanged(QtProperty*,int)));
-    d_ptr->m_enumEditorFactory->addPropertyManager(d_ptr->m_enumPropertyManager);
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtCursorEditorFactory::~QtCursorEditorFactory()
-{
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCursorEditorFactory::connectPropertyManager(QtCursorPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QCursor)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QCursor)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtCursorEditorFactory::createEditor(QtCursorPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    QtProperty *enumProp = 0;
-    if (d_ptr->m_propertyToEnum.contains(property)) {
-        enumProp = d_ptr->m_propertyToEnum[property];
-    } else {
-        enumProp = d_ptr->m_enumPropertyManager->addProperty(property->propertyName());
-        d_ptr->m_enumPropertyManager->setEnumNames(enumProp, cursorDatabase()->cursorShapeNames());
-        d_ptr->m_enumPropertyManager->setEnumIcons(enumProp, cursorDatabase()->cursorShapeIcons());
-#ifndef QT_NO_CURSOR
-        d_ptr->m_enumPropertyManager->setValue(enumProp, cursorDatabase()->cursorToValue(manager->value(property)));
-#endif
-        d_ptr->m_propertyToEnum[property] = enumProp;
-        d_ptr->m_enumToProperty[enumProp] = property;
-    }
-    QtAbstractEditorFactoryBase *af = d_ptr->m_enumEditorFactory;
-    QWidget *editor = af->createEditor(enumProp, parent);
-    d_ptr->m_enumToEditors[enumProp].append(editor);
-    d_ptr->m_editorToEnum[editor] = enumProp;
-    connect(editor, SIGNAL(destroyed(QObject*)),
-                this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtCursorEditorFactory::disconnectPropertyManager(QtCursorPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QCursor)),
-                this, SLOT(slotPropertyChanged(QtProperty*,QCursor)));
-}
-
-// QtColorEditWidget
-
-class QtColorEditWidget : public QWidget {
-    Q_OBJECT
-
-public:
-    QtColorEditWidget(QWidget *parent);
-
-    bool eventFilter(QObject *obj, QEvent *ev);
-
-public Q_SLOTS:
-    void setValue(const QColor &value);
-
-private Q_SLOTS:
-    void buttonClicked();
-
-Q_SIGNALS:
-    void valueChanged(const QColor &value);
-
-private:
-    QColor m_color;
-    QLabel *m_pixmapLabel;
-    QLabel *m_label;
-    QToolButton *m_button;
-};
-
-QtColorEditWidget::QtColorEditWidget(QWidget *parent) :
-    QWidget(parent),
-    m_pixmapLabel(new QLabel),
-    m_label(new QLabel),
-    m_button(new QToolButton)
-{
-    QHBoxLayout *lt = new QHBoxLayout(this);
-    setupTreeViewEditorMargin(lt);
-    lt->setSpacing(0);
-    lt->addWidget(m_pixmapLabel);
-    lt->addWidget(m_label);
-    lt->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
-
-    m_button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Ignored);
-    m_button->setFixedWidth(20);
-    setFocusProxy(m_button);
-    setFocusPolicy(m_button->focusPolicy());
-    m_button->setText(tr("..."));
-    m_button->installEventFilter(this);
-    connect(m_button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-    lt->addWidget(m_button);
-    m_pixmapLabel->setPixmap(QtPropertyBrowserUtils::brushValuePixmap(QBrush(m_color)));
-    m_label->setText(QtPropertyBrowserUtils::colorValueText(m_color));
-}
-
-void QtColorEditWidget::setValue(const QColor &c)
-{
-    if (m_color != c) {
-        m_color = c;
-        m_pixmapLabel->setPixmap(QtPropertyBrowserUtils::brushValuePixmap(QBrush(c)));
-        m_label->setText(QtPropertyBrowserUtils::colorValueText(c));
-    }
-}
-
-void QtColorEditWidget::buttonClicked()
-{
-    const QColor newColor = QColorDialog::getColor(m_color, this, QString(), QColorDialog::ShowAlphaChannel);
-    if (newColor.isValid() && newColor != m_color) {
-        setValue(newColor);
-        emit valueChanged(m_color);
-    }
-}
-
-bool QtColorEditWidget::eventFilter(QObject *obj, QEvent *ev)
-{
-    if (obj == m_button) {
-        switch (ev->type()) {
-        case QEvent::KeyPress:
-        case QEvent::KeyRelease: { // Prevent the QToolButton from handling Enter/Escape meant control the delegate
-            switch (static_cast<const QKeyEvent*>(ev)->key()) {
-            case Qt::Key_Escape:
-            case Qt::Key_Enter:
-            case Qt::Key_Return:
-                ev->ignore();
-                return true;
-            default:
-                break;
-            }
-        }
-            break;
-        default:
-            break;
-        }
-    }
-    return QWidget::eventFilter(obj, ev);
-}
-
-// QtColorEditorFactoryPrivate
-
-class QtColorEditorFactoryPrivate : public EditorFactoryPrivate<QtColorEditWidget>
-{
-    QtColorEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtColorEditorFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QColor &value);
-    void slotSetValue(const QColor &value);
-};
-
-void QtColorEditorFactoryPrivate::slotPropertyChanged(QtProperty *property,
-                const QColor &value)
-{
-    const PropertyToEditorListMap::iterator it = m_createdEditors.find(property);
-    if (it == m_createdEditors.end())
-        return;
-    QListIterator<QtColorEditWidget *> itEditor(it.value());
-
-    while (itEditor.hasNext())
-        itEditor.next()->setValue(value);
-}
-
-void QtColorEditorFactoryPrivate::slotSetValue(const QColor &value)
-{
-    QObject *object = q_ptr->sender();
-    const EditorToPropertyMap::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (EditorToPropertyMap::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtColorPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtColorEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtColorEditorFactory class provides color editing  for
-    properties created by QtColorPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtColorPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtColorEditorFactory::QtColorEditorFactory(QObject *parent) :
-    QtAbstractEditorFactory<QtColorPropertyManager>(parent),
-    d_ptr(new QtColorEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtColorEditorFactory::~QtColorEditorFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtColorEditorFactory::connectPropertyManager(QtColorPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QColor)),
-            this, SLOT(slotPropertyChanged(QtProperty*,QColor)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtColorEditorFactory::createEditor(QtColorPropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QtColorEditWidget *editor = d_ptr->createEditor(property, parent);
-    editor->setValue(manager->value(property));
-    connect(editor, SIGNAL(valueChanged(QColor)), this, SLOT(slotSetValue(QColor)));
-    connect(editor, SIGNAL(destroyed(QObject*)), this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtColorEditorFactory::disconnectPropertyManager(QtColorPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QColor)), this, SLOT(slotPropertyChanged(QtProperty*,QColor)));
-}
-
-// QtFontEditWidget
-
-class QtFontEditWidget : public QWidget {
-    Q_OBJECT
-
-public:
-    QtFontEditWidget(QWidget *parent);
-
-    bool eventFilter(QObject *obj, QEvent *ev);
-
-public Q_SLOTS:
-    void setValue(const QFont &value);
-
-private Q_SLOTS:
-    void buttonClicked();
-
-Q_SIGNALS:
-    void valueChanged(const QFont &value);
-
-private:
-    QFont m_font;
-    QLabel *m_pixmapLabel;
-    QLabel *m_label;
-    QToolButton *m_button;
-};
-
-QtFontEditWidget::QtFontEditWidget(QWidget *parent) :
-    QWidget(parent),
-    m_pixmapLabel(new QLabel),
-    m_label(new QLabel),
-    m_button(new QToolButton)
-{
-    QHBoxLayout *lt = new QHBoxLayout(this);
-    setupTreeViewEditorMargin(lt);
-    lt->setSpacing(0);
-    lt->addWidget(m_pixmapLabel);
-    lt->addWidget(m_label);
-    lt->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
-
-    m_button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Ignored);
-    m_button->setFixedWidth(20);
-    setFocusProxy(m_button);
-    setFocusPolicy(m_button->focusPolicy());
-    m_button->setText(tr("..."));
-    m_button->installEventFilter(this);
-    connect(m_button, SIGNAL(clicked()), this, SLOT(buttonClicked()));
-    lt->addWidget(m_button);
-    m_pixmapLabel->setPixmap(QtPropertyBrowserUtils::fontValuePixmap(m_font));
-    m_label->setText(QtPropertyBrowserUtils::fontValueText(m_font));
-}
-
-void QtFontEditWidget::setValue(const QFont &f)
-{
-    if (m_font != f) {
-        m_font = f;
-        m_pixmapLabel->setPixmap(QtPropertyBrowserUtils::fontValuePixmap(f));
-        m_label->setText(QtPropertyBrowserUtils::fontValueText(f));
-    }
-}
-
-void QtFontEditWidget::buttonClicked()
-{
-    bool ok = false;
-    QFont newFont = QFontDialog::getFont(&ok, m_font, this, tr("Select Font"));
-    if (ok && newFont != m_font) {
-        QFont f = m_font;
-        // prevent mask for unchanged attributes, don't change other attributes (like kerning, etc...)
-        if (m_font.family() != newFont.family())
-            f.setFamily(newFont.family());
-        if (m_font.pointSize() != newFont.pointSize())
-            f.setPointSize(newFont.pointSize());
-        if (m_font.bold() != newFont.bold())
-            f.setBold(newFont.bold());
-        if (m_font.italic() != newFont.italic())
-            f.setItalic(newFont.italic());
-        if (m_font.underline() != newFont.underline())
-            f.setUnderline(newFont.underline());
-        if (m_font.strikeOut() != newFont.strikeOut())
-            f.setStrikeOut(newFont.strikeOut());
-        setValue(f);
-        emit valueChanged(m_font);
-    }
-}
-
-bool QtFontEditWidget::eventFilter(QObject *obj, QEvent *ev)
-{
-    if (obj == m_button) {
-        switch (ev->type()) {
-        case QEvent::KeyPress:
-        case QEvent::KeyRelease: { // Prevent the QToolButton from handling Enter/Escape meant control the delegate
-            switch (static_cast<const QKeyEvent*>(ev)->key()) {
-            case Qt::Key_Escape:
-            case Qt::Key_Enter:
-            case Qt::Key_Return:
-                ev->ignore();
-                return true;
-            default:
-                break;
-            }
-        }
-            break;
-        default:
-            break;
-        }
-    }
-    return QWidget::eventFilter(obj, ev);
-}
-
-// QtFontEditorFactoryPrivate
-
-class QtFontEditorFactoryPrivate : public EditorFactoryPrivate<QtFontEditWidget>
-{
-    QtFontEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtFontEditorFactory)
-public:
-
-    void slotPropertyChanged(QtProperty *property, const QFont &value);
-    void slotSetValue(const QFont &value);
-};
-
-void QtFontEditorFactoryPrivate::slotPropertyChanged(QtProperty *property,
-                const QFont &value)
-{
-    const PropertyToEditorListMap::iterator it = m_createdEditors.find(property);
-    if (it == m_createdEditors.end())
-        return;
-    QListIterator<QtFontEditWidget *> itEditor(it.value());
-
-    while (itEditor.hasNext())
-        itEditor.next()->setValue(value);
-}
-
-void QtFontEditorFactoryPrivate::slotSetValue(const QFont &value)
-{
-    QObject *object = q_ptr->sender();
-    const EditorToPropertyMap::ConstIterator ecend = m_editorToProperty.constEnd();
-    for (EditorToPropertyMap::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor)
-        if (itEditor.key() == object) {
-            QtProperty *property = itEditor.value();
-            QtFontPropertyManager *manager = q_ptr->propertyManager(property);
-            if (!manager)
-                return;
-            manager->setValue(property, value);
-            return;
-        }
-}
-
-/*!
-    \class QtFontEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtFontEditorFactory class provides font editing for
-    properties created by QtFontPropertyManager objects.
-
-    \sa QtAbstractEditorFactory, QtFontPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtFontEditorFactory::QtFontEditorFactory(QObject *parent) :
-    QtAbstractEditorFactory<QtFontPropertyManager>(parent),
-    d_ptr(new QtFontEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtFontEditorFactory::~QtFontEditorFactory()
-{
-    qDeleteAll(d_ptr->m_editorToProperty.keys());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtFontEditorFactory::connectPropertyManager(QtFontPropertyManager *manager)
-{
-    connect(manager, SIGNAL(valueChanged(QtProperty*,QFont)),
-            this, SLOT(slotPropertyChanged(QtProperty*,QFont)));
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtFontEditorFactory::createEditor(QtFontPropertyManager *manager,
-        QtProperty *property, QWidget *parent)
-{
-    QtFontEditWidget *editor = d_ptr->createEditor(property, parent);
-    editor->setValue(manager->value(property));
-    connect(editor, SIGNAL(valueChanged(QFont)), this, SLOT(slotSetValue(QFont)));
-    connect(editor, SIGNAL(destroyed(QObject*)), this, SLOT(slotEditorDestroyed(QObject*)));
-    return editor;
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtFontEditorFactory::disconnectPropertyManager(QtFontPropertyManager *manager)
-{
-    disconnect(manager, SIGNAL(valueChanged(QtProperty*,QFont)), this, SLOT(slotPropertyChanged(QtProperty*,QFont)));
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qteditorfactory.cpp"
-#include "qteditorfactory.moc"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.h b/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.h
deleted file mode 100644
index a1563781a38820f3af6e3c4d5dc99ba8bf72eed8..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qteditorfactory.h
+++ /dev/null
@@ -1,389 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTEDITORFACTORY_H
-#define QTEDITORFACTORY_H
-
-#include "qtpropertymanager.h"
-
-QT_BEGIN_NAMESPACE
-
-class QtSpinBoxFactoryPrivate;
-
-class QtSpinBoxFactory : public QtAbstractEditorFactory<QtIntPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtSpinBoxFactory(QObject *parent = 0);
-    virtual ~QtSpinBoxFactory();
-protected:
-    virtual void connectPropertyManager(QtIntPropertyManager *manager);
-    virtual QWidget *createEditor(QtIntPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtIntPropertyManager *manager);
-private:
-    QScopedPointer<QtSpinBoxFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtSpinBoxFactory)
-    Q_DISABLE_COPY(QtSpinBoxFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, int, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(int))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtSliderFactoryPrivate;
-
-class QtSliderFactory : public QtAbstractEditorFactory<QtIntPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtSliderFactory(QObject *parent = 0);
-    virtual ~QtSliderFactory();
-protected:
-    virtual void connectPropertyManager(QtIntPropertyManager *manager);
-    QWidget *createEditor(QtIntPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtIntPropertyManager *manager);
-private:
-    QScopedPointer<QtSliderFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtSliderFactory)
-    Q_DISABLE_COPY(QtSliderFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, int, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(int))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtScrollBarFactoryPrivate;
-
-class QtScrollBarFactory : public QtAbstractEditorFactory<QtIntPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtScrollBarFactory(QObject *parent = 0);
-    virtual ~QtScrollBarFactory();
-protected:
-    virtual void connectPropertyManager(QtIntPropertyManager *manager);
-    QWidget *createEditor(QtIntPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtIntPropertyManager *manager);
-private:
-    QScopedPointer<QtScrollBarFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtScrollBarFactory)
-    Q_DISABLE_COPY(QtScrollBarFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, int, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(int))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtCheckBoxFactoryPrivate;
-
-class QtCheckBoxFactory : public QtAbstractEditorFactory<QtBoolPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtCheckBoxFactory(QObject *parent = 0);
-    virtual ~QtCheckBoxFactory();
-protected:
-    virtual void connectPropertyManager(QtBoolPropertyManager *manager);
-    virtual QWidget *createEditor(QtBoolPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtBoolPropertyManager *manager);
-private:
-    QScopedPointer<QtCheckBoxFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtCheckBoxFactory)
-    Q_DISABLE_COPY(QtCheckBoxFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, bool))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(bool))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtDoubleSpinBoxFactoryPrivate;
-
-class QtDoubleSpinBoxFactory : public QtAbstractEditorFactory<QtDoublePropertyManager>
-{
-    Q_OBJECT
-public:
-    QtDoubleSpinBoxFactory(QObject *parent = 0);
-    virtual ~QtDoubleSpinBoxFactory();
-protected:
-    virtual void connectPropertyManager(QtDoublePropertyManager *manager);
-    virtual QWidget *createEditor(QtDoublePropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtDoublePropertyManager *manager);
-private:
-    QScopedPointer<QtDoubleSpinBoxFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDoubleSpinBoxFactory)
-    Q_DISABLE_COPY(QtDoubleSpinBoxFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, double, double))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotDecimalsChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(double))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtLineEditFactoryPrivate;
-
-class QtLineEditFactory : public QtAbstractEditorFactory<QtStringPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtLineEditFactory(QObject *parent = 0);
-    virtual ~QtLineEditFactory();
-protected:
-    virtual void connectPropertyManager(QtStringPropertyManager *manager);
-    virtual QWidget *createEditor(QtStringPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtStringPropertyManager *manager);
-private:
-    QScopedPointer<QtLineEditFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtLineEditFactory)
-    Q_DISABLE_COPY(QtLineEditFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QString &))
-    Q_PRIVATE_SLOT(d_func(), void slotRegExpChanged(QtProperty *, const QRegExp &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QString &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtDateEditFactoryPrivate;
-
-class QtDateEditFactory : public QtAbstractEditorFactory<QtDatePropertyManager>
-{
-    Q_OBJECT
-public:
-    QtDateEditFactory(QObject *parent = 0);
-    virtual ~QtDateEditFactory();
-protected:
-    virtual void connectPropertyManager(QtDatePropertyManager *manager);
-    virtual QWidget *createEditor(QtDatePropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtDatePropertyManager *manager);
-private:
-    QScopedPointer<QtDateEditFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDateEditFactory)
-    Q_DISABLE_COPY(QtDateEditFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QDate &))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *,
-                        const QDate &, const QDate &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QDate &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtTimeEditFactoryPrivate;
-
-class QtTimeEditFactory : public QtAbstractEditorFactory<QtTimePropertyManager>
-{
-    Q_OBJECT
-public:
-    QtTimeEditFactory(QObject *parent = 0);
-    virtual ~QtTimeEditFactory();
-protected:
-    virtual void connectPropertyManager(QtTimePropertyManager *manager);
-    virtual QWidget *createEditor(QtTimePropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtTimePropertyManager *manager);
-private:
-    QScopedPointer<QtTimeEditFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtTimeEditFactory)
-    Q_DISABLE_COPY(QtTimeEditFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtDateTimeEditFactoryPrivate;
-
-class QtDateTimeEditFactory : public QtAbstractEditorFactory<QtDateTimePropertyManager>
-{
-    Q_OBJECT
-public:
-    QtDateTimeEditFactory(QObject *parent = 0);
-    virtual ~QtDateTimeEditFactory();
-protected:
-    virtual void connectPropertyManager(QtDateTimePropertyManager *manager);
-    virtual QWidget *createEditor(QtDateTimePropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtDateTimePropertyManager *manager);
-private:
-    QScopedPointer<QtDateTimeEditFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDateTimeEditFactory)
-    Q_DISABLE_COPY(QtDateTimeEditFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QDateTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QDateTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtKeySequenceEditorFactoryPrivate;
-
-class QtKeySequenceEditorFactory : public QtAbstractEditorFactory<QtKeySequencePropertyManager>
-{
-    Q_OBJECT
-public:
-    QtKeySequenceEditorFactory(QObject *parent = 0);
-    virtual ~QtKeySequenceEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtKeySequencePropertyManager *manager);
-    virtual QWidget *createEditor(QtKeySequencePropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtKeySequencePropertyManager *manager);
-private:
-    QScopedPointer<QtKeySequenceEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtKeySequenceEditorFactory)
-    Q_DISABLE_COPY(QtKeySequenceEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QKeySequence &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QKeySequence &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtCharEditorFactoryPrivate;
-
-class QtCharEditorFactory : public QtAbstractEditorFactory<QtCharPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtCharEditorFactory(QObject *parent = 0);
-    virtual ~QtCharEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtCharPropertyManager *manager);
-    virtual QWidget *createEditor(QtCharPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtCharPropertyManager *manager);
-private:
-    QScopedPointer<QtCharEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtCharEditorFactory)
-    Q_DISABLE_COPY(QtCharEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QChar &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QChar &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtEnumEditorFactoryPrivate;
-
-class QtEnumEditorFactory : public QtAbstractEditorFactory<QtEnumPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtEnumEditorFactory(QObject *parent = 0);
-    virtual ~QtEnumEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtEnumPropertyManager *manager);
-    virtual QWidget *createEditor(QtEnumPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtEnumPropertyManager *manager);
-private:
-    QScopedPointer<QtEnumEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtEnumEditorFactory)
-    Q_DISABLE_COPY(QtEnumEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumNamesChanged(QtProperty *,
-                        const QStringList &))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumIconsChanged(QtProperty *,
-                        const QMap<int, QIcon> &))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(int))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtCursorEditorFactoryPrivate;
-
-class QtCursorEditorFactory : public QtAbstractEditorFactory<QtCursorPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtCursorEditorFactory(QObject *parent = 0);
-    virtual ~QtCursorEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtCursorPropertyManager *manager);
-    virtual QWidget *createEditor(QtCursorPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtCursorPropertyManager *manager);
-private:
-    QScopedPointer<QtCursorEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtCursorEditorFactory)
-    Q_DISABLE_COPY(QtCursorEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QCursor &))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-};
-
-class QtColorEditorFactoryPrivate;
-
-class QtColorEditorFactory : public QtAbstractEditorFactory<QtColorPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtColorEditorFactory(QObject *parent = 0);
-    virtual ~QtColorEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtColorPropertyManager *manager);
-    virtual QWidget *createEditor(QtColorPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtColorPropertyManager *manager);
-private:
-    QScopedPointer<QtColorEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtColorEditorFactory)
-    Q_DISABLE_COPY(QtColorEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QColor &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QColor &))
-};
-
-class QtFontEditorFactoryPrivate;
-
-class QtFontEditorFactory : public QtAbstractEditorFactory<QtFontPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtFontEditorFactory(QObject *parent = 0);
-    virtual ~QtFontEditorFactory();
-protected:
-    virtual void connectPropertyManager(QtFontPropertyManager *manager);
-    virtual QWidget *createEditor(QtFontPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtFontPropertyManager *manager);
-private:
-    QScopedPointer<QtFontEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtFontEditorFactory)
-    Q_DISABLE_COPY(QtFontEditorFactory)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyChanged(QtProperty *, const QFont &))
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed(QObject *))
-    Q_PRIVATE_SLOT(d_func(), void slotSetValue(const QFont &))
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.cpp b/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.cpp
deleted file mode 100644
index a8f43ad4dafbfbdb190a4099ede37e07b80ffa3f..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.cpp
+++ /dev/null
@@ -1,521 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtgroupboxpropertybrowser.h"
-#include <QtCore/QSet>
-#include <QtWidgets/QGridLayout>
-#include <QtWidgets/QLabel>
-#include <QtWidgets/QGroupBox>
-#include <QtCore/QTimer>
-#include <QtCore/QMap>
-
-QT_BEGIN_NAMESPACE
-
-class QtGroupBoxPropertyBrowserPrivate
-{
-    QtGroupBoxPropertyBrowser *q_ptr;
-    Q_DECLARE_PUBLIC(QtGroupBoxPropertyBrowser)
-public:
-
-    void init(QWidget *parent);
-
-    void propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex);
-    void propertyRemoved(QtBrowserItem *index);
-    void propertyChanged(QtBrowserItem *index);
-    QWidget *createEditor(QtProperty *property, QWidget *parent) const
-        { return q_ptr->createEditor(property, parent); }
-
-    void slotEditorDestroyed();
-    void slotUpdate();
-
-    struct WidgetItem
-    {
-        WidgetItem() : widget(0), label(0), widgetLabel(0),
-                groupBox(0), layout(0), line(0), parent(0) { }
-        QWidget *widget; // can be null
-        QLabel *label;
-        QLabel *widgetLabel;
-        QGroupBox *groupBox;
-        QGridLayout *layout;
-        QFrame *line;
-        WidgetItem *parent;
-        QList<WidgetItem *> children;
-    };
-private:
-    void updateLater();
-    void updateItem(WidgetItem *item);
-    void insertRow(QGridLayout *layout, int row) const;
-    void removeRow(QGridLayout *layout, int row) const;
-
-    bool hasHeader(WidgetItem *item) const;
-
-    QMap<QtBrowserItem *, WidgetItem *> m_indexToItem;
-    QMap<WidgetItem *, QtBrowserItem *> m_itemToIndex;
-    QMap<QWidget *, WidgetItem *> m_widgetToItem;
-    QGridLayout *m_mainLayout;
-    QList<WidgetItem *> m_children;
-    QList<WidgetItem *> m_recreateQueue;
-};
-
-void QtGroupBoxPropertyBrowserPrivate::init(QWidget *parent)
-{
-    m_mainLayout = new QGridLayout();
-    parent->setLayout(m_mainLayout);
-    QLayoutItem *item = new QSpacerItem(0, 0,
-                QSizePolicy::Fixed, QSizePolicy::Expanding);
-    m_mainLayout->addItem(item, 0, 0);
-}
-
-void QtGroupBoxPropertyBrowserPrivate::slotEditorDestroyed()
-{
-    QWidget *editor = qobject_cast<QWidget *>(q_ptr->sender());
-    if (!editor)
-        return;
-    if (!m_widgetToItem.contains(editor))
-        return;
-    m_widgetToItem[editor]->widget = 0;
-    m_widgetToItem.remove(editor);
-}
-
-void QtGroupBoxPropertyBrowserPrivate::slotUpdate()
-{
-    QListIterator<WidgetItem *> itItem(m_recreateQueue);
-    while (itItem.hasNext()) {
-        WidgetItem *item = itItem.next();
-
-        WidgetItem *par = item->parent;
-        QWidget *w = 0;
-        QGridLayout *l = 0;
-        int oldRow = -1;
-        if (!par) {
-            w = q_ptr;
-            l = m_mainLayout;
-            oldRow = m_children.indexOf(item);
-        } else {
-            w = par->groupBox;
-            l = par->layout;
-            oldRow = par->children.indexOf(item);
-            if (hasHeader(par))
-                oldRow += 2;
-        }
-
-        if (item->widget) {
-            item->widget->setParent(w);
-        } else if (item->widgetLabel) {
-            item->widgetLabel->setParent(w);
-        } else {
-            item->widgetLabel = new QLabel(w);
-        }
-        int span = 1;
-        if (item->widget)
-            l->addWidget(item->widget, oldRow, 1, 1, 1);
-        else if (item->widgetLabel)
-            l->addWidget(item->widgetLabel, oldRow, 1, 1, 1);
-        else
-            span = 2;
-        item->label = new QLabel(w);
-        item->label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
-        l->addWidget(item->label, oldRow, 0, 1, span);
-
-        updateItem(item);
-    }
-    m_recreateQueue.clear();
-}
-
-void QtGroupBoxPropertyBrowserPrivate::updateLater()
-{
-    QTimer::singleShot(0, q_ptr, SLOT(slotUpdate()));
-}
-
-void QtGroupBoxPropertyBrowserPrivate::propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex)
-{
-    WidgetItem *afterItem = m_indexToItem.value(afterIndex);
-    WidgetItem *parentItem = m_indexToItem.value(index->parent());
-
-    WidgetItem *newItem = new WidgetItem();
-    newItem->parent = parentItem;
-
-    QGridLayout *layout = 0;
-    QWidget *parentWidget = 0;
-    int row = -1;
-    if (!afterItem) {
-        row = 0;
-        if (parentItem)
-            parentItem->children.insert(0, newItem);
-        else
-            m_children.insert(0, newItem);
-    } else {
-        if (parentItem) {
-            row = parentItem->children.indexOf(afterItem) + 1;
-            parentItem->children.insert(row, newItem);
-        } else {
-            row = m_children.indexOf(afterItem) + 1;
-            m_children.insert(row, newItem);
-        }
-    }
-    if (parentItem && hasHeader(parentItem))
-        row += 2;
-
-    if (!parentItem) {
-        layout = m_mainLayout;
-        parentWidget = q_ptr;;
-    } else {
-        if (!parentItem->groupBox) {
-            m_recreateQueue.removeAll(parentItem);
-            WidgetItem *par = parentItem->parent;
-            QWidget *w = 0;
-            QGridLayout *l = 0;
-            int oldRow = -1;
-            if (!par) {
-                w = q_ptr;
-                l = m_mainLayout;
-                oldRow = m_children.indexOf(parentItem);
-            } else {
-                w = par->groupBox;
-                l = par->layout;
-                oldRow = par->children.indexOf(parentItem);
-                if (hasHeader(par))
-                    oldRow += 2;
-            }
-            parentItem->groupBox = new QGroupBox(w);
-            parentItem->layout = new QGridLayout();
-            parentItem->groupBox->setLayout(parentItem->layout);
-            if (parentItem->label) {
-                l->removeWidget(parentItem->label);
-                delete parentItem->label;
-                parentItem->label = 0;
-            }
-            if (parentItem->widget) {
-                l->removeWidget(parentItem->widget);
-                parentItem->widget->setParent(parentItem->groupBox);
-                parentItem->layout->addWidget(parentItem->widget, 0, 0, 1, 2);
-                parentItem->line = new QFrame(parentItem->groupBox);
-                // g.p. 18.02.2015 AwesomePropertyEditor Bedurf
-                parentItem->widget->show();
-            } else if (parentItem->widgetLabel) {
-                l->removeWidget(parentItem->widgetLabel);
-                delete parentItem->widgetLabel;
-                parentItem->widgetLabel = 0;
-            }
-            if (parentItem->line) {
-                parentItem->line->setFrameShape(QFrame::HLine);
-                parentItem->line->setFrameShadow(QFrame::Sunken);
-                parentItem->layout->addWidget(parentItem->line, 1, 0, 1, 2);
-            }
-            l->addWidget(parentItem->groupBox, oldRow, 0, 1, 2);
-            updateItem(parentItem);
-        }
-        layout = parentItem->layout;
-        parentWidget = parentItem->groupBox;
-    }
-
-    newItem->label = new QLabel(parentWidget);
-    newItem->label->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
-    newItem->widget = createEditor(index->property(), parentWidget);
-    if (!newItem->widget) {
-        newItem->widgetLabel = new QLabel(parentWidget);
-    } else {
-        QObject::connect(newItem->widget, SIGNAL(destroyed()), q_ptr, SLOT(slotEditorDestroyed()));
-        m_widgetToItem[newItem->widget] = newItem;
-    }
-
-    insertRow(layout, row);
-    int span = 1;
-    if (newItem->widget)
-        layout->addWidget(newItem->widget, row, 1);
-    else if (newItem->widgetLabel)
-        layout->addWidget(newItem->widgetLabel, row, 1);
-    else
-        span = 2;
-    layout->addWidget(newItem->label, row, 0, 1, span);
-
-    m_itemToIndex[newItem] = index;
-    m_indexToItem[index] = newItem;
-
-    updateItem(newItem);
-}
-
-void QtGroupBoxPropertyBrowserPrivate::propertyRemoved(QtBrowserItem *index)
-{
-    WidgetItem *item = m_indexToItem.value(index);
-
-    m_indexToItem.remove(index);
-    m_itemToIndex.remove(item);
-
-    WidgetItem *parentItem = item->parent;
-
-    int row = -1;
-
-    if (parentItem) {
-        row = parentItem->children.indexOf(item);
-        parentItem->children.removeAt(row);
-        if (hasHeader(parentItem))
-            row += 2;
-    } else {
-        row = m_children.indexOf(item);
-        m_children.removeAt(row);
-    }
-
-    if (item->widget)
-        delete item->widget;
-    if (item->label)
-        delete item->label;
-    if (item->widgetLabel)
-        delete item->widgetLabel;
-    if (item->groupBox)
-        delete item->groupBox;
-
-    if (!parentItem) {
-        removeRow(m_mainLayout, row);
-    } else if (parentItem->children.count() != 0) {
-        removeRow(parentItem->layout, row);
-    } else {
-        WidgetItem *par = parentItem->parent;
-        QGridLayout *l = 0;
-        int oldRow = -1;
-        if (!par) {
-            l = m_mainLayout;
-            oldRow = m_children.indexOf(parentItem);
-        } else {
-            l = par->layout;
-            oldRow = par->children.indexOf(parentItem);
-            if (hasHeader(par))
-                oldRow += 2;
-        }
-
-        if (parentItem->widget) {
-            // g.p. 18.02.2015 AwesomePropertyEditor Bedurf
-            //parentItem->widget->hide();
-            parentItem->widget->setParent(0);
-        } else if (parentItem->widgetLabel) {
-            parentItem->widgetLabel->hide();
-            parentItem->widgetLabel->setParent(0);
-        } else {
-            //parentItem->widgetLabel = new QLabel(w);
-        }
-        l->removeWidget(parentItem->groupBox);
-        delete parentItem->groupBox;
-        parentItem->groupBox = 0;
-        parentItem->line = 0;
-        parentItem->layout = 0;
-        if (!m_recreateQueue.contains(parentItem))
-            m_recreateQueue.append(parentItem);
-        updateLater();
-    }
-    m_recreateQueue.removeAll(item);
-
-    delete item;
-}
-
-void QtGroupBoxPropertyBrowserPrivate::insertRow(QGridLayout *layout, int row) const
-{
-    QMap<QLayoutItem *, QRect> itemToPos;
-    int idx = 0;
-    while (idx < layout->count()) {
-        int r, c, rs, cs;
-        layout->getItemPosition(idx, &r, &c, &rs, &cs);
-        if (r >= row) {
-            itemToPos[layout->takeAt(idx)] = QRect(r + 1, c, rs, cs);
-        } else {
-            idx++;
-        }
-    }
-
-    const QMap<QLayoutItem *, QRect>::ConstIterator icend = itemToPos.constEnd();
-    for (QMap<QLayoutItem *, QRect>::ConstIterator it = itemToPos.constBegin(); it != icend; ++it) {
-        const QRect r = it.value();
-        layout->addItem(it.key(), r.x(), r.y(), r.width(), r.height());
-    }
-}
-
-void QtGroupBoxPropertyBrowserPrivate::removeRow(QGridLayout *layout, int row) const
-{
-    QMap<QLayoutItem *, QRect> itemToPos;
-    int idx = 0;
-    while (idx < layout->count()) {
-        int r, c, rs, cs;
-        layout->getItemPosition(idx, &r, &c, &rs, &cs);
-        if (r > row) {
-            itemToPos[layout->takeAt(idx)] = QRect(r - 1, c, rs, cs);
-        } else {
-            idx++;
-        }
-    }
-
-    const QMap<QLayoutItem *, QRect>::ConstIterator icend = itemToPos.constEnd();
-    for (QMap<QLayoutItem *, QRect>::ConstIterator it = itemToPos.constBegin(); it != icend; ++it) {
-        const QRect r = it.value();
-        layout->addItem(it.key(), r.x(), r.y(), r.width(), r.height());
-    }
-}
-
-bool QtGroupBoxPropertyBrowserPrivate::hasHeader(WidgetItem *item) const
-{
-    if (item->widget)
-        return true;
-    return false;
-}
-
-void QtGroupBoxPropertyBrowserPrivate::propertyChanged(QtBrowserItem *index)
-{
-    WidgetItem *item = m_indexToItem.value(index);
-
-    updateItem(item);
-}
-
-void QtGroupBoxPropertyBrowserPrivate::updateItem(WidgetItem *item)
-{
-    QtProperty *property = m_itemToIndex[item]->property();
-    if (item->groupBox) {
-        QFont font = item->groupBox->font();
-        font.setUnderline(property->isModified());
-        item->groupBox->setFont(font);
-        item->groupBox->setTitle(property->propertyName());
-        item->groupBox->setToolTip(property->toolTip());
-        item->groupBox->setStatusTip(property->statusTip());
-        item->groupBox->setWhatsThis(property->whatsThis());
-        item->groupBox->setEnabled(property->isEnabled());
-    }
-    if (item->label) {
-        QFont font = item->label->font();
-        font.setUnderline(property->isModified());
-        item->label->setFont(font);
-        item->label->setText(property->propertyName());
-        item->label->setToolTip(property->toolTip());
-        item->label->setStatusTip(property->statusTip());
-        item->label->setWhatsThis(property->whatsThis());
-        item->label->setEnabled(property->isEnabled());
-    }
-    if (item->widgetLabel) {
-        QFont font = item->widgetLabel->font();
-        font.setUnderline(false);
-        item->widgetLabel->setFont(font);
-        item->widgetLabel->setText(property->valueText());
-        item->widgetLabel->setEnabled(property->isEnabled());
-    }
-    if (item->widget) {
-        QFont font = item->widget->font();
-        font.setUnderline(false);
-        item->widget->setFont(font);
-        item->widget->setEnabled(property->isEnabled());
-        item->widget->setToolTip(property->valueText());
-    }
-    //item->setIcon(1, property->valueIcon());
-}
-
-
-
-/*!
-    \class QtGroupBoxPropertyBrowser
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtGroupBoxPropertyBrowser class provides a QGroupBox
-    based property browser.
-
-    A property browser is a widget that enables the user to edit a
-    given set of properties. Each property is represented by a label
-    specifying the property's name, and an editing widget (e.g. a line
-    edit or a combobox) holding its value. A property can have zero or
-    more subproperties.
-
-    QtGroupBoxPropertyBrowser provides group boxes for all nested
-    properties, i.e. subproperties are enclosed by a group box with
-    the parent property's name as its title. For example:
-
-    \image qtgroupboxpropertybrowser.png
-
-    Use the QtAbstractPropertyBrowser API to add, insert and remove
-    properties from an instance of the QtGroupBoxPropertyBrowser
-    class. The properties themselves are created and managed by
-    implementations of the QtAbstractPropertyManager class.
-
-    \sa QtTreePropertyBrowser, QtAbstractPropertyBrowser
-*/
-
-/*!
-    Creates a property browser with the given \a parent.
-*/
-QtGroupBoxPropertyBrowser::QtGroupBoxPropertyBrowser(QWidget *parent)
-    : QtAbstractPropertyBrowser(parent), d_ptr(new QtGroupBoxPropertyBrowserPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->init(this);
-}
-
-/*!
-    Destroys this property browser.
-
-    Note that the properties that were inserted into this browser are
-    \e not destroyed since they may still be used in other
-    browsers. The properties are owned by the manager that created
-    them.
-
-    \sa QtProperty, QtAbstractPropertyManager
-*/
-QtGroupBoxPropertyBrowser::~QtGroupBoxPropertyBrowser()
-{
-    const QMap<QtGroupBoxPropertyBrowserPrivate::WidgetItem *, QtBrowserItem *>::ConstIterator icend = d_ptr->m_itemToIndex.constEnd();
-    for (QMap<QtGroupBoxPropertyBrowserPrivate::WidgetItem *, QtBrowserItem *>::ConstIterator it = d_ptr->m_itemToIndex.constBegin(); it != icend; ++it)
-        delete it.key();
-}
-
-/*!
-    \reimp
-*/
-void QtGroupBoxPropertyBrowser::itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem)
-{
-    d_ptr->propertyInserted(item, afterItem);
-}
-
-/*!
-    \reimp
-*/
-void QtGroupBoxPropertyBrowser::itemRemoved(QtBrowserItem *item)
-{
-    d_ptr->propertyRemoved(item);
-}
-
-/*!
-    \reimp
-*/
-void QtGroupBoxPropertyBrowser::itemChanged(QtBrowserItem *item)
-{
-    d_ptr->propertyChanged(item);
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qtgroupboxpropertybrowser.cpp"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.h b/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.h
deleted file mode 100644
index f4ac0ed881884e402f6ef16d5d1e93293c038ce1..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtgroupboxpropertybrowser.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTGROUPBOXPROPERTYBROWSER_H
-#define QTGROUPBOXPROPERTYBROWSER_H
-
-#include "qtpropertybrowser.h"
-
-QT_BEGIN_NAMESPACE
-
-class QtGroupBoxPropertyBrowserPrivate;
-
-class QtGroupBoxPropertyBrowser : public QtAbstractPropertyBrowser
-{
-    Q_OBJECT
-
-public:
-    QtGroupBoxPropertyBrowser(QWidget *parent = 0);
-    virtual ~QtGroupBoxPropertyBrowser();
-
-protected:
-    virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
-    virtual void itemRemoved(QtBrowserItem *item);
-    virtual void itemChanged(QtBrowserItem *item);
-
-private:
-    QScopedPointer<QtGroupBoxPropertyBrowserPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtGroupBoxPropertyBrowser)
-    Q_DISABLE_COPY(QtGroupBoxPropertyBrowser)
-    Q_PRIVATE_SLOT(d_func(), void slotUpdate())
-    Q_PRIVATE_SLOT(d_func(), void slotEditorDestroyed())
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.cpp b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.cpp
deleted file mode 100644
index 76246d1c494497b1711d7289bb742a915a2cb554..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.cpp
+++ /dev/null
@@ -1,1951 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtpropertybrowser.h"
-#include <QtCore/QSet>
-#include <QtCore/QMap>
-#include <QtGui/QIcon>
-
-#if defined(Q_CC_MSVC)
-#    pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QtPropertyPrivate
-{
-public:
-    QtPropertyPrivate(QtAbstractPropertyManager *manager) : m_enabled(true), m_modified(false), m_manager(manager) {}
-    QtProperty *q_ptr;
-
-    QSet<QtProperty *> m_parentItems;
-    QList<QtProperty *> m_subItems;
-
-    QString m_toolTip;
-    QString m_statusTip;
-    QString m_whatsThis;
-    QString m_name;
-    bool m_enabled;
-    bool m_modified;
-
-    QtAbstractPropertyManager * const m_manager;
-};
-
-class QtAbstractPropertyManagerPrivate
-{
-    QtAbstractPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtAbstractPropertyManager)
-public:
-    void propertyDestroyed(QtProperty *property);
-    void propertyChanged(QtProperty *property) const;
-    void propertyRemoved(QtProperty *property,
-                QtProperty *parentProperty) const;
-    void propertyInserted(QtProperty *property, QtProperty *parentProperty,
-                QtProperty *afterProperty) const;
-
-    QSet<QtProperty *> m_properties;
-};
-
-/*!
-    \class QtProperty
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtProperty class encapsulates an instance of a property.
-
-    Properties are created by objects of QtAbstractPropertyManager
-    subclasses; a manager can create properties of a given type, and
-    is used in conjunction with the QtAbstractPropertyBrowser class. A
-    property is always owned by the manager that created it, which can
-    be retrieved using the propertyManager() function.
-
-    QtProperty contains the most common property attributes, and
-    provides functions for retrieving as well as setting their values:
-
-    \table
-    \header \li Getter \li Setter
-    \row
-    \li propertyName() \li setPropertyName()
-    \row
-    \li statusTip() \li setStatusTip()
-    \row
-    \li toolTip() \li setToolTip()
-    \row
-    \li whatsThis() \li setWhatsThis()
-    \row
-    \li isEnabled() \li setEnabled()
-    \row
-    \li isModified() \li setModified()
-    \row
-    \li valueText() \li Nop
-    \row
-    \li valueIcon() \li Nop
-    \endtable
-
-    It is also possible to nest properties: QtProperty provides the
-    addSubProperty(), insertSubProperty() and removeSubProperty() functions to
-    manipulate the set of subproperties. Use the subProperties()
-    function to retrieve a property's current set of subproperties.
-    Note that nested properties are not owned by the parent property,
-    i.e. each subproperty is owned by the manager that created it.
-
-    \sa QtAbstractPropertyManager, QtBrowserItem
-*/
-
-/*!
-    Creates a property with the given \a manager.
-
-    This constructor is only useful when creating a custom QtProperty
-    subclass (e.g. QtVariantProperty). To create a regular QtProperty
-    object, use the QtAbstractPropertyManager::addProperty()
-    function instead.
-
-    \sa QtAbstractPropertyManager::addProperty()
-*/
-QtProperty::QtProperty(QtAbstractPropertyManager *manager)
-    : d_ptr(new QtPropertyPrivate(manager))
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this property.
-
-    Note that subproperties are detached but not destroyed, i.e. they
-    can still be used in another context.
-
-    \sa QtAbstractPropertyManager::clear()
-
-*/
-QtProperty::~QtProperty()
-{
-    QSetIterator<QtProperty *> itParent(d_ptr->m_parentItems);
-    while (itParent.hasNext()) {
-        QtProperty *property = itParent.next();
-        property->d_ptr->m_manager->d_ptr->propertyRemoved(this, property);
-    }
-
-    d_ptr->m_manager->d_ptr->propertyDestroyed(this);
-
-    QListIterator<QtProperty *> itChild(d_ptr->m_subItems);
-    while (itChild.hasNext()) {
-        QtProperty *property = itChild.next();
-        property->d_ptr->m_parentItems.remove(this);
-    }
-
-    itParent.toFront();
-    while (itParent.hasNext()) {
-        QtProperty *property = itParent.next();
-        property->d_ptr->m_subItems.removeAll(this);
-    }
-}
-
-/*!
-    Returns the set of subproperties.
-
-    Note that subproperties are not owned by \e this property, but by
-    the manager that created them.
-
-    \sa insertSubProperty(), removeSubProperty()
-*/
-QList<QtProperty *> QtProperty::subProperties() const
-{
-    return d_ptr->m_subItems;
-}
-
-/*!
-    Returns a pointer to the manager that owns this property.
-*/
-QtAbstractPropertyManager *QtProperty::propertyManager() const
-{
-    return d_ptr->m_manager;
-}
-
-/*!
-    Returns the property's  tool tip.
-
-    \sa setToolTip()
-*/
-QString QtProperty::toolTip() const
-{
-    return d_ptr->m_toolTip;
-}
-
-/*!
-    Returns the property's status tip.
-
-    \sa setStatusTip()
-*/
-QString QtProperty::statusTip() const
-{
-    return d_ptr->m_statusTip;
-}
-
-/*!
-    Returns the property's "What's This" help text.
-
-    \sa setWhatsThis()
-*/
-QString QtProperty::whatsThis() const
-{
-    return d_ptr->m_whatsThis;
-}
-
-/*!
-    Returns the property's name.
-
-    \sa setPropertyName()
-*/
-QString QtProperty::propertyName() const
-{
-    return d_ptr->m_name;
-}
-
-/*!
-    Returns whether the property is enabled.
-
-    \sa setEnabled()
-*/
-bool QtProperty::isEnabled() const
-{
-    return d_ptr->m_enabled;
-}
-
-/*!
-    Returns whether the property is modified.
-
-    \sa setModified()
-*/
-bool QtProperty::isModified() const
-{
-    return d_ptr->m_modified;
-}
-
-/*!
-    Returns whether the property has a value.
-
-    \sa QtAbstractPropertyManager::hasValue()
-*/
-bool QtProperty::hasValue() const
-{
-    return d_ptr->m_manager->hasValue(this);
-}
-
-/*!
-    Returns an icon representing the current state of this property.
-
-    If the given property type can not generate such an icon, this
-    function returns an invalid icon.
-
-    \sa QtAbstractPropertyManager::valueIcon()
-*/
-QIcon QtProperty::valueIcon() const
-{
-    return d_ptr->m_manager->valueIcon(this);
-}
-
-/*!
-    Returns a string representing the current state of this property.
-
-    If the given property type can not generate such a string, this
-    function returns an empty string.
-
-    \sa QtAbstractPropertyManager::valueText()
-*/
-QString QtProperty::valueText() const
-{
-    return d_ptr->m_manager->valueText(this);
-}
-
-/*!
-    Sets the property's tool tip to the given \a text.
-
-    \sa toolTip()
-*/
-void QtProperty::setToolTip(const QString &text)
-{
-    if (d_ptr->m_toolTip == text)
-        return;
-
-    d_ptr->m_toolTip = text;
-    propertyChanged();
-}
-
-/*!
-    Sets the property's status tip to the given \a text.
-
-    \sa statusTip()
-*/
-void QtProperty::setStatusTip(const QString &text)
-{
-    if (d_ptr->m_statusTip == text)
-        return;
-
-    d_ptr->m_statusTip = text;
-    propertyChanged();
-}
-
-/*!
-    Sets the property's "What's This" help text to the given \a text.
-
-    \sa whatsThis()
-*/
-void QtProperty::setWhatsThis(const QString &text)
-{
-    if (d_ptr->m_whatsThis == text)
-        return;
-
-    d_ptr->m_whatsThis = text;
-    propertyChanged();
-}
-
-/*!
-    \fn void QtProperty::setPropertyName(const QString &name)
-
-    Sets the property's  name to the given \a name.
-
-    \sa propertyName()
-*/
-void QtProperty::setPropertyName(const QString &text)
-{
-    if (d_ptr->m_name == text)
-        return;
-
-    d_ptr->m_name = text;
-    propertyChanged();
-}
-
-/*!
-    Enables or disables the property according to the passed \a enable value.
-
-    \sa isEnabled()
-*/
-void QtProperty::setEnabled(bool enable)
-{
-    if (d_ptr->m_enabled == enable)
-        return;
-
-    d_ptr->m_enabled = enable;
-    propertyChanged();
-}
-
-/*!
-    Sets the property's modified state according to the passed \a modified value.
-
-    \sa isModified()
-*/
-void QtProperty::setModified(bool modified)
-{
-    if (d_ptr->m_modified == modified)
-        return;
-
-    d_ptr->m_modified = modified;
-    propertyChanged();
-}
-
-/*!
-    Appends the given \a property to this property's subproperties.
-
-    If the given \a property already is added, this function does
-    nothing.
-
-    \sa insertSubProperty(), removeSubProperty()
-*/
-void QtProperty::addSubProperty(QtProperty *property)
-{
-    QtProperty *after = 0;
-    if (d_ptr->m_subItems.count() > 0)
-        after = d_ptr->m_subItems.last();
-    insertSubProperty(property, after);
-}
-
-/*!
-    \fn void QtProperty::insertSubProperty(QtProperty *property, QtProperty *precedingProperty)
-
-    Inserts the given \a property after the specified \a
-    precedingProperty into this property's list of subproperties.  If
-    \a precedingProperty is 0, the specified \a property is inserted
-    at the beginning of the list.
-
-    If the given \a property already is inserted, this function does
-    nothing.
-
-    \sa addSubProperty(), removeSubProperty()
-*/
-void QtProperty::insertSubProperty(QtProperty *property,
-            QtProperty *afterProperty)
-{
-    if (!property)
-        return;
-
-    if (property == this)
-        return;
-
-    // traverse all children of item. if this item is a child of item then cannot add.
-    QList<QtProperty *> pendingList = property->subProperties();
-    QMap<QtProperty *, bool> visited;
-    while (!pendingList.isEmpty()) {
-        QtProperty *i = pendingList.first();
-        if (i == this)
-            return;
-        pendingList.removeFirst();
-        if (visited.contains(i))
-            continue;
-        visited[i] = true;
-        pendingList += i->subProperties();
-    }
-
-    pendingList = subProperties();
-    int pos = 0;
-    int newPos = 0;
-    QtProperty *properAfterProperty = 0;
-    while (pos < pendingList.count()) {
-        QtProperty *i = pendingList.at(pos);
-        if (i == property)
-            return; // if item is already inserted in this item then cannot add.
-        if (i == afterProperty) {
-            newPos = pos + 1;
-            properAfterProperty = afterProperty;
-        }
-        pos++;
-    }
-
-    d_ptr->m_subItems.insert(newPos, property);
-    property->d_ptr->m_parentItems.insert(this);
-
-    d_ptr->m_manager->d_ptr->propertyInserted(property, this, properAfterProperty);
-}
-
-/*!
-    Removes the given \a property from the list of subproperties
-    without deleting it.
-
-    \sa addSubProperty(), insertSubProperty()
-*/
-void QtProperty::removeSubProperty(QtProperty *property)
-{
-    if (!property)
-        return;
-
-    d_ptr->m_manager->d_ptr->propertyRemoved(property, this);
-
-    QList<QtProperty *> pendingList = subProperties();
-    int pos = 0;
-    while (pos < pendingList.count()) {
-        if (pendingList.at(pos) == property) {
-            d_ptr->m_subItems.removeAt(pos);
-            property->d_ptr->m_parentItems.remove(this);
-
-            return;
-        }
-        pos++;
-    }
-}
-
-/*!
-    \internal
-*/
-void QtProperty::propertyChanged()
-{
-    d_ptr->m_manager->d_ptr->propertyChanged(this);
-}
-
-////////////////////////////////
-
-void QtAbstractPropertyManagerPrivate::propertyDestroyed(QtProperty *property)
-{
-    if (m_properties.contains(property)) {
-        emit q_ptr->propertyDestroyed(property);
-        q_ptr->uninitializeProperty(property);
-        m_properties.remove(property);
-    }
-}
-
-void QtAbstractPropertyManagerPrivate::propertyChanged(QtProperty *property) const
-{
-    emit q_ptr->propertyChanged(property);
-}
-
-void QtAbstractPropertyManagerPrivate::propertyRemoved(QtProperty *property,
-            QtProperty *parentProperty) const
-{
-    emit q_ptr->propertyRemoved(property, parentProperty);
-}
-
-void QtAbstractPropertyManagerPrivate::propertyInserted(QtProperty *property,
-            QtProperty *parentProperty, QtProperty *afterProperty) const
-{
-    emit q_ptr->propertyInserted(property, parentProperty, afterProperty);
-}
-
-/*!
-    \class QtAbstractPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtAbstractPropertyManager provides an interface for
-    property managers.
-
-    A manager can create and manage properties of a given type, and is
-    used in conjunction with the QtAbstractPropertyBrowser class.
-
-    When using a property browser widget, the properties are created
-    and managed by implementations of the QtAbstractPropertyManager
-    class. To ensure that the properties' values will be displayed
-    using suitable editing widgets, the managers are associated with
-    objects of QtAbstractEditorFactory subclasses. The property browser
-    will use these associations to determine which factories it should
-    use to create the preferred editing widgets.
-
-    The QtAbstractPropertyManager class provides common functionality
-    like creating a property using the addProperty() function, and
-    retrieving the properties created by the manager using the
-    properties() function. The class also provides signals that are
-    emitted when the manager's properties change: propertyInserted(),
-    propertyRemoved(), propertyChanged() and propertyDestroyed().
-
-    QtAbstractPropertyManager subclasses are supposed to provide their
-    own type specific API. Note that several ready-made
-    implementations are available:
-
-    \list
-    \li QtBoolPropertyManager
-    \li QtColorPropertyManager
-    \li QtDatePropertyManager
-    \li QtDateTimePropertyManager
-    \li QtDoublePropertyManager
-    \li QtEnumPropertyManager
-    \li QtFlagPropertyManager
-    \li QtFontPropertyManager
-    \li QtGroupPropertyManager
-    \li QtIntPropertyManager
-    \li QtPointPropertyManager
-    \li QtRectPropertyManager
-    \li QtSizePropertyManager
-    \li QtSizePolicyPropertyManager
-    \li QtStringPropertyManager
-    \li QtTimePropertyManager
-    \li QtVariantPropertyManager
-    \endlist
-
-    \sa QtAbstractEditorFactoryBase, QtAbstractPropertyBrowser, QtProperty
-*/
-
-/*!
-    \fn void QtAbstractPropertyManager::propertyInserted(QtProperty *newProperty,
-                QtProperty *parentProperty, QtProperty *precedingProperty)
-
-    This signal is emitted when a new subproperty is inserted into an
-    existing property, passing pointers to the \a newProperty, \a
-    parentProperty and \a precedingProperty as parameters.
-
-    If \a precedingProperty is 0, the \a newProperty was inserted at
-    the beginning of the \a parentProperty's subproperties list.
-
-    Note that signal is emitted only if the \a parentProperty is created
-    by this manager.
-
-    \sa QtAbstractPropertyBrowser::itemInserted()
-*/
-
-/*!
-    \fn void QtAbstractPropertyManager::propertyChanged(QtProperty *property)
-
-    This signal is emitted whenever a property's data changes, passing
-    a pointer to the \a property as parameter.
-
-    Note that signal is only emitted for properties that are created by
-    this manager.
-
-    \sa QtAbstractPropertyBrowser::itemChanged()
-*/
-
-/*!
-    \fn void QtAbstractPropertyManager::propertyRemoved(QtProperty *property, QtProperty *parent)
-
-    This signal is emitted when a subproperty is removed, passing
-    pointers to the removed \a property and the \a parent property as
-    parameters.
-
-    Note that signal is emitted only when the \a parent property is
-    created by this manager.
-
-    \sa QtAbstractPropertyBrowser::itemRemoved()
-*/
-
-/*!
-    \fn void QtAbstractPropertyManager::propertyDestroyed(QtProperty *property)
-
-    This signal is emitted when the specified \a property is about to
-    be destroyed.
-
-    Note that signal is only emitted for properties that are created
-    by this manager.
-
-    \sa clear(), uninitializeProperty()
-*/
-
-/*!
-    \fn void QtAbstractPropertyBrowser::currentItemChanged(QtBrowserItem *current)
-
-    This signal is emitted when the current item changes. The current item is specified by \a current.
-
-    \sa QtAbstractPropertyBrowser::setCurrentItem()
-*/
-
-/*!
-    Creates an abstract property manager with the given \a parent.
-*/
-QtAbstractPropertyManager::QtAbstractPropertyManager(QObject *parent)
-    : QObject(parent), d_ptr(new QtAbstractPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys the manager. All properties created by the manager are
-    destroyed.
-*/
-QtAbstractPropertyManager::~QtAbstractPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Destroys all the properties that this manager has created.
-
-    \sa propertyDestroyed(), uninitializeProperty()
-*/
-void QtAbstractPropertyManager::clear() const
-{
-    while (!properties().isEmpty()) {
-        QSetIterator<QtProperty *> itProperty(properties());
-        QtProperty *prop = itProperty.next();
-        delete prop;
-    }
-}
-
-/*!
-    Returns the set of properties created by this manager.
-
-    \sa addProperty()
-*/
-QSet<QtProperty *> QtAbstractPropertyManager::properties() const
-{
-    return d_ptr->m_properties;
-}
-
-/*!
-    Returns whether the given \a property has a value.
-
-    The default implementation of this function returns true.
-
-    \sa QtProperty::hasValue()
-*/
-bool QtAbstractPropertyManager::hasValue(const QtProperty *property) const
-{
-    Q_UNUSED(property)
-    return true;
-}
-
-/*!
-    Returns an icon representing the current state of the given \a
-    property.
-
-    The default implementation of this function returns an invalid
-    icon.
-
-    \sa QtProperty::valueIcon()
-*/
-QIcon QtAbstractPropertyManager::valueIcon(const QtProperty *property) const
-{
-    Q_UNUSED(property)
-    return QIcon();
-}
-
-/*!
-    Returns a string representing the current state of the given \a
-    property.
-
-    The default implementation of this function returns an empty
-    string.
-
-    \sa QtProperty::valueText()
-*/
-QString QtAbstractPropertyManager::valueText(const QtProperty *property) const
-{
-    Q_UNUSED(property)
-    return QString();
-}
-
-/*!
-    Creates a property with the given \a name which then is owned by this manager.
-
-    Internally, this function calls the createProperty() and
-    initializeProperty() functions.
-
-    \sa initializeProperty(), properties()
-*/
-QtProperty *QtAbstractPropertyManager::addProperty(const QString &name)
-{
-    QtProperty *property = createProperty();
-    if (property) {
-        property->setPropertyName(name);
-        d_ptr->m_properties.insert(property);
-        initializeProperty(property);
-    }
-    return property;
-}
-
-/*!
-    Creates a property.
-
-    The base implementation produce QtProperty instances; Reimplement
-    this function to make this manager produce objects of a QtProperty
-    subclass.
-
-    \sa addProperty(), initializeProperty()
-*/
-QtProperty *QtAbstractPropertyManager::createProperty()
-{
-    return new QtProperty(this);
-}
-
-/*!
-    \fn void QtAbstractPropertyManager::initializeProperty(QtProperty *property) = 0
-
-    This function is called whenever a new valid property pointer has
-    been created, passing the pointer as parameter.
-
-    The purpose is to let the manager know that the \a property has
-    been created so that it can provide additional attributes for the
-    new property, e.g. QtIntPropertyManager adds \l
-    {QtIntPropertyManager::value()}{value}, \l
-    {QtIntPropertyManager::minimum()}{minimum} and \l
-    {QtIntPropertyManager::maximum()}{maximum} attributes. Since each manager
-    subclass adds type specific attributes, this function is pure
-    virtual and must be reimplemented when deriving from the
-    QtAbstractPropertyManager class.
-
-    \sa addProperty(), createProperty()
-*/
-
-/*!
-    This function is called just before the specified \a property is destroyed.
-
-    The purpose is to let the property manager know that the \a
-    property is being destroyed so that it can remove the property's
-    additional attributes.
-
-    \sa clear(), propertyDestroyed()
-*/
-void QtAbstractPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    Q_UNUSED(property)
-}
-
-////////////////////////////////////
-
-/*!
-    \class QtAbstractEditorFactoryBase
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtAbstractEditorFactoryBase provides an interface for
-    editor factories.
-
-    An editor factory is a class that is able to create an editing
-    widget of a specified type (e.g. line edits or comboboxes) for a
-    given QtProperty object, and it is used in conjunction with the
-    QtAbstractPropertyManager and QtAbstractPropertyBrowser classes.
-
-    When using a property browser widget, the properties are created
-    and managed by implementations of the QtAbstractPropertyManager
-    class. To ensure that the properties' values will be displayed
-    using suitable editing widgets, the managers are associated with
-    objects of QtAbstractEditorFactory subclasses. The property browser
-    will use these associations to determine which factories it should
-    use to create the preferred editing widgets.
-
-    Typically, an editor factory is created by subclassing the
-    QtAbstractEditorFactory template class which inherits
-    QtAbstractEditorFactoryBase. But note that several ready-made
-    implementations are available:
-
-    \list
-    \li QtCheckBoxFactory
-    \li QtDateEditFactory
-    \li QtDateTimeEditFactory
-    \li QtDoubleSpinBoxFactory
-    \li QtEnumEditorFactory
-    \li QtLineEditFactory
-    \li QtScrollBarFactory
-    \li QtSliderFactory
-    \li QtSpinBoxFactory
-    \li QtTimeEditFactory
-    \li QtVariantEditorFactory
-    \endlist
-
-    \sa QtAbstractPropertyManager, QtAbstractPropertyBrowser
-*/
-
-/*!
-    \fn virtual QWidget *QtAbstractEditorFactoryBase::createEditor(QtProperty *property,
-        QWidget *parent) = 0
-
-    Creates an editing widget (with the given \a parent) for the given
-    \a property.
-
-    This function is reimplemented in QtAbstractEditorFactory template class
-    which also provides a pure virtual convenience overload of this
-    function enabling access to the property's manager.
-
-    \sa QtAbstractEditorFactory::createEditor()
-*/
-
-/*!
-    \fn QtAbstractEditorFactoryBase::QtAbstractEditorFactoryBase(QObject *parent = 0)
-
-    Creates an abstract editor factory with the given \a parent.
-*/
-
-/*!
-    \fn virtual void QtAbstractEditorFactoryBase::breakConnection(QtAbstractPropertyManager *manager) = 0
-
-    \internal
-
-    Detaches property manager from factory.
-    This method is reimplemented in QtAbstractEditorFactory template subclass.
-    You don't need to reimplement it in your subclasses. Instead implement more convenient
-    QtAbstractEditorFactory::disconnectPropertyManager() which gives you access to particular manager subclass.
-*/
-
-/*!
-    \fn virtual void QtAbstractEditorFactoryBase::managerDestroyed(QObject *manager) = 0
-
-    \internal
-
-    This method is called when property manager is being destroyed.
-    Basically it notifies factory not to produce editors for properties owned by \a manager.
-    You don't need to reimplement it in your subclass. This method is implemented in
-    QtAbstractEditorFactory template subclass.
-*/
-
-/*!
-    \class QtAbstractEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtAbstractEditorFactory is the base template class for editor
-    factories.
-
-    An editor factory is a class that is able to create an editing
-    widget of a specified type (e.g. line edits or comboboxes) for a
-    given QtProperty object, and it is used in conjunction with the
-    QtAbstractPropertyManager and QtAbstractPropertyBrowser classes.
-
-    Note that the QtAbstractEditorFactory functions are using the
-    PropertyManager template argument class which can be any
-    QtAbstractPropertyManager subclass. For example:
-
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp 0
-
-    Note that QtSpinBoxFactory by definition creates editing widgets
-    \e only for properties created by QtIntPropertyManager.
-
-    When using a property browser widget, the properties are created
-    and managed by implementations of the QtAbstractPropertyManager
-    class. To ensure that the properties' values will be displayed
-    using suitable editing widgets, the managers are associated with
-    objects of QtAbstractEditorFactory subclasses. The property browser will
-    use these associations to determine which factories it should use
-    to create the preferred editing widgets.
-
-    A QtAbstractEditorFactory object is capable of producing editors for
-    several property managers at the same time. To create an
-    association between this factory and a given manager, use the
-    addPropertyManager() function. Use the removePropertyManager() function to make
-    this factory stop producing editors for a given property
-    manager. Use the propertyManagers() function to retrieve the set of
-    managers currently associated with this factory.
-
-    Several ready-made implementations of the QtAbstractEditorFactory class
-    are available:
-
-    \list
-    \li QtCheckBoxFactory
-    \li QtDateEditFactory
-    \li QtDateTimeEditFactory
-    \li QtDoubleSpinBoxFactory
-    \li QtEnumEditorFactory
-    \li QtLineEditFactory
-    \li QtScrollBarFactory
-    \li QtSliderFactory
-    \li QtSpinBoxFactory
-    \li QtTimeEditFactory
-    \li QtVariantEditorFactory
-    \endlist
-
-    When deriving from the QtAbstractEditorFactory class, several pure virtual
-    functions must be implemented: the connectPropertyManager() function is
-    used by the factory to connect to the given manager's signals, the
-    createEditor() function is supposed to create an editor for the
-    given property controlled by the given manager, and finally the
-    disconnectPropertyManager() function is used by the factory to disconnect
-    from the specified manager's signals.
-
-    \sa QtAbstractEditorFactoryBase, QtAbstractPropertyManager
-*/
-
-/*!
-    \fn QtAbstractEditorFactory::QtAbstractEditorFactory(QObject *parent = 0)
-
-    Creates an editor factory with the given \a parent.
-
-    \sa addPropertyManager()
-*/
-
-/*!
-    \fn QWidget *QtAbstractEditorFactory::createEditor(QtProperty *property, QWidget *parent)
-
-    Creates an editing widget (with the given \a parent) for the given
-    \a property.
-*/
-
-/*!
-    \fn void QtAbstractEditorFactory::addPropertyManager(PropertyManager *manager)
-
-    Adds the given \a manager to this factory's set of managers,
-    making this factory produce editing widgets for properties created
-    by the given manager.
-
-    The PropertyManager type is a template argument class, and represents the chosen
-    QtAbstractPropertyManager subclass.
-
-    \sa propertyManagers(), removePropertyManager()
-*/
-
-/*!
-    \fn void QtAbstractEditorFactory::removePropertyManager(PropertyManager *manager)
-
-    Removes the given \a manager from this factory's set of
-    managers. The PropertyManager type is a template argument class, and may be
-    any QtAbstractPropertyManager subclass.
-
-    \sa propertyManagers(), addPropertyManager()
-*/
-
-/*!
-    \fn virtual void QtAbstractEditorFactory::connectPropertyManager(PropertyManager *manager) = 0
-
-    Connects this factory to the given \a manager's signals.  The
-    PropertyManager type is a template argument class, and represents
-    the chosen QtAbstractPropertyManager subclass.
-
-    This function is used internally by the addPropertyManager() function, and
-    makes it possible to update an editing widget when the associated
-    property's data changes. This is typically done in custom slots
-    responding to the signals emitted by the property's manager,
-    e.g. QtIntPropertyManager::valueChanged() and
-    QtIntPropertyManager::rangeChanged().
-
-    \sa propertyManagers(), disconnectPropertyManager()
-*/
-
-/*!
-    \fn virtual QWidget *QtAbstractEditorFactory::createEditor(PropertyManager *manager, QtProperty *property,
-                QWidget *parent) = 0
-
-    Creates an editing widget with the given \a parent for the
-    specified \a property created by the given \a manager. The
-    PropertyManager type is a template argument class, and represents
-    the chosen QtAbstractPropertyManager subclass.
-
-    This function must be implemented in derived classes: It is
-    recommended to store a pointer to the widget and map it to the
-    given \a property, since the widget must be updated whenever the
-    associated property's data changes. This is typically done in
-    custom slots responding to the signals emitted by the property's
-    manager, e.g. QtIntPropertyManager::valueChanged() and
-    QtIntPropertyManager::rangeChanged().
-
-    \sa connectPropertyManager()
-*/
-
-/*!
-    \fn virtual void QtAbstractEditorFactory::disconnectPropertyManager(PropertyManager *manager) = 0
-
-    Disconnects this factory from the given \a manager's signals. The
-    PropertyManager type is a template argument class, and represents
-    the chosen QtAbstractPropertyManager subclass.
-
-    This function is used internally by the removePropertyManager() function.
-
-    \sa propertyManagers(), connectPropertyManager()
-*/
-
-/*!
-    \fn QSet<PropertyManager *> QtAbstractEditorFactory::propertyManagers() const
-
-    Returns the factory's set of associated managers.  The
-    PropertyManager type is a template argument class, and represents
-    the chosen QtAbstractPropertyManager subclass.
-
-    \sa addPropertyManager(), removePropertyManager()
-*/
-
-/*!
-    \fn PropertyManager *QtAbstractEditorFactory::propertyManager(QtProperty *property) const
-
-    Returns the property manager for the given \a property, or 0 if
-    the given \a property doesn't belong to any of this factory's
-    registered managers.
-
-    The PropertyManager type is a template argument class, and represents the chosen
-    QtAbstractPropertyManager subclass.
-
-    \sa propertyManagers()
-*/
-
-/*!
-    \fn virtual void QtAbstractEditorFactory::managerDestroyed(QObject *manager)
-
-    \internal
-*/
-
-////////////////////////////////////
-class QtBrowserItemPrivate
-{
-public:
-    QtBrowserItemPrivate(QtAbstractPropertyBrowser *browser, QtProperty *property, QtBrowserItem *parent)
-        : m_browser(browser), m_property(property), m_parent(parent), q_ptr(0) {}
-
-    void addChild(QtBrowserItem *index, QtBrowserItem *after);
-    void removeChild(QtBrowserItem *index);
-
-    QtAbstractPropertyBrowser * const m_browser;
-    QtProperty *m_property;
-    QtBrowserItem *m_parent;
-
-    QtBrowserItem *q_ptr;
-
-    QList<QtBrowserItem *> m_children;
-
-};
-
-void QtBrowserItemPrivate::addChild(QtBrowserItem *index, QtBrowserItem *after)
-{
-    if (m_children.contains(index))
-        return;
-    int idx = m_children.indexOf(after) + 1; // we insert after returned idx, if it was -1 then we set idx to 0;
-    m_children.insert(idx, index);
-}
-
-void QtBrowserItemPrivate::removeChild(QtBrowserItem *index)
-{
-    m_children.removeAll(index);
-}
-
-
-/*!
-    \class QtBrowserItem
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtBrowserItem class represents a property in
-    a property browser instance.
-
-    Browser items are created whenever a QtProperty is inserted to the
-    property browser. A QtBrowserItem uniquely identifies a
-    browser's item. Thus, if the same QtProperty is inserted multiple
-    times, each occurrence gets its own unique QtBrowserItem. The
-    items are owned by QtAbstractPropertyBrowser and automatically
-    deleted when they are removed from the browser.
-
-    You can traverse a browser's properties by calling parent() and
-    children(). The property and the browser associated with an item
-    are available as property() and browser().
-
-    \sa QtAbstractPropertyBrowser, QtProperty
-*/
-
-/*!
-    Returns the property which is accosiated with this item. Note that
-    several items can be associated with the same property instance in
-    the same property browser.
-
-    \sa QtAbstractPropertyBrowser::items()
-*/
-
-QtProperty *QtBrowserItem::property() const
-{
-    return d_ptr->m_property;
-}
-
-/*!
-    Returns the parent item of \e this item. Returns 0 if \e this item
-    is associated with top-level property in item's property browser.
-
-    \sa children()
-*/
-
-QtBrowserItem *QtBrowserItem::parent() const
-{
-    return d_ptr->m_parent;
-}
-
-/*!
-    Returns the children items of \e this item. The properties
-    reproduced from children items are always the same as
-    reproduced from associated property' children, for example:
-
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp 1
-
-    The \e childrenItems list represents the same list as \e childrenProperties.
-*/
-
-QList<QtBrowserItem *> QtBrowserItem::children() const
-{
-    return d_ptr->m_children;
-}
-
-/*!
-    Returns the property browser which owns \e this item.
-*/
-
-QtAbstractPropertyBrowser *QtBrowserItem::browser() const
-{
-    return d_ptr->m_browser;
-}
-
-QtBrowserItem::QtBrowserItem(QtAbstractPropertyBrowser *browser, QtProperty *property, QtBrowserItem *parent)
-    : d_ptr(new QtBrowserItemPrivate(browser, property, parent))
-{
-    d_ptr->q_ptr = this;
-}
-
-QtBrowserItem::~QtBrowserItem()
-{
-}
-
-
-////////////////////////////////////
-
-typedef QMap<QtAbstractPropertyBrowser *, QMap<QtAbstractPropertyManager *,
-                            QtAbstractEditorFactoryBase *> > Map1;
-typedef QMap<QtAbstractPropertyManager *, QMap<QtAbstractEditorFactoryBase *,
-                            QList<QtAbstractPropertyBrowser *> > > Map2;
-Q_GLOBAL_STATIC(Map1, m_viewToManagerToFactory)
-Q_GLOBAL_STATIC(Map2, m_managerToFactoryToViews)
-
-class QtAbstractPropertyBrowserPrivate
-{
-    QtAbstractPropertyBrowser *q_ptr;
-    Q_DECLARE_PUBLIC(QtAbstractPropertyBrowser)
-public:
-    QtAbstractPropertyBrowserPrivate();
-
-    void insertSubTree(QtProperty *property,
-            QtProperty *parentProperty);
-    void removeSubTree(QtProperty *property,
-            QtProperty *parentProperty);
-    void createBrowserIndexes(QtProperty *property, QtProperty *parentProperty, QtProperty *afterProperty);
-    void removeBrowserIndexes(QtProperty *property, QtProperty *parentProperty);
-    QtBrowserItem *createBrowserIndex(QtProperty *property, QtBrowserItem *parentIndex, QtBrowserItem *afterIndex);
-    void removeBrowserIndex(QtBrowserItem *index);
-    void clearIndex(QtBrowserItem *index);
-
-    void slotPropertyInserted(QtProperty *property,
-            QtProperty *parentProperty, QtProperty *afterProperty);
-    void slotPropertyRemoved(QtProperty *property, QtProperty *parentProperty);
-    void slotPropertyDestroyed(QtProperty *property);
-    void slotPropertyDataChanged(QtProperty *property);
-
-    QList<QtProperty *> m_subItems;
-    QMap<QtAbstractPropertyManager *, QList<QtProperty *> > m_managerToProperties;
-    QMap<QtProperty *, QList<QtProperty *> > m_propertyToParents;
-
-    QMap<QtProperty *, QtBrowserItem *> m_topLevelPropertyToIndex;
-    QList<QtBrowserItem *> m_topLevelIndexes;
-    QMap<QtProperty *, QList<QtBrowserItem *> > m_propertyToIndexes;
-
-    QtBrowserItem *m_currentItem;
-};
-
-QtAbstractPropertyBrowserPrivate::QtAbstractPropertyBrowserPrivate() :
-   m_currentItem(0)
-{
-}
-
-void QtAbstractPropertyBrowserPrivate::insertSubTree(QtProperty *property,
-            QtProperty *parentProperty)
-{
-    if (m_propertyToParents.contains(property)) {
-        // property was already inserted, so its manager is connected
-        // and all its children are inserted and theirs managers are connected
-        // we just register new parent (parent has to be new).
-        m_propertyToParents[property].append(parentProperty);
-        // don't need to update m_managerToProperties map since
-        // m_managerToProperties[manager] already contains property.
-        return;
-    }
-    QtAbstractPropertyManager *manager = property->propertyManager();
-    if (m_managerToProperties[manager].isEmpty()) {
-        // connect manager's signals
-        q_ptr->connect(manager, SIGNAL(propertyInserted(QtProperty *,
-                            QtProperty *, QtProperty *)),
-                q_ptr, SLOT(slotPropertyInserted(QtProperty *,
-                            QtProperty *, QtProperty *)));
-        q_ptr->connect(manager, SIGNAL(propertyRemoved(QtProperty *,
-                            QtProperty *)),
-                q_ptr, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-        q_ptr->connect(manager, SIGNAL(propertyDestroyed(QtProperty*)),
-                q_ptr, SLOT(slotPropertyDestroyed(QtProperty*)));
-        q_ptr->connect(manager, SIGNAL(propertyChanged(QtProperty*)),
-                q_ptr, SLOT(slotPropertyDataChanged(QtProperty*)));
-    }
-    m_managerToProperties[manager].append(property);
-    m_propertyToParents[property].append(parentProperty);
-
-    QList<QtProperty *> subList = property->subProperties();
-    QListIterator<QtProperty *> itSub(subList);
-    while (itSub.hasNext()) {
-        QtProperty *subProperty = itSub.next();
-        insertSubTree(subProperty, property);
-    }
-}
-
-void QtAbstractPropertyBrowserPrivate::removeSubTree(QtProperty *property,
-            QtProperty *parentProperty)
-{
-    if (!m_propertyToParents.contains(property)) {
-        // ASSERT
-        return;
-    }
-
-    m_propertyToParents[property].removeAll(parentProperty);
-    if (!m_propertyToParents[property].isEmpty())
-        return;
-
-    m_propertyToParents.remove(property);
-    QtAbstractPropertyManager *manager = property->propertyManager();
-    m_managerToProperties[manager].removeAll(property);
-    if (m_managerToProperties[manager].isEmpty()) {
-        // disconnect manager's signals
-        q_ptr->disconnect(manager, SIGNAL(propertyInserted(QtProperty *,
-                            QtProperty *, QtProperty *)),
-                q_ptr, SLOT(slotPropertyInserted(QtProperty *,
-                            QtProperty *, QtProperty *)));
-        q_ptr->disconnect(manager, SIGNAL(propertyRemoved(QtProperty *,
-                            QtProperty *)),
-                q_ptr, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-        q_ptr->disconnect(manager, SIGNAL(propertyDestroyed(QtProperty*)),
-                q_ptr, SLOT(slotPropertyDestroyed(QtProperty*)));
-        q_ptr->disconnect(manager, SIGNAL(propertyChanged(QtProperty*)),
-                q_ptr, SLOT(slotPropertyDataChanged(QtProperty*)));
-
-        m_managerToProperties.remove(manager);
-    }
-
-    QList<QtProperty *> subList = property->subProperties();
-    QListIterator<QtProperty *> itSub(subList);
-    while (itSub.hasNext()) {
-        QtProperty *subProperty = itSub.next();
-        removeSubTree(subProperty, property);
-    }
-}
-
-void QtAbstractPropertyBrowserPrivate::createBrowserIndexes(QtProperty *property, QtProperty *parentProperty, QtProperty *afterProperty)
-{
-    QMap<QtBrowserItem *, QtBrowserItem *> parentToAfter;
-    if (afterProperty) {
-        QMap<QtProperty *, QList<QtBrowserItem *> >::ConstIterator it =
-            m_propertyToIndexes.find(afterProperty);
-        if (it == m_propertyToIndexes.constEnd())
-            return;
-
-        QList<QtBrowserItem *> indexes = it.value();
-        QListIterator<QtBrowserItem *> itIndex(indexes);
-        while (itIndex.hasNext()) {
-            QtBrowserItem *idx = itIndex.next();
-            QtBrowserItem *parentIdx = idx->parent();
-            if ((parentProperty && parentIdx && parentIdx->property() == parentProperty) || (!parentProperty && !parentIdx))
-                parentToAfter[idx->parent()] = idx;
-        }
-    } else if (parentProperty) {
-        QMap<QtProperty *, QList<QtBrowserItem *> >::ConstIterator it =
-                m_propertyToIndexes.find(parentProperty);
-        if (it == m_propertyToIndexes.constEnd())
-            return;
-
-        QList<QtBrowserItem *> indexes = it.value();
-        QListIterator<QtBrowserItem *> itIndex(indexes);
-        while (itIndex.hasNext()) {
-            QtBrowserItem *idx = itIndex.next();
-            parentToAfter[idx] = 0;
-        }
-    } else {
-        parentToAfter[0] = 0;
-    }
-
-    const QMap<QtBrowserItem *, QtBrowserItem *>::ConstIterator pcend = parentToAfter.constEnd();
-    for (QMap<QtBrowserItem *, QtBrowserItem *>::ConstIterator it = parentToAfter.constBegin(); it != pcend; ++it)
-        createBrowserIndex(property, it.key(), it.value());
-}
-
-QtBrowserItem *QtAbstractPropertyBrowserPrivate::createBrowserIndex(QtProperty *property,
-        QtBrowserItem *parentIndex, QtBrowserItem *afterIndex)
-{
-    QtBrowserItem *newIndex = new QtBrowserItem(q_ptr, property, parentIndex);
-    if (parentIndex) {
-        parentIndex->d_ptr->addChild(newIndex, afterIndex);
-    } else {
-        m_topLevelPropertyToIndex[property] = newIndex;
-        m_topLevelIndexes.insert(m_topLevelIndexes.indexOf(afterIndex) + 1, newIndex);
-    }
-    m_propertyToIndexes[property].append(newIndex);
-
-    q_ptr->itemInserted(newIndex, afterIndex);
-
-    QList<QtProperty *> subItems = property->subProperties();
-    QListIterator<QtProperty *> itChild(subItems);
-    QtBrowserItem *afterChild = 0;
-    while (itChild.hasNext()) {
-        QtProperty *child = itChild.next();
-        afterChild = createBrowserIndex(child, newIndex, afterChild);
-    }
-    return newIndex;
-}
-
-void QtAbstractPropertyBrowserPrivate::removeBrowserIndexes(QtProperty *property, QtProperty *parentProperty)
-{
-    QList<QtBrowserItem *> toRemove;
-    QMap<QtProperty *, QList<QtBrowserItem *> >::ConstIterator it =
-        m_propertyToIndexes.find(property);
-    if (it == m_propertyToIndexes.constEnd())
-        return;
-
-    QList<QtBrowserItem *> indexes = it.value();
-    QListIterator<QtBrowserItem *> itIndex(indexes);
-    while (itIndex.hasNext()) {
-        QtBrowserItem *idx = itIndex.next();
-        QtBrowserItem *parentIdx = idx->parent();
-        if ((parentProperty && parentIdx && parentIdx->property() == parentProperty) || (!parentProperty && !parentIdx))
-            toRemove.append(idx);
-    }
-
-    QListIterator<QtBrowserItem *> itRemove(toRemove);
-    while (itRemove.hasNext()) {
-        QtBrowserItem *index = itRemove.next();
-        removeBrowserIndex(index);
-    }
-}
-
-void QtAbstractPropertyBrowserPrivate::removeBrowserIndex(QtBrowserItem *index)
-{
-    QList<QtBrowserItem *> children = index->children();
-    for (int i = children.count(); i > 0; i--) {
-        removeBrowserIndex(children.at(i - 1));
-    }
-
-    q_ptr->itemRemoved(index);
-
-    if (index->parent()) {
-        index->parent()->d_ptr->removeChild(index);
-    } else {
-        m_topLevelPropertyToIndex.remove(index->property());
-        m_topLevelIndexes.removeAll(index);
-    }
-
-    QtProperty *property = index->property();
-
-    m_propertyToIndexes[property].removeAll(index);
-    if (m_propertyToIndexes[property].isEmpty())
-        m_propertyToIndexes.remove(property);
-
-    delete index;
-}
-
-void QtAbstractPropertyBrowserPrivate::clearIndex(QtBrowserItem *index)
-{
-    QList<QtBrowserItem *> children = index->children();
-    QListIterator<QtBrowserItem *> itChild(children);
-    while (itChild.hasNext()) {
-        clearIndex(itChild.next());
-    }
-    delete index;
-}
-
-void QtAbstractPropertyBrowserPrivate::slotPropertyInserted(QtProperty *property,
-        QtProperty *parentProperty, QtProperty *afterProperty)
-{
-    if (!m_propertyToParents.contains(parentProperty))
-        return;
-    createBrowserIndexes(property, parentProperty, afterProperty);
-    insertSubTree(property, parentProperty);
-    //q_ptr->propertyInserted(property, parentProperty, afterProperty);
-}
-
-void QtAbstractPropertyBrowserPrivate::slotPropertyRemoved(QtProperty *property,
-        QtProperty *parentProperty)
-{
-    if (!m_propertyToParents.contains(parentProperty))
-        return;
-    removeSubTree(property, parentProperty); // this line should be probably moved down after propertyRemoved call
-    //q_ptr->propertyRemoved(property, parentProperty);
-    removeBrowserIndexes(property, parentProperty);
-}
-
-void QtAbstractPropertyBrowserPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (!m_subItems.contains(property))
-        return;
-    q_ptr->removeProperty(property);
-}
-
-void QtAbstractPropertyBrowserPrivate::slotPropertyDataChanged(QtProperty *property)
-{
-    if (!m_propertyToParents.contains(property))
-        return;
-
-    QMap<QtProperty *, QList<QtBrowserItem *> >::ConstIterator it =
-            m_propertyToIndexes.find(property);
-    if (it == m_propertyToIndexes.constEnd())
-        return;
-
-    QList<QtBrowserItem *> indexes = it.value();
-    QListIterator<QtBrowserItem *> itIndex(indexes);
-    while (itIndex.hasNext()) {
-        QtBrowserItem *idx = itIndex.next();
-        q_ptr->itemChanged(idx);
-    }
-    //q_ptr->propertyChanged(property);
-}
-
-/*!
-    \class QtAbstractPropertyBrowser
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief QtAbstractPropertyBrowser provides a base class for
-    implementing property browsers.
-
-    A property browser is a widget that enables the user to edit a
-    given set of properties.  Each property is represented by a label
-    specifying the property's name, and an editing widget (e.g. a line
-    edit or a combobox) holding its value. A property can have zero or
-    more subproperties.
-
-    \image qtpropertybrowser.png
-
-    The top level properties can be retrieved using the
-    properties() function. To traverse each property's
-    subproperties, use the QtProperty::subProperties() function. In
-    addition, the set of top level properties can be manipulated using
-    the addProperty(), insertProperty() and removeProperty()
-    functions. Note that the QtProperty class provides a corresponding
-    set of functions making it possible to manipulate the set of
-    subproperties as well.
-
-    To remove all the properties from the property browser widget, use
-    the clear() function. This function will clear the editor, but it
-    will not delete the properties since they can still be used in
-    other editors.
-
-    The properties themselves are created and managed by
-    implementations of the QtAbstractPropertyManager class. A manager
-    can handle (i.e. create and manage) properties of a given type. In
-    the property browser the managers are associated with
-    implementations of the QtAbstractEditorFactory: A factory is a
-    class able to create an editing widget of a specified type.
-
-    When using a property browser widget, managers must be created for
-    each of the required property types before the properties
-    themselves can be created. To ensure that the properties' values
-    will be displayed using suitable editing widgets, the managers
-    must be associated with objects of the preferred factory
-    implementations using the setFactoryForManager() function. The
-    property browser will use these associations to determine which
-    factory it should use to create the preferred editing widget.
-
-    Note that a factory can be associated with many managers, but a
-    manager can only be associated with one single factory within the
-    context of a single property browser.  The associations between
-    managers and factories can at any time be removed using the
-    unsetFactoryForManager() function.
-
-    Whenever the property data changes or a property is inserted or
-    removed, the itemChanged(), itemInserted() or
-    itemRemoved() functions are called, respectively. These
-    functions must be reimplemented in derived classes in order to
-    update the property browser widget. Be aware that some property
-    instances can appear several times in an abstract tree
-    structure. For example:
-
-    \table 100%
-    \row
-    \li
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp 2
-    \li  \image qtpropertybrowser-duplicate.png
-    \endtable
-
-    The addProperty() function returns a QtBrowserItem that uniquely
-    identifies the created item.
-
-    To make a property editable in the property browser, the
-    createEditor() function must be called to provide the
-    property with a suitable editing widget.
-
-    Note that there are two ready-made property browser
-    implementations:
-
-    \list
-        \li QtGroupBoxPropertyBrowser
-        \li QtTreePropertyBrowser
-    \endlist
-
-    \sa QtAbstractPropertyManager, QtAbstractEditorFactoryBase
-*/
-
-/*!
-    \fn void QtAbstractPropertyBrowser::setFactoryForManager(PropertyManager *manager,
-                    QtAbstractEditorFactory<PropertyManager> *factory)
-
-    Connects the given \a manager to the given \a factory, ensuring
-    that properties of the \a manager's type will be displayed with an
-    editing widget suitable for their value.
-
-    For example:
-
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtpropertybrowser.cpp 3
-
-    In this example the \c myInteger property's value is displayed
-    with a QSpinBox widget, while the \c myDouble property's value is
-    displayed with a QDoubleSpinBox widget.
-
-    Note that a factory can be associated with many managers, but a
-    manager can only be associated with one single factory.  If the
-    given \a manager already is associated with another factory, the
-    old association is broken before the new one established.
-
-    This function ensures that the given \a manager and the given \a
-    factory are compatible, and it automatically calls the
-    QtAbstractEditorFactory::addPropertyManager() function if necessary.
-
-    \sa unsetFactoryForManager()
-*/
-
-/*!
-    \fn virtual void QtAbstractPropertyBrowser::itemInserted(QtBrowserItem *insertedItem,
-        QtBrowserItem *precedingItem) = 0
-
-    This function is called to update the widget whenever a property
-    is inserted or added to the property browser, passing pointers to
-    the \a insertedItem of property and the specified
-    \a precedingItem as parameters.
-
-    If \a precedingItem is 0, the \a insertedItem was put at
-    the beginning of its parent item's list of subproperties. If
-    the parent of \a insertedItem is 0, the \a insertedItem was added as a top
-    level property of \e this property browser.
-
-    This function must be reimplemented in derived classes. Note that
-    if the \a insertedItem's property has subproperties, this
-    method will be called for those properties as soon as the current call is finished.
-
-    \sa insertProperty(), addProperty()
-*/
-
-/*!
-    \fn virtual void QtAbstractPropertyBrowser::itemRemoved(QtBrowserItem *item) = 0
-
-    This function is called to update the widget whenever a property
-    is removed from the property browser, passing the pointer to the
-    \a item of the property as parameters. The passed \a item is
-    deleted just after this call is finished.
-
-    If the the parent of \a item is 0, the removed \a item was a
-    top level property in this editor.
-
-    This function must be reimplemented in derived classes. Note that
-    if the removed \a item's property has subproperties, this
-    method will be called for those properties just before the current call is started.
-
-    \sa removeProperty()
-*/
-
-/*!
-    \fn virtual void QtAbstractPropertyBrowser::itemChanged(QtBrowserItem *item) = 0
-
-    This function is called whenever a property's data changes,
-    passing a pointer to the \a item of property as parameter.
-
-    This function must be reimplemented in derived classes in order to
-    update the property browser widget whenever a property's name,
-    tool tip, status tip, "what's this" text, value text or value icon
-    changes.
-
-    Note that if the property browser contains several occurrences of
-    the same property, this method will be called once for each
-    occurrence (with a different item each time).
-
-    \sa QtProperty, items()
-*/
-
-/*!
-    Creates an abstract property browser with the given \a parent.
-*/
-QtAbstractPropertyBrowser::QtAbstractPropertyBrowser(QWidget *parent)
-    : QWidget(parent), d_ptr(new QtAbstractPropertyBrowserPrivate)
-{
-    d_ptr->q_ptr = this;
-
-}
-
-/*!
-    Destroys the property browser, and destroys all the items that were
-    created by this property browser.
-
-    Note that the properties that were displayed in the editor are not
-    deleted since they still can be used in other editors. Neither
-    does the destructor delete the property managers and editor
-    factories that were used by this property browser widget unless
-    this widget was their parent.
-
-    \sa QtAbstractPropertyManager::~QtAbstractPropertyManager()
-*/
-QtAbstractPropertyBrowser::~QtAbstractPropertyBrowser()
-{
-    QList<QtBrowserItem *> indexes = topLevelItems();
-    QListIterator<QtBrowserItem *> itItem(indexes);
-    while (itItem.hasNext())
-        d_ptr->clearIndex(itItem.next());
-}
-
-/*!
-    Returns the property browser's list of top level properties.
-
-    To traverse the subproperties, use the QtProperty::subProperties()
-    function.
-
-    \sa addProperty(), insertProperty(), removeProperty()
-*/
-QList<QtProperty *> QtAbstractPropertyBrowser::properties() const
-{
-    return d_ptr->m_subItems;
-}
-
-/*!
-    Returns the property browser's list of all items associated
-    with the given \a property.
-
-    There is one item per instance of the property in the browser.
-
-    \sa topLevelItem()
-*/
-
-QList<QtBrowserItem *> QtAbstractPropertyBrowser::items(QtProperty *property) const
-{
-    return d_ptr->m_propertyToIndexes.value(property);
-}
-
-/*!
-    Returns the top-level items associated with the given \a property.
-
-    Returns 0 if \a property wasn't inserted into this property
-    browser or isn't a top-level one.
-
-    \sa topLevelItems(), items()
-*/
-
-QtBrowserItem *QtAbstractPropertyBrowser::topLevelItem(QtProperty *property) const
-{
-    return d_ptr->m_topLevelPropertyToIndex.value(property);
-}
-
-/*!
-    Returns the list of top-level items.
-
-    \sa topLevelItem()
-*/
-
-QList<QtBrowserItem *> QtAbstractPropertyBrowser::topLevelItems() const
-{
-    return d_ptr->m_topLevelIndexes;
-}
-
-/*!
-    Removes all the properties from the editor, but does not delete
-    them since they can still be used in other editors.
-
-    \sa removeProperty(), QtAbstractPropertyManager::clear()
-*/
-void QtAbstractPropertyBrowser::clear()
-{
-    QList<QtProperty *> subList = properties();
-    QListIterator<QtProperty *> itSub(subList);
-    itSub.toBack();
-    while (itSub.hasPrevious()) {
-        QtProperty *property = itSub.previous();
-        removeProperty(property);
-    }
-}
-
-/*!
-    Appends the given \a property (and its subproperties) to the
-    property browser's list of top level properties. Returns the item
-    created by property browser which is associated with the \a property.
-    In order to get all children items created by the property
-    browser in this call, the returned item should be traversed.
-
-    If the specified \a property is already added, this function does
-    nothing and returns 0.
-
-    \sa insertProperty(), QtProperty::addSubProperty(), properties()
-*/
-QtBrowserItem *QtAbstractPropertyBrowser::addProperty(QtProperty *property)
-{
-    QtProperty *afterProperty = 0;
-    if (d_ptr->m_subItems.count() > 0)
-        afterProperty = d_ptr->m_subItems.last();
-    return insertProperty(property, afterProperty);
-}
-
-/*!
-    \fn QtBrowserItem *QtAbstractPropertyBrowser::insertProperty(QtProperty *property,
-            QtProperty *afterProperty)
-
-    Inserts the given \a property (and its subproperties) after
-    the specified \a afterProperty in the browser's list of top
-    level properties. Returns item created by property browser which
-    is associated with the \a property. In order to get all children items
-    created by the property browser in this call returned item should be traversed.
-
-    If the specified \a afterProperty is 0, the given \a property is
-    inserted at the beginning of the list.  If \a property is
-    already inserted, this function does nothing and returns 0.
-
-    \sa addProperty(), QtProperty::insertSubProperty(), properties()
-*/
-QtBrowserItem *QtAbstractPropertyBrowser::insertProperty(QtProperty *property,
-            QtProperty *afterProperty)
-{
-    if (!property)
-        return 0;
-
-    // if item is already inserted in this item then cannot add.
-    QList<QtProperty *> pendingList = properties();
-    int pos = 0;
-    int newPos = 0;
-    while (pos < pendingList.count()) {
-        QtProperty *prop = pendingList.at(pos);
-        if (prop == property)
-            return 0;
-        if (prop == afterProperty) {
-            newPos = pos + 1;
-        }
-        pos++;
-    }
-    d_ptr->createBrowserIndexes(property, 0, afterProperty);
-
-    // traverse inserted subtree and connect to manager's signals
-    d_ptr->insertSubTree(property, 0);
-
-    d_ptr->m_subItems.insert(newPos, property);
-    //propertyInserted(property, 0, properAfterProperty);
-    return topLevelItem(property);
-}
-
-/*!
-    Removes the specified \a property (and its subproperties) from the
-    property browser's list of top level properties. All items
-    that were associated with the given \a property and its children
-    are deleted.
-
-    Note that the properties are \e not deleted since they can still
-    be used in other editors.
-
-    \sa clear(), QtProperty::removeSubProperty(), properties()
-*/
-void QtAbstractPropertyBrowser::removeProperty(QtProperty *property)
-{
-    if (!property)
-        return;
-
-    QList<QtProperty *> pendingList = properties();
-    int pos = 0;
-    while (pos < pendingList.count()) {
-        if (pendingList.at(pos) == property) {
-            d_ptr->m_subItems.removeAt(pos); //perhaps this two lines
-            d_ptr->removeSubTree(property, 0); //should be moved down after propertyRemoved call.
-            //propertyRemoved(property, 0);
-
-            d_ptr->removeBrowserIndexes(property, 0);
-
-            // when item is deleted, item will call removeItem for top level items,
-            // and itemRemoved for nested items.
-
-            return;
-        }
-        pos++;
-    }
-}
-
-/*!
-    Creates an editing widget (with the given \a parent) for the given
-    \a property according to the previously established associations
-    between property managers and editor factories.
-
-    If the property is created by a property manager which was not
-    associated with any of the existing factories in \e this property
-    editor, the function returns 0.
-
-    To make a property editable in the property browser, the
-    createEditor() function must be called to provide the
-    property with a suitable editing widget.
-
-    Reimplement this function to provide additional decoration for the
-    editing widgets created by the installed factories.
-
-    \sa setFactoryForManager()
-*/
-QWidget *QtAbstractPropertyBrowser::createEditor(QtProperty *property,
-                QWidget *parent)
-{
-    QtAbstractEditorFactoryBase *factory = 0;
-    QtAbstractPropertyManager *manager = property->propertyManager();
-
-    if (m_viewToManagerToFactory()->contains(this) &&
-        (*m_viewToManagerToFactory())[this].contains(manager)) {
-        factory = (*m_viewToManagerToFactory())[this][manager];
-    }
-
-    if (!factory)
-        return 0;
-    QWidget *w = factory->createEditor(property, parent);
-    // Since some editors can be QComboBoxes, and we changed their focus policy in Qt 5
-    // to make them feel more native on Mac, we need to relax the focus policy to something
-    // more permissive to keep the combo box from losing focus, allowing it to stay alive,
-    // when the user clicks on it to show the popup.
-    if (w)
-        w->setFocusPolicy(Qt::WheelFocus);
-    return w;
-}
-
-bool QtAbstractPropertyBrowser::addFactory(QtAbstractPropertyManager *abstractManager,
-            QtAbstractEditorFactoryBase *abstractFactory)
-{
-    bool connectNeeded = false;
-    if (!m_managerToFactoryToViews()->contains(abstractManager) ||
-        !(*m_managerToFactoryToViews())[abstractManager].contains(abstractFactory)) {
-        connectNeeded = true;
-    } else if ((*m_managerToFactoryToViews())[abstractManager][abstractFactory]
-                    .contains(this)) {
-        return connectNeeded;
-    }
-
-    if (m_viewToManagerToFactory()->contains(this) &&
-        (*m_viewToManagerToFactory())[this].contains(abstractManager)) {
-        unsetFactoryForManager(abstractManager);
-    }
-
-    (*m_managerToFactoryToViews())[abstractManager][abstractFactory].append(this);
-    (*m_viewToManagerToFactory())[this][abstractManager] = abstractFactory;
-
-    return connectNeeded;
-}
-
-/*!
-    Removes the association between the given \a manager and the
-    factory bound to it, automatically calling the
-    QtAbstractEditorFactory::removePropertyManager() function if necessary.
-
-    \sa setFactoryForManager()
-*/
-void QtAbstractPropertyBrowser::unsetFactoryForManager(QtAbstractPropertyManager *manager)
-{
-    if (!m_viewToManagerToFactory()->contains(this) ||
-        !(*m_viewToManagerToFactory())[this].contains(manager)) {
-        return;
-    }
-
-    QtAbstractEditorFactoryBase *abstractFactory =
-                (*m_viewToManagerToFactory())[this][manager];
-    (*m_viewToManagerToFactory())[this].remove(manager);
-    if ((*m_viewToManagerToFactory())[this].isEmpty()) {
-        (*m_viewToManagerToFactory()).remove(this);
-    }
-
-    (*m_managerToFactoryToViews())[manager][abstractFactory].removeAll(this);
-    if ((*m_managerToFactoryToViews())[manager][abstractFactory].isEmpty()) {
-        (*m_managerToFactoryToViews())[manager].remove(abstractFactory);
-        abstractFactory->breakConnection(manager);
-        if ((*m_managerToFactoryToViews())[manager].isEmpty()) {
-            (*m_managerToFactoryToViews()).remove(manager);
-        }
-    }
-}
-
-/*!
-    Returns the current item in the property browser.
-
-    \sa setCurrentItem()
-*/
-QtBrowserItem *QtAbstractPropertyBrowser::currentItem() const
-{
-    return d_ptr->m_currentItem;
-}
-
-/*!
-    Sets the current item in the property browser to \a item.
-
-    \sa currentItem(), currentItemChanged()
-*/
-void QtAbstractPropertyBrowser::setCurrentItem(QtBrowserItem *item)
-{
-    QtBrowserItem *oldItem = d_ptr->m_currentItem;
-    d_ptr->m_currentItem = item;
-    if (oldItem != item)
-        emit  currentItemChanged(item);
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qtpropertybrowser.cpp"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.h b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.h
deleted file mode 100644
index 688efd0b5d5e3bf127a60e8a8127710a3581cb62..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTPROPERTYBROWSER_H
-#define QTPROPERTYBROWSER_H
-
-#include <QtWidgets/QWidget>
-#include <QtCore/QSet>
-
-QT_BEGIN_NAMESPACE
-
-class QtAbstractPropertyManager;
-class QtPropertyPrivate;
-
-class QtProperty
-{
-public:
-    virtual ~QtProperty();
-
-    QList<QtProperty *> subProperties() const;
-
-    QtAbstractPropertyManager *propertyManager() const;
-
-    QString toolTip() const;
-    QString statusTip() const;
-    QString whatsThis() const;
-    QString propertyName() const;
-    bool isEnabled() const;
-    bool isModified() const;
-
-    bool hasValue() const;
-    QIcon valueIcon() const;
-    QString valueText() const;
-
-    void setToolTip(const QString &text);
-    void setStatusTip(const QString &text);
-    void setWhatsThis(const QString &text);
-    void setPropertyName(const QString &text);
-    void setEnabled(bool enable);
-    void setModified(bool modified);
-
-    void addSubProperty(QtProperty *property);
-    void insertSubProperty(QtProperty *property, QtProperty *afterProperty);
-    void removeSubProperty(QtProperty *property);
-protected:
-    explicit QtProperty(QtAbstractPropertyManager *manager);
-    void propertyChanged();
-private:
-    friend class QtAbstractPropertyManager;
-    QScopedPointer<QtPropertyPrivate> d_ptr;
-};
-
-class QtAbstractPropertyManagerPrivate;
-
-class QtAbstractPropertyManager : public QObject
-{
-    Q_OBJECT
-public:
-
-    explicit QtAbstractPropertyManager(QObject *parent = 0);
-    virtual ~QtAbstractPropertyManager();
-
-    QSet<QtProperty *> properties() const;
-    void clear() const;
-
-    QtProperty *addProperty(const QString &name = QString());
-Q_SIGNALS:
-
-    void propertyInserted(QtProperty *property,
-                QtProperty *parent, QtProperty *after);
-    void propertyChanged(QtProperty *property);
-    void propertyRemoved(QtProperty *property, QtProperty *parent);
-    void propertyDestroyed(QtProperty *property);
-protected:
-    virtual bool hasValue(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property) = 0;
-    virtual void uninitializeProperty(QtProperty *property);
-    virtual QtProperty *createProperty();
-private:
-    friend class QtProperty;
-    QScopedPointer<QtAbstractPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtAbstractPropertyManager)
-    Q_DISABLE_COPY(QtAbstractPropertyManager)
-};
-
-class QtAbstractEditorFactoryBase : public QObject
-{
-    Q_OBJECT
-public:
-    virtual QWidget *createEditor(QtProperty *property, QWidget *parent) = 0;
-protected:
-    explicit QtAbstractEditorFactoryBase(QObject *parent = 0)
-        : QObject(parent) {}
-
-    virtual void breakConnection(QtAbstractPropertyManager *manager) = 0;
-protected Q_SLOTS:
-    virtual void managerDestroyed(QObject *manager) = 0;
-
-    friend class QtAbstractPropertyBrowser;
-};
-
-template <class PropertyManager>
-class QtAbstractEditorFactory : public QtAbstractEditorFactoryBase
-{
-public:
-    explicit QtAbstractEditorFactory(QObject *parent) : QtAbstractEditorFactoryBase(parent) {}
-    virtual QWidget *createEditor(QtProperty *property, QWidget *parent)
-    {
-        QSetIterator<PropertyManager *> it(m_managers);
-        while (it.hasNext()) {
-            PropertyManager *manager = it.next();
-            if (manager == property->propertyManager()) {
-                return createEditor(manager, property, parent);
-            }
-        }
-        return 0;
-    }
-    void addPropertyManager(PropertyManager *manager)
-    {
-        if (m_managers.contains(manager))
-            return;
-        m_managers.insert(manager);
-        connectPropertyManager(manager);
-        connect(manager, SIGNAL(destroyed(QObject *)),
-                    this, SLOT(managerDestroyed(QObject *)));
-    }
-    void removePropertyManager(PropertyManager *manager)
-    {
-        if (!m_managers.contains(manager))
-            return;
-        disconnect(manager, SIGNAL(destroyed(QObject *)),
-                    this, SLOT(managerDestroyed(QObject *)));
-        disconnectPropertyManager(manager);
-        m_managers.remove(manager);
-    }
-    QSet<PropertyManager *> propertyManagers() const
-    {
-        return m_managers;
-    }
-    PropertyManager *propertyManager(QtProperty *property) const
-    {
-        QtAbstractPropertyManager *manager = property->propertyManager();
-        QSetIterator<PropertyManager *> itManager(m_managers);
-        while (itManager.hasNext()) {
-            PropertyManager *m = itManager.next();
-            if (m == manager) {
-                return m;
-            }
-        }
-        return 0;
-    }
-protected:
-    virtual void connectPropertyManager(PropertyManager *manager) = 0;
-    virtual QWidget *createEditor(PropertyManager *manager, QtProperty *property,
-                QWidget *parent) = 0;
-    virtual void disconnectPropertyManager(PropertyManager *manager) = 0;
-    virtual void managerDestroyed(QObject *manager)
-    {
-        QSetIterator<PropertyManager *> it(m_managers);
-        while (it.hasNext()) {
-            PropertyManager *m = it.next();
-            if (m == manager) {
-                m_managers.remove(m);
-                return;
-            }
-        }
-    }
-private:
-    virtual void breakConnection(QtAbstractPropertyManager *manager)
-    {
-        QSetIterator<PropertyManager *> it(m_managers);
-        while (it.hasNext()) {
-            PropertyManager *m = it.next();
-            if (m == manager) {
-                removePropertyManager(m);
-                return;
-            }
-        }
-    }
-private:
-    QSet<PropertyManager *> m_managers;
-    friend class QtAbstractPropertyEditor;
-};
-
-class QtAbstractPropertyBrowser;
-class QtBrowserItemPrivate;
-
-class QtBrowserItem
-{
-public:
-    QtProperty *property() const;
-    QtBrowserItem *parent() const;
-    QList<QtBrowserItem *> children() const;
-    QtAbstractPropertyBrowser *browser() const;
-private:
-    explicit QtBrowserItem(QtAbstractPropertyBrowser *browser, QtProperty *property, QtBrowserItem *parent);
-    ~QtBrowserItem();
-    QScopedPointer<QtBrowserItemPrivate> d_ptr;
-    friend class QtAbstractPropertyBrowserPrivate;
-};
-
-class QtAbstractPropertyBrowserPrivate;
-
-class QtAbstractPropertyBrowser : public QWidget
-{
-    Q_OBJECT
-public:
-
-    explicit QtAbstractPropertyBrowser(QWidget *parent = 0);
-    virtual ~QtAbstractPropertyBrowser();
-
-    QList<QtProperty *> properties() const;
-    QList<QtBrowserItem *> items(QtProperty *property) const;
-    QtBrowserItem *topLevelItem(QtProperty *property) const;
-    QList<QtBrowserItem *> topLevelItems() const;
-    void clear();
-
-    template <class PropertyManager>
-    void setFactoryForManager(PropertyManager *manager,
-                    QtAbstractEditorFactory<PropertyManager> *factory) {
-        QtAbstractPropertyManager *abstractManager = manager;
-        QtAbstractEditorFactoryBase *abstractFactory = factory;
-
-        if (addFactory(abstractManager, abstractFactory))
-            factory->addPropertyManager(manager);
-    }
-
-    void unsetFactoryForManager(QtAbstractPropertyManager *manager);
-
-    QtBrowserItem *currentItem() const;
-    void setCurrentItem(QtBrowserItem *);
-
-Q_SIGNALS:
-    void currentItemChanged(QtBrowserItem *);
-
-public Q_SLOTS:
-
-    QtBrowserItem *addProperty(QtProperty *property);
-    QtBrowserItem *insertProperty(QtProperty *property, QtProperty *afterProperty);
-    void removeProperty(QtProperty *property);
-
-protected:
-
-    virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem) = 0;
-    virtual void itemRemoved(QtBrowserItem *item) = 0;
-    // can be tooltip, statustip, whatsthis, name, icon, text.
-    virtual void itemChanged(QtBrowserItem *item) = 0;
-
-    virtual QWidget *createEditor(QtProperty *property, QWidget *parent);
-private:
-
-    bool addFactory(QtAbstractPropertyManager *abstractManager,
-                QtAbstractEditorFactoryBase *abstractFactory);
-
-    QScopedPointer<QtAbstractPropertyBrowserPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtAbstractPropertyBrowser)
-    Q_DISABLE_COPY(QtAbstractPropertyBrowser)
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyInserted(QtProperty *,
-                            QtProperty *, QtProperty *))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyRemoved(QtProperty *,
-                            QtProperty *))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDataChanged(QtProperty *))
-
-};
-
-QT_END_NAMESPACE
-
-#endif // QTPROPERTYBROWSER_H
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.pri b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.pri
deleted file mode 100644
index 8d767d68e799a7e12b75e25724712f5846f3b4ba..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.pri
+++ /dev/null
@@ -1,18 +0,0 @@
-INCLUDEPATH += $$PWD
-SOURCES += $$PWD/qtpropertybrowser.cpp \
-            $$PWD/qtpropertymanager.cpp \
-            $$PWD/qteditorfactory.cpp \
-            $$PWD/qtvariantproperty.cpp \
-            $$PWD/qttreepropertybrowser.cpp \
-            $$PWD/qtbuttonpropertybrowser.cpp \
-            $$PWD/qtgroupboxpropertybrowser.cpp \
-            $$PWD/qtpropertybrowserutils.cpp
-HEADERS += $$PWD/qtpropertybrowser.h \
-            $$PWD/qtpropertymanager.h \
-            $$PWD/qteditorfactory.h \
-            $$PWD/qtvariantproperty.h \
-            $$PWD/qttreepropertybrowser.h \
-            $$PWD/qtbuttonpropertybrowser.h \
-            $$PWD/qtgroupboxpropertybrowser.h \
-            $$PWD/qtpropertybrowserutils_p.h
-RESOURCES += $$PWD/qtpropertybrowser.qrc
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.qrc b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.qrc
deleted file mode 100644
index a7d37dd10dbb2741f6832f4b603d62fff2c25a2a..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowser.qrc
+++ /dev/null
@@ -1,23 +0,0 @@
-<RCC version="1.0">
-    <qresource prefix="/qt-project.org/qtpropertybrowser">
-        <file>images/cursor-arrow.png</file>
-        <file>images/cursor-busy.png</file>
-        <file>images/cursor-closedhand.png</file>
-        <file>images/cursor-cross.png</file>
-        <file>images/cursor-forbidden.png</file>
-        <file>images/cursor-hand.png</file>
-        <file>images/cursor-hsplit.png</file>
-        <file>images/cursor-ibeam.png</file>
-        <file>images/cursor-openhand.png</file>
-        <file>images/cursor-sizeall.png</file>
-        <file>images/cursor-sizeb.png</file>
-        <file>images/cursor-sizef.png</file>
-        <file>images/cursor-sizeh.png</file>
-        <file>images/cursor-sizev.png</file>
-        <file>images/cursor-uparrow.png</file>
-        <file>images/cursor-vsplit.png</file>
-        <file>images/cursor-wait.png</file>
-        <file>images/cursor-whatsthis.png</file>
-    </qresource>
-</RCC>
-
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.cpp b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.cpp
deleted file mode 100644
index d7a26b140dac44d6eaeec8e6777ec27ed045ba24..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.cpp
+++ /dev/null
@@ -1,296 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtpropertybrowserutils_p.h"
-#include <QtWidgets/QApplication>
-#include <QtGui/QPainter>
-#include <QtWidgets/QHBoxLayout>
-#include <QtGui/QMouseEvent>
-#include <QtWidgets/QCheckBox>
-#include <QtWidgets/QLineEdit>
-#include <QtWidgets/QMenu>
-#include <QtCore/QLocale>
-
-QT_BEGIN_NAMESPACE
-
-QtCursorDatabase::QtCursorDatabase()
-{
-    appendCursor(Qt::ArrowCursor, QCoreApplication::translate("QtCursorDatabase", "Arrow"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-arrow.png")));
-    appendCursor(Qt::UpArrowCursor, QCoreApplication::translate("QtCursorDatabase", "Up Arrow"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-uparrow.png")));
-    appendCursor(Qt::CrossCursor, QCoreApplication::translate("QtCursorDatabase", "Cross"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-cross.png")));
-    appendCursor(Qt::WaitCursor, QCoreApplication::translate("QtCursorDatabase", "Wait"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-wait.png")));
-    appendCursor(Qt::IBeamCursor, QCoreApplication::translate("QtCursorDatabase", "IBeam"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-ibeam.png")));
-    appendCursor(Qt::SizeVerCursor, QCoreApplication::translate("QtCursorDatabase", "Size Vertical"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizev.png")));
-    appendCursor(Qt::SizeHorCursor, QCoreApplication::translate("QtCursorDatabase", "Size Horizontal"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeh.png")));
-    appendCursor(Qt::SizeFDiagCursor, QCoreApplication::translate("QtCursorDatabase", "Size Backslash"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizef.png")));
-    appendCursor(Qt::SizeBDiagCursor, QCoreApplication::translate("QtCursorDatabase", "Size Slash"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeb.png")));
-    appendCursor(Qt::SizeAllCursor, QCoreApplication::translate("QtCursorDatabase", "Size All"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-sizeall.png")));
-    appendCursor(Qt::BlankCursor, QCoreApplication::translate("QtCursorDatabase", "Blank"),
-                 QIcon());
-    appendCursor(Qt::SplitVCursor, QCoreApplication::translate("QtCursorDatabase", "Split Vertical"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-vsplit.png")));
-    appendCursor(Qt::SplitHCursor, QCoreApplication::translate("QtCursorDatabase", "Split Horizontal"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-hsplit.png")));
-    appendCursor(Qt::PointingHandCursor, QCoreApplication::translate("QtCursorDatabase", "Pointing Hand"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-hand.png")));
-    appendCursor(Qt::ForbiddenCursor, QCoreApplication::translate("QtCursorDatabase", "Forbidden"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-forbidden.png")));
-    appendCursor(Qt::OpenHandCursor, QCoreApplication::translate("QtCursorDatabase", "Open Hand"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-openhand.png")));
-    appendCursor(Qt::ClosedHandCursor, QCoreApplication::translate("QtCursorDatabase", "Closed Hand"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-closedhand.png")));
-    appendCursor(Qt::WhatsThisCursor, QCoreApplication::translate("QtCursorDatabase", "What's This"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-whatsthis.png")));
-    appendCursor(Qt::BusyCursor, QCoreApplication::translate("QtCursorDatabase", "Busy"),
-                 QIcon(QLatin1String(":/qt-project.org/qtpropertybrowser/images/cursor-busy.png")));
-}
-
-void QtCursorDatabase::clear()
-{
-    m_cursorNames.clear();
-    m_cursorIcons.clear();
-    m_valueToCursorShape.clear();
-    m_cursorShapeToValue.clear();
-}
-
-void QtCursorDatabase::appendCursor(Qt::CursorShape shape, const QString &name, const QIcon &icon)
-{
-    if (m_cursorShapeToValue.contains(shape))
-        return;
-    const int value = m_cursorNames.count();
-    m_cursorNames.append(name);
-    m_cursorIcons.insert(value, icon);
-    m_valueToCursorShape.insert(value, shape);
-    m_cursorShapeToValue.insert(shape, value);
-}
-
-QStringList QtCursorDatabase::cursorShapeNames() const
-{
-    return m_cursorNames;
-}
-
-QMap<int, QIcon> QtCursorDatabase::cursorShapeIcons() const
-{
-    return m_cursorIcons;
-}
-
-QString QtCursorDatabase::cursorToShapeName(const QCursor &cursor) const
-{
-    int val = cursorToValue(cursor);
-    if (val >= 0)
-        return m_cursorNames.at(val);
-    return QString();
-}
-
-QIcon QtCursorDatabase::cursorToShapeIcon(const QCursor &cursor) const
-{
-    int val = cursorToValue(cursor);
-    return m_cursorIcons.value(val);
-}
-
-int QtCursorDatabase::cursorToValue(const QCursor &cursor) const
-{
-#ifndef QT_NO_CURSOR
-    Qt::CursorShape shape = cursor.shape();
-    if (m_cursorShapeToValue.contains(shape))
-        return m_cursorShapeToValue[shape];
-#endif
-    return -1;
-}
-
-#ifndef QT_NO_CURSOR
-QCursor QtCursorDatabase::valueToCursor(int value) const
-{
-    if (m_valueToCursorShape.contains(value))
-        return QCursor(m_valueToCursorShape[value]);
-    return QCursor();
-}
-#endif
-
-QPixmap QtPropertyBrowserUtils::brushValuePixmap(const QBrush &b)
-{
-    QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
-    img.fill(0);
-
-    QPainter painter(&img);
-    painter.setCompositionMode(QPainter::CompositionMode_Source);
-    painter.fillRect(0, 0, img.width(), img.height(), b);
-    QColor color = b.color();
-    if (color.alpha() != 255) { // indicate alpha by an inset
-        QBrush  opaqueBrush = b;
-        color.setAlpha(255);
-        opaqueBrush.setColor(color);
-        painter.fillRect(img.width() / 4, img.height() / 4,
-                         img.width() / 2, img.height() / 2, opaqueBrush);
-    }
-    painter.end();
-    return QPixmap::fromImage(img);
-}
-
-QIcon QtPropertyBrowserUtils::brushValueIcon(const QBrush &b)
-{
-    return QIcon(brushValuePixmap(b));
-}
-
-QString QtPropertyBrowserUtils::colorValueText(const QColor &c)
-{
-    return QCoreApplication::translate("QtPropertyBrowserUtils", "[%1, %2, %3] (%4)")
-           .arg(c.red()).arg(c.green()).arg(c.blue()).arg(c.alpha());
-}
-
-QPixmap QtPropertyBrowserUtils::fontValuePixmap(const QFont &font)
-{
-    QFont f = font;
-    QImage img(16, 16, QImage::Format_ARGB32_Premultiplied);
-    img.fill(0);
-    QPainter p(&img);
-    p.setRenderHint(QPainter::TextAntialiasing, true);
-    p.setRenderHint(QPainter::Antialiasing, true);
-    f.setPointSize(13);
-    p.setFont(f);
-    QTextOption t;
-    t.setAlignment(Qt::AlignCenter);
-    p.drawText(QRect(0, 0, 16, 16), QString(QLatin1Char('A')), t);
-    return QPixmap::fromImage(img);
-}
-
-QIcon QtPropertyBrowserUtils::fontValueIcon(const QFont &f)
-{
-    return QIcon(fontValuePixmap(f));
-}
-
-QString QtPropertyBrowserUtils::fontValueText(const QFont &f)
-{
-    return QCoreApplication::translate("QtPropertyBrowserUtils", "[%1, %2]")
-           .arg(f.family()).arg(f.pointSize());
-}
-
-QString QtPropertyBrowserUtils::dateFormat()
-{
-    QLocale loc;
-    return loc.dateFormat(QLocale::ShortFormat);
-}
-
-QString QtPropertyBrowserUtils::timeFormat()
-{
-    QLocale loc;
-    // ShortFormat is missing seconds on UNIX.
-    return loc.timeFormat(QLocale::LongFormat);
-}
-
-QString QtPropertyBrowserUtils::dateTimeFormat()
-{
-    QString format = dateFormat();
-    format += QLatin1Char(' ');
-    format += timeFormat();
-    return format;
-}
-
-QtBoolEdit::QtBoolEdit(QWidget *parent) :
-    QWidget(parent),
-    m_checkBox(new QCheckBox(this)),
-    m_textVisible(true)
-{
-    QHBoxLayout *lt = new QHBoxLayout;
-    if (QApplication::layoutDirection() == Qt::LeftToRight)
-        lt->setContentsMargins(4, 0, 0, 0);
-    else
-        lt->setContentsMargins(0, 0, 4, 0);
-    lt->addWidget(m_checkBox);
-    setLayout(lt);
-    connect(m_checkBox, SIGNAL(toggled(bool)), this, SIGNAL(toggled(bool)));
-    setFocusProxy(m_checkBox);
-    m_checkBox->setText(tr("True"));
-}
-
-void QtBoolEdit::setTextVisible(bool textVisible)
-{
-    if (m_textVisible == textVisible)
-        return;
-
-    m_textVisible = textVisible;
-    if (m_textVisible)
-        m_checkBox->setText(isChecked() ? tr("True") : tr("False"));
-    else
-        m_checkBox->setText(QString());
-}
-
-Qt::CheckState QtBoolEdit::checkState() const
-{
-    return m_checkBox->checkState();
-}
-
-void QtBoolEdit::setCheckState(Qt::CheckState state)
-{
-    m_checkBox->setCheckState(state);
-}
-
-bool QtBoolEdit::isChecked() const
-{
-    return m_checkBox->isChecked();
-}
-
-void QtBoolEdit::setChecked(bool c)
-{
-    m_checkBox->setChecked(c);
-    if (!m_textVisible)
-        return;
-    m_checkBox->setText(isChecked() ? tr("True") : tr("False"));
-}
-
-bool QtBoolEdit::blockCheckBoxSignals(bool block)
-{
-    return m_checkBox->blockSignals(block);
-}
-
-void QtBoolEdit::mousePressEvent(QMouseEvent *event)
-{
-    if (event->buttons() == Qt::LeftButton) {
-        m_checkBox->click();
-        event->accept();
-    } else {
-        QWidget::mousePressEvent(event);
-    }
-}
-
-QT_END_NAMESPACE
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.pri b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.pri
deleted file mode 100644
index 22f28a05759f295ddd75e6eb34da784af6011e6b..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-INCLUDEPATH += $$PWD
-SOURCES += $$PWD/qtpropertybrowserutils.cpp
-HEADERS += $$PWD/qtpropertybrowserutils_p.h
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils_p.h b/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils_p.h
deleted file mode 100644
index 5566f9a7a3b63bb923346caa59ccd7f6662c705f..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertybrowserutils_p.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-//
-//  W A R N I N G
-//  -------------
-//
-// This file is not part of the Qt API.  It exists for the convenience
-// of Qt Designer.  This header
-// file may change from version to version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#ifndef QTPROPERTYBROWSERUTILS_H
-#define QTPROPERTYBROWSERUTILS_H
-
-#include <QtCore/QMap>
-#include <QtGui/QIcon>
-#include <QtWidgets/QWidget>
-#include <QtCore/QStringList>
-
-QT_BEGIN_NAMESPACE
-
-class QMouseEvent;
-class QCheckBox;
-class QLineEdit;
-
-class QtCursorDatabase
-{
-public:
-    QtCursorDatabase();
-    void clear();
-
-    QStringList cursorShapeNames() const;
-    QMap<int, QIcon> cursorShapeIcons() const;
-    QString cursorToShapeName(const QCursor &cursor) const;
-    QIcon cursorToShapeIcon(const QCursor &cursor) const;
-    int cursorToValue(const QCursor &cursor) const;
-#ifndef QT_NO_CURSOR
-    QCursor valueToCursor(int value) const;
-#endif
-private:
-    void appendCursor(Qt::CursorShape shape, const QString &name, const QIcon &icon);
-    QStringList m_cursorNames;
-    QMap<int, QIcon> m_cursorIcons;
-    QMap<int, Qt::CursorShape> m_valueToCursorShape;
-    QMap<Qt::CursorShape, int> m_cursorShapeToValue;
-};
-
-class QtPropertyBrowserUtils
-{
-public:
-    static QPixmap brushValuePixmap(const QBrush &b);
-    static QIcon brushValueIcon(const QBrush &b);
-    static QString colorValueText(const QColor &c);
-    static QPixmap fontValuePixmap(const QFont &f);
-    static QIcon fontValueIcon(const QFont &f);
-    static QString fontValueText(const QFont &f);
-    static QString dateFormat();
-    static QString timeFormat();
-    static QString dateTimeFormat();
-};
-
-class QtBoolEdit : public QWidget {
-    Q_OBJECT
-public:
-    QtBoolEdit(QWidget *parent = 0);
-
-    bool textVisible() const { return m_textVisible; }
-    void setTextVisible(bool textVisible);
-
-    Qt::CheckState checkState() const;
-    void setCheckState(Qt::CheckState state);
-
-    bool isChecked() const;
-    void setChecked(bool c);
-
-    bool blockCheckBoxSignals(bool block);
-
-Q_SIGNALS:
-    void toggled(bool);
-
-protected:
-    void mousePressEvent(QMouseEvent * event);
-
-private:
-    QCheckBox *m_checkBox;
-    bool m_textVisible;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.cpp b/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.cpp
deleted file mode 100644
index 2e88849e16d5d197de23c6e33983ae1f8374dcb6..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.cpp
+++ /dev/null
@@ -1,6452 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtpropertymanager.h"
-#include "qtpropertybrowserutils_p.h"
-#include <QtCore/QDateTime>
-#include <QtCore/QLocale>
-#include <QtCore/QMap>
-#include <QtCore/QTimer>
-#include <QtGui/QIcon>
-#include <QtCore/QMetaEnum>
-#include <QtGui/QFontDatabase>
-#include <QtWidgets/QStyleOption>
-#include <QtWidgets/QStyle>
-#include <QtWidgets/QApplication>
-#include <QtGui/QPainter>
-#include <QtWidgets/QLabel>
-
-#include <limits.h>
-#include <float.h>
-
-#if defined(Q_CC_MSVC)
-#    pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
-#endif
-
-QT_BEGIN_NAMESPACE
-
-template <class PrivateData, class Value>
-static void setSimpleMinimumData(PrivateData *data, const Value &minVal)
-{
-    data->minVal = minVal;
-    if (data->maxVal < data->minVal)
-        data->maxVal = data->minVal;
-
-    if (data->val < data->minVal)
-        data->val = data->minVal;
-}
-
-template <class PrivateData, class Value>
-static void setSimpleMaximumData(PrivateData *data, const Value &maxVal)
-{
-    data->maxVal = maxVal;
-    if (data->minVal > data->maxVal)
-        data->minVal = data->maxVal;
-
-    if (data->val > data->maxVal)
-        data->val = data->maxVal;
-}
-
-template <class PrivateData, class Value>
-static void setSizeMinimumData(PrivateData *data, const Value &newMinVal)
-{
-    data->minVal = newMinVal;
-    if (data->maxVal.width() < data->minVal.width())
-        data->maxVal.setWidth(data->minVal.width());
-    if (data->maxVal.height() < data->minVal.height())
-        data->maxVal.setHeight(data->minVal.height());
-
-    if (data->val.width() < data->minVal.width())
-        data->val.setWidth(data->minVal.width());
-    if (data->val.height() < data->minVal.height())
-        data->val.setHeight(data->minVal.height());
-}
-
-template <class PrivateData, class Value>
-static void setSizeMaximumData(PrivateData *data, const Value &newMaxVal)
-{
-    data->maxVal = newMaxVal;
-    if (data->minVal.width() > data->maxVal.width())
-        data->minVal.setWidth(data->maxVal.width());
-    if (data->minVal.height() > data->maxVal.height())
-        data->minVal.setHeight(data->maxVal.height());
-
-    if (data->val.width() > data->maxVal.width())
-        data->val.setWidth(data->maxVal.width());
-    if (data->val.height() > data->maxVal.height())
-        data->val.setHeight(data->maxVal.height());
-}
-
-template <class SizeValue>
-static SizeValue qBoundSize(const SizeValue &minVal, const SizeValue &val, const SizeValue &maxVal)
-{
-    SizeValue croppedVal = val;
-    if (minVal.width() > val.width())
-        croppedVal.setWidth(minVal.width());
-    else if (maxVal.width() < val.width())
-        croppedVal.setWidth(maxVal.width());
-
-    if (minVal.height() > val.height())
-        croppedVal.setHeight(minVal.height());
-    else if (maxVal.height() < val.height())
-        croppedVal.setHeight(maxVal.height());
-
-    return croppedVal;
-}
-
-// Match the exact signature of qBound for VS 6.
-QSize qBound(QSize minVal, QSize val, QSize maxVal)
-{
-    return qBoundSize(minVal, val, maxVal);
-}
-
-QSizeF qBound(QSizeF minVal, QSizeF val, QSizeF maxVal)
-{
-    return qBoundSize(minVal, val, maxVal);
-}
-
-namespace {
-
-namespace {
-template <class Value>
-void orderBorders(Value &minVal, Value &maxVal)
-{
-    if (minVal > maxVal)
-        qSwap(minVal, maxVal);
-}
-
-template <class Value>
-static void orderSizeBorders(Value &minVal, Value &maxVal)
-{
-    Value fromSize = minVal;
-    Value toSize = maxVal;
-    if (fromSize.width() > toSize.width()) {
-        fromSize.setWidth(maxVal.width());
-        toSize.setWidth(minVal.width());
-    }
-    if (fromSize.height() > toSize.height()) {
-        fromSize.setHeight(maxVal.height());
-        toSize.setHeight(minVal.height());
-    }
-    minVal = fromSize;
-    maxVal = toSize;
-}
-
-void orderBorders(QSize &minVal, QSize &maxVal)
-{
-    orderSizeBorders(minVal, maxVal);
-}
-
-void orderBorders(QSizeF &minVal, QSizeF &maxVal)
-{
-    orderSizeBorders(minVal, maxVal);
-}
-
-}
-}
-////////
-
-template <class Value, class PrivateData>
-static Value getData(const QMap<const QtProperty *, PrivateData> &propertyMap,
-            Value PrivateData::*data,
-            const QtProperty *property, const Value &defaultValue = Value())
-{
-    typedef QMap<const QtProperty *, PrivateData> PropertyToData;
-    typedef typename PropertyToData::const_iterator PropertyToDataConstIterator;
-    const PropertyToDataConstIterator it = propertyMap.constFind(property);
-    if (it == propertyMap.constEnd())
-        return defaultValue;
-    return it.value().*data;
-}
-
-template <class Value, class PrivateData>
-static Value getValue(const QMap<const QtProperty *, PrivateData> &propertyMap,
-            const QtProperty *property, const Value &defaultValue = Value())
-{
-    return getData<Value>(propertyMap, &PrivateData::val, property, defaultValue);
-}
-
-template <class Value, class PrivateData>
-static Value getMinimum(const QMap<const QtProperty *, PrivateData> &propertyMap,
-            const QtProperty *property, const Value &defaultValue = Value())
-{
-    return getData<Value>(propertyMap, &PrivateData::minVal, property, defaultValue);
-}
-
-template <class Value, class PrivateData>
-static Value getMaximum(const QMap<const QtProperty *, PrivateData> &propertyMap,
-            const QtProperty *property, const Value &defaultValue = Value())
-{
-    return getData<Value>(propertyMap, &PrivateData::maxVal, property, defaultValue);
-}
-
-template <class ValueChangeParameter, class Value, class PropertyManager>
-static void setSimpleValue(QMap<const QtProperty *, Value> &propertyMap,
-            PropertyManager *manager,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            QtProperty *property, const Value &val)
-{
-    typedef QMap<const QtProperty *, Value> PropertyToData;
-    typedef typename PropertyToData::iterator PropertyToDataIterator;
-    const PropertyToDataIterator it = propertyMap.find(property);
-    if (it == propertyMap.end())
-        return;
-
-    if (it.value() == val)
-        return;
-
-    it.value() = val;
-
-    emit (manager->*propertyChangedSignal)(property);
-    emit (manager->*valueChangedSignal)(property, val);
-}
-
-template <class ValueChangeParameter, class PropertyManagerPrivate, class PropertyManager, class Value>
-static void setValueInRange(PropertyManager *manager, PropertyManagerPrivate *managerPrivate,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            QtProperty *property, const Value &val,
-            void (PropertyManagerPrivate::*setSubPropertyValue)(QtProperty *, ValueChangeParameter))
-{
-    typedef typename PropertyManagerPrivate::Data PrivateData;
-    typedef QMap<const QtProperty *, PrivateData> PropertyToData;
-    typedef typename PropertyToData::iterator PropertyToDataIterator;
-    const PropertyToDataIterator it = managerPrivate->m_values.find(property);
-    if (it == managerPrivate->m_values.end())
-        return;
-
-    PrivateData &data = it.value();
-
-    if (data.val == val)
-        return;
-
-    const Value oldVal = data.val;
-
-    data.val = qBound(data.minVal, val, data.maxVal);
-
-    if (data.val == oldVal)
-        return;
-
-    if (setSubPropertyValue)
-        (managerPrivate->*setSubPropertyValue)(property, data.val);
-
-    emit (manager->*propertyChangedSignal)(property);
-    emit (manager->*valueChangedSignal)(property, data.val);
-}
-
-template <class ValueChangeParameter, class PropertyManagerPrivate, class PropertyManager, class Value>
-static void setBorderValues(PropertyManager *manager, PropertyManagerPrivate *managerPrivate,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            void (PropertyManager::*rangeChangedSignal)(QtProperty *, ValueChangeParameter, ValueChangeParameter),
-            QtProperty *property, const Value &minVal, const Value &maxVal,
-            void (PropertyManagerPrivate::*setSubPropertyRange)(QtProperty *,
-                    ValueChangeParameter, ValueChangeParameter, ValueChangeParameter))
-{
-    typedef typename PropertyManagerPrivate::Data PrivateData;
-    typedef QMap<const QtProperty *, PrivateData> PropertyToData;
-    typedef typename PropertyToData::iterator PropertyToDataIterator;
-    const PropertyToDataIterator it = managerPrivate->m_values.find(property);
-    if (it == managerPrivate->m_values.end())
-        return;
-
-    Value fromVal = minVal;
-    Value toVal = maxVal;
-    orderBorders(fromVal, toVal);
-
-    PrivateData &data = it.value();
-
-    if (data.minVal == fromVal && data.maxVal == toVal)
-        return;
-
-    const Value oldVal = data.val;
-
-    data.setMinimumValue(fromVal);
-    data.setMaximumValue(toVal);
-
-    emit (manager->*rangeChangedSignal)(property, data.minVal, data.maxVal);
-
-    if (setSubPropertyRange)
-        (managerPrivate->*setSubPropertyRange)(property, data.minVal, data.maxVal, data.val);
-
-    if (data.val == oldVal)
-        return;
-
-    emit (manager->*propertyChangedSignal)(property);
-    emit (manager->*valueChangedSignal)(property, data.val);
-}
-
-template <class ValueChangeParameter, class PropertyManagerPrivate, class PropertyManager, class Value, class PrivateData>
-static void setBorderValue(PropertyManager *manager, PropertyManagerPrivate *managerPrivate,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            void (PropertyManager::*rangeChangedSignal)(QtProperty *, ValueChangeParameter, ValueChangeParameter),
-            QtProperty *property,
-            Value (PrivateData::*getRangeVal)() const,
-            void (PrivateData::*setRangeVal)(ValueChangeParameter), const Value &borderVal,
-            void (PropertyManagerPrivate::*setSubPropertyRange)(QtProperty *,
-                    ValueChangeParameter, ValueChangeParameter, ValueChangeParameter))
-{
-    typedef QMap<const QtProperty *, PrivateData> PropertyToData;
-    typedef typename PropertyToData::iterator PropertyToDataIterator;
-    const PropertyToDataIterator it = managerPrivate->m_values.find(property);
-    if (it == managerPrivate->m_values.end())
-        return;
-
-    PrivateData &data = it.value();
-
-    if ((data.*getRangeVal)() == borderVal)
-        return;
-
-    const Value oldVal = data.val;
-
-    (data.*setRangeVal)(borderVal);
-
-    emit (manager->*rangeChangedSignal)(property, data.minVal, data.maxVal);
-
-    if (setSubPropertyRange)
-        (managerPrivate->*setSubPropertyRange)(property, data.minVal, data.maxVal, data.val);
-
-    if (data.val == oldVal)
-        return;
-
-    emit (manager->*propertyChangedSignal)(property);
-    emit (manager->*valueChangedSignal)(property, data.val);
-}
-
-template <class ValueChangeParameter, class PropertyManagerPrivate, class PropertyManager, class Value, class PrivateData>
-static void setMinimumValue(PropertyManager *manager, PropertyManagerPrivate *managerPrivate,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            void (PropertyManager::*rangeChangedSignal)(QtProperty *, ValueChangeParameter, ValueChangeParameter),
-            QtProperty *property, const Value &minVal)
-{
-    void (PropertyManagerPrivate::*setSubPropertyRange)(QtProperty *,
-                    ValueChangeParameter, ValueChangeParameter, ValueChangeParameter) = 0;
-    setBorderValue<ValueChangeParameter, PropertyManagerPrivate, PropertyManager, Value, PrivateData>(manager, managerPrivate,
-            propertyChangedSignal, valueChangedSignal, rangeChangedSignal,
-            property, &PropertyManagerPrivate::Data::minimumValue, &PropertyManagerPrivate::Data::setMinimumValue, minVal, setSubPropertyRange);
-}
-
-template <class ValueChangeParameter, class PropertyManagerPrivate, class PropertyManager, class Value, class PrivateData>
-static void setMaximumValue(PropertyManager *manager, PropertyManagerPrivate *managerPrivate,
-            void (PropertyManager::*propertyChangedSignal)(QtProperty *),
-            void (PropertyManager::*valueChangedSignal)(QtProperty *, ValueChangeParameter),
-            void (PropertyManager::*rangeChangedSignal)(QtProperty *, ValueChangeParameter, ValueChangeParameter),
-            QtProperty *property, const Value &maxVal)
-{
-    void (PropertyManagerPrivate::*setSubPropertyRange)(QtProperty *,
-                    ValueChangeParameter, ValueChangeParameter, ValueChangeParameter) = 0;
-    setBorderValue<ValueChangeParameter, PropertyManagerPrivate, PropertyManager, Value, PrivateData>(manager, managerPrivate,
-            propertyChangedSignal, valueChangedSignal, rangeChangedSignal,
-            property, &PropertyManagerPrivate::Data::maximumValue, &PropertyManagerPrivate::Data::setMaximumValue, maxVal, setSubPropertyRange);
-}
-
-class QtMetaEnumWrapper : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(QSizePolicy::Policy policy READ policy)
-public:
-    QSizePolicy::Policy policy() const { return QSizePolicy::Ignored; }
-private:
-    QtMetaEnumWrapper(QObject *parent) : QObject(parent) {}
-};
-
-class QtMetaEnumProvider
-{
-public:
-    QtMetaEnumProvider();
-
-    QStringList policyEnumNames() const { return m_policyEnumNames; }
-    QStringList languageEnumNames() const { return m_languageEnumNames; }
-    QStringList countryEnumNames(QLocale::Language language) const { return m_countryEnumNames.value(language); }
-
-    QSizePolicy::Policy indexToSizePolicy(int index) const;
-    int sizePolicyToIndex(QSizePolicy::Policy policy) const;
-
-    void indexToLocale(int languageIndex, int countryIndex, QLocale::Language *language, QLocale::Country *country) const;
-    void localeToIndex(QLocale::Language language, QLocale::Country country, int *languageIndex, int *countryIndex) const;
-
-private:
-    void initLocale();
-
-    QStringList m_policyEnumNames;
-    QStringList m_languageEnumNames;
-    QMap<QLocale::Language, QStringList> m_countryEnumNames;
-    QMap<int, QLocale::Language> m_indexToLanguage;
-    QMap<QLocale::Language, int> m_languageToIndex;
-    QMap<int, QMap<int, QLocale::Country> > m_indexToCountry;
-    QMap<QLocale::Language, QMap<QLocale::Country, int> > m_countryToIndex;
-    QMetaEnum m_policyEnum;
-};
-
-static QList<QLocale::Country> sortCountries(const QList<QLocale::Country> &countries)
-{
-    QMultiMap<QString, QLocale::Country> nameToCountry;
-    QListIterator<QLocale::Country> itCountry(countries);
-    while (itCountry.hasNext()) {
-        QLocale::Country country = itCountry.next();
-        nameToCountry.insert(QLocale::countryToString(country), country);
-    }
-    return nameToCountry.values();
-}
-
-void QtMetaEnumProvider::initLocale()
-{
-    QMultiMap<QString, QLocale::Language> nameToLanguage;
-    QLocale::Language language = QLocale::C;
-    while (language <= QLocale::LastLanguage) {
-        QLocale locale(language);
-        if (locale.language() == language)
-            nameToLanguage.insert(QLocale::languageToString(language), language);
-        language = (QLocale::Language)((uint)language + 1); // ++language
-    }
-
-    const QLocale system = QLocale::system();
-    if (!nameToLanguage.contains(QLocale::languageToString(system.language())))
-        nameToLanguage.insert(QLocale::languageToString(system.language()), system.language());
-
-    QList<QLocale::Language> languages = nameToLanguage.values();
-    QListIterator<QLocale::Language> itLang(languages);
-    while (itLang.hasNext()) {
-        QLocale::Language language = itLang.next();
-        QList<QLocale::Country> countries;
-        countries = QLocale::countriesForLanguage(language);
-        if (countries.isEmpty() && language == system.language())
-            countries << system.country();
-
-        if (!countries.isEmpty() && !m_languageToIndex.contains(language)) {
-            countries = sortCountries(countries);
-            int langIdx = m_languageEnumNames.count();
-            m_indexToLanguage[langIdx] = language;
-            m_languageToIndex[language] = langIdx;
-            QStringList countryNames;
-            QListIterator<QLocale::Country> it(countries);
-            int countryIdx = 0;
-            while (it.hasNext()) {
-                QLocale::Country country = it.next();
-                countryNames << QLocale::countryToString(country);
-                m_indexToCountry[langIdx][countryIdx] = country;
-                m_countryToIndex[language][country] = countryIdx;
-                ++countryIdx;
-            }
-            m_languageEnumNames << QLocale::languageToString(language);
-            m_countryEnumNames[language] = countryNames;
-        }
-    }
-}
-
-QtMetaEnumProvider::QtMetaEnumProvider()
-{
-    QMetaProperty p;
-
-    p = QtMetaEnumWrapper::staticMetaObject.property(
-                QtMetaEnumWrapper::staticMetaObject.propertyOffset() + 0);
-    m_policyEnum = p.enumerator();
-    const int keyCount = m_policyEnum.keyCount();
-    for (int i = 0; i < keyCount; i++)
-        m_policyEnumNames << QLatin1String(m_policyEnum.key(i));
-
-    initLocale();
-}
-
-QSizePolicy::Policy QtMetaEnumProvider::indexToSizePolicy(int index) const
-{
-    return static_cast<QSizePolicy::Policy>(m_policyEnum.value(index));
-}
-
-int QtMetaEnumProvider::sizePolicyToIndex(QSizePolicy::Policy policy) const
-{
-     const int keyCount = m_policyEnum.keyCount();
-    for (int i = 0; i < keyCount; i++)
-        if (indexToSizePolicy(i) == policy)
-            return i;
-    return -1;
-}
-
-void QtMetaEnumProvider::indexToLocale(int languageIndex, int countryIndex, QLocale::Language *language, QLocale::Country *country) const
-{
-    QLocale::Language l = QLocale::C;
-    QLocale::Country c = QLocale::AnyCountry;
-    if (m_indexToLanguage.contains(languageIndex)) {
-        l = m_indexToLanguage[languageIndex];
-        if (m_indexToCountry.contains(languageIndex) && m_indexToCountry[languageIndex].contains(countryIndex))
-            c = m_indexToCountry[languageIndex][countryIndex];
-    }
-    if (language)
-        *language = l;
-    if (country)
-        *country = c;
-}
-
-void QtMetaEnumProvider::localeToIndex(QLocale::Language language, QLocale::Country country, int *languageIndex, int *countryIndex) const
-{
-    int l = -1;
-    int c = -1;
-    if (m_languageToIndex.contains(language)) {
-        l = m_languageToIndex[language];
-        if (m_countryToIndex.contains(language) && m_countryToIndex[language].contains(country))
-            c = m_countryToIndex[language][country];
-    }
-
-    if (languageIndex)
-        *languageIndex = l;
-    if (countryIndex)
-        *countryIndex = c;
-}
-
-Q_GLOBAL_STATIC(QtMetaEnumProvider, metaEnumProvider)
-
-// QtGroupPropertyManager
-
-/*!
-    \class QtGroupPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtGroupPropertyManager provides and manages group properties.
-
-    This class is intended to provide a grouping element without any value.
-
-    \sa QtAbstractPropertyManager
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtGroupPropertyManager::QtGroupPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent)
-{
-
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtGroupPropertyManager::~QtGroupPropertyManager()
-{
-
-}
-
-/*!
-    \reimp
-*/
-bool QtGroupPropertyManager::hasValue(const QtProperty *property) const
-{
-    Q_UNUSED(property)
-    return false;
-}
-
-/*!
-    \reimp
-*/
-void QtGroupPropertyManager::initializeProperty(QtProperty *property)
-{
-    Q_UNUSED(property)
-}
-
-/*!
-    \reimp
-*/
-void QtGroupPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    Q_UNUSED(property)
-}
-
-// QtIntPropertyManager
-
-class QtIntPropertyManagerPrivate
-{
-    QtIntPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtIntPropertyManager)
-public:
-
-    struct Data
-    {
-        Data() : val(0), minVal(-INT_MAX), maxVal(INT_MAX), singleStep(1) {}
-        int val;
-        int minVal;
-        int maxVal;
-        int singleStep;
-        int minimumValue() const { return minVal; }
-        int maximumValue() const { return maxVal; }
-        void setMinimumValue(int newMinVal) { setSimpleMinimumData(this, newMinVal); }
-        void setMaximumValue(int newMaxVal) { setSimpleMaximumData(this, newMaxVal); }
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*!
-    \class QtIntPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtIntPropertyManager provides and manages int properties.
-
-    An int property has a current value, and a range specifying the
-    valid values. The range is defined by a minimum and a maximum
-    value.
-
-    The property's value and range can be retrieved using the value(),
-    minimum() and maximum() functions, and can be set using the
-    setValue(), setMinimum() and setMaximum() slots. Alternatively,
-    the range can be defined in one go using the setRange() slot.
-
-    In addition, QtIntPropertyManager provides the valueChanged() signal which
-    is emitted whenever a property created by this manager changes,
-    and the rangeChanged() signal which is emitted whenever such a
-    property changes its range of valid values.
-
-    \sa QtAbstractPropertyManager, QtSpinBoxFactory, QtSliderFactory, QtScrollBarFactory
-*/
-
-/*!
-    \fn void QtIntPropertyManager::valueChanged(QtProperty *property, int value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtIntPropertyManager::rangeChanged(QtProperty *property, int minimum, int maximum)
-
-    This signal is emitted whenever a property created by this manager
-    changes its range of valid values, passing a pointer to the
-    \a property and the new \a minimum and \a maximum values.
-
-    \sa setRange()
-*/
-
-/*!
-    \fn void QtIntPropertyManager::singleStepChanged(QtProperty *property, int step)
-
-    This signal is emitted whenever a property created by this manager
-    changes its single step property, passing a pointer to the
-    \a property and the new \a step value
-
-    \sa setSingleStep()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtIntPropertyManager::QtIntPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtIntPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtIntPropertyManager::~QtIntPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns 0.
-
-    \sa setValue()
-*/
-int QtIntPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<int>(d_ptr->m_values, property, 0);
-}
-
-/*!
-    Returns the given \a property's minimum value.
-
-    \sa setMinimum(), maximum(), setRange()
-*/
-int QtIntPropertyManager::minimum(const QtProperty *property) const
-{
-    return getMinimum<int>(d_ptr->m_values, property, 0);
-}
-
-/*!
-    Returns the given \a property's maximum value.
-
-    \sa setMaximum(), minimum(), setRange()
-*/
-int QtIntPropertyManager::maximum(const QtProperty *property) const
-{
-    return getMaximum<int>(d_ptr->m_values, property, 0);
-}
-
-/*!
-    Returns the given \a property's step value.
-
-    The step is typically used to increment or decrement a property value while pressing an arrow key.
-
-    \sa setSingleStep()
-*/
-int QtIntPropertyManager::singleStep(const QtProperty *property) const
-{
-    return getData<int>(d_ptr->m_values, &QtIntPropertyManagerPrivate::Data::singleStep, property, 0);
-}
-
-/*!
-    \reimp
-*/
-QString QtIntPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtIntPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return QString::number(it.value().val);
-}
-
-/*!
-    \fn void QtIntPropertyManager::setValue(QtProperty *property, int value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value is not valid according to the given \a
-    property's range, the \a value is adjusted to the nearest valid
-    value within the range.
-
-    \sa value(), setRange(), valueChanged()
-*/
-void QtIntPropertyManager::setValue(QtProperty *property, int val)
-{
-    void (QtIntPropertyManagerPrivate::*setSubPropertyValue)(QtProperty *, int) = 0;
-    setValueInRange<int, QtIntPropertyManagerPrivate, QtIntPropertyManager, int>(this, d_ptr.data(),
-                &QtIntPropertyManager::propertyChanged,
-                &QtIntPropertyManager::valueChanged,
-                property, val, setSubPropertyValue);
-}
-
-/*!
-    Sets the minimum value for the given \a property to \a minVal.
-
-    When setting the minimum value, the maximum and current values are
-    adjusted if necessary (ensuring that the range remains valid and
-    that the current value is within the range).
-
-    \sa minimum(), setRange(), rangeChanged()
-*/
-void QtIntPropertyManager::setMinimum(QtProperty *property, int minVal)
-{
-    setMinimumValue<int, QtIntPropertyManagerPrivate, QtIntPropertyManager, int, QtIntPropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtIntPropertyManager::propertyChanged,
-                &QtIntPropertyManager::valueChanged,
-                &QtIntPropertyManager::rangeChanged,
-                property, minVal);
-}
-
-/*!
-    Sets the maximum value for the given \a property to \a maxVal.
-
-    When setting maximum value, the minimum and current values are
-    adjusted if necessary (ensuring that the range remains valid and
-    that the current value is within the range).
-
-    \sa maximum(), setRange(), rangeChanged()
-*/
-void QtIntPropertyManager::setMaximum(QtProperty *property, int maxVal)
-{
-    setMaximumValue<int, QtIntPropertyManagerPrivate, QtIntPropertyManager, int, QtIntPropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtIntPropertyManager::propertyChanged,
-                &QtIntPropertyManager::valueChanged,
-                &QtIntPropertyManager::rangeChanged,
-                property, maxVal);
-}
-
-/*!
-    \fn void QtIntPropertyManager::setRange(QtProperty *property, int minimum, int maximum)
-
-    Sets the range of valid values.
-
-    This is a convenience function defining the range of valid values
-    in one go; setting the \a minimum and \a maximum values for the
-    given \a property with a single function call.
-
-    When setting a new range, the current value is adjusted if
-    necessary (ensuring that the value remains within range).
-
-    \sa setMinimum(), setMaximum(), rangeChanged()
-*/
-void QtIntPropertyManager::setRange(QtProperty *property, int minVal, int maxVal)
-{
-    void (QtIntPropertyManagerPrivate::*setSubPropertyRange)(QtProperty *, int, int, int) = 0;
-    setBorderValues<int, QtIntPropertyManagerPrivate, QtIntPropertyManager, int>(this, d_ptr.data(),
-                &QtIntPropertyManager::propertyChanged,
-                &QtIntPropertyManager::valueChanged,
-                &QtIntPropertyManager::rangeChanged,
-                property, minVal, maxVal, setSubPropertyRange);
-}
-
-/*!
-    Sets the step value for the given \a property to \a step.
-
-    The step is typically used to increment or decrement a property value while pressing an arrow key.
-
-    \sa singleStep()
-*/
-void QtIntPropertyManager::setSingleStep(QtProperty *property, int step)
-{
-    const QtIntPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtIntPropertyManagerPrivate::Data data = it.value();
-
-    if (step < 0)
-        step = 0;
-
-    if (data.singleStep == step)
-        return;
-
-    data.singleStep = step;
-
-    it.value() = data;
-
-    emit singleStepChanged(property, data.singleStep);
-}
-
-/*!
-    \reimp
-*/
-void QtIntPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtIntPropertyManagerPrivate::Data();
-}
-
-/*!
-    \reimp
-*/
-void QtIntPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtDoublePropertyManager
-
-class QtDoublePropertyManagerPrivate
-{
-    QtDoublePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtDoublePropertyManager)
-public:
-
-    struct Data
-    {
-        Data() : val(0), minVal(-DBL_MAX), maxVal(DBL_MAX), singleStep(1), decimals(2) {}
-        double val;
-        double minVal;
-        double maxVal;
-        double singleStep;
-        int decimals;
-        double minimumValue() const { return minVal; }
-        double maximumValue() const { return maxVal; }
-        void setMinimumValue(double newMinVal) { setSimpleMinimumData(this, newMinVal); }
-        void setMaximumValue(double newMaxVal) { setSimpleMaximumData(this, newMaxVal); }
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*!
-    \class QtDoublePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDoublePropertyManager provides and manages double properties.
-
-    A double property has a current value, and a range specifying the
-    valid values. The range is defined by a minimum and a maximum
-    value.
-
-    The property's value and range can be retrieved using the value(),
-    minimum() and maximum() functions, and can be set using the
-    setValue(), setMinimum() and setMaximum() slots.
-    Alternatively, the range can be defined in one go using the
-    setRange() slot.
-
-    In addition, QtDoublePropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the rangeChanged() signal which is emitted whenever
-    such a property changes its range of valid values.
-
-    \sa QtAbstractPropertyManager, QtDoubleSpinBoxFactory
-*/
-
-/*!
-    \fn void QtDoublePropertyManager::valueChanged(QtProperty *property, double value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtDoublePropertyManager::rangeChanged(QtProperty *property, double minimum, double maximum)
-
-    This signal is emitted whenever a property created by this manager
-    changes its range of valid values, passing a pointer to the
-    \a property and the new \a minimum and \a maximum values
-
-    \sa setRange()
-*/
-
-/*!
-    \fn void QtDoublePropertyManager::decimalsChanged(QtProperty *property, int prec)
-
-    This signal is emitted whenever a property created by this manager
-    changes its precision of value, passing a pointer to the
-    \a property and the new \a prec value
-
-    \sa setDecimals()
-*/
-
-/*!
-    \fn void QtDoublePropertyManager::singleStepChanged(QtProperty *property, double step)
-
-    This signal is emitted whenever a property created by this manager
-    changes its single step property, passing a pointer to the
-    \a property and the new \a step value
-
-    \sa setSingleStep()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtDoublePropertyManager::QtDoublePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtDoublePropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys  this manager, and all the properties it has created.
-*/
-QtDoublePropertyManager::~QtDoublePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns 0.
-
-    \sa setValue()
-*/
-double QtDoublePropertyManager::value(const QtProperty *property) const
-{
-    return getValue<double>(d_ptr->m_values, property, 0.0);
-}
-
-/*!
-    Returns the given \a property's minimum value.
-
-    \sa maximum(), setRange()
-*/
-double QtDoublePropertyManager::minimum(const QtProperty *property) const
-{
-    return getMinimum<double>(d_ptr->m_values, property, 0.0);
-}
-
-/*!
-    Returns the given \a property's maximum value.
-
-    \sa minimum(), setRange()
-*/
-double QtDoublePropertyManager::maximum(const QtProperty *property) const
-{
-    return getMaximum<double>(d_ptr->m_values, property, 0.0);
-}
-
-/*!
-    Returns the given \a property's step value.
-
-    The step is typically used to increment or decrement a property value while pressing an arrow key.
-
-    \sa setSingleStep()
-*/
-double QtDoublePropertyManager::singleStep(const QtProperty *property) const
-{
-    return getData<double>(d_ptr->m_values, &QtDoublePropertyManagerPrivate::Data::singleStep, property, 0);
-}
-
-/*!
-    Returns the given \a property's precision, in decimals.
-
-    \sa setDecimals()
-*/
-int QtDoublePropertyManager::decimals(const QtProperty *property) const
-{
-    return getData<int>(d_ptr->m_values, &QtDoublePropertyManagerPrivate::Data::decimals, property, 0);
-}
-
-/*!
-    \reimp
-*/
-QString QtDoublePropertyManager::valueText(const QtProperty *property) const
-{
-    const QtDoublePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return QString::number(it.value().val, 'f', it.value().decimals);
-}
-
-/*!
-    \fn void QtDoublePropertyManager::setValue(QtProperty *property, double value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value is not valid according to the given
-    \a property's range, the \a value is adjusted to the nearest valid value
-    within the range.
-
-    \sa value(), setRange(), valueChanged()
-*/
-void QtDoublePropertyManager::setValue(QtProperty *property, double val)
-{
-    void (QtDoublePropertyManagerPrivate::*setSubPropertyValue)(QtProperty *, double) = 0;
-    setValueInRange<double, QtDoublePropertyManagerPrivate, QtDoublePropertyManager, double>(this, d_ptr.data(),
-                &QtDoublePropertyManager::propertyChanged,
-                &QtDoublePropertyManager::valueChanged,
-                property, val, setSubPropertyValue);
-}
-
-/*!
-    Sets the step value for the given \a property to \a step.
-
-    The step is typically used to increment or decrement a property value while pressing an arrow key.
-
-    \sa singleStep()
-*/
-void QtDoublePropertyManager::setSingleStep(QtProperty *property, double step)
-{
-    const QtDoublePropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtDoublePropertyManagerPrivate::Data data = it.value();
-
-    if (step < 0)
-        step = 0;
-
-    if (data.singleStep == step)
-        return;
-
-    data.singleStep = step;
-
-    it.value() = data;
-
-    emit singleStepChanged(property, data.singleStep);
-}
-
-/*!
-    \fn void QtDoublePropertyManager::setDecimals(QtProperty *property, int prec)
-
-    Sets the precision of the given \a property to \a prec.
-
-    The valid decimal range is 0-13. The default is 2.
-
-    \sa decimals()
-*/
-void QtDoublePropertyManager::setDecimals(QtProperty *property, int prec)
-{
-    const QtDoublePropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtDoublePropertyManagerPrivate::Data data = it.value();
-
-    if (prec > 13)
-        prec = 13;
-    else if (prec < 0)
-        prec = 0;
-
-    if (data.decimals == prec)
-        return;
-
-    data.decimals = prec;
-
-    it.value() = data;
-
-    emit decimalsChanged(property, data.decimals);
-}
-
-/*!
-    Sets the minimum value for the given \a property to \a minVal.
-
-    When setting the minimum value, the maximum and current values are
-    adjusted if necessary (ensuring that the range remains valid and
-    that the current value is within in the range).
-
-    \sa minimum(), setRange(), rangeChanged()
-*/
-void QtDoublePropertyManager::setMinimum(QtProperty *property, double minVal)
-{
-    setMinimumValue<double, QtDoublePropertyManagerPrivate, QtDoublePropertyManager, double, QtDoublePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtDoublePropertyManager::propertyChanged,
-                &QtDoublePropertyManager::valueChanged,
-                &QtDoublePropertyManager::rangeChanged,
-                property, minVal);
-}
-
-/*!
-    Sets the maximum value for the given \a property to \a maxVal.
-
-    When setting the maximum value, the minimum and current values are
-    adjusted if necessary (ensuring that the range remains valid and
-    that the current value is within in the range).
-
-    \sa maximum(), setRange(), rangeChanged()
-*/
-void QtDoublePropertyManager::setMaximum(QtProperty *property, double maxVal)
-{
-    setMaximumValue<double, QtDoublePropertyManagerPrivate, QtDoublePropertyManager, double, QtDoublePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtDoublePropertyManager::propertyChanged,
-                &QtDoublePropertyManager::valueChanged,
-                &QtDoublePropertyManager::rangeChanged,
-                property, maxVal);
-}
-
-/*!
-    \fn void QtDoublePropertyManager::setRange(QtProperty *property, double minimum, double maximum)
-
-    Sets the range of valid values.
-
-    This is a convenience function defining the range of valid values
-    in one go; setting the \a minimum and \a maximum values for the
-    given \a property with a single function call.
-
-    When setting a new range, the current value is adjusted if
-    necessary (ensuring that the value remains within range).
-
-    \sa setMinimum(), setMaximum(), rangeChanged()
-*/
-void QtDoublePropertyManager::setRange(QtProperty *property, double minVal, double maxVal)
-{
-    void (QtDoublePropertyManagerPrivate::*setSubPropertyRange)(QtProperty *, double, double, double) = 0;
-    setBorderValues<double, QtDoublePropertyManagerPrivate, QtDoublePropertyManager, double>(this, d_ptr.data(),
-                &QtDoublePropertyManager::propertyChanged,
-                &QtDoublePropertyManager::valueChanged,
-                &QtDoublePropertyManager::rangeChanged,
-                property, minVal, maxVal, setSubPropertyRange);
-}
-
-/*!
-    \reimp
-*/
-void QtDoublePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtDoublePropertyManagerPrivate::Data();
-}
-
-/*!
-    \reimp
-*/
-void QtDoublePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtStringPropertyManager
-
-class QtStringPropertyManagerPrivate
-{
-    QtStringPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtStringPropertyManager)
-public:
-
-    struct Data
-    {
-        Data() : regExp(QString(QLatin1Char('*')),  Qt::CaseSensitive, QRegExp::Wildcard)
-        {
-        }
-        QString val;
-        QRegExp regExp;
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    QMap<const QtProperty *, Data> m_values;
-};
-
-/*!
-    \class QtStringPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtStringPropertyManager provides and manages QString properties.
-
-    A string property's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    The current value can be checked against a regular expression. To
-    set the regular expression use the setRegExp() slot, use the
-    regExp() function to retrieve the currently set expression.
-
-    In addition, QtStringPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the regExpChanged() signal which is emitted whenever
-    such a property changes its currently set regular expression.
-
-    \sa QtAbstractPropertyManager, QtLineEditFactory
-*/
-
-/*!
-    \fn void QtStringPropertyManager::valueChanged(QtProperty *property, const QString &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtStringPropertyManager::regExpChanged(QtProperty *property, const QRegExp &regExp)
-
-    This signal is emitted whenever a property created by this manager
-    changes its currenlty set regular expression, passing a pointer to
-    the \a property and the new \a regExp as parameters.
-
-    \sa setRegExp()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtStringPropertyManager::QtStringPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtStringPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtStringPropertyManager::~QtStringPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns an empty string.
-
-    \sa setValue()
-*/
-QString QtStringPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QString>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's currently set regular expression.
-
-    If the given \a property is not managed by this manager, this
-    function returns an empty expression.
-
-    \sa setRegExp()
-*/
-QRegExp QtStringPropertyManager::regExp(const QtProperty *property) const
-{
-    return getData<QRegExp>(d_ptr->m_values, &QtStringPropertyManagerPrivate::Data::regExp, property, QRegExp());
-}
-
-/*!
-    \reimp
-*/
-QString QtStringPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtStringPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return it.value().val;
-}
-
-/*!
-    \fn void QtStringPropertyManager::setValue(QtProperty *property, const QString &value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value doesn't match the given \a property's
-    regular expression, this function does nothing.
-
-    \sa value(), setRegExp(), valueChanged()
-*/
-void QtStringPropertyManager::setValue(QtProperty *property, const QString &val)
-{
-    const QtStringPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtStringPropertyManagerPrivate::Data data = it.value();
-
-    if (data.val == val)
-        return;
-
-    if (data.regExp.isValid() && !data.regExp.exactMatch(val))
-        return;
-
-    data.val = val;
-
-    it.value() = data;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the regular expression of the given \a property to \a regExp.
-
-    \sa regExp(), setValue(), regExpChanged()
-*/
-void QtStringPropertyManager::setRegExp(QtProperty *property, const QRegExp &regExp)
-{
-    const QtStringPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtStringPropertyManagerPrivate::Data data = it.value() ;
-
-    if (data.regExp == regExp)
-        return;
-
-    data.regExp = regExp;
-
-    it.value() = data;
-
-    emit regExpChanged(property, data.regExp);
-}
-
-/*!
-    \reimp
-*/
-void QtStringPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtStringPropertyManagerPrivate::Data();
-}
-
-/*!
-    \reimp
-*/
-void QtStringPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtBoolPropertyManager
-//     Return an icon containing a check box indicator
-static QIcon drawCheckBox(bool value)
-{
-    QStyleOptionButton opt;
-    opt.state |= value ? QStyle::State_On : QStyle::State_Off;
-    opt.state |= QStyle::State_Enabled;
-    const QStyle *style = QApplication::style();
-    // Figure out size of an indicator and make sure it is not scaled down in a list view item
-    // by making the pixmap as big as a list view icon and centering the indicator in it.
-    // (if it is smaller, it can't be helped)
-    const int indicatorWidth = style->pixelMetric(QStyle::PM_IndicatorWidth, &opt);
-    const int indicatorHeight = style->pixelMetric(QStyle::PM_IndicatorHeight, &opt);
-    const int listViewIconSize = indicatorWidth;
-    const int pixmapWidth = indicatorWidth;
-    const int pixmapHeight = qMax(indicatorHeight, listViewIconSize);
-
-    opt.rect = QRect(0, 0, indicatorWidth, indicatorHeight);
-    QPixmap pixmap = QPixmap(pixmapWidth, pixmapHeight);
-    pixmap.fill(Qt::transparent);
-    {
-        // Center?
-        const int xoff = (pixmapWidth  > indicatorWidth)  ? (pixmapWidth  - indicatorWidth)  / 2 : 0;
-        const int yoff = (pixmapHeight > indicatorHeight) ? (pixmapHeight - indicatorHeight) / 2 : 0;
-        QPainter painter(&pixmap);
-        painter.translate(xoff, yoff);
-        style->drawPrimitive(QStyle::PE_IndicatorCheckBox, &opt, &painter);
-    }
-    return QIcon(pixmap);
-}
-
-class QtBoolPropertyManagerPrivate
-{
-    QtBoolPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtBoolPropertyManager)
-public:
-    QtBoolPropertyManagerPrivate();
-
-    QMap<const QtProperty *, bool> m_values;
-    const QIcon m_checkedIcon;
-    const QIcon m_uncheckedIcon;
-};
-
-QtBoolPropertyManagerPrivate::QtBoolPropertyManagerPrivate() :
-    m_checkedIcon(drawCheckBox(true)),
-    m_uncheckedIcon(drawCheckBox(false))
-{
-}
-
-/*!
-    \class QtBoolPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtBoolPropertyManager class provides and manages boolean properties.
-
-    The property's value can be retrieved using the value() function,
-    and set using the setValue() slot.
-
-    In addition, QtBoolPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager, QtCheckBoxFactory
-*/
-
-/*!
-    \fn void QtBoolPropertyManager::valueChanged(QtProperty *property, bool value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtBoolPropertyManager::QtBoolPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtBoolPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtBoolPropertyManager::~QtBoolPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by \e this manager, this
-    function returns false.
-
-    \sa setValue()
-*/
-bool QtBoolPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, false);
-}
-
-/*!
-    \reimp
-*/
-QString QtBoolPropertyManager::valueText(const QtProperty *property) const
-{
-    const QMap<const QtProperty *, bool>::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    static const QString trueText = tr("True");
-    static const QString falseText = tr("False");
-    return it.value() ? trueText : falseText;
-}
-
-/*!
-    \reimp
-*/
-QIcon QtBoolPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QMap<const QtProperty *, bool>::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QIcon();
-
-    return it.value() ? d_ptr->m_checkedIcon : d_ptr->m_uncheckedIcon;
-}
-
-/*!
-    \fn void QtBoolPropertyManager::setValue(QtProperty *property, bool value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value()
-*/
-void QtBoolPropertyManager::setValue(QtProperty *property, bool val)
-{
-    setSimpleValue<bool, bool, QtBoolPropertyManager>(d_ptr->m_values, this,
-                &QtBoolPropertyManager::propertyChanged,
-                &QtBoolPropertyManager::valueChanged,
-                property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtBoolPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = false;
-}
-
-/*!
-    \reimp
-*/
-void QtBoolPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtDatePropertyManager
-
-class QtDatePropertyManagerPrivate
-{
-    QtDatePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtDatePropertyManager)
-public:
-    explicit QtDatePropertyManagerPrivate(QtDatePropertyManager *q);
-
-    struct Data
-    {
-        Data() : val(QDate::currentDate()), minVal(QDate(1752, 9, 14)),
-                maxVal(QDate(7999, 12, 31)) {}
-        QDate val;
-        QDate minVal;
-        QDate maxVal;
-        QDate minimumValue() const { return minVal; }
-        QDate maximumValue() const { return maxVal; }
-        void setMinimumValue(const QDate &newMinVal) { setSimpleMinimumData(this, newMinVal); }
-        void setMaximumValue(const QDate &newMaxVal) { setSimpleMaximumData(this, newMaxVal); }
-    };
-
-    QString m_format;
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    QMap<const QtProperty *, Data> m_values;
-};
-
-QtDatePropertyManagerPrivate::QtDatePropertyManagerPrivate(QtDatePropertyManager *q) :
-    q_ptr(q),
-    m_format(QtPropertyBrowserUtils::dateFormat())
-{
-}
-
-/*!
-    \class QtDatePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDatePropertyManager provides and manages QDate properties.
-
-    A date property has a current value, and a range specifying the
-    valid dates. The range is defined by a minimum and a maximum
-    value.
-
-    The property's values can be retrieved using the minimum(),
-    maximum() and value() functions, and can be set using the
-    setMinimum(), setMaximum() and setValue() slots. Alternatively,
-    the range can be defined in one go using the setRange() slot.
-
-    In addition, QtDatePropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the rangeChanged() signal which is emitted whenever
-    such a property changes its range of valid dates.
-
-    \sa QtAbstractPropertyManager, QtDateEditFactory, QtDateTimePropertyManager
-*/
-
-/*!
-    \fn void QtDatePropertyManager::valueChanged(QtProperty *property, const QDate &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtDatePropertyManager::rangeChanged(QtProperty *property, const QDate &minimum, const QDate &maximum)
-
-    This signal is emitted whenever a property created by this manager
-    changes its range of valid dates, passing a pointer to the \a
-    property and the new \a minimum and \a maximum dates.
-
-    \sa setRange()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtDatePropertyManager::QtDatePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtDatePropertyManagerPrivate(this))
-{
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtDatePropertyManager::~QtDatePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by \e this manager, this
-    function returns an invalid date.
-
-    \sa setValue()
-*/
-QDate QtDatePropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QDate>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a  property's  minimum date.
-
-    \sa maximum(), setRange()
-*/
-QDate QtDatePropertyManager::minimum(const QtProperty *property) const
-{
-    return getMinimum<QDate>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's maximum date.
-
-    \sa minimum(), setRange()
-*/
-QDate QtDatePropertyManager::maximum(const QtProperty *property) const
-{
-    return getMaximum<QDate>(d_ptr->m_values, property);
-}
-
-/*!
-    \reimp
-*/
-QString QtDatePropertyManager::valueText(const QtProperty *property) const
-{
-    const QtDatePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return it.value().val.toString(d_ptr->m_format);
-}
-
-/*!
-    \fn void QtDatePropertyManager::setValue(QtProperty *property, const QDate &value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value is not a valid date according to the
-    given \a property's range, the value is adjusted to the nearest
-    valid value within the range.
-
-    \sa value(), setRange(), valueChanged()
-*/
-void QtDatePropertyManager::setValue(QtProperty *property, const QDate &val)
-{
-    void (QtDatePropertyManagerPrivate::*setSubPropertyValue)(QtProperty *, const QDate &) = 0;
-    setValueInRange<const QDate &, QtDatePropertyManagerPrivate, QtDatePropertyManager, const QDate>(this, d_ptr.data(),
-                &QtDatePropertyManager::propertyChanged,
-                &QtDatePropertyManager::valueChanged,
-                property, val, setSubPropertyValue);
-}
-
-/*!
-    Sets the minimum value for the given \a property to \a minVal.
-
-    When setting the minimum value, the maximum and current values are
-    adjusted if necessary (ensuring that the range remains valid and
-    that the current value is within in the range).
-
-    \sa minimum(), setRange()
-*/
-void QtDatePropertyManager::setMinimum(QtProperty *property, const QDate &minVal)
-{
-    setMinimumValue<const QDate &, QtDatePropertyManagerPrivate, QtDatePropertyManager, QDate, QtDatePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtDatePropertyManager::propertyChanged,
-                &QtDatePropertyManager::valueChanged,
-                &QtDatePropertyManager::rangeChanged,
-                property, minVal);
-}
-
-/*!
-    Sets the maximum value for the given \a property to \a maxVal.
-
-    When setting the maximum value, the minimum and current
-    values are adjusted if necessary (ensuring that the range remains
-    valid and that the current value is within in the range).
-
-    \sa maximum(), setRange()
-*/
-void QtDatePropertyManager::setMaximum(QtProperty *property, const QDate &maxVal)
-{
-    setMaximumValue<const QDate &, QtDatePropertyManagerPrivate, QtDatePropertyManager, QDate, QtDatePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtDatePropertyManager::propertyChanged,
-                &QtDatePropertyManager::valueChanged,
-                &QtDatePropertyManager::rangeChanged,
-                property, maxVal);
-}
-
-/*!
-    \fn void QtDatePropertyManager::setRange(QtProperty *property, const QDate &minimum, const QDate &maximum)
-
-    Sets the range of valid dates.
-
-    This is a convenience function defining the range of valid dates
-    in one go; setting the \a minimum and \a maximum values for the
-    given \a property with a single function call.
-
-    When setting a new date range, the current value is adjusted if
-    necessary (ensuring that the value remains in date range).
-
-    \sa setMinimum(), setMaximum(), rangeChanged()
-*/
-void QtDatePropertyManager::setRange(QtProperty *property, const QDate &minVal, const QDate &maxVal)
-{
-    void (QtDatePropertyManagerPrivate::*setSubPropertyRange)(QtProperty *, const QDate &,
-          const QDate &, const QDate &) = 0;
-    setBorderValues<const QDate &, QtDatePropertyManagerPrivate, QtDatePropertyManager, QDate>(this, d_ptr.data(),
-                &QtDatePropertyManager::propertyChanged,
-                &QtDatePropertyManager::valueChanged,
-                &QtDatePropertyManager::rangeChanged,
-                property, minVal, maxVal, setSubPropertyRange);
-}
-
-/*!
-    \reimp
-*/
-void QtDatePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtDatePropertyManagerPrivate::Data();
-}
-
-/*!
-    \reimp
-*/
-void QtDatePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtTimePropertyManager
-
-class QtTimePropertyManagerPrivate
-{
-    QtTimePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtTimePropertyManager)
-public:
-    explicit QtTimePropertyManagerPrivate(QtTimePropertyManager *q);
-
-    const QString m_format;
-
-    typedef QMap<const QtProperty *, QTime> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-QtTimePropertyManagerPrivate::QtTimePropertyManagerPrivate(QtTimePropertyManager *q) :
-    q_ptr(q),
-    m_format(QtPropertyBrowserUtils::timeFormat())
-{
-}
-
-/*!
-    \class QtTimePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtTimePropertyManager provides and manages QTime properties.
-
-    A time property's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    In addition, QtTimePropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager, QtTimeEditFactory
-*/
-
-/*!
-    \fn void QtTimePropertyManager::valueChanged(QtProperty *property, const QTime &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtTimePropertyManager::QtTimePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtTimePropertyManagerPrivate(this))
-{
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtTimePropertyManager::~QtTimePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns an invalid time object.
-
-    \sa setValue()
-*/
-QTime QtTimePropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QTime());
-}
-
-/*!
-    \reimp
-*/
-QString QtTimePropertyManager::valueText(const QtProperty *property) const
-{
-   const QtTimePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return it.value().toString(d_ptr->m_format);
-}
-
-/*!
-    \fn void QtTimePropertyManager::setValue(QtProperty *property, const QTime &value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value(), valueChanged()
-*/
-void QtTimePropertyManager::setValue(QtProperty *property, const QTime &val)
-{
-    setSimpleValue<const QTime &, QTime, QtTimePropertyManager>(d_ptr->m_values, this,
-                &QtTimePropertyManager::propertyChanged,
-                &QtTimePropertyManager::valueChanged,
-                property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtTimePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QTime::currentTime();
-}
-
-/*!
-    \reimp
-*/
-void QtTimePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtDateTimePropertyManager
-
-class QtDateTimePropertyManagerPrivate
-{
-    QtDateTimePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtDateTimePropertyManager)
-public:
-    explicit QtDateTimePropertyManagerPrivate(QtDateTimePropertyManager *q);
-
-    const QString m_format;
-
-    typedef QMap<const QtProperty *, QDateTime> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-QtDateTimePropertyManagerPrivate::QtDateTimePropertyManagerPrivate(QtDateTimePropertyManager *q) :
-    q_ptr(q),
-    m_format(QtPropertyBrowserUtils::dateTimeFormat())
-{
-}
-
-/*! \class QtDateTimePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtDateTimePropertyManager provides and manages QDateTime properties.
-
-    A date and time property has a current value which can be
-    retrieved using the value() function, and set using the setValue()
-    slot. In addition, QtDateTimePropertyManager provides the
-    valueChanged() signal which is emitted whenever a property created
-    by this manager changes.
-
-    \sa QtAbstractPropertyManager, QtDateTimeEditFactory, QtDatePropertyManager
-*/
-
-/*!
-    \fn void QtDateTimePropertyManager::valueChanged(QtProperty *property, const QDateTime &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtDateTimePropertyManager::QtDateTimePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtDateTimePropertyManagerPrivate(this))
-{
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtDateTimePropertyManager::~QtDateTimePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid QDateTime object.
-
-    \sa setValue()
-*/
-QDateTime QtDateTimePropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QDateTime());
-}
-
-/*!
-    \reimp
-*/
-QString QtDateTimePropertyManager::valueText(const QtProperty *property) const
-{
-   const QtDateTimePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return it.value().toString(d_ptr->m_format);
-}
-
-/*!
-    \fn void QtDateTimePropertyManager::setValue(QtProperty *property, const QDateTime &value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value(), valueChanged()
-*/
-void QtDateTimePropertyManager::setValue(QtProperty *property, const QDateTime &val)
-{
-    setSimpleValue<const QDateTime &, QDateTime, QtDateTimePropertyManager>(d_ptr->m_values, this,
-                &QtDateTimePropertyManager::propertyChanged,
-                &QtDateTimePropertyManager::valueChanged,
-                property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtDateTimePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QDateTime::currentDateTime();
-}
-
-/*!
-    \reimp
-*/
-void QtDateTimePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtKeySequencePropertyManager
-
-class QtKeySequencePropertyManagerPrivate
-{
-    QtKeySequencePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtKeySequencePropertyManager)
-public:
-
-    QString m_format;
-
-    typedef QMap<const QtProperty *, QKeySequence> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*! \class QtKeySequencePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtKeySequencePropertyManager provides and manages QKeySequence properties.
-
-    A key sequence's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    In addition, QtKeySequencePropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager
-*/
-
-/*!
-    \fn void QtKeySequencePropertyManager::valueChanged(QtProperty *property, const QKeySequence &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtKeySequencePropertyManager::QtKeySequencePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtKeySequencePropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtKeySequencePropertyManager::~QtKeySequencePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an empty QKeySequence object.
-
-    \sa setValue()
-*/
-QKeySequence QtKeySequencePropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QKeySequence());
-}
-
-/*!
-    \reimp
-*/
-QString QtKeySequencePropertyManager::valueText(const QtProperty *property) const
-{
-    const QtKeySequencePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    return it.value().toString(QKeySequence::NativeText);
-}
-
-/*!
-    \fn void QtKeySequencePropertyManager::setValue(QtProperty *property, const QKeySequence &value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value(), valueChanged()
-*/
-void QtKeySequencePropertyManager::setValue(QtProperty *property, const QKeySequence &val)
-{
-    setSimpleValue<const QKeySequence &, QKeySequence, QtKeySequencePropertyManager>(d_ptr->m_values, this,
-                &QtKeySequencePropertyManager::propertyChanged,
-                &QtKeySequencePropertyManager::valueChanged,
-                property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtKeySequencePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QKeySequence();
-}
-
-/*!
-    \reimp
-*/
-void QtKeySequencePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtCharPropertyManager
-
-class QtCharPropertyManagerPrivate
-{
-    QtCharPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtCharPropertyManager)
-public:
-
-    typedef QMap<const QtProperty *, QChar> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*! \class QtCharPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtCharPropertyManager provides and manages QChar properties.
-
-    A char's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    In addition, QtCharPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager
-*/
-
-/*!
-    \fn void QtCharPropertyManager::valueChanged(QtProperty *property, const QChar &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtCharPropertyManager::QtCharPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtCharPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtCharPropertyManager::~QtCharPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an null QChar object.
-
-    \sa setValue()
-*/
-QChar QtCharPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QChar());
-}
-
-/*!
-    \reimp
-*/
-QString QtCharPropertyManager::valueText(const QtProperty *property) const
-{
-   const QtCharPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QChar c = it.value();
-    return c.isNull() ? QString() : QString(c);
-}
-
-/*!
-    \fn void QtCharPropertyManager::setValue(QtProperty *property, const QChar &value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value(), valueChanged()
-*/
-void QtCharPropertyManager::setValue(QtProperty *property, const QChar &val)
-{
-    setSimpleValue<const QChar &, QChar, QtCharPropertyManager>(d_ptr->m_values, this,
-                &QtCharPropertyManager::propertyChanged,
-                &QtCharPropertyManager::valueChanged,
-                property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtCharPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QChar();
-}
-
-/*!
-    \reimp
-*/
-void QtCharPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtLocalePropertyManager
-
-class QtLocalePropertyManagerPrivate
-{
-    QtLocalePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtLocalePropertyManager)
-public:
-
-    QtLocalePropertyManagerPrivate();
-
-    void slotEnumChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    typedef QMap<const QtProperty *, QLocale> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtEnumPropertyManager *m_enumPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToLanguage;
-    QMap<const QtProperty *, QtProperty *> m_propertyToCountry;
-
-    QMap<const QtProperty *, QtProperty *> m_languageToProperty;
-    QMap<const QtProperty *, QtProperty *> m_countryToProperty;
-};
-
-QtLocalePropertyManagerPrivate::QtLocalePropertyManagerPrivate()
-{
-}
-
-void QtLocalePropertyManagerPrivate::slotEnumChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_languageToProperty.value(property, 0)) {
-        const QLocale loc = m_values[prop];
-        QLocale::Language newLanguage = loc.language();
-        QLocale::Country newCountry = loc.country();
-        metaEnumProvider()->indexToLocale(value, 0, &newLanguage, 0);
-        QLocale newLoc(newLanguage, newCountry);
-        q_ptr->setValue(prop, newLoc);
-    } else if (QtProperty *prop = m_countryToProperty.value(property, 0)) {
-        const QLocale loc = m_values[prop];
-        QLocale::Language newLanguage = loc.language();
-        QLocale::Country newCountry = loc.country();
-        metaEnumProvider()->indexToLocale(m_enumPropertyManager->value(m_propertyToLanguage.value(prop)), value, &newLanguage, &newCountry);
-        QLocale newLoc(newLanguage, newCountry);
-        q_ptr->setValue(prop, newLoc);
-    }
-}
-
-void QtLocalePropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *subProp = m_languageToProperty.value(property, 0)) {
-        m_propertyToLanguage[subProp] = 0;
-        m_languageToProperty.remove(property);
-    } else if (QtProperty *subProp = m_countryToProperty.value(property, 0)) {
-        m_propertyToCountry[subProp] = 0;
-        m_countryToProperty.remove(property);
-    }
-}
-
-/*!
-    \class QtLocalePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtLocalePropertyManager provides and manages QLocale properties.
-
-    A locale property has nested \e language and \e country
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by QtEnumPropertyManager object.
-    These submanager can be retrieved using the subEnumPropertyManager()
-    function. In order to provide editing widgets for the subproperties
-    in a property browser widget, this manager must be associated with editor factory.
-
-    In addition, QtLocalePropertyManager provides the valueChanged()
-    signal which is emitted whenever a property created by this
-    manager changes.
-
-    \sa QtAbstractPropertyManager, QtEnumPropertyManager
-*/
-
-/*!
-    \fn void QtLocalePropertyManager::valueChanged(QtProperty *property, const QLocale &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtLocalePropertyManager::QtLocalePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtLocalePropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_enumPropertyManager = new QtEnumPropertyManager(this);
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotEnumChanged(QtProperty*,int)));
-
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtLocalePropertyManager::~QtLocalePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e language
-    and \e country subproperties.
-
-    In order to provide editing widgets for the mentioned subproperties
-    in a property browser widget, this manager must be associated with
-    an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtEnumPropertyManager *QtLocalePropertyManager::subEnumPropertyManager() const
-{
-    return d_ptr->m_enumPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns the default locale.
-
-    \sa setValue()
-*/
-QLocale QtLocalePropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QLocale());
-}
-
-/*!
-    \reimp
-*/
-QString QtLocalePropertyManager::valueText(const QtProperty *property) const
-{
-    const QtLocalePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    const QLocale loc = it.value();
-
-    int langIdx = 0;
-    int countryIdx = 0;
-    const QtMetaEnumProvider *me = metaEnumProvider();
-    me->localeToIndex(loc.language(), loc.country(), &langIdx, &countryIdx);
-    if (langIdx < 0) {
-        qWarning("QtLocalePropertyManager::valueText: Unknown language %d", loc.language());
-        return tr("<Invalid>");
-    }
-    const QString languageName = me->languageEnumNames().at(langIdx);
-    if (countryIdx < 0) {
-        qWarning("QtLocalePropertyManager::valueText: Unknown country %d for %s", loc.country(), qPrintable(languageName));
-        return languageName;
-    }
-    const QString countryName = me->countryEnumNames(loc.language()).at(countryIdx);
-    return tr("%1, %2").arg(languageName, countryName);
-}
-
-/*!
-    \fn void QtLocalePropertyManager::setValue(QtProperty *property, const QLocale &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtLocalePropertyManager::setValue(QtProperty *property, const QLocale &val)
-{
-    const QtLocalePropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    const QLocale loc = it.value();
-    if (loc == val)
-        return;
-
-    it.value() = val;
-
-    int langIdx = 0;
-    int countryIdx = 0;
-    metaEnumProvider()->localeToIndex(val.language(), val.country(), &langIdx, &countryIdx);
-    if (loc.language() != val.language()) {
-        d_ptr->m_enumPropertyManager->setValue(d_ptr->m_propertyToLanguage.value(property), langIdx);
-        d_ptr->m_enumPropertyManager->setEnumNames(d_ptr->m_propertyToCountry.value(property),
-                    metaEnumProvider()->countryEnumNames(val.language()));
-    }
-    d_ptr->m_enumPropertyManager->setValue(d_ptr->m_propertyToCountry.value(property), countryIdx);
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtLocalePropertyManager::initializeProperty(QtProperty *property)
-{
-    QLocale val;
-    d_ptr->m_values[property] = val;
-
-    int langIdx = 0;
-    int countryIdx = 0;
-    metaEnumProvider()->localeToIndex(val.language(), val.country(), &langIdx, &countryIdx);
-
-    QtProperty *languageProp = d_ptr->m_enumPropertyManager->addProperty();
-    languageProp->setPropertyName(tr("Language"));
-    d_ptr->m_enumPropertyManager->setEnumNames(languageProp, metaEnumProvider()->languageEnumNames());
-    d_ptr->m_enumPropertyManager->setValue(languageProp, langIdx);
-    d_ptr->m_propertyToLanguage[property] = languageProp;
-    d_ptr->m_languageToProperty[languageProp] = property;
-    property->addSubProperty(languageProp);
-
-    QtProperty *countryProp = d_ptr->m_enumPropertyManager->addProperty();
-    countryProp->setPropertyName(tr("Country"));
-    d_ptr->m_enumPropertyManager->setEnumNames(countryProp, metaEnumProvider()->countryEnumNames(val.language()));
-    d_ptr->m_enumPropertyManager->setValue(countryProp, countryIdx);
-    d_ptr->m_propertyToCountry[property] = countryProp;
-    d_ptr->m_countryToProperty[countryProp] = property;
-    property->addSubProperty(countryProp);
-}
-
-/*!
-    \reimp
-*/
-void QtLocalePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *languageProp = d_ptr->m_propertyToLanguage[property];
-    if (languageProp) {
-        d_ptr->m_languageToProperty.remove(languageProp);
-        delete languageProp;
-    }
-    d_ptr->m_propertyToLanguage.remove(property);
-
-    QtProperty *countryProp = d_ptr->m_propertyToCountry[property];
-    if (countryProp) {
-        d_ptr->m_countryToProperty.remove(countryProp);
-        delete countryProp;
-    }
-    d_ptr->m_propertyToCountry.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtPointPropertyManager
-
-class QtPointPropertyManagerPrivate
-{
-    QtPointPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtPointPropertyManager)
-public:
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    typedef QMap<const QtProperty *, QPoint> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToX;
-    QMap<const QtProperty *, QtProperty *> m_propertyToY;
-
-    QMap<const QtProperty *, QtProperty *> m_xToProperty;
-    QMap<const QtProperty *, QtProperty *> m_yToProperty;
-};
-
-void QtPointPropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (QtProperty *xprop = m_xToProperty.value(property, 0)) {
-        QPoint p = m_values[xprop];
-        p.setX(value);
-        q_ptr->setValue(xprop, p);
-    } else if (QtProperty *yprop = m_yToProperty.value(property, 0)) {
-        QPoint p = m_values[yprop];
-        p.setY(value);
-        q_ptr->setValue(yprop, p);
-    }
-}
-
-void QtPointPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_xToProperty.value(property, 0)) {
-        m_propertyToX[pointProp] = 0;
-        m_xToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_yToProperty.value(property, 0)) {
-        m_propertyToY[pointProp] = 0;
-        m_yToProperty.remove(property);
-    }
-}
-
-/*! \class QtPointPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtPointPropertyManager provides and manages QPoint properties.
-
-    A point property has nested \e x and \e y subproperties. The
-    top-level property's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    The subproperties are created by a QtIntPropertyManager object. This
-    manager can be retrieved using the subIntPropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    In addition, QtPointPropertyManager provides the valueChanged() signal which
-    is emitted whenever a property created by this manager changes.
-
-    \sa QtAbstractPropertyManager, QtIntPropertyManager, QtPointFPropertyManager
-*/
-
-/*!
-    \fn void QtPointPropertyManager::valueChanged(QtProperty *property, const QPoint &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtPointPropertyManager::QtPointPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtPointPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtPointPropertyManager::~QtPointPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e x and \e y
-    subproperties.
-
-    In order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtPointPropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns a point with coordinates (0, 0).
-
-    \sa setValue()
-*/
-QPoint QtPointPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QPoint());
-}
-
-/*!
-    \reimp
-*/
-QString QtPointPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtPointPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QPoint v = it.value();
-    return tr("(%1, %2)").arg(QString::number(v.x()))
-                         .arg(QString::number(v.y()));
-}
-
-/*!
-    \fn void QtPointPropertyManager::setValue(QtProperty *property, const QPoint &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtPointPropertyManager::setValue(QtProperty *property, const QPoint &val)
-{
-    const QtPointPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    if (it.value() == val)
-        return;
-
-    it.value() = val;
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToX[property], val.x());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToY[property], val.y());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtPointPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QPoint(0, 0);
-
-    QtProperty *xProp = d_ptr->m_intPropertyManager->addProperty();
-    xProp->setPropertyName(tr("X"));
-    d_ptr->m_intPropertyManager->setValue(xProp, 0);
-    d_ptr->m_propertyToX[property] = xProp;
-    d_ptr->m_xToProperty[xProp] = property;
-    property->addSubProperty(xProp);
-
-    QtProperty *yProp = d_ptr->m_intPropertyManager->addProperty();
-    yProp->setPropertyName(tr("Y"));
-    d_ptr->m_intPropertyManager->setValue(yProp, 0);
-    d_ptr->m_propertyToY[property] = yProp;
-    d_ptr->m_yToProperty[yProp] = property;
-    property->addSubProperty(yProp);
-}
-
-/*!
-    \reimp
-*/
-void QtPointPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *xProp = d_ptr->m_propertyToX[property];
-    if (xProp) {
-        d_ptr->m_xToProperty.remove(xProp);
-        delete xProp;
-    }
-    d_ptr->m_propertyToX.remove(property);
-
-    QtProperty *yProp = d_ptr->m_propertyToY[property];
-    if (yProp) {
-        d_ptr->m_yToProperty.remove(yProp);
-        delete yProp;
-    }
-    d_ptr->m_propertyToY.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtPointFPropertyManager
-
-class QtPointFPropertyManagerPrivate
-{
-    QtPointFPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtPointFPropertyManager)
-public:
-
-    struct Data
-    {
-        Data() : decimals(2) {}
-        QPointF val;
-        int decimals;
-    };
-
-    void slotDoubleChanged(QtProperty *property, double value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtDoublePropertyManager *m_doublePropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToX;
-    QMap<const QtProperty *, QtProperty *> m_propertyToY;
-
-    QMap<const QtProperty *, QtProperty *> m_xToProperty;
-    QMap<const QtProperty *, QtProperty *> m_yToProperty;
-};
-
-void QtPointFPropertyManagerPrivate::slotDoubleChanged(QtProperty *property, double value)
-{
-    if (QtProperty *prop = m_xToProperty.value(property, 0)) {
-        QPointF p = m_values[prop].val;
-        p.setX(value);
-        q_ptr->setValue(prop, p);
-    } else if (QtProperty *prop = m_yToProperty.value(property, 0)) {
-        QPointF p = m_values[prop].val;
-        p.setY(value);
-        q_ptr->setValue(prop, p);
-    }
-}
-
-void QtPointFPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp  = m_xToProperty.value(property, 0)) {
-        m_propertyToX[pointProp] = 0;
-        m_xToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_yToProperty.value(property, 0)) {
-        m_propertyToY[pointProp] = 0;
-        m_yToProperty.remove(property);
-    }
-}
-
-/*! \class QtPointFPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtPointFPropertyManager provides and manages QPointF properties.
-
-    A point property has nested \e x and \e y subproperties. The
-    top-level property's value can be retrieved using the value()
-    function, and set using the setValue() slot.
-
-    The subproperties are created by a QtDoublePropertyManager object. This
-    manager can be retrieved using the subDoublePropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    In addition, QtPointFPropertyManager provides the valueChanged() signal which
-    is emitted whenever a property created by this manager changes.
-
-    \sa QtAbstractPropertyManager, QtDoublePropertyManager, QtPointPropertyManager
-*/
-
-/*!
-    \fn void QtPointFPropertyManager::valueChanged(QtProperty *property, const QPointF &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtPointFPropertyManager::decimalsChanged(QtProperty *property, int prec)
-
-    This signal is emitted whenever a property created by this manager
-    changes its precision of value, passing a pointer to the
-    \a property and the new \a prec value
-
-    \sa setDecimals()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtPointFPropertyManager::QtPointFPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtPointFPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_doublePropertyManager = new QtDoublePropertyManager(this);
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotDoubleChanged(QtProperty*,double)));
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtPointFPropertyManager::~QtPointFPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e x and \e y
-    subproperties.
-
-    In order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtDoublePropertyManager *QtPointFPropertyManager::subDoublePropertyManager() const
-{
-    return d_ptr->m_doublePropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns a point with coordinates (0, 0).
-
-    \sa setValue()
-*/
-QPointF QtPointFPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QPointF>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's precision, in decimals.
-
-    \sa setDecimals()
-*/
-int QtPointFPropertyManager::decimals(const QtProperty *property) const
-{
-    return getData<int>(d_ptr->m_values, &QtPointFPropertyManagerPrivate::Data::decimals, property, 0);
-}
-
-/*!
-    \reimp
-*/
-QString QtPointFPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtPointFPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QPointF v = it.value().val;
-    const int dec =  it.value().decimals;
-    return tr("(%1, %2)").arg(QString::number(v.x(), 'f', dec))
-                         .arg(QString::number(v.y(), 'f', dec));
-}
-
-/*!
-    \fn void QtPointFPropertyManager::setValue(QtProperty *property, const QPointF &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtPointFPropertyManager::setValue(QtProperty *property, const QPointF &val)
-{
-    const QtPointFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    if (it.value().val == val)
-        return;
-
-    it.value().val = val;
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToX[property], val.x());
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToY[property], val.y());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \fn void QtPointFPropertyManager::setDecimals(QtProperty *property, int prec)
-
-    Sets the precision of the given \a property to \a prec.
-
-    The valid decimal range is 0-13. The default is 2.
-
-    \sa decimals()
-*/
-void QtPointFPropertyManager::setDecimals(QtProperty *property, int prec)
-{
-    const QtPointFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtPointFPropertyManagerPrivate::Data data = it.value();
-
-    if (prec > 13)
-        prec = 13;
-    else if (prec < 0)
-        prec = 0;
-
-    if (data.decimals == prec)
-        return;
-
-    data.decimals = prec;
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToX[property], prec);
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToY[property], prec);
-
-    it.value() = data;
-
-    emit decimalsChanged(property, data.decimals);
-}
-
-/*!
-    \reimp
-*/
-void QtPointFPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtPointFPropertyManagerPrivate::Data();
-
-    QtProperty *xProp = d_ptr->m_doublePropertyManager->addProperty();
-    xProp->setPropertyName(tr("X"));
-    d_ptr->m_doublePropertyManager->setDecimals(xProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(xProp, 0);
-    d_ptr->m_propertyToX[property] = xProp;
-    d_ptr->m_xToProperty[xProp] = property;
-    property->addSubProperty(xProp);
-
-    QtProperty *yProp = d_ptr->m_doublePropertyManager->addProperty();
-    yProp->setPropertyName(tr("Y"));
-    d_ptr->m_doublePropertyManager->setDecimals(yProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(yProp, 0);
-    d_ptr->m_propertyToY[property] = yProp;
-    d_ptr->m_yToProperty[yProp] = property;
-    property->addSubProperty(yProp);
-}
-
-/*!
-    \reimp
-*/
-void QtPointFPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *xProp = d_ptr->m_propertyToX[property];
-    if (xProp) {
-        d_ptr->m_xToProperty.remove(xProp);
-        delete xProp;
-    }
-    d_ptr->m_propertyToX.remove(property);
-
-    QtProperty *yProp = d_ptr->m_propertyToY[property];
-    if (yProp) {
-        d_ptr->m_yToProperty.remove(yProp);
-        delete yProp;
-    }
-    d_ptr->m_propertyToY.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtSizePropertyManager
-
-class QtSizePropertyManagerPrivate
-{
-    QtSizePropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtSizePropertyManager)
-public:
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-    void setValue(QtProperty *property, const QSize &val);
-    void setRange(QtProperty *property,
-                const QSize &minVal, const QSize &maxVal, const QSize &val);
-
-    struct Data
-    {
-        Data() : val(QSize(0, 0)), minVal(QSize(0, 0)), maxVal(QSize(INT_MAX, INT_MAX)) {}
-        QSize val;
-        QSize minVal;
-        QSize maxVal;
-        QSize minimumValue() const { return minVal; }
-        QSize maximumValue() const { return maxVal; }
-        void setMinimumValue(const QSize &newMinVal) { setSizeMinimumData(this, newMinVal); }
-        void setMaximumValue(const QSize &newMaxVal) { setSizeMaximumData(this, newMaxVal); }
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToW;
-    QMap<const QtProperty *, QtProperty *> m_propertyToH;
-
-    QMap<const QtProperty *, QtProperty *> m_wToProperty;
-    QMap<const QtProperty *, QtProperty *> m_hToProperty;
-};
-
-void QtSizePropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_wToProperty.value(property, 0)) {
-        QSize s = m_values[prop].val;
-        s.setWidth(value);
-        q_ptr->setValue(prop, s);
-    } else if (QtProperty *prop = m_hToProperty.value(property, 0)) {
-        QSize s = m_values[prop].val;
-        s.setHeight(value);
-        q_ptr->setValue(prop, s);
-    }
-}
-
-void QtSizePropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_wToProperty.value(property, 0)) {
-        m_propertyToW[pointProp] = 0;
-        m_wToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_hToProperty.value(property, 0)) {
-        m_propertyToH[pointProp] = 0;
-        m_hToProperty.remove(property);
-    }
-}
-
-void QtSizePropertyManagerPrivate::setValue(QtProperty *property, const QSize &val)
-{
-    m_intPropertyManager->setValue(m_propertyToW.value(property), val.width());
-    m_intPropertyManager->setValue(m_propertyToH.value(property), val.height());
-}
-
-void QtSizePropertyManagerPrivate::setRange(QtProperty *property,
-                const QSize &minVal, const QSize &maxVal, const QSize &val)
-{
-    QtProperty *wProperty = m_propertyToW.value(property);
-    QtProperty *hProperty = m_propertyToH.value(property);
-    m_intPropertyManager->setRange(wProperty, minVal.width(), maxVal.width());
-    m_intPropertyManager->setValue(wProperty, val.width());
-    m_intPropertyManager->setRange(hProperty, minVal.height(), maxVal.height());
-    m_intPropertyManager->setValue(hProperty, val.height());
-}
-
-/*!
-    \class QtSizePropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtSizePropertyManager provides and manages QSize properties.
-
-    A size property has nested \e width and \e height
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by a QtIntPropertyManager object. This
-    manager can be retrieved using the subIntPropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    A size property also has a range of valid values defined by a
-    minimum size and a maximum size. These sizes can be retrieved
-    using the minimum() and the maximum() functions, and set using the
-    setMinimum() and setMaximum() slots. Alternatively, the range can
-    be defined in one go using the setRange() slot.
-
-    In addition, QtSizePropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the rangeChanged() signal which is emitted whenever
-    such a property changes its range of valid sizes.
-
-    \sa QtAbstractPropertyManager, QtIntPropertyManager, QtSizeFPropertyManager
-*/
-
-/*!
-    \fn void QtSizePropertyManager::valueChanged(QtProperty *property, const QSize &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtSizePropertyManager::rangeChanged(QtProperty *property, const QSize &minimum, const QSize &maximum)
-
-    This signal is emitted whenever a property created by this manager
-    changes its range of valid sizes, passing a pointer to the \a
-    property and the new \a minimum and \a maximum sizes.
-
-    \sa setRange()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtSizePropertyManager::QtSizePropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtSizePropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtSizePropertyManager::~QtSizePropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e width and \e height
-    subproperties.
-
-    In order to provide editing widgets for the \e width and \e height
-    properties in a property browser widget, this manager must be
-    associated with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtSizePropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid size
-
-    \sa setValue()
-*/
-QSize QtSizePropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QSize>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's minimum size value.
-
-    \sa setMinimum(), maximum(), setRange()
-*/
-QSize QtSizePropertyManager::minimum(const QtProperty *property) const
-{
-    return getMinimum<QSize>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's maximum size value.
-
-    \sa setMaximum(), minimum(), setRange()
-*/
-QSize QtSizePropertyManager::maximum(const QtProperty *property) const
-{
-    return getMaximum<QSize>(d_ptr->m_values, property);
-}
-
-/*!
-    \reimp
-*/
-QString QtSizePropertyManager::valueText(const QtProperty *property) const
-{
-    const QtSizePropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QSize v = it.value().val;
-    return tr("%1 x %2").arg(QString::number(v.width()))
-                        .arg(QString::number(v.height()));
-}
-
-/*!
-    \fn void QtSizePropertyManager::setValue(QtProperty *property, const QSize &value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value is not valid according to the given \a
-    property's size range, the \a value is adjusted to the nearest
-    valid value within the size range.
-
-    \sa value(), setRange(), valueChanged()
-*/
-void QtSizePropertyManager::setValue(QtProperty *property, const QSize &val)
-{
-    setValueInRange<const QSize &, QtSizePropertyManagerPrivate, QtSizePropertyManager, const QSize>(this, d_ptr.data(),
-                &QtSizePropertyManager::propertyChanged,
-                &QtSizePropertyManager::valueChanged,
-                property, val, &QtSizePropertyManagerPrivate::setValue);
-}
-
-/*!
-    Sets the minimum size value for the given \a property to \a minVal.
-
-    When setting the minimum size value, the maximum and current
-    values are adjusted if necessary (ensuring that the size range
-    remains valid and that the current value is within the range).
-
-    \sa minimum(), setRange(), rangeChanged()
-*/
-void QtSizePropertyManager::setMinimum(QtProperty *property, const QSize &minVal)
-{
-    setBorderValue<const QSize &, QtSizePropertyManagerPrivate, QtSizePropertyManager, QSize, QtSizePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtSizePropertyManager::propertyChanged,
-                &QtSizePropertyManager::valueChanged,
-                &QtSizePropertyManager::rangeChanged,
-                property,
-                &QtSizePropertyManagerPrivate::Data::minimumValue,
-                &QtSizePropertyManagerPrivate::Data::setMinimumValue,
-                minVal, &QtSizePropertyManagerPrivate::setRange);
-}
-
-/*!
-    Sets the maximum size value for the given \a property to \a maxVal.
-
-    When setting the maximum size value, the minimum and current
-    values are adjusted if necessary (ensuring that the size range
-    remains valid and that the current value is within the range).
-
-    \sa maximum(), setRange(), rangeChanged()
-*/
-void QtSizePropertyManager::setMaximum(QtProperty *property, const QSize &maxVal)
-{
-    setBorderValue<const QSize &, QtSizePropertyManagerPrivate, QtSizePropertyManager, QSize, QtSizePropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtSizePropertyManager::propertyChanged,
-                &QtSizePropertyManager::valueChanged,
-                &QtSizePropertyManager::rangeChanged,
-                property,
-                &QtSizePropertyManagerPrivate::Data::maximumValue,
-                &QtSizePropertyManagerPrivate::Data::setMaximumValue,
-                maxVal, &QtSizePropertyManagerPrivate::setRange);
-}
-
-/*!
-    \fn void QtSizePropertyManager::setRange(QtProperty *property, const QSize &minimum, const QSize &maximum)
-
-    Sets the range of valid values.
-
-    This is a convenience function defining the range of valid values
-    in one go; setting the \a minimum and \a maximum values for the
-    given \a property with a single function call.
-
-    When setting a new range, the current value is adjusted if
-    necessary (ensuring that the value remains within the range).
-
-    \sa setMinimum(), setMaximum(), rangeChanged()
-*/
-void QtSizePropertyManager::setRange(QtProperty *property, const QSize &minVal, const QSize &maxVal)
-{
-    setBorderValues<const QSize &, QtSizePropertyManagerPrivate, QtSizePropertyManager, QSize>(this, d_ptr.data(),
-                &QtSizePropertyManager::propertyChanged,
-                &QtSizePropertyManager::valueChanged,
-                &QtSizePropertyManager::rangeChanged,
-                property, minVal, maxVal, &QtSizePropertyManagerPrivate::setRange);
-}
-
-/*!
-    \reimp
-*/
-void QtSizePropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtSizePropertyManagerPrivate::Data();
-
-    QtProperty *wProp = d_ptr->m_intPropertyManager->addProperty();
-    wProp->setPropertyName(tr("Width"));
-    d_ptr->m_intPropertyManager->setValue(wProp, 0);
-    d_ptr->m_intPropertyManager->setMinimum(wProp, 0);
-    d_ptr->m_propertyToW[property] = wProp;
-    d_ptr->m_wToProperty[wProp] = property;
-    property->addSubProperty(wProp);
-
-    QtProperty *hProp = d_ptr->m_intPropertyManager->addProperty();
-    hProp->setPropertyName(tr("Height"));
-    d_ptr->m_intPropertyManager->setValue(hProp, 0);
-    d_ptr->m_intPropertyManager->setMinimum(hProp, 0);
-    d_ptr->m_propertyToH[property] = hProp;
-    d_ptr->m_hToProperty[hProp] = property;
-    property->addSubProperty(hProp);
-}
-
-/*!
-    \reimp
-*/
-void QtSizePropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *wProp = d_ptr->m_propertyToW[property];
-    if (wProp) {
-        d_ptr->m_wToProperty.remove(wProp);
-        delete wProp;
-    }
-    d_ptr->m_propertyToW.remove(property);
-
-    QtProperty *hProp = d_ptr->m_propertyToH[property];
-    if (hProp) {
-        d_ptr->m_hToProperty.remove(hProp);
-        delete hProp;
-    }
-    d_ptr->m_propertyToH.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtSizeFPropertyManager
-
-class QtSizeFPropertyManagerPrivate
-{
-    QtSizeFPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtSizeFPropertyManager)
-public:
-
-    void slotDoubleChanged(QtProperty *property, double value);
-    void slotPropertyDestroyed(QtProperty *property);
-    void setValue(QtProperty *property, const QSizeF &val);
-    void setRange(QtProperty *property,
-                const QSizeF &minVal, const QSizeF &maxVal, const QSizeF &val);
-
-    struct Data
-    {
-        Data() : val(QSizeF(0, 0)), minVal(QSizeF(0, 0)), maxVal(QSizeF(INT_MAX, INT_MAX)), decimals(2) {}
-        QSizeF val;
-        QSizeF minVal;
-        QSizeF maxVal;
-        int decimals;
-        QSizeF minimumValue() const { return minVal; }
-        QSizeF maximumValue() const { return maxVal; }
-        void setMinimumValue(const QSizeF &newMinVal) { setSizeMinimumData(this, newMinVal); }
-        void setMaximumValue(const QSizeF &newMaxVal) { setSizeMaximumData(this, newMaxVal); }
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtDoublePropertyManager *m_doublePropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToW;
-    QMap<const QtProperty *, QtProperty *> m_propertyToH;
-
-    QMap<const QtProperty *, QtProperty *> m_wToProperty;
-    QMap<const QtProperty *, QtProperty *> m_hToProperty;
-};
-
-void QtSizeFPropertyManagerPrivate::slotDoubleChanged(QtProperty *property, double value)
-{
-    if (QtProperty *prop = m_wToProperty.value(property, 0)) {
-        QSizeF s = m_values[prop].val;
-        s.setWidth(value);
-        q_ptr->setValue(prop, s);
-    } else if (QtProperty *prop = m_hToProperty.value(property, 0)) {
-        QSizeF s = m_values[prop].val;
-        s.setHeight(value);
-        q_ptr->setValue(prop, s);
-    }
-}
-
-void QtSizeFPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_wToProperty.value(property, 0)) {
-        m_propertyToW[pointProp] = 0;
-        m_wToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_hToProperty.value(property, 0)) {
-        m_propertyToH[pointProp] = 0;
-        m_hToProperty.remove(property);
-    }
-}
-
-void QtSizeFPropertyManagerPrivate::setValue(QtProperty *property, const QSizeF &val)
-{
-    m_doublePropertyManager->setValue(m_propertyToW.value(property), val.width());
-    m_doublePropertyManager->setValue(m_propertyToH.value(property), val.height());
-}
-
-void QtSizeFPropertyManagerPrivate::setRange(QtProperty *property,
-                const QSizeF &minVal, const QSizeF &maxVal, const QSizeF &val)
-{
-    m_doublePropertyManager->setRange(m_propertyToW[property], minVal.width(), maxVal.width());
-    m_doublePropertyManager->setValue(m_propertyToW[property], val.width());
-    m_doublePropertyManager->setRange(m_propertyToH[property], minVal.height(), maxVal.height());
-    m_doublePropertyManager->setValue(m_propertyToH[property], val.height());
-}
-
-/*!
-    \class QtSizeFPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtSizeFPropertyManager provides and manages QSizeF properties.
-
-    A size property has nested \e width and \e height
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by a QtDoublePropertyManager object. This
-    manager can be retrieved using the subDoublePropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    A size property also has a range of valid values defined by a
-    minimum size and a maximum size. These sizes can be retrieved
-    using the minimum() and the maximum() functions, and set using the
-    setMinimum() and setMaximum() slots. Alternatively, the range can
-    be defined in one go using the setRange() slot.
-
-    In addition, QtSizeFPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the rangeChanged() signal which is emitted whenever
-    such a property changes its range of valid sizes.
-
-    \sa QtAbstractPropertyManager, QtDoublePropertyManager, QtSizePropertyManager
-*/
-
-/*!
-    \fn void QtSizeFPropertyManager::valueChanged(QtProperty *property, const QSizeF &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtSizeFPropertyManager::rangeChanged(QtProperty *property, const QSizeF &minimum, const QSizeF &maximum)
-
-    This signal is emitted whenever a property created by this manager
-    changes its range of valid sizes, passing a pointer to the \a
-    property and the new \a minimum and \a maximum sizes.
-
-    \sa setRange()
-*/
-
-/*!
-    \fn void QtSizeFPropertyManager::decimalsChanged(QtProperty *property, int prec)
-
-    This signal is emitted whenever a property created by this manager
-    changes its precision of value, passing a pointer to the
-    \a property and the new \a prec value
-
-    \sa setDecimals()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtSizeFPropertyManager::QtSizeFPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtSizeFPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_doublePropertyManager = new QtDoublePropertyManager(this);
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotDoubleChanged(QtProperty*,double)));
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtSizeFPropertyManager::~QtSizeFPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e width and \e height
-    subproperties.
-
-    In order to provide editing widgets for the \e width and \e height
-    properties in a property browser widget, this manager must be
-    associated with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtDoublePropertyManager *QtSizeFPropertyManager::subDoublePropertyManager() const
-{
-    return d_ptr->m_doublePropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid size
-
-    \sa setValue()
-*/
-QSizeF QtSizeFPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QSizeF>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's precision, in decimals.
-
-    \sa setDecimals()
-*/
-int QtSizeFPropertyManager::decimals(const QtProperty *property) const
-{
-    return getData<int>(d_ptr->m_values, &QtSizeFPropertyManagerPrivate::Data::decimals, property, 0);
-}
-
-/*!
-    Returns the given \a property's minimum size value.
-
-    \sa setMinimum(), maximum(), setRange()
-*/
-QSizeF QtSizeFPropertyManager::minimum(const QtProperty *property) const
-{
-    return getMinimum<QSizeF>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's maximum size value.
-
-    \sa setMaximum(), minimum(), setRange()
-*/
-QSizeF QtSizeFPropertyManager::maximum(const QtProperty *property) const
-{
-    return getMaximum<QSizeF>(d_ptr->m_values, property);
-}
-
-/*!
-    \reimp
-*/
-QString QtSizeFPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtSizeFPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QSizeF v = it.value().val;
-    const int dec = it.value().decimals;
-    return tr("%1 x %2").arg(QString::number(v.width(), 'f', dec))
-                        .arg(QString::number(v.height(), 'f', dec));
-}
-
-/*!
-    \fn void QtSizeFPropertyManager::setValue(QtProperty *property, const QSizeF &value)
-
-    Sets the value of the given \a property to \a value.
-
-    If the specified \a value is not valid according to the given \a
-    property's size range, the \a value is adjusted to the nearest
-    valid value within the size range.
-
-    \sa value(), setRange(), valueChanged()
-*/
-void QtSizeFPropertyManager::setValue(QtProperty *property, const QSizeF &val)
-{
-    setValueInRange<const QSizeF &, QtSizeFPropertyManagerPrivate, QtSizeFPropertyManager, QSizeF>(this, d_ptr.data(),
-                &QtSizeFPropertyManager::propertyChanged,
-                &QtSizeFPropertyManager::valueChanged,
-                property, val, &QtSizeFPropertyManagerPrivate::setValue);
-}
-
-/*!
-    \fn void QtSizeFPropertyManager::setDecimals(QtProperty *property, int prec)
-
-    Sets the precision of the given \a property to \a prec.
-
-    The valid decimal range is 0-13. The default is 2.
-
-    \sa decimals()
-*/
-void QtSizeFPropertyManager::setDecimals(QtProperty *property, int prec)
-{
-    const QtSizeFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtSizeFPropertyManagerPrivate::Data data = it.value();
-
-    if (prec > 13)
-        prec = 13;
-    else if (prec < 0)
-        prec = 0;
-
-    if (data.decimals == prec)
-        return;
-
-    data.decimals = prec;
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToW[property], prec);
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToH[property], prec);
-
-    it.value() = data;
-
-    emit decimalsChanged(property, data.decimals);
-}
-
-/*!
-    Sets the minimum size value for the given \a property to \a minVal.
-
-    When setting the minimum size value, the maximum and current
-    values are adjusted if necessary (ensuring that the size range
-    remains valid and that the current value is within the range).
-
-    \sa minimum(), setRange(), rangeChanged()
-*/
-void QtSizeFPropertyManager::setMinimum(QtProperty *property, const QSizeF &minVal)
-{
-    setBorderValue<const QSizeF &, QtSizeFPropertyManagerPrivate, QtSizeFPropertyManager, QSizeF, QtSizeFPropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtSizeFPropertyManager::propertyChanged,
-                &QtSizeFPropertyManager::valueChanged,
-                &QtSizeFPropertyManager::rangeChanged,
-                property,
-                &QtSizeFPropertyManagerPrivate::Data::minimumValue,
-                &QtSizeFPropertyManagerPrivate::Data::setMinimumValue,
-                minVal, &QtSizeFPropertyManagerPrivate::setRange);
-}
-
-/*!
-    Sets the maximum size value for the given \a property to \a maxVal.
-
-    When setting the maximum size value, the minimum and current
-    values are adjusted if necessary (ensuring that the size range
-    remains valid and that the current value is within the range).
-
-    \sa maximum(), setRange(), rangeChanged()
-*/
-void QtSizeFPropertyManager::setMaximum(QtProperty *property, const QSizeF &maxVal)
-{
-    setBorderValue<const QSizeF &, QtSizeFPropertyManagerPrivate, QtSizeFPropertyManager, QSizeF, QtSizeFPropertyManagerPrivate::Data>(this, d_ptr.data(),
-                &QtSizeFPropertyManager::propertyChanged,
-                &QtSizeFPropertyManager::valueChanged,
-                &QtSizeFPropertyManager::rangeChanged,
-                property,
-                &QtSizeFPropertyManagerPrivate::Data::maximumValue,
-                &QtSizeFPropertyManagerPrivate::Data::setMaximumValue,
-                maxVal, &QtSizeFPropertyManagerPrivate::setRange);
-}
-
-/*!
-    \fn void QtSizeFPropertyManager::setRange(QtProperty *property, const QSizeF &minimum, const QSizeF &maximum)
-
-    Sets the range of valid values.
-
-    This is a convenience function defining the range of valid values
-    in one go; setting the \a minimum and \a maximum values for the
-    given \a property with a single function call.
-
-    When setting a new range, the current value is adjusted if
-    necessary (ensuring that the value remains within the range).
-
-    \sa setMinimum(), setMaximum(), rangeChanged()
-*/
-void QtSizeFPropertyManager::setRange(QtProperty *property, const QSizeF &minVal, const QSizeF &maxVal)
-{
-    setBorderValues<const QSizeF &, QtSizeFPropertyManagerPrivate, QtSizeFPropertyManager, QSizeF>(this, d_ptr.data(),
-                &QtSizeFPropertyManager::propertyChanged,
-                &QtSizeFPropertyManager::valueChanged,
-                &QtSizeFPropertyManager::rangeChanged,
-                property, minVal, maxVal, &QtSizeFPropertyManagerPrivate::setRange);
-}
-
-/*!
-    \reimp
-*/
-void QtSizeFPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtSizeFPropertyManagerPrivate::Data();
-
-    QtProperty *wProp = d_ptr->m_doublePropertyManager->addProperty();
-    wProp->setPropertyName(tr("Width"));
-    d_ptr->m_doublePropertyManager->setDecimals(wProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(wProp, 0);
-    d_ptr->m_doublePropertyManager->setMinimum(wProp, 0);
-    d_ptr->m_propertyToW[property] = wProp;
-    d_ptr->m_wToProperty[wProp] = property;
-    property->addSubProperty(wProp);
-
-    QtProperty *hProp = d_ptr->m_doublePropertyManager->addProperty();
-    hProp->setPropertyName(tr("Height"));
-    d_ptr->m_doublePropertyManager->setDecimals(hProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(hProp, 0);
-    d_ptr->m_doublePropertyManager->setMinimum(hProp, 0);
-    d_ptr->m_propertyToH[property] = hProp;
-    d_ptr->m_hToProperty[hProp] = property;
-    property->addSubProperty(hProp);
-}
-
-/*!
-    \reimp
-*/
-void QtSizeFPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *wProp = d_ptr->m_propertyToW[property];
-    if (wProp) {
-        d_ptr->m_wToProperty.remove(wProp);
-        delete wProp;
-    }
-    d_ptr->m_propertyToW.remove(property);
-
-    QtProperty *hProp = d_ptr->m_propertyToH[property];
-    if (hProp) {
-        d_ptr->m_hToProperty.remove(hProp);
-        delete hProp;
-    }
-    d_ptr->m_propertyToH.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtRectPropertyManager
-
-class QtRectPropertyManagerPrivate
-{
-    QtRectPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtRectPropertyManager)
-public:
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-    void setConstraint(QtProperty *property, const QRect &constraint, const QRect &val);
-
-    struct Data
-    {
-        Data() : val(0, 0, 0, 0) {}
-        QRect val;
-        QRect constraint;
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToX;
-    QMap<const QtProperty *, QtProperty *> m_propertyToY;
-    QMap<const QtProperty *, QtProperty *> m_propertyToW;
-    QMap<const QtProperty *, QtProperty *> m_propertyToH;
-
-    QMap<const QtProperty *, QtProperty *> m_xToProperty;
-    QMap<const QtProperty *, QtProperty *> m_yToProperty;
-    QMap<const QtProperty *, QtProperty *> m_wToProperty;
-    QMap<const QtProperty *, QtProperty *> m_hToProperty;
-};
-
-void QtRectPropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_xToProperty.value(property, 0)) {
-        QRect r = m_values[prop].val;
-        r.moveLeft(value);
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_yToProperty.value(property)) {
-        QRect r = m_values[prop].val;
-        r.moveTop(value);
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_wToProperty.value(property, 0)) {
-        Data data = m_values[prop];
-        QRect r = data.val;
-        r.setWidth(value);
-        if (!data.constraint.isNull() && data.constraint.x() + data.constraint.width() < r.x() + r.width()) {
-            r.moveLeft(data.constraint.left() + data.constraint.width() - r.width());
-        }
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_hToProperty.value(property, 0)) {
-        Data data = m_values[prop];
-        QRect r = data.val;
-        r.setHeight(value);
-        if (!data.constraint.isNull() && data.constraint.y() + data.constraint.height() < r.y() + r.height()) {
-            r.moveTop(data.constraint.top() + data.constraint.height() - r.height());
-        }
-        q_ptr->setValue(prop, r);
-    }
-}
-
-void QtRectPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_xToProperty.value(property, 0)) {
-        m_propertyToX[pointProp] = 0;
-        m_xToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_yToProperty.value(property, 0)) {
-        m_propertyToY[pointProp] = 0;
-        m_yToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_wToProperty.value(property, 0)) {
-        m_propertyToW[pointProp] = 0;
-        m_wToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_hToProperty.value(property, 0)) {
-        m_propertyToH[pointProp] = 0;
-        m_hToProperty.remove(property);
-    }
-}
-
-void QtRectPropertyManagerPrivate::setConstraint(QtProperty *property,
-            const QRect &constraint, const QRect &val)
-{
-    const bool isNull = constraint.isNull();
-    const int left   = isNull ? INT_MIN : constraint.left();
-    const int right  = isNull ? INT_MAX : constraint.left() + constraint.width();
-    const int top    = isNull ? INT_MIN : constraint.top();
-    const int bottom = isNull ? INT_MAX : constraint.top() + constraint.height();
-    const int width  = isNull ? INT_MAX : constraint.width();
-    const int height = isNull ? INT_MAX : constraint.height();
-
-    m_intPropertyManager->setRange(m_propertyToX[property], left, right);
-    m_intPropertyManager->setRange(m_propertyToY[property], top, bottom);
-    m_intPropertyManager->setRange(m_propertyToW[property], 0, width);
-    m_intPropertyManager->setRange(m_propertyToH[property], 0, height);
-
-    m_intPropertyManager->setValue(m_propertyToX[property], val.x());
-    m_intPropertyManager->setValue(m_propertyToY[property], val.y());
-    m_intPropertyManager->setValue(m_propertyToW[property], val.width());
-    m_intPropertyManager->setValue(m_propertyToH[property], val.height());
-}
-
-/*!
-    \class QtRectPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtRectPropertyManager provides and manages QRect properties.
-
-    A rectangle property has nested \e x, \e y, \e width and \e height
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by a QtIntPropertyManager object. This
-    manager can be retrieved using the subIntPropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    A rectangle property also has a constraint rectangle which can be
-    retrieved using the constraint() function, and set using the
-    setConstraint() slot.
-
-    In addition, QtRectPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the constraintChanged() signal which is emitted
-    whenever such a property changes its constraint rectangle.
-
-    \sa QtAbstractPropertyManager, QtIntPropertyManager, QtRectFPropertyManager
-*/
-
-/*!
-    \fn void QtRectPropertyManager::valueChanged(QtProperty *property, const QRect &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtRectPropertyManager::constraintChanged(QtProperty *property, const QRect &constraint)
-
-    This signal is emitted whenever property changes its constraint
-    rectangle, passing a pointer to the \a property and the new \a
-    constraint rectangle as parameters.
-
-    \sa setConstraint()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtRectPropertyManager::QtRectPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtRectPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtRectPropertyManager::~QtRectPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e x, \e y, \e width
-    and \e height subproperties.
-
-    In order to provide editing widgets for the mentioned
-    subproperties in a property browser widget, this manager must be
-    associated with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtRectPropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid rectangle.
-
-    \sa setValue(), constraint()
-*/
-QRect QtRectPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QRect>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's constraining rectangle. If returned value is null QRect it means there is no constraint applied.
-
-    \sa value(), setConstraint()
-*/
-QRect QtRectPropertyManager::constraint(const QtProperty *property) const
-{
-    return getData<QRect>(d_ptr->m_values, &QtRectPropertyManagerPrivate::Data::constraint, property, QRect());
-}
-
-/*!
-    \reimp
-*/
-QString QtRectPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtRectPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QRect v = it.value().val;
-    return tr("[(%1, %2), %3 x %4]").arg(QString::number(v.x()))
-                                    .arg(QString::number(v.y()))
-                                    .arg(QString::number(v.width()))
-                                    .arg(QString::number(v.height()));
-}
-
-/*!
-    \fn void QtRectPropertyManager::setValue(QtProperty *property, const QRect &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    If the specified \a value is not inside the given \a property's
-    constraining rectangle, the value is adjusted accordingly to fit
-    within the constraint.
-
-    \sa value(), setConstraint(), valueChanged()
-*/
-void QtRectPropertyManager::setValue(QtProperty *property, const QRect &val)
-{
-    const QtRectPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtRectPropertyManagerPrivate::Data data = it.value();
-
-    QRect newRect = val.normalized();
-    if (!data.constraint.isNull() && !data.constraint.contains(newRect)) {
-        const QRect r1 = data.constraint;
-        const QRect r2 = newRect;
-        newRect.setLeft(qMax(r1.left(), r2.left()));
-        newRect.setRight(qMin(r1.right(), r2.right()));
-        newRect.setTop(qMax(r1.top(), r2.top()));
-        newRect.setBottom(qMin(r1.bottom(), r2.bottom()));
-        if (newRect.width() < 0 || newRect.height() < 0)
-            return;
-    }
-
-    if (data.val == newRect)
-        return;
-
-    data.val = newRect;
-
-    it.value() = data;
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToX[property], newRect.x());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToY[property], newRect.y());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToW[property], newRect.width());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToH[property], newRect.height());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the given \a property's constraining rectangle to \a
-    constraint.
-
-    When setting the constraint, the current value is adjusted if
-    necessary (ensuring that the current rectangle value is inside the
-    constraint). In order to reset the constraint pass a null QRect value.
-
-    \sa setValue(), constraint(), constraintChanged()
-*/
-void QtRectPropertyManager::setConstraint(QtProperty *property, const QRect &constraint)
-{
-    const QtRectPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtRectPropertyManagerPrivate::Data data = it.value();
-
-    QRect newConstraint = constraint.normalized();
-    if (data.constraint == newConstraint)
-        return;
-
-    const QRect oldVal = data.val;
-
-    data.constraint = newConstraint;
-
-    if (!data.constraint.isNull() && !data.constraint.contains(oldVal)) {
-        QRect r1 = data.constraint;
-        QRect r2 = data.val;
-
-        if (r2.width() > r1.width())
-            r2.setWidth(r1.width());
-        if (r2.height() > r1.height())
-            r2.setHeight(r1.height());
-        if (r2.left() < r1.left())
-            r2.moveLeft(r1.left());
-        else if (r2.right() > r1.right())
-            r2.moveRight(r1.right());
-        if (r2.top() < r1.top())
-            r2.moveTop(r1.top());
-        else if (r2.bottom() > r1.bottom())
-            r2.moveBottom(r1.bottom());
-
-        data.val = r2;
-    }
-
-    it.value() = data;
-
-    emit constraintChanged(property, data.constraint);
-
-    d_ptr->setConstraint(property, data.constraint, data.val);
-
-    if (data.val == oldVal)
-        return;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    \reimp
-*/
-void QtRectPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtRectPropertyManagerPrivate::Data();
-
-    QtProperty *xProp = d_ptr->m_intPropertyManager->addProperty();
-    xProp->setPropertyName(tr("X"));
-    d_ptr->m_intPropertyManager->setValue(xProp, 0);
-    d_ptr->m_propertyToX[property] = xProp;
-    d_ptr->m_xToProperty[xProp] = property;
-    property->addSubProperty(xProp);
-
-    QtProperty *yProp = d_ptr->m_intPropertyManager->addProperty();
-    yProp->setPropertyName(tr("Y"));
-    d_ptr->m_intPropertyManager->setValue(yProp, 0);
-    d_ptr->m_propertyToY[property] = yProp;
-    d_ptr->m_yToProperty[yProp] = property;
-    property->addSubProperty(yProp);
-
-    QtProperty *wProp = d_ptr->m_intPropertyManager->addProperty();
-    wProp->setPropertyName(tr("Width"));
-    d_ptr->m_intPropertyManager->setValue(wProp, 0);
-    d_ptr->m_intPropertyManager->setMinimum(wProp, 0);
-    d_ptr->m_propertyToW[property] = wProp;
-    d_ptr->m_wToProperty[wProp] = property;
-    property->addSubProperty(wProp);
-
-    QtProperty *hProp = d_ptr->m_intPropertyManager->addProperty();
-    hProp->setPropertyName(tr("Height"));
-    d_ptr->m_intPropertyManager->setValue(hProp, 0);
-    d_ptr->m_intPropertyManager->setMinimum(hProp, 0);
-    d_ptr->m_propertyToH[property] = hProp;
-    d_ptr->m_hToProperty[hProp] = property;
-    property->addSubProperty(hProp);
-}
-
-/*!
-    \reimp
-*/
-void QtRectPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *xProp = d_ptr->m_propertyToX[property];
-    if (xProp) {
-        d_ptr->m_xToProperty.remove(xProp);
-        delete xProp;
-    }
-    d_ptr->m_propertyToX.remove(property);
-
-    QtProperty *yProp = d_ptr->m_propertyToY[property];
-    if (yProp) {
-        d_ptr->m_yToProperty.remove(yProp);
-        delete yProp;
-    }
-    d_ptr->m_propertyToY.remove(property);
-
-    QtProperty *wProp = d_ptr->m_propertyToW[property];
-    if (wProp) {
-        d_ptr->m_wToProperty.remove(wProp);
-        delete wProp;
-    }
-    d_ptr->m_propertyToW.remove(property);
-
-    QtProperty *hProp = d_ptr->m_propertyToH[property];
-    if (hProp) {
-        d_ptr->m_hToProperty.remove(hProp);
-        delete hProp;
-    }
-    d_ptr->m_propertyToH.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtRectFPropertyManager
-
-class QtRectFPropertyManagerPrivate
-{
-    QtRectFPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtRectFPropertyManager)
-public:
-
-    void slotDoubleChanged(QtProperty *property, double value);
-    void slotPropertyDestroyed(QtProperty *property);
-    void setConstraint(QtProperty *property, const QRectF &constraint, const QRectF &val);
-
-    struct Data
-    {
-        Data() : val(0, 0, 0, 0), decimals(2) {}
-        QRectF val;
-        QRectF constraint;
-        int decimals;
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtDoublePropertyManager *m_doublePropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToX;
-    QMap<const QtProperty *, QtProperty *> m_propertyToY;
-    QMap<const QtProperty *, QtProperty *> m_propertyToW;
-    QMap<const QtProperty *, QtProperty *> m_propertyToH;
-
-    QMap<const QtProperty *, QtProperty *> m_xToProperty;
-    QMap<const QtProperty *, QtProperty *> m_yToProperty;
-    QMap<const QtProperty *, QtProperty *> m_wToProperty;
-    QMap<const QtProperty *, QtProperty *> m_hToProperty;
-};
-
-void QtRectFPropertyManagerPrivate::slotDoubleChanged(QtProperty *property, double value)
-{
-    if (QtProperty *prop = m_xToProperty.value(property, 0)) {
-        QRectF r = m_values[prop].val;
-        r.moveLeft(value);
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_yToProperty.value(property, 0)) {
-        QRectF r = m_values[prop].val;
-        r.moveTop(value);
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_wToProperty.value(property, 0)) {
-        Data data = m_values[prop];
-        QRectF r = data.val;
-        r.setWidth(value);
-        if (!data.constraint.isNull() && data.constraint.x() + data.constraint.width() < r.x() + r.width()) {
-            r.moveLeft(data.constraint.left() + data.constraint.width() - r.width());
-        }
-        q_ptr->setValue(prop, r);
-    } else if (QtProperty *prop = m_hToProperty.value(property, 0)) {
-        Data data = m_values[prop];
-        QRectF r = data.val;
-        r.setHeight(value);
-        if (!data.constraint.isNull() && data.constraint.y() + data.constraint.height() < r.y() + r.height()) {
-            r.moveTop(data.constraint.top() + data.constraint.height() - r.height());
-        }
-        q_ptr->setValue(prop, r);
-    }
-}
-
-void QtRectFPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_xToProperty.value(property, 0)) {
-        m_propertyToX[pointProp] = 0;
-        m_xToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_yToProperty.value(property, 0)) {
-        m_propertyToY[pointProp] = 0;
-        m_yToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_wToProperty.value(property, 0)) {
-        m_propertyToW[pointProp] = 0;
-        m_wToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_hToProperty.value(property, 0)) {
-        m_propertyToH[pointProp] = 0;
-        m_hToProperty.remove(property);
-    }
-}
-
-void QtRectFPropertyManagerPrivate::setConstraint(QtProperty *property,
-            const QRectF &constraint, const QRectF &val)
-{
-    const bool isNull = constraint.isNull();
-    const float left   = isNull ? FLT_MIN : constraint.left();
-    const float right  = isNull ? FLT_MAX : constraint.left() + constraint.width();
-    const float top    = isNull ? FLT_MIN : constraint.top();
-    const float bottom = isNull ? FLT_MAX : constraint.top() + constraint.height();
-    const float width  = isNull ? FLT_MAX : constraint.width();
-    const float height = isNull ? FLT_MAX : constraint.height();
-
-    m_doublePropertyManager->setRange(m_propertyToX[property], left, right);
-    m_doublePropertyManager->setRange(m_propertyToY[property], top, bottom);
-    m_doublePropertyManager->setRange(m_propertyToW[property], 0, width);
-    m_doublePropertyManager->setRange(m_propertyToH[property], 0, height);
-
-    m_doublePropertyManager->setValue(m_propertyToX[property], val.x());
-    m_doublePropertyManager->setValue(m_propertyToY[property], val.y());
-    m_doublePropertyManager->setValue(m_propertyToW[property], val.width());
-    m_doublePropertyManager->setValue(m_propertyToH[property], val.height());
-}
-
-/*!
-    \class QtRectFPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtRectFPropertyManager provides and manages QRectF properties.
-
-    A rectangle property has nested \e x, \e y, \e width and \e height
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by a QtDoublePropertyManager object. This
-    manager can be retrieved using the subDoublePropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    A rectangle property also has a constraint rectangle which can be
-    retrieved using the constraint() function, and set using the
-    setConstraint() slot.
-
-    In addition, QtRectFPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the constraintChanged() signal which is emitted
-    whenever such a property changes its constraint rectangle.
-
-    \sa QtAbstractPropertyManager, QtDoublePropertyManager, QtRectPropertyManager
-*/
-
-/*!
-    \fn void QtRectFPropertyManager::valueChanged(QtProperty *property, const QRectF &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtRectFPropertyManager::constraintChanged(QtProperty *property, const QRectF &constraint)
-
-    This signal is emitted whenever property changes its constraint
-    rectangle, passing a pointer to the \a property and the new \a
-    constraint rectangle as parameters.
-
-    \sa setConstraint()
-*/
-
-/*!
-    \fn void QtRectFPropertyManager::decimalsChanged(QtProperty *property, int prec)
-
-    This signal is emitted whenever a property created by this manager
-    changes its precision of value, passing a pointer to the
-    \a property and the new \a prec value
-
-    \sa setDecimals()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtRectFPropertyManager::QtRectFPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtRectFPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_doublePropertyManager = new QtDoublePropertyManager(this);
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotDoubleChanged(QtProperty*,double)));
-    connect(d_ptr->m_doublePropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtRectFPropertyManager::~QtRectFPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e x, \e y, \e width
-    and \e height subproperties.
-
-    In order to provide editing widgets for the mentioned
-    subproperties in a property browser widget, this manager must be
-    associated with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtDoublePropertyManager *QtRectFPropertyManager::subDoublePropertyManager() const
-{
-    return d_ptr->m_doublePropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid rectangle.
-
-    \sa setValue(), constraint()
-*/
-QRectF QtRectFPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<QRectF>(d_ptr->m_values, property);
-}
-
-/*!
-    Returns the given \a property's precision, in decimals.
-
-    \sa setDecimals()
-*/
-int QtRectFPropertyManager::decimals(const QtProperty *property) const
-{
-    return getData<int>(d_ptr->m_values, &QtRectFPropertyManagerPrivate::Data::decimals, property, 0);
-}
-
-/*!
-    Returns the given \a property's constraining rectangle. If returned value is null QRectF it means there is no constraint applied.
-
-    \sa value(), setConstraint()
-*/
-QRectF QtRectFPropertyManager::constraint(const QtProperty *property) const
-{
-    return getData<QRectF>(d_ptr->m_values, &QtRectFPropertyManagerPrivate::Data::constraint, property, QRect());
-}
-
-/*!
-    \reimp
-*/
-QString QtRectFPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtRectFPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-    const QRectF v = it.value().val;
-    const int dec = it.value().decimals;
-    return QString(tr("[(%1, %2), %3 x %4]").arg(QString::number(v.x(), 'f', dec))
-                                .arg(QString::number(v.y(), 'f', dec))
-                                .arg(QString::number(v.width(), 'f', dec))
-                                .arg(QString::number(v.height(), 'f', dec)));
-}
-
-/*!
-    \fn void QtRectFPropertyManager::setValue(QtProperty *property, const QRectF &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    If the specified \a value is not inside the given \a property's
-    constraining rectangle, the value is adjusted accordingly to fit
-    within the constraint.
-
-    \sa value(), setConstraint(), valueChanged()
-*/
-void QtRectFPropertyManager::setValue(QtProperty *property, const QRectF &val)
-{
-    const QtRectFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtRectFPropertyManagerPrivate::Data data = it.value();
-
-    QRectF newRect = val.normalized();
-    if (!data.constraint.isNull() && !data.constraint.contains(newRect)) {
-        const QRectF r1 = data.constraint;
-        const QRectF r2 = newRect;
-        newRect.setLeft(qMax(r1.left(), r2.left()));
-        newRect.setRight(qMin(r1.right(), r2.right()));
-        newRect.setTop(qMax(r1.top(), r2.top()));
-        newRect.setBottom(qMin(r1.bottom(), r2.bottom()));
-        if (newRect.width() < 0 || newRect.height() < 0)
-            return;
-    }
-
-    if (data.val == newRect)
-        return;
-
-    data.val = newRect;
-
-    it.value() = data;
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToX[property], newRect.x());
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToY[property], newRect.y());
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToW[property], newRect.width());
-    d_ptr->m_doublePropertyManager->setValue(d_ptr->m_propertyToH[property], newRect.height());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the given \a property's constraining rectangle to \a
-    constraint.
-
-    When setting the constraint, the current value is adjusted if
-    necessary (ensuring that the current rectangle value is inside the
-    constraint). In order to reset the constraint pass a null QRectF value.
-
-    \sa setValue(), constraint(), constraintChanged()
-*/
-void QtRectFPropertyManager::setConstraint(QtProperty *property, const QRectF &constraint)
-{
-    const QtRectFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtRectFPropertyManagerPrivate::Data data = it.value();
-
-    QRectF newConstraint = constraint.normalized();
-    if (data.constraint == newConstraint)
-        return;
-
-    const QRectF oldVal = data.val;
-
-    data.constraint = newConstraint;
-
-    if (!data.constraint.isNull() && !data.constraint.contains(oldVal)) {
-        QRectF r1 = data.constraint;
-        QRectF r2 = data.val;
-
-        if (r2.width() > r1.width())
-            r2.setWidth(r1.width());
-        if (r2.height() > r1.height())
-            r2.setHeight(r1.height());
-        if (r2.left() < r1.left())
-            r2.moveLeft(r1.left());
-        else if (r2.right() > r1.right())
-            r2.moveRight(r1.right());
-        if (r2.top() < r1.top())
-            r2.moveTop(r1.top());
-        else if (r2.bottom() > r1.bottom())
-            r2.moveBottom(r1.bottom());
-
-        data.val = r2;
-    }
-
-    it.value() = data;
-
-    emit constraintChanged(property, data.constraint);
-
-    d_ptr->setConstraint(property, data.constraint, data.val);
-
-    if (data.val == oldVal)
-        return;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    \fn void QtRectFPropertyManager::setDecimals(QtProperty *property, int prec)
-
-    Sets the precision of the given \a property to \a prec.
-
-    The valid decimal range is 0-13. The default is 2.
-
-    \sa decimals()
-*/
-void QtRectFPropertyManager::setDecimals(QtProperty *property, int prec)
-{
-    const QtRectFPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtRectFPropertyManagerPrivate::Data data = it.value();
-
-    if (prec > 13)
-        prec = 13;
-    else if (prec < 0)
-        prec = 0;
-
-    if (data.decimals == prec)
-        return;
-
-    data.decimals = prec;
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToX[property], prec);
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToY[property], prec);
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToW[property], prec);
-    d_ptr->m_doublePropertyManager->setDecimals(d_ptr->m_propertyToH[property], prec);
-
-    it.value() = data;
-
-    emit decimalsChanged(property, data.decimals);
-}
-
-/*!
-    \reimp
-*/
-void QtRectFPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtRectFPropertyManagerPrivate::Data();
-
-    QtProperty *xProp = d_ptr->m_doublePropertyManager->addProperty();
-    xProp->setPropertyName(tr("X"));
-    d_ptr->m_doublePropertyManager->setDecimals(xProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(xProp, 0);
-    d_ptr->m_propertyToX[property] = xProp;
-    d_ptr->m_xToProperty[xProp] = property;
-    property->addSubProperty(xProp);
-
-    QtProperty *yProp = d_ptr->m_doublePropertyManager->addProperty();
-    yProp->setPropertyName(tr("Y"));
-    d_ptr->m_doublePropertyManager->setDecimals(yProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(yProp, 0);
-    d_ptr->m_propertyToY[property] = yProp;
-    d_ptr->m_yToProperty[yProp] = property;
-    property->addSubProperty(yProp);
-
-    QtProperty *wProp = d_ptr->m_doublePropertyManager->addProperty();
-    wProp->setPropertyName(tr("Width"));
-    d_ptr->m_doublePropertyManager->setDecimals(wProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(wProp, 0);
-    d_ptr->m_doublePropertyManager->setMinimum(wProp, 0);
-    d_ptr->m_propertyToW[property] = wProp;
-    d_ptr->m_wToProperty[wProp] = property;
-    property->addSubProperty(wProp);
-
-    QtProperty *hProp = d_ptr->m_doublePropertyManager->addProperty();
-    hProp->setPropertyName(tr("Height"));
-    d_ptr->m_doublePropertyManager->setDecimals(hProp, decimals(property));
-    d_ptr->m_doublePropertyManager->setValue(hProp, 0);
-    d_ptr->m_doublePropertyManager->setMinimum(hProp, 0);
-    d_ptr->m_propertyToH[property] = hProp;
-    d_ptr->m_hToProperty[hProp] = property;
-    property->addSubProperty(hProp);
-}
-
-/*!
-    \reimp
-*/
-void QtRectFPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *xProp = d_ptr->m_propertyToX[property];
-    if (xProp) {
-        d_ptr->m_xToProperty.remove(xProp);
-        delete xProp;
-    }
-    d_ptr->m_propertyToX.remove(property);
-
-    QtProperty *yProp = d_ptr->m_propertyToY[property];
-    if (yProp) {
-        d_ptr->m_yToProperty.remove(yProp);
-        delete yProp;
-    }
-    d_ptr->m_propertyToY.remove(property);
-
-    QtProperty *wProp = d_ptr->m_propertyToW[property];
-    if (wProp) {
-        d_ptr->m_wToProperty.remove(wProp);
-        delete wProp;
-    }
-    d_ptr->m_propertyToW.remove(property);
-
-    QtProperty *hProp = d_ptr->m_propertyToH[property];
-    if (hProp) {
-        d_ptr->m_hToProperty.remove(hProp);
-        delete hProp;
-    }
-    d_ptr->m_propertyToH.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtEnumPropertyManager
-
-class QtEnumPropertyManagerPrivate
-{
-    QtEnumPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtEnumPropertyManager)
-public:
-
-    struct Data
-    {
-        Data() : val(-1) {}
-        int val;
-        QStringList enumNames;
-        QMap<int, QIcon> enumIcons;
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*!
-    \class QtEnumPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtEnumPropertyManager provides and manages enum properties.
-
-    Each enum property has an associated list of enum names which can
-    be retrieved using the enumNames() function, and set using the
-    corresponding setEnumNames() function. An enum property's value is
-    represented by an index in this list, and can be retrieved and set
-    using the value() and setValue() slots respectively.
-
-    Each enum value can also have an associated icon. The mapping from
-    values to icons can be set using the setEnumIcons() function and
-    queried with the enumIcons() function.
-
-    In addition, QtEnumPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes. The enumNamesChanged() or enumIconsChanged() signal is emitted
-    whenever the list of enum names or icons is altered.
-
-    \sa QtAbstractPropertyManager, QtEnumEditorFactory
-*/
-
-/*!
-    \fn void QtEnumPropertyManager::valueChanged(QtProperty *property, int value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtEnumPropertyManager::enumNamesChanged(QtProperty *property, const QStringList &names)
-
-    This signal is emitted whenever a property created by this manager
-    changes its enum names, passing a pointer to the \a property and
-    the new \a names as parameters.
-
-    \sa setEnumNames()
-*/
-
-/*!
-    \fn void QtEnumPropertyManager::enumIconsChanged(QtProperty *property, const QMap<int, QIcon> &icons)
-
-    This signal is emitted whenever a property created by this manager
-    changes its enum icons, passing a pointer to the \a property and
-    the new mapping of values to \a icons as parameters.
-
-    \sa setEnumIcons()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtEnumPropertyManager::QtEnumPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtEnumPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtEnumPropertyManager::~QtEnumPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value which is an index in the
-    list returned by enumNames()
-
-    If the given property is not managed by this manager, this
-    function returns -1.
-
-    \sa enumNames(), setValue()
-*/
-int QtEnumPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<int>(d_ptr->m_values, property, -1);
-}
-
-/*!
-    Returns the given \a property's list of enum names.
-
-    \sa value(), setEnumNames()
-*/
-QStringList QtEnumPropertyManager::enumNames(const QtProperty *property) const
-{
-    return getData<QStringList>(d_ptr->m_values, &QtEnumPropertyManagerPrivate::Data::enumNames, property, QStringList());
-}
-
-/*!
-    Returns the given \a property's map of enum values to their icons.
-
-    \sa value(), setEnumIcons()
-*/
-QMap<int, QIcon> QtEnumPropertyManager::enumIcons(const QtProperty *property) const
-{
-    return getData<QMap<int, QIcon> >(d_ptr->m_values, &QtEnumPropertyManagerPrivate::Data::enumIcons, property, QMap<int, QIcon>());
-}
-
-/*!
-    \reimp
-*/
-QString QtEnumPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtEnumPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    const QtEnumPropertyManagerPrivate::Data &data = it.value();
-
-    const int v = data.val;
-    if (v >= 0 && v < data.enumNames.count())
-        return data.enumNames.at(v);
-    return QString();
-}
-
-/*!
-    \reimp
-*/
-QIcon QtEnumPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QtEnumPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QIcon();
-
-    const QtEnumPropertyManagerPrivate::Data &data = it.value();
-
-    const int v = data.val;
-    return data.enumIcons.value(v);
-}
-
-/*!
-    \fn void QtEnumPropertyManager::setValue(QtProperty *property, int value)
-
-    Sets the value of the given  \a property to \a value.
-
-    The specified \a value must be less than the size of the given \a
-    property's enumNames() list, and larger than (or equal to) 0.
-
-    \sa value(), valueChanged()
-*/
-void QtEnumPropertyManager::setValue(QtProperty *property, int val)
-{
-    const QtEnumPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtEnumPropertyManagerPrivate::Data data = it.value();
-
-    if (val >= data.enumNames.count())
-        return;
-
-    if (val < 0 && data.enumNames.count() > 0)
-        return;
-
-    if (val < 0)
-        val = -1;
-
-    if (data.val == val)
-        return;
-
-    data.val = val;
-
-    it.value() = data;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the given \a property's list of enum names to \a
-    enumNames. The \a property's current value is reset to 0
-    indicating the first item of the list.
-
-    If the specified \a enumNames list is empty, the \a property's
-    current value is set to -1.
-
-    \sa enumNames(), enumNamesChanged()
-*/
-void QtEnumPropertyManager::setEnumNames(QtProperty *property, const QStringList &enumNames)
-{
-    const QtEnumPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtEnumPropertyManagerPrivate::Data data = it.value();
-
-    if (data.enumNames == enumNames)
-        return;
-
-    data.enumNames = enumNames;
-
-    data.val = -1;
-
-    if (enumNames.count() > 0)
-        data.val = 0;
-
-    it.value() = data;
-
-    emit enumNamesChanged(property, data.enumNames);
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the given \a property's map of enum values to their icons to \a
-    enumIcons.
-
-    Each enum value can have associated icon. This association is represented with passed \a enumIcons map.
-
-    \sa enumNames(), enumNamesChanged()
-*/
-void QtEnumPropertyManager::setEnumIcons(QtProperty *property, const QMap<int, QIcon> &enumIcons)
-{
-    const QtEnumPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    it.value().enumIcons = enumIcons;
-
-    emit enumIconsChanged(property, it.value().enumIcons);
-
-    emit propertyChanged(property);
-}
-
-/*!
-    \reimp
-*/
-void QtEnumPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtEnumPropertyManagerPrivate::Data();
-}
-
-/*!
-    \reimp
-*/
-void QtEnumPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-// QtFlagPropertyManager
-
-class QtFlagPropertyManagerPrivate
-{
-    QtFlagPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtFlagPropertyManager)
-public:
-
-    void slotBoolChanged(QtProperty *property, bool value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    struct Data
-    {
-        Data() : val(-1) {}
-        int val;
-        QStringList flagNames;
-    };
-
-    typedef QMap<const QtProperty *, Data> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtBoolPropertyManager *m_boolPropertyManager;
-
-    QMap<const QtProperty *, QList<QtProperty *> > m_propertyToFlags;
-
-    QMap<const QtProperty *, QtProperty *> m_flagToProperty;
-};
-
-void QtFlagPropertyManagerPrivate::slotBoolChanged(QtProperty *property, bool value)
-{
-    QtProperty *prop = m_flagToProperty.value(property, 0);
-    if (prop == 0)
-        return;
-
-    QListIterator<QtProperty *> itProp(m_propertyToFlags[prop]);
-    int level = 0;
-    while (itProp.hasNext()) {
-        QtProperty *p = itProp.next();
-        if (p == property) {
-            int v = m_values[prop].val;
-            if (value) {
-                v |= (1 << level);
-            } else {
-                v &= ~(1 << level);
-            }
-            q_ptr->setValue(prop, v);
-            return;
-        }
-        level++;
-    }
-}
-
-void QtFlagPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    QtProperty *flagProperty = m_flagToProperty.value(property, 0);
-    if (flagProperty == 0)
-        return;
-
-    m_propertyToFlags[flagProperty].replace(m_propertyToFlags[flagProperty].indexOf(property), 0);
-    m_flagToProperty.remove(property);
-}
-
-/*!
-    \class QtFlagPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtFlagPropertyManager provides and manages flag properties.
-
-    Each flag property has an associated list of flag names which can
-    be retrieved using the flagNames() function, and set using the
-    corresponding setFlagNames() function.
-
-    The flag manager provides properties with nested boolean
-    subproperties representing each flag, i.e. a flag property's value
-    is the binary combination of the subproperties' values. A
-    property's value can be retrieved and set using the value() and
-    setValue() slots respectively. The combination of flags is represented
-    by single int value - that's why it's possible to store up to
-    32 independent flags in one flag property.
-
-    The subproperties are created by a QtBoolPropertyManager object. This
-    manager can be retrieved using the subBoolPropertyManager() function. In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    In addition, QtFlagPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes, and the flagNamesChanged() signal which is emitted
-    whenever the list of flag names is altered.
-
-    \sa QtAbstractPropertyManager, QtBoolPropertyManager
-*/
-
-/*!
-    \fn void QtFlagPropertyManager::valueChanged(QtProperty *property, int value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a  property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtFlagPropertyManager::flagNamesChanged(QtProperty *property, const QStringList &names)
-
-    This signal is emitted whenever a property created by this manager
-    changes its flag names, passing a pointer to the \a property and the
-    new \a names as parameters.
-
-    \sa setFlagNames()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtFlagPropertyManager::QtFlagPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtFlagPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_boolPropertyManager = new QtBoolPropertyManager(this);
-    connect(d_ptr->m_boolPropertyManager, SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotBoolChanged(QtProperty*,bool)));
-    connect(d_ptr->m_boolPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtFlagPropertyManager::~QtFlagPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that produces the nested boolean subproperties
-    representing each flag.
-
-    In order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtBoolPropertyManager *QtFlagPropertyManager::subBoolPropertyManager() const
-{
-    return d_ptr->m_boolPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns 0.
-
-    \sa flagNames(), setValue()
-*/
-int QtFlagPropertyManager::value(const QtProperty *property) const
-{
-    return getValue<int>(d_ptr->m_values, property, 0);
-}
-
-/*!
-    Returns the given \a property's list of flag names.
-
-    \sa value(), setFlagNames()
-*/
-QStringList QtFlagPropertyManager::flagNames(const QtProperty *property) const
-{
-    return getData<QStringList>(d_ptr->m_values, &QtFlagPropertyManagerPrivate::Data::flagNames, property, QStringList());
-}
-
-/*!
-    \reimp
-*/
-QString QtFlagPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtFlagPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    const QtFlagPropertyManagerPrivate::Data &data = it.value();
-
-    QString str;
-    int level = 0;
-    const QChar bar = QLatin1Char('|');
-    const QStringList::const_iterator fncend = data.flagNames.constEnd();
-    for (QStringList::const_iterator it =  data.flagNames.constBegin(); it != fncend; ++it) {
-        if (data.val & (1 << level)) {
-            if (!str.isEmpty())
-                str += bar;
-            str += *it;
-        }
-
-        level++;
-    }
-    return str;
-}
-
-/*!
-    \fn void QtFlagPropertyManager::setValue(QtProperty *property, int value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    The specified \a value must be less than the binary combination of
-    the property's flagNames() list size (i.e. less than 2\sup n,
-    where \c n is the size of the list) and larger than (or equal to)
-    0.
-
-    \sa value(), valueChanged()
-*/
-void QtFlagPropertyManager::setValue(QtProperty *property, int val)
-{
-    const QtFlagPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtFlagPropertyManagerPrivate::Data data = it.value();
-
-    if (data.val == val)
-        return;
-
-    if (val > (1 << data.flagNames.count()) - 1)
-        return;
-
-    if (val < 0)
-        return;
-
-    data.val = val;
-
-    it.value() = data;
-
-    QListIterator<QtProperty *> itProp(d_ptr->m_propertyToFlags[property]);
-    int level = 0;
-    while (itProp.hasNext()) {
-        QtProperty *prop = itProp.next();
-        if (prop)
-            d_ptr->m_boolPropertyManager->setValue(prop, val & (1 << level));
-        level++;
-    }
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    Sets the given \a property's list of flag names to \a flagNames. The
-    property's current value is reset to 0 indicating the first item
-    of the list.
-
-    \sa flagNames(), flagNamesChanged()
-*/
-void QtFlagPropertyManager::setFlagNames(QtProperty *property, const QStringList &flagNames)
-{
-    const QtFlagPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    QtFlagPropertyManagerPrivate::Data data = it.value();
-
-    if (data.flagNames == flagNames)
-        return;
-
-    data.flagNames = flagNames;
-    data.val = 0;
-
-    it.value() = data;
-
-    QListIterator<QtProperty *> itProp(d_ptr->m_propertyToFlags[property]);
-    while (itProp.hasNext()) {
-        QtProperty *prop = itProp.next();
-        if (prop) {
-            delete prop;
-            d_ptr->m_flagToProperty.remove(prop);
-        }
-    }
-    d_ptr->m_propertyToFlags[property].clear();
-
-    QStringListIterator itFlag(flagNames);
-    while (itFlag.hasNext()) {
-        const QString flagName = itFlag.next();
-        QtProperty *prop = d_ptr->m_boolPropertyManager->addProperty();
-        prop->setPropertyName(flagName);
-        property->addSubProperty(prop);
-        d_ptr->m_propertyToFlags[property].append(prop);
-        d_ptr->m_flagToProperty[prop] = property;
-    }
-
-    emit flagNamesChanged(property, data.flagNames);
-
-    emit propertyChanged(property);
-    emit valueChanged(property, data.val);
-}
-
-/*!
-    \reimp
-*/
-void QtFlagPropertyManager::initializeProperty(QtProperty *property)
-{
-    d_ptr->m_values[property] = QtFlagPropertyManagerPrivate::Data();
-
-    d_ptr->m_propertyToFlags[property] = QList<QtProperty *>();
-}
-
-/*!
-    \reimp
-*/
-void QtFlagPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QListIterator<QtProperty *> itProp(d_ptr->m_propertyToFlags[property]);
-    while (itProp.hasNext()) {
-        QtProperty *prop = itProp.next();
-        if (prop) {
-            delete prop;
-            d_ptr->m_flagToProperty.remove(prop);
-        }
-    }
-    d_ptr->m_propertyToFlags.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtSizePolicyPropertyManager
-
-class QtSizePolicyPropertyManagerPrivate
-{
-    QtSizePolicyPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtSizePolicyPropertyManager)
-public:
-
-    QtSizePolicyPropertyManagerPrivate();
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotEnumChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    typedef QMap<const QtProperty *, QSizePolicy> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-    QtEnumPropertyManager *m_enumPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToHPolicy;
-    QMap<const QtProperty *, QtProperty *> m_propertyToVPolicy;
-    QMap<const QtProperty *, QtProperty *> m_propertyToHStretch;
-    QMap<const QtProperty *, QtProperty *> m_propertyToVStretch;
-
-    QMap<const QtProperty *, QtProperty *> m_hPolicyToProperty;
-    QMap<const QtProperty *, QtProperty *> m_vPolicyToProperty;
-    QMap<const QtProperty *, QtProperty *> m_hStretchToProperty;
-    QMap<const QtProperty *, QtProperty *> m_vStretchToProperty;
-};
-
-QtSizePolicyPropertyManagerPrivate::QtSizePolicyPropertyManagerPrivate()
-{
-}
-
-void QtSizePolicyPropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_hStretchToProperty.value(property, 0)) {
-        QSizePolicy sp = m_values[prop];
-        sp.setHorizontalStretch(value);
-        q_ptr->setValue(prop, sp);
-    } else if (QtProperty *prop = m_vStretchToProperty.value(property, 0)) {
-        QSizePolicy sp = m_values[prop];
-        sp.setVerticalStretch(value);
-        q_ptr->setValue(prop, sp);
-    }
-}
-
-void QtSizePolicyPropertyManagerPrivate::slotEnumChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_hPolicyToProperty.value(property, 0)) {
-        QSizePolicy sp = m_values[prop];
-        sp.setHorizontalPolicy(metaEnumProvider()->indexToSizePolicy(value));
-        q_ptr->setValue(prop, sp);
-    } else if (QtProperty *prop = m_vPolicyToProperty.value(property, 0)) {
-        QSizePolicy sp = m_values[prop];
-        sp.setVerticalPolicy(metaEnumProvider()->indexToSizePolicy(value));
-        q_ptr->setValue(prop, sp);
-    }
-}
-
-void QtSizePolicyPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_hStretchToProperty.value(property, 0)) {
-        m_propertyToHStretch[pointProp] = 0;
-        m_hStretchToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_vStretchToProperty.value(property, 0)) {
-        m_propertyToVStretch[pointProp] = 0;
-        m_vStretchToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_hPolicyToProperty.value(property, 0)) {
-        m_propertyToHPolicy[pointProp] = 0;
-        m_hPolicyToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_vPolicyToProperty.value(property, 0)) {
-        m_propertyToVPolicy[pointProp] = 0;
-        m_vPolicyToProperty.remove(property);
-    }
-}
-
-/*!
-    \class QtSizePolicyPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtSizePolicyPropertyManager provides and manages QSizePolicy properties.
-
-    A size policy property has nested \e horizontalPolicy, \e
-    verticalPolicy, \e horizontalStretch and \e verticalStretch
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by QtIntPropertyManager and QtEnumPropertyManager
-    objects. These managers can be retrieved using the subIntPropertyManager()
-    and subEnumPropertyManager() functions respectively. In order to provide
-    editing widgets for the subproperties in a property browser widget,
-    these managers must be associated with editor factories.
-
-    In addition, QtSizePolicyPropertyManager provides the valueChanged()
-    signal which is emitted whenever a property created by this
-    manager changes.
-
-    \sa QtAbstractPropertyManager, QtIntPropertyManager, QtEnumPropertyManager
-*/
-
-/*!
-    \fn void QtSizePolicyPropertyManager::valueChanged(QtProperty *property, const QSizePolicy &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtSizePolicyPropertyManager::QtSizePolicyPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtSizePolicyPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-    d_ptr->m_enumPropertyManager = new QtEnumPropertyManager(this);
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotEnumChanged(QtProperty*,int)));
-
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtSizePolicyPropertyManager::~QtSizePolicyPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the nested \e horizontalStretch
-    and \e verticalStretch subproperties.
-
-    In order to provide editing widgets for the mentioned subproperties
-    in a property browser widget, this manager must be associated with
-    an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtSizePolicyPropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the manager that creates the nested \e horizontalPolicy
-    and \e verticalPolicy subproperties.
-
-    In order to provide editing widgets for the mentioned subproperties
-    in a property browser widget, this manager must be associated with
-    an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtEnumPropertyManager *QtSizePolicyPropertyManager::subEnumPropertyManager() const
-{
-    return d_ptr->m_enumPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns the default size policy.
-
-    \sa setValue()
-*/
-QSizePolicy QtSizePolicyPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QSizePolicy());
-}
-
-/*!
-    \reimp
-*/
-QString QtSizePolicyPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtSizePolicyPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    const QSizePolicy sp = it.value();
-    const QtMetaEnumProvider *mep = metaEnumProvider();
-    const int hIndex = mep->sizePolicyToIndex(sp.horizontalPolicy());
-    const int vIndex = mep->sizePolicyToIndex(sp.verticalPolicy());
-    //! Unknown size policy on reading invalid uic3 files
-    const QString hPolicy = hIndex != -1 ? mep->policyEnumNames().at(hIndex) : tr("<Invalid>");
-    const QString vPolicy = vIndex != -1 ? mep->policyEnumNames().at(vIndex) : tr("<Invalid>");
-    const QString str = tr("[%1, %2, %3, %4]").arg(hPolicy, vPolicy).arg(sp.horizontalStretch()).arg(sp.verticalStretch());
-    return str;
-}
-
-/*!
-    \fn void QtSizePolicyPropertyManager::setValue(QtProperty *property, const QSizePolicy &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtSizePolicyPropertyManager::setValue(QtProperty *property, const QSizePolicy &val)
-{
-    const QtSizePolicyPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    if (it.value() == val)
-        return;
-
-    it.value() = val;
-
-    d_ptr->m_enumPropertyManager->setValue(d_ptr->m_propertyToHPolicy[property],
-                metaEnumProvider()->sizePolicyToIndex(val.horizontalPolicy()));
-    d_ptr->m_enumPropertyManager->setValue(d_ptr->m_propertyToVPolicy[property],
-                metaEnumProvider()->sizePolicyToIndex(val.verticalPolicy()));
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToHStretch[property],
-                val.horizontalStretch());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToVStretch[property],
-                val.verticalStretch());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtSizePolicyPropertyManager::initializeProperty(QtProperty *property)
-{
-    QSizePolicy val;
-    d_ptr->m_values[property] = val;
-
-    QtProperty *hPolicyProp = d_ptr->m_enumPropertyManager->addProperty();
-    hPolicyProp->setPropertyName(tr("Horizontal Policy"));
-    d_ptr->m_enumPropertyManager->setEnumNames(hPolicyProp, metaEnumProvider()->policyEnumNames());
-    d_ptr->m_enumPropertyManager->setValue(hPolicyProp,
-                metaEnumProvider()->sizePolicyToIndex(val.horizontalPolicy()));
-    d_ptr->m_propertyToHPolicy[property] = hPolicyProp;
-    d_ptr->m_hPolicyToProperty[hPolicyProp] = property;
-    property->addSubProperty(hPolicyProp);
-
-    QtProperty *vPolicyProp = d_ptr->m_enumPropertyManager->addProperty();
-    vPolicyProp->setPropertyName(tr("Vertical Policy"));
-    d_ptr->m_enumPropertyManager->setEnumNames(vPolicyProp, metaEnumProvider()->policyEnumNames());
-    d_ptr->m_enumPropertyManager->setValue(vPolicyProp,
-                metaEnumProvider()->sizePolicyToIndex(val.verticalPolicy()));
-    d_ptr->m_propertyToVPolicy[property] = vPolicyProp;
-    d_ptr->m_vPolicyToProperty[vPolicyProp] = property;
-    property->addSubProperty(vPolicyProp);
-
-    QtProperty *hStretchProp = d_ptr->m_intPropertyManager->addProperty();
-    hStretchProp->setPropertyName(tr("Horizontal Stretch"));
-    d_ptr->m_intPropertyManager->setValue(hStretchProp, val.horizontalStretch());
-    d_ptr->m_intPropertyManager->setRange(hStretchProp, 0, 0xff);
-    d_ptr->m_propertyToHStretch[property] = hStretchProp;
-    d_ptr->m_hStretchToProperty[hStretchProp] = property;
-    property->addSubProperty(hStretchProp);
-
-    QtProperty *vStretchProp = d_ptr->m_intPropertyManager->addProperty();
-    vStretchProp->setPropertyName(tr("Vertical Stretch"));
-    d_ptr->m_intPropertyManager->setValue(vStretchProp, val.verticalStretch());
-    d_ptr->m_intPropertyManager->setRange(vStretchProp, 0, 0xff);
-    d_ptr->m_propertyToVStretch[property] = vStretchProp;
-    d_ptr->m_vStretchToProperty[vStretchProp] = property;
-    property->addSubProperty(vStretchProp);
-
-}
-
-/*!
-    \reimp
-*/
-void QtSizePolicyPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *hPolicyProp = d_ptr->m_propertyToHPolicy[property];
-    if (hPolicyProp) {
-        d_ptr->m_hPolicyToProperty.remove(hPolicyProp);
-        delete hPolicyProp;
-    }
-    d_ptr->m_propertyToHPolicy.remove(property);
-
-    QtProperty *vPolicyProp = d_ptr->m_propertyToVPolicy[property];
-    if (vPolicyProp) {
-        d_ptr->m_vPolicyToProperty.remove(vPolicyProp);
-        delete vPolicyProp;
-    }
-    d_ptr->m_propertyToVPolicy.remove(property);
-
-    QtProperty *hStretchProp = d_ptr->m_propertyToHStretch[property];
-    if (hStretchProp) {
-        d_ptr->m_hStretchToProperty.remove(hStretchProp);
-        delete hStretchProp;
-    }
-    d_ptr->m_propertyToHStretch.remove(property);
-
-    QtProperty *vStretchProp = d_ptr->m_propertyToVStretch[property];
-    if (vStretchProp) {
-        d_ptr->m_vStretchToProperty.remove(vStretchProp);
-        delete vStretchProp;
-    }
-    d_ptr->m_propertyToVStretch.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtFontPropertyManager:
-// QtFontPropertyManagerPrivate has a mechanism for reacting
-// to QApplication::fontDatabaseChanged() [4.5], which is emitted
-// when someone loads an application font. The signals are compressed
-// using a timer with interval 0, which then causes the family
-// enumeration manager to re-set its strings and index values
-// for each property.
-
-Q_GLOBAL_STATIC(QFontDatabase, fontDatabase)
-
-class QtFontPropertyManagerPrivate
-{
-    QtFontPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtFontPropertyManager)
-public:
-
-    QtFontPropertyManagerPrivate();
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotEnumChanged(QtProperty *property, int value);
-    void slotBoolChanged(QtProperty *property, bool value);
-    void slotPropertyDestroyed(QtProperty *property);
-    void slotFontDatabaseChanged();
-    void slotFontDatabaseDelayedChange();
-
-    QStringList m_familyNames;
-
-    typedef QMap<const QtProperty *, QFont> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-    QtEnumPropertyManager *m_enumPropertyManager;
-    QtBoolPropertyManager *m_boolPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToFamily;
-    QMap<const QtProperty *, QtProperty *> m_propertyToPointSize;
-    QMap<const QtProperty *, QtProperty *> m_propertyToBold;
-    QMap<const QtProperty *, QtProperty *> m_propertyToItalic;
-    QMap<const QtProperty *, QtProperty *> m_propertyToUnderline;
-    QMap<const QtProperty *, QtProperty *> m_propertyToStrikeOut;
-    QMap<const QtProperty *, QtProperty *> m_propertyToKerning;
-
-    QMap<const QtProperty *, QtProperty *> m_familyToProperty;
-    QMap<const QtProperty *, QtProperty *> m_pointSizeToProperty;
-    QMap<const QtProperty *, QtProperty *> m_boldToProperty;
-    QMap<const QtProperty *, QtProperty *> m_italicToProperty;
-    QMap<const QtProperty *, QtProperty *> m_underlineToProperty;
-    QMap<const QtProperty *, QtProperty *> m_strikeOutToProperty;
-    QMap<const QtProperty *, QtProperty *> m_kerningToProperty;
-
-    bool m_settingValue;
-    QTimer *m_fontDatabaseChangeTimer;
-};
-
-QtFontPropertyManagerPrivate::QtFontPropertyManagerPrivate() :
-    m_settingValue(false),
-    m_fontDatabaseChangeTimer(0)
-{
-}
-
-void QtFontPropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (m_settingValue)
-        return;
-    if (QtProperty *prop = m_pointSizeToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setPointSize(value);
-        q_ptr->setValue(prop, f);
-    }
-}
-
-void QtFontPropertyManagerPrivate::slotEnumChanged(QtProperty *property, int value)
-{
-    if (m_settingValue)
-        return;
-    if (QtProperty *prop = m_familyToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setFamily(m_familyNames.at(value));
-        q_ptr->setValue(prop, f);
-    }
-}
-
-void QtFontPropertyManagerPrivate::slotBoolChanged(QtProperty *property, bool value)
-{
-    if (m_settingValue)
-        return;
-    if (QtProperty *prop = m_boldToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setBold(value);
-        q_ptr->setValue(prop, f);
-    } else if (QtProperty *prop = m_italicToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setItalic(value);
-        q_ptr->setValue(prop, f);
-    } else if (QtProperty *prop = m_underlineToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setUnderline(value);
-        q_ptr->setValue(prop, f);
-    } else if (QtProperty *prop = m_strikeOutToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setStrikeOut(value);
-        q_ptr->setValue(prop, f);
-    } else if (QtProperty *prop = m_kerningToProperty.value(property, 0)) {
-        QFont f = m_values[prop];
-        f.setKerning(value);
-        q_ptr->setValue(prop, f);
-    }
-}
-
-void QtFontPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_pointSizeToProperty.value(property, 0)) {
-        m_propertyToPointSize[pointProp] = 0;
-        m_pointSizeToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_familyToProperty.value(property, 0)) {
-        m_propertyToFamily[pointProp] = 0;
-        m_familyToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_boldToProperty.value(property, 0)) {
-        m_propertyToBold[pointProp] = 0;
-        m_boldToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_italicToProperty.value(property, 0)) {
-        m_propertyToItalic[pointProp] = 0;
-        m_italicToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_underlineToProperty.value(property, 0)) {
-        m_propertyToUnderline[pointProp] = 0;
-        m_underlineToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_strikeOutToProperty.value(property, 0)) {
-        m_propertyToStrikeOut[pointProp] = 0;
-        m_strikeOutToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_kerningToProperty.value(property, 0)) {
-        m_propertyToKerning[pointProp] = 0;
-        m_kerningToProperty.remove(property);
-    }
-}
-
-void  QtFontPropertyManagerPrivate::slotFontDatabaseChanged()
-{
-    if (!m_fontDatabaseChangeTimer) {
-        m_fontDatabaseChangeTimer = new QTimer(q_ptr);
-        m_fontDatabaseChangeTimer->setInterval(0);
-        m_fontDatabaseChangeTimer->setSingleShot(true);
-        QObject::connect(m_fontDatabaseChangeTimer, SIGNAL(timeout()), q_ptr, SLOT(slotFontDatabaseDelayedChange()));
-    }
-    if (!m_fontDatabaseChangeTimer->isActive())
-        m_fontDatabaseChangeTimer->start();
-}
-
-void QtFontPropertyManagerPrivate::slotFontDatabaseDelayedChange()
-{
-    typedef QMap<const QtProperty *, QtProperty *> PropertyPropertyMap;
-    // rescan available font names
-    const QStringList oldFamilies = m_familyNames;
-    m_familyNames = fontDatabase()->families();
-
-    // Adapt all existing properties
-    if (!m_propertyToFamily.empty()) {
-        PropertyPropertyMap::const_iterator cend = m_propertyToFamily.constEnd();
-        for (PropertyPropertyMap::const_iterator it = m_propertyToFamily.constBegin(); it != cend; ++it) {
-            QtProperty *familyProp = it.value();
-            const int oldIdx = m_enumPropertyManager->value(familyProp);
-            int newIdx = m_familyNames.indexOf(oldFamilies.at(oldIdx));
-            if (newIdx < 0)
-                newIdx = 0;
-            m_enumPropertyManager->setEnumNames(familyProp, m_familyNames);
-            m_enumPropertyManager->setValue(familyProp, newIdx);
-        }
-    }
-}
-
-/*!
-    \class QtFontPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtFontPropertyManager provides and manages QFont properties.
-
-    A font property has nested \e family, \e pointSize, \e bold, \e
-    italic, \e underline, \e strikeOut and \e kerning subproperties. The top-level
-    property's value can be retrieved using the value() function, and
-    set using the setValue() slot.
-
-    The subproperties are created by QtIntPropertyManager, QtEnumPropertyManager and
-    QtBoolPropertyManager objects. These managers can be retrieved using the
-    corresponding subIntPropertyManager(), subEnumPropertyManager() and
-    subBoolPropertyManager() functions. In order to provide editing widgets
-    for the subproperties in a property browser widget, these managers
-    must be associated with editor factories.
-
-    In addition, QtFontPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager, QtEnumPropertyManager, QtIntPropertyManager, QtBoolPropertyManager
-*/
-
-/*!
-    \fn void QtFontPropertyManager::valueChanged(QtProperty *property, const QFont &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtFontPropertyManager::QtFontPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtFontPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-    QObject::connect(qApp, SIGNAL(fontDatabaseChanged()), this, SLOT(slotFontDatabaseChanged()));
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-    d_ptr->m_enumPropertyManager = new QtEnumPropertyManager(this);
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotEnumChanged(QtProperty*,int)));
-    d_ptr->m_boolPropertyManager = new QtBoolPropertyManager(this);
-    connect(d_ptr->m_boolPropertyManager, SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotBoolChanged(QtProperty*,bool)));
-
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-    connect(d_ptr->m_enumPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-    connect(d_ptr->m_boolPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtFontPropertyManager::~QtFontPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that creates the \e pointSize subproperty.
-
-    In order to provide editing widgets for the \e pointSize property
-    in a property browser widget, this manager must be associated
-    with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtFontPropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the manager that create the \e family subproperty.
-
-    In order to provide editing widgets for the \e family property
-    in a property browser widget, this manager must be associated
-    with an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtEnumPropertyManager *QtFontPropertyManager::subEnumPropertyManager() const
-{
-    return d_ptr->m_enumPropertyManager;
-}
-
-/*!
-    Returns the manager that creates the  \e bold, \e italic, \e underline,
-    \e strikeOut and \e kerning subproperties.
-
-    In order to provide editing widgets for the mentioned properties
-    in a property browser widget, this manager must be associated with
-    an editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtBoolPropertyManager *QtFontPropertyManager::subBoolPropertyManager() const
-{
-    return d_ptr->m_boolPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given property is not managed by this manager, this
-    function returns a font object that uses the application's default
-    font.
-
-    \sa setValue()
-*/
-QFont QtFontPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QFont());
-}
-
-/*!
-    \reimp
-*/
-QString QtFontPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtFontPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    return QtPropertyBrowserUtils::fontValueText(it.value());
-}
-
-/*!
-    \reimp
-*/
-QIcon QtFontPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QtFontPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QIcon();
-
-    return QtPropertyBrowserUtils::fontValueIcon(it.value());
-}
-
-/*!
-    \fn void QtFontPropertyManager::setValue(QtProperty *property, const QFont &value)
-
-    Sets the value of the given \a property to \a value. Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtFontPropertyManager::setValue(QtProperty *property, const QFont &val)
-{
-    const QtFontPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    const QFont oldVal = it.value();
-    if (oldVal == val && oldVal.resolve() == val.resolve())
-        return;
-
-    it.value() = val;
-
-    int idx = d_ptr->m_familyNames.indexOf(val.family());
-    if (idx == -1)
-        idx = 0;
-    bool settingValue = d_ptr->m_settingValue;
-    d_ptr->m_settingValue = true;
-    d_ptr->m_enumPropertyManager->setValue(d_ptr->m_propertyToFamily[property], idx);
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToPointSize[property], val.pointSize());
-    d_ptr->m_boolPropertyManager->setValue(d_ptr->m_propertyToBold[property], val.bold());
-    d_ptr->m_boolPropertyManager->setValue(d_ptr->m_propertyToItalic[property], val.italic());
-    d_ptr->m_boolPropertyManager->setValue(d_ptr->m_propertyToUnderline[property], val.underline());
-    d_ptr->m_boolPropertyManager->setValue(d_ptr->m_propertyToStrikeOut[property], val.strikeOut());
-    d_ptr->m_boolPropertyManager->setValue(d_ptr->m_propertyToKerning[property], val.kerning());
-    d_ptr->m_settingValue = settingValue;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtFontPropertyManager::initializeProperty(QtProperty *property)
-{
-    QFont val;
-    d_ptr->m_values[property] = val;
-
-    QtProperty *familyProp = d_ptr->m_enumPropertyManager->addProperty();
-    familyProp->setPropertyName(tr("Family"));
-    if (d_ptr->m_familyNames.empty())
-        d_ptr->m_familyNames = fontDatabase()->families();
-    d_ptr->m_enumPropertyManager->setEnumNames(familyProp, d_ptr->m_familyNames);
-    int idx = d_ptr->m_familyNames.indexOf(val.family());
-    if (idx == -1)
-        idx = 0;
-    d_ptr->m_enumPropertyManager->setValue(familyProp, idx);
-    d_ptr->m_propertyToFamily[property] = familyProp;
-    d_ptr->m_familyToProperty[familyProp] = property;
-    property->addSubProperty(familyProp);
-
-    QtProperty *pointSizeProp = d_ptr->m_intPropertyManager->addProperty();
-    pointSizeProp->setPropertyName(tr("Point Size"));
-    d_ptr->m_intPropertyManager->setValue(pointSizeProp, val.pointSize());
-    d_ptr->m_intPropertyManager->setMinimum(pointSizeProp, 1);
-    d_ptr->m_propertyToPointSize[property] = pointSizeProp;
-    d_ptr->m_pointSizeToProperty[pointSizeProp] = property;
-    property->addSubProperty(pointSizeProp);
-
-    QtProperty *boldProp = d_ptr->m_boolPropertyManager->addProperty();
-    boldProp->setPropertyName(tr("Bold"));
-    d_ptr->m_boolPropertyManager->setValue(boldProp, val.bold());
-    d_ptr->m_propertyToBold[property] = boldProp;
-    d_ptr->m_boldToProperty[boldProp] = property;
-    property->addSubProperty(boldProp);
-
-    QtProperty *italicProp = d_ptr->m_boolPropertyManager->addProperty();
-    italicProp->setPropertyName(tr("Italic"));
-    d_ptr->m_boolPropertyManager->setValue(italicProp, val.italic());
-    d_ptr->m_propertyToItalic[property] = italicProp;
-    d_ptr->m_italicToProperty[italicProp] = property;
-    property->addSubProperty(italicProp);
-
-    QtProperty *underlineProp = d_ptr->m_boolPropertyManager->addProperty();
-    underlineProp->setPropertyName(tr("Underline"));
-    d_ptr->m_boolPropertyManager->setValue(underlineProp, val.underline());
-    d_ptr->m_propertyToUnderline[property] = underlineProp;
-    d_ptr->m_underlineToProperty[underlineProp] = property;
-    property->addSubProperty(underlineProp);
-
-    QtProperty *strikeOutProp = d_ptr->m_boolPropertyManager->addProperty();
-    strikeOutProp->setPropertyName(tr("Strikeout"));
-    d_ptr->m_boolPropertyManager->setValue(strikeOutProp, val.strikeOut());
-    d_ptr->m_propertyToStrikeOut[property] = strikeOutProp;
-    d_ptr->m_strikeOutToProperty[strikeOutProp] = property;
-    property->addSubProperty(strikeOutProp);
-
-    QtProperty *kerningProp = d_ptr->m_boolPropertyManager->addProperty();
-    kerningProp->setPropertyName(tr("Kerning"));
-    d_ptr->m_boolPropertyManager->setValue(kerningProp, val.kerning());
-    d_ptr->m_propertyToKerning[property] = kerningProp;
-    d_ptr->m_kerningToProperty[kerningProp] = property;
-    property->addSubProperty(kerningProp);
-}
-
-/*!
-    \reimp
-*/
-void QtFontPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *familyProp = d_ptr->m_propertyToFamily[property];
-    if (familyProp) {
-        d_ptr->m_familyToProperty.remove(familyProp);
-        delete familyProp;
-    }
-    d_ptr->m_propertyToFamily.remove(property);
-
-    QtProperty *pointSizeProp = d_ptr->m_propertyToPointSize[property];
-    if (pointSizeProp) {
-        d_ptr->m_pointSizeToProperty.remove(pointSizeProp);
-        delete pointSizeProp;
-    }
-    d_ptr->m_propertyToPointSize.remove(property);
-
-    QtProperty *boldProp = d_ptr->m_propertyToBold[property];
-    if (boldProp) {
-        d_ptr->m_boldToProperty.remove(boldProp);
-        delete boldProp;
-    }
-    d_ptr->m_propertyToBold.remove(property);
-
-    QtProperty *italicProp = d_ptr->m_propertyToItalic[property];
-    if (italicProp) {
-        d_ptr->m_italicToProperty.remove(italicProp);
-        delete italicProp;
-    }
-    d_ptr->m_propertyToItalic.remove(property);
-
-    QtProperty *underlineProp = d_ptr->m_propertyToUnderline[property];
-    if (underlineProp) {
-        d_ptr->m_underlineToProperty.remove(underlineProp);
-        delete underlineProp;
-    }
-    d_ptr->m_propertyToUnderline.remove(property);
-
-    QtProperty *strikeOutProp = d_ptr->m_propertyToStrikeOut[property];
-    if (strikeOutProp) {
-        d_ptr->m_strikeOutToProperty.remove(strikeOutProp);
-        delete strikeOutProp;
-    }
-    d_ptr->m_propertyToStrikeOut.remove(property);
-
-    QtProperty *kerningProp = d_ptr->m_propertyToKerning[property];
-    if (kerningProp) {
-        d_ptr->m_kerningToProperty.remove(kerningProp);
-        delete kerningProp;
-    }
-    d_ptr->m_propertyToKerning.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtColorPropertyManager
-
-class QtColorPropertyManagerPrivate
-{
-    QtColorPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtColorPropertyManager)
-public:
-
-    void slotIntChanged(QtProperty *property, int value);
-    void slotPropertyDestroyed(QtProperty *property);
-
-    typedef QMap<const QtProperty *, QColor> PropertyValueMap;
-    PropertyValueMap m_values;
-
-    QtIntPropertyManager *m_intPropertyManager;
-
-    QMap<const QtProperty *, QtProperty *> m_propertyToR;
-    QMap<const QtProperty *, QtProperty *> m_propertyToG;
-    QMap<const QtProperty *, QtProperty *> m_propertyToB;
-    QMap<const QtProperty *, QtProperty *> m_propertyToA;
-
-    QMap<const QtProperty *, QtProperty *> m_rToProperty;
-    QMap<const QtProperty *, QtProperty *> m_gToProperty;
-    QMap<const QtProperty *, QtProperty *> m_bToProperty;
-    QMap<const QtProperty *, QtProperty *> m_aToProperty;
-};
-
-void QtColorPropertyManagerPrivate::slotIntChanged(QtProperty *property, int value)
-{
-    if (QtProperty *prop = m_rToProperty.value(property, 0)) {
-        QColor c = m_values[prop];
-        c.setRed(value);
-        q_ptr->setValue(prop, c);
-    } else if (QtProperty *prop = m_gToProperty.value(property, 0)) {
-        QColor c = m_values[prop];
-        c.setGreen(value);
-        q_ptr->setValue(prop, c);
-    } else if (QtProperty *prop = m_bToProperty.value(property, 0)) {
-        QColor c = m_values[prop];
-        c.setBlue(value);
-        q_ptr->setValue(prop, c);
-    } else if (QtProperty *prop = m_aToProperty.value(property, 0)) {
-        QColor c = m_values[prop];
-        c.setAlpha(value);
-        q_ptr->setValue(prop, c);
-    }
-}
-
-void QtColorPropertyManagerPrivate::slotPropertyDestroyed(QtProperty *property)
-{
-    if (QtProperty *pointProp = m_rToProperty.value(property, 0)) {
-        m_propertyToR[pointProp] = 0;
-        m_rToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_gToProperty.value(property, 0)) {
-        m_propertyToG[pointProp] = 0;
-        m_gToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_bToProperty.value(property, 0)) {
-        m_propertyToB[pointProp] = 0;
-        m_bToProperty.remove(property);
-    } else if (QtProperty *pointProp = m_aToProperty.value(property, 0)) {
-        m_propertyToA[pointProp] = 0;
-        m_aToProperty.remove(property);
-    }
-}
-
-/*!
-    \class QtColorPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtColorPropertyManager provides and manages QColor properties.
-
-    A color property has nested \e red, \e green and \e blue
-    subproperties. The top-level property's value can be retrieved
-    using the value() function, and set using the setValue() slot.
-
-    The subproperties are created by a QtIntPropertyManager object. This
-    manager can be retrieved using the subIntPropertyManager() function.  In
-    order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    In addition, QtColorPropertyManager provides the valueChanged() signal
-    which is emitted whenever a property created by this manager
-    changes.
-
-    \sa QtAbstractPropertyManager, QtAbstractPropertyBrowser, QtIntPropertyManager
-*/
-
-/*!
-    \fn void QtColorPropertyManager::valueChanged(QtProperty *property, const QColor &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtColorPropertyManager::QtColorPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtColorPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_intPropertyManager = new QtIntPropertyManager(this);
-    connect(d_ptr->m_intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotIntChanged(QtProperty*,int)));
-
-    connect(d_ptr->m_intPropertyManager, SIGNAL(propertyDestroyed(QtProperty*)),
-                this, SLOT(slotPropertyDestroyed(QtProperty*)));
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtColorPropertyManager::~QtColorPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the manager that produces the nested \e red, \e green and
-    \e blue subproperties.
-
-    In order to provide editing widgets for the subproperties in a
-    property browser widget, this manager must be associated with an
-    editor factory.
-
-    \sa QtAbstractPropertyBrowser::setFactoryForManager()
-*/
-QtIntPropertyManager *QtColorPropertyManager::subIntPropertyManager() const
-{
-    return d_ptr->m_intPropertyManager;
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by \e this manager, this
-    function returns an invalid color.
-
-    \sa setValue()
-*/
-QColor QtColorPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QColor());
-}
-
-/*!
-    \reimp
-*/
-
-QString QtColorPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtColorPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    return QtPropertyBrowserUtils::colorValueText(it.value());
-}
-
-/*!
-    \reimp
-*/
-
-QIcon QtColorPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QtColorPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QIcon();
-    return QtPropertyBrowserUtils::brushValueIcon(QBrush(it.value()));
-}
-
-/*!
-    \fn void QtColorPropertyManager::setValue(QtProperty *property, const QColor &value)
-
-    Sets the value of the given \a property to \a value.  Nested
-    properties are updated automatically.
-
-    \sa value(), valueChanged()
-*/
-void QtColorPropertyManager::setValue(QtProperty *property, const QColor &val)
-{
-    const QtColorPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    if (it.value() == val)
-        return;
-
-    it.value() = val;
-
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToR[property], val.red());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToG[property], val.green());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToB[property], val.blue());
-    d_ptr->m_intPropertyManager->setValue(d_ptr->m_propertyToA[property], val.alpha());
-
-    emit propertyChanged(property);
-    emit valueChanged(property, val);
-}
-
-/*!
-    \reimp
-*/
-void QtColorPropertyManager::initializeProperty(QtProperty *property)
-{
-    QColor val;
-    d_ptr->m_values[property] = val;
-
-    QtProperty *rProp = d_ptr->m_intPropertyManager->addProperty();
-    rProp->setPropertyName(tr("Red"));
-    d_ptr->m_intPropertyManager->setValue(rProp, val.red());
-    d_ptr->m_intPropertyManager->setRange(rProp, 0, 0xFF);
-    d_ptr->m_propertyToR[property] = rProp;
-    d_ptr->m_rToProperty[rProp] = property;
-    property->addSubProperty(rProp);
-
-    QtProperty *gProp = d_ptr->m_intPropertyManager->addProperty();
-    gProp->setPropertyName(tr("Green"));
-    d_ptr->m_intPropertyManager->setValue(gProp, val.green());
-    d_ptr->m_intPropertyManager->setRange(gProp, 0, 0xFF);
-    d_ptr->m_propertyToG[property] = gProp;
-    d_ptr->m_gToProperty[gProp] = property;
-    property->addSubProperty(gProp);
-
-    QtProperty *bProp = d_ptr->m_intPropertyManager->addProperty();
-    bProp->setPropertyName(tr("Blue"));
-    d_ptr->m_intPropertyManager->setValue(bProp, val.blue());
-    d_ptr->m_intPropertyManager->setRange(bProp, 0, 0xFF);
-    d_ptr->m_propertyToB[property] = bProp;
-    d_ptr->m_bToProperty[bProp] = property;
-    property->addSubProperty(bProp);
-
-    QtProperty *aProp = d_ptr->m_intPropertyManager->addProperty();
-    aProp->setPropertyName(tr("Alpha"));
-    d_ptr->m_intPropertyManager->setValue(aProp, val.alpha());
-    d_ptr->m_intPropertyManager->setRange(aProp, 0, 0xFF);
-    d_ptr->m_propertyToA[property] = aProp;
-    d_ptr->m_aToProperty[aProp] = property;
-    property->addSubProperty(aProp);
-}
-
-/*!
-    \reimp
-*/
-void QtColorPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    QtProperty *rProp = d_ptr->m_propertyToR[property];
-    if (rProp) {
-        d_ptr->m_rToProperty.remove(rProp);
-        delete rProp;
-    }
-    d_ptr->m_propertyToR.remove(property);
-
-    QtProperty *gProp = d_ptr->m_propertyToG[property];
-    if (gProp) {
-        d_ptr->m_gToProperty.remove(gProp);
-        delete gProp;
-    }
-    d_ptr->m_propertyToG.remove(property);
-
-    QtProperty *bProp = d_ptr->m_propertyToB[property];
-    if (bProp) {
-        d_ptr->m_bToProperty.remove(bProp);
-        delete bProp;
-    }
-    d_ptr->m_propertyToB.remove(property);
-
-    QtProperty *aProp = d_ptr->m_propertyToA[property];
-    if (aProp) {
-        d_ptr->m_aToProperty.remove(aProp);
-        delete aProp;
-    }
-    d_ptr->m_propertyToA.remove(property);
-
-    d_ptr->m_values.remove(property);
-}
-
-// QtCursorPropertyManager
-
-// Make sure icons are removed as soon as QApplication is destroyed, otherwise,
-// handles are leaked on X11.
-static void clearCursorDatabase();
-namespace {
-struct CursorDatabase : public QtCursorDatabase
-{
-    CursorDatabase()
-    {
-        qAddPostRoutine(clearCursorDatabase);
-    }
-};
-}
-Q_GLOBAL_STATIC(QtCursorDatabase, cursorDatabase)
-
-static void clearCursorDatabase()
-{
-    cursorDatabase()->clear();
-}
-
-class QtCursorPropertyManagerPrivate
-{
-    QtCursorPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtCursorPropertyManager)
-public:
-    typedef QMap<const QtProperty *, QCursor> PropertyValueMap;
-    PropertyValueMap m_values;
-};
-
-/*!
-    \class QtCursorPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtCursorPropertyManager provides and manages QCursor properties.
-
-    A cursor property has a current value which can be
-    retrieved using the value() function, and set using the setValue()
-    slot. In addition, QtCursorPropertyManager provides the
-    valueChanged() signal which is emitted whenever a property created
-    by this manager changes.
-
-    \sa QtAbstractPropertyManager
-*/
-
-/*!
-    \fn void QtCursorPropertyManager::valueChanged(QtProperty *property, const QCursor &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the new
-    \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtCursorPropertyManager::QtCursorPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtCursorPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtCursorPropertyManager::~QtCursorPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns a default QCursor object.
-
-    \sa setValue()
-*/
-#ifndef QT_NO_CURSOR
-QCursor QtCursorPropertyManager::value(const QtProperty *property) const
-{
-    return d_ptr->m_values.value(property, QCursor());
-}
-#endif
-
-/*!
-    \reimp
-*/
-QString QtCursorPropertyManager::valueText(const QtProperty *property) const
-{
-   const QtCursorPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QString();
-
-    return cursorDatabase()->cursorToShapeName(it.value());
-}
-
-/*!
-    \reimp
-*/
-QIcon QtCursorPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QtCursorPropertyManagerPrivate::PropertyValueMap::const_iterator it = d_ptr->m_values.constFind(property);
-    if (it == d_ptr->m_values.constEnd())
-        return QIcon();
-
-    return cursorDatabase()->cursorToShapeIcon(it.value());
-}
-
-/*!
-    \fn void QtCursorPropertyManager::setValue(QtProperty *property, const QCursor &value)
-
-    Sets the value of the given \a property to \a value.
-
-    \sa value(), valueChanged()
-*/
-void QtCursorPropertyManager::setValue(QtProperty *property, const QCursor &value)
-{
-#ifndef QT_NO_CURSOR
-    const QtCursorPropertyManagerPrivate::PropertyValueMap::iterator it = d_ptr->m_values.find(property);
-    if (it == d_ptr->m_values.end())
-        return;
-
-    if (it.value().shape() == value.shape() && value.shape() != Qt::BitmapCursor)
-        return;
-
-    it.value() = value;
-
-    emit propertyChanged(property);
-    emit valueChanged(property, value);
-#endif
-}
-
-/*!
-    \reimp
-*/
-void QtCursorPropertyManager::initializeProperty(QtProperty *property)
-{
-#ifndef QT_NO_CURSOR
-    d_ptr->m_values[property] = QCursor();
-#endif
-}
-
-/*!
-    \reimp
-*/
-void QtCursorPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    d_ptr->m_values.remove(property);
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qtpropertymanager.cpp"
-#include "qtpropertymanager.moc"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.h b/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.h
deleted file mode 100644
index 340898f923405c170cb9c705f1f0a0923b499dc4..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtpropertymanager.h
+++ /dev/null
@@ -1,738 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTPROPERTYMANAGER_H
-#define QTPROPERTYMANAGER_H
-
-#include "qtpropertybrowser.h"
-
-QT_BEGIN_NAMESPACE
-
-class QDate;
-class QTime;
-class QDateTime;
-class QLocale;
-
-class QtGroupPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtGroupPropertyManager(QObject *parent = 0);
-    virtual ~QtGroupPropertyManager();
-
-protected:
-    virtual bool hasValue(const QtProperty *property) const;
-
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-};
-
-class QtIntPropertyManagerPrivate;
-
-class QtIntPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtIntPropertyManager(QObject *parent = 0);
-    virtual ~QtIntPropertyManager();
-
-    int value(const QtProperty *property) const;
-    int minimum(const QtProperty *property) const;
-    int maximum(const QtProperty *property) const;
-    int singleStep(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, int val);
-    void setMinimum(QtProperty *property, int minVal);
-    void setMaximum(QtProperty *property, int maxVal);
-    void setRange(QtProperty *property, int minVal, int maxVal);
-    void setSingleStep(QtProperty *property, int step);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, int val);
-    void rangeChanged(QtProperty *property, int minVal, int maxVal);
-    void singleStepChanged(QtProperty *property, int step);
-protected:
-    QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtIntPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtIntPropertyManager)
-    Q_DISABLE_COPY(QtIntPropertyManager)
-};
-
-class QtBoolPropertyManagerPrivate;
-
-class QtBoolPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtBoolPropertyManager(QObject *parent = 0);
-    virtual ~QtBoolPropertyManager();
-
-    bool value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, bool val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, bool val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtBoolPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtBoolPropertyManager)
-    Q_DISABLE_COPY(QtBoolPropertyManager)
-};
-
-class QtDoublePropertyManagerPrivate;
-
-class QtDoublePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtDoublePropertyManager(QObject *parent = 0);
-    virtual ~QtDoublePropertyManager();
-
-    double value(const QtProperty *property) const;
-    double minimum(const QtProperty *property) const;
-    double maximum(const QtProperty *property) const;
-    double singleStep(const QtProperty *property) const;
-    int decimals(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, double val);
-    void setMinimum(QtProperty *property, double minVal);
-    void setMaximum(QtProperty *property, double maxVal);
-    void setRange(QtProperty *property, double minVal, double maxVal);
-    void setSingleStep(QtProperty *property, double step);
-    void setDecimals(QtProperty *property, int prec);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, double val);
-    void rangeChanged(QtProperty *property, double minVal, double maxVal);
-    void singleStepChanged(QtProperty *property, double step);
-    void decimalsChanged(QtProperty *property, int prec);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtDoublePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDoublePropertyManager)
-    Q_DISABLE_COPY(QtDoublePropertyManager)
-};
-
-class QtStringPropertyManagerPrivate;
-
-class QtStringPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtStringPropertyManager(QObject *parent = 0);
-    virtual ~QtStringPropertyManager();
-
-    QString value(const QtProperty *property) const;
-    QRegExp regExp(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QString &val);
-    void setRegExp(QtProperty *property, const QRegExp &regExp);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QString &val);
-    void regExpChanged(QtProperty *property, const QRegExp &regExp);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtStringPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtStringPropertyManager)
-    Q_DISABLE_COPY(QtStringPropertyManager)
-};
-
-class QtDatePropertyManagerPrivate;
-
-class QtDatePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtDatePropertyManager(QObject *parent = 0);
-    virtual ~QtDatePropertyManager();
-
-    QDate value(const QtProperty *property) const;
-    QDate minimum(const QtProperty *property) const;
-    QDate maximum(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QDate &val);
-    void setMinimum(QtProperty *property, const QDate &minVal);
-    void setMaximum(QtProperty *property, const QDate &maxVal);
-    void setRange(QtProperty *property, const QDate &minVal, const QDate &maxVal);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QDate &val);
-    void rangeChanged(QtProperty *property, const QDate &minVal, const QDate &maxVal);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtDatePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDatePropertyManager)
-    Q_DISABLE_COPY(QtDatePropertyManager)
-};
-
-class QtTimePropertyManagerPrivate;
-
-class QtTimePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtTimePropertyManager(QObject *parent = 0);
-    virtual ~QtTimePropertyManager();
-
-    QTime value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QTime &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QTime &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtTimePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtTimePropertyManager)
-    Q_DISABLE_COPY(QtTimePropertyManager)
-};
-
-class QtDateTimePropertyManagerPrivate;
-
-class QtDateTimePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtDateTimePropertyManager(QObject *parent = 0);
-    virtual ~QtDateTimePropertyManager();
-
-    QDateTime value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QDateTime &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QDateTime &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtDateTimePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtDateTimePropertyManager)
-    Q_DISABLE_COPY(QtDateTimePropertyManager)
-};
-
-class QtKeySequencePropertyManagerPrivate;
-
-class QtKeySequencePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtKeySequencePropertyManager(QObject *parent = 0);
-    virtual ~QtKeySequencePropertyManager();
-
-    QKeySequence value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QKeySequence &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QKeySequence &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtKeySequencePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtKeySequencePropertyManager)
-    Q_DISABLE_COPY(QtKeySequencePropertyManager)
-};
-
-class QtCharPropertyManagerPrivate;
-
-class QtCharPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtCharPropertyManager(QObject *parent = 0);
-    virtual ~QtCharPropertyManager();
-
-    QChar value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QChar &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QChar &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtCharPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtCharPropertyManager)
-    Q_DISABLE_COPY(QtCharPropertyManager)
-};
-
-class QtEnumPropertyManager;
-class QtLocalePropertyManagerPrivate;
-
-class QtLocalePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtLocalePropertyManager(QObject *parent = 0);
-    virtual ~QtLocalePropertyManager();
-
-    QtEnumPropertyManager *subEnumPropertyManager() const;
-
-    QLocale value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QLocale &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QLocale &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtLocalePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtLocalePropertyManager)
-    Q_DISABLE_COPY(QtLocalePropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotEnumChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtPointPropertyManagerPrivate;
-
-class QtPointPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtPointPropertyManager(QObject *parent = 0);
-    virtual ~QtPointPropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-
-    QPoint value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QPoint &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QPoint &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtPointPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtPointPropertyManager)
-    Q_DISABLE_COPY(QtPointPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtPointFPropertyManagerPrivate;
-
-class QtPointFPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtPointFPropertyManager(QObject *parent = 0);
-    virtual ~QtPointFPropertyManager();
-
-    QtDoublePropertyManager *subDoublePropertyManager() const;
-
-    QPointF value(const QtProperty *property) const;
-    int decimals(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QPointF &val);
-    void setDecimals(QtProperty *property, int prec);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QPointF &val);
-    void decimalsChanged(QtProperty *property, int prec);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtPointFPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtPointFPropertyManager)
-    Q_DISABLE_COPY(QtPointFPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotDoubleChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtSizePropertyManagerPrivate;
-
-class QtSizePropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtSizePropertyManager(QObject *parent = 0);
-    virtual ~QtSizePropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-
-    QSize value(const QtProperty *property) const;
-    QSize minimum(const QtProperty *property) const;
-    QSize maximum(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QSize &val);
-    void setMinimum(QtProperty *property, const QSize &minVal);
-    void setMaximum(QtProperty *property, const QSize &maxVal);
-    void setRange(QtProperty *property, const QSize &minVal, const QSize &maxVal);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QSize &val);
-    void rangeChanged(QtProperty *property, const QSize &minVal, const QSize &maxVal);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtSizePropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtSizePropertyManager)
-    Q_DISABLE_COPY(QtSizePropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtSizeFPropertyManagerPrivate;
-
-class QtSizeFPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtSizeFPropertyManager(QObject *parent = 0);
-    virtual ~QtSizeFPropertyManager();
-
-    QtDoublePropertyManager *subDoublePropertyManager() const;
-
-    QSizeF value(const QtProperty *property) const;
-    QSizeF minimum(const QtProperty *property) const;
-    QSizeF maximum(const QtProperty *property) const;
-    int decimals(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QSizeF &val);
-    void setMinimum(QtProperty *property, const QSizeF &minVal);
-    void setMaximum(QtProperty *property, const QSizeF &maxVal);
-    void setRange(QtProperty *property, const QSizeF &minVal, const QSizeF &maxVal);
-    void setDecimals(QtProperty *property, int prec);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QSizeF &val);
-    void rangeChanged(QtProperty *property, const QSizeF &minVal, const QSizeF &maxVal);
-    void decimalsChanged(QtProperty *property, int prec);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtSizeFPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtSizeFPropertyManager)
-    Q_DISABLE_COPY(QtSizeFPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotDoubleChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtRectPropertyManagerPrivate;
-
-class QtRectPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtRectPropertyManager(QObject *parent = 0);
-    virtual ~QtRectPropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-
-    QRect value(const QtProperty *property) const;
-    QRect constraint(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QRect &val);
-    void setConstraint(QtProperty *property, const QRect &constraint);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QRect &val);
-    void constraintChanged(QtProperty *property, const QRect &constraint);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtRectPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtRectPropertyManager)
-    Q_DISABLE_COPY(QtRectPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtRectFPropertyManagerPrivate;
-
-class QtRectFPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtRectFPropertyManager(QObject *parent = 0);
-    virtual ~QtRectFPropertyManager();
-
-    QtDoublePropertyManager *subDoublePropertyManager() const;
-
-    QRectF value(const QtProperty *property) const;
-    QRectF constraint(const QtProperty *property) const;
-    int decimals(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QRectF &val);
-    void setConstraint(QtProperty *property, const QRectF &constraint);
-    void setDecimals(QtProperty *property, int prec);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QRectF &val);
-    void constraintChanged(QtProperty *property, const QRectF &constraint);
-    void decimalsChanged(QtProperty *property, int prec);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtRectFPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtRectFPropertyManager)
-    Q_DISABLE_COPY(QtRectFPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotDoubleChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtEnumPropertyManagerPrivate;
-
-class QtEnumPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtEnumPropertyManager(QObject *parent = 0);
-    virtual ~QtEnumPropertyManager();
-
-    int value(const QtProperty *property) const;
-    QStringList enumNames(const QtProperty *property) const;
-    QMap<int, QIcon> enumIcons(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, int val);
-    void setEnumNames(QtProperty *property, const QStringList &names);
-    void setEnumIcons(QtProperty *property, const QMap<int, QIcon> &icons);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, int val);
-    void enumNamesChanged(QtProperty *property, const QStringList &names);
-    void enumIconsChanged(QtProperty *property, const QMap<int, QIcon> &icons);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtEnumPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtEnumPropertyManager)
-    Q_DISABLE_COPY(QtEnumPropertyManager)
-};
-
-class QtFlagPropertyManagerPrivate;
-
-class QtFlagPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtFlagPropertyManager(QObject *parent = 0);
-    virtual ~QtFlagPropertyManager();
-
-    QtBoolPropertyManager *subBoolPropertyManager() const;
-
-    int value(const QtProperty *property) const;
-    QStringList flagNames(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, int val);
-    void setFlagNames(QtProperty *property, const QStringList &names);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, int val);
-    void flagNamesChanged(QtProperty *property, const QStringList &names);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtFlagPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtFlagPropertyManager)
-    Q_DISABLE_COPY(QtFlagPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotBoolChanged(QtProperty *, bool))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtSizePolicyPropertyManagerPrivate;
-
-class QtSizePolicyPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtSizePolicyPropertyManager(QObject *parent = 0);
-    virtual ~QtSizePolicyPropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-    QtEnumPropertyManager *subEnumPropertyManager() const;
-
-    QSizePolicy value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QSizePolicy &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QSizePolicy &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtSizePolicyPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtSizePolicyPropertyManager)
-    Q_DISABLE_COPY(QtSizePolicyPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtFontPropertyManagerPrivate;
-
-class QtFontPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtFontPropertyManager(QObject *parent = 0);
-    virtual ~QtFontPropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-    QtEnumPropertyManager *subEnumPropertyManager() const;
-    QtBoolPropertyManager *subBoolPropertyManager() const;
-
-    QFont value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QFont &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QFont &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtFontPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtFontPropertyManager)
-    Q_DISABLE_COPY(QtFontPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotBoolChanged(QtProperty *, bool))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-    Q_PRIVATE_SLOT(d_func(), void slotFontDatabaseChanged())
-    Q_PRIVATE_SLOT(d_func(), void slotFontDatabaseDelayedChange())
-};
-
-class QtColorPropertyManagerPrivate;
-
-class QtColorPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtColorPropertyManager(QObject *parent = 0);
-    virtual ~QtColorPropertyManager();
-
-    QtIntPropertyManager *subIntPropertyManager() const;
-
-    QColor value(const QtProperty *property) const;
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QColor &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QColor &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtColorPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtColorPropertyManager)
-    Q_DISABLE_COPY(QtColorPropertyManager)
-    Q_PRIVATE_SLOT(d_func(), void slotIntChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyDestroyed(QtProperty *))
-};
-
-class QtCursorPropertyManagerPrivate;
-
-class QtCursorPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtCursorPropertyManager(QObject *parent = 0);
-    virtual ~QtCursorPropertyManager();
-
-#ifndef QT_NO_CURSOR
-    QCursor value(const QtProperty *property) const;
-#endif
-
-public Q_SLOTS:
-    void setValue(QtProperty *property, const QCursor &val);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QCursor &val);
-protected:
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-private:
-    QScopedPointer<QtCursorPropertyManagerPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtCursorPropertyManager)
-    Q_DISABLE_COPY(QtCursorPropertyManager)
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.cpp b/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.cpp
deleted file mode 100644
index 8db4c3d304b97f4a48434760f524f2307781b029..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.cpp
+++ /dev/null
@@ -1,1044 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qttreepropertybrowser.h"
-#include <QtCore/QSet>
-#include <QtGui/QIcon>
-#include <QtWidgets/QTreeWidget>
-#include <QtWidgets/QItemDelegate>
-#include <QtWidgets/QHBoxLayout>
-#include <QtWidgets/QHeaderView>
-#include <QtGui/QPainter>
-#include <QtWidgets/QApplication>
-#include <QtGui/QFocusEvent>
-#include <QtWidgets/QStyle>
-#include <QtGui/QPalette>
-
-QT_BEGIN_NAMESPACE
-
-class QtPropertyEditorView;
-
-class QtTreePropertyBrowserPrivate
-{
-    QtTreePropertyBrowser *q_ptr;
-    Q_DECLARE_PUBLIC(QtTreePropertyBrowser)
-
-public:
-    QtTreePropertyBrowserPrivate();
-    void init(QWidget *parent);
-
-    void propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex);
-    void propertyRemoved(QtBrowserItem *index);
-    void propertyChanged(QtBrowserItem *index);
-    QWidget *createEditor(QtProperty *property, QWidget *parent) const
-        { return q_ptr->createEditor(property, parent); }
-    QtProperty *indexToProperty(const QModelIndex &index) const;
-    QTreeWidgetItem *indexToItem(const QModelIndex &index) const;
-    QtBrowserItem *indexToBrowserItem(const QModelIndex &index) const;
-    bool lastColumn(int column) const;
-    void disableItem(QTreeWidgetItem *item) const;
-    void enableItem(QTreeWidgetItem *item) const;
-    bool hasValue(QTreeWidgetItem *item) const;
-
-    void slotCollapsed(const QModelIndex &index);
-    void slotExpanded(const QModelIndex &index);
-
-    QColor calculatedBackgroundColor(QtBrowserItem *item) const;
-
-    QtPropertyEditorView *treeWidget() const { return m_treeWidget; }
-    bool markPropertiesWithoutValue() const { return m_markPropertiesWithoutValue; }
-
-    QtBrowserItem *currentItem() const;
-    void setCurrentItem(QtBrowserItem *browserItem, bool block);
-    void editItem(QtBrowserItem *browserItem);
-
-    void slotCurrentBrowserItemChanged(QtBrowserItem *item);
-    void slotCurrentTreeItemChanged(QTreeWidgetItem *newItem, QTreeWidgetItem *);
-
-    QTreeWidgetItem *editedItem() const;
-
-private:
-    void updateItem(QTreeWidgetItem *item);
-
-    QMap<QtBrowserItem *, QTreeWidgetItem *> m_indexToItem;
-    QMap<QTreeWidgetItem *, QtBrowserItem *> m_itemToIndex;
-
-    QMap<QtBrowserItem *, QColor> m_indexToBackgroundColor;
-
-    QtPropertyEditorView *m_treeWidget;
-
-    bool m_headerVisible;
-    QtTreePropertyBrowser::ResizeMode m_resizeMode;
-    class QtPropertyEditorDelegate *m_delegate;
-    bool m_markPropertiesWithoutValue;
-    bool m_browserChangedBlocked;
-    QIcon m_expandIcon;
-};
-
-// ------------ QtPropertyEditorView
-class QtPropertyEditorView : public QTreeWidget
-{
-    Q_OBJECT
-public:
-    QtPropertyEditorView(QWidget *parent = 0);
-
-    void setEditorPrivate(QtTreePropertyBrowserPrivate *editorPrivate)
-        { m_editorPrivate = editorPrivate; }
-
-    QTreeWidgetItem *indexToItem(const QModelIndex &index) const
-        { return itemFromIndex(index); }
-
-protected:
-    void keyPressEvent(QKeyEvent *event);
-    void mousePressEvent(QMouseEvent *event);
-    void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
-
-private:
-    QtTreePropertyBrowserPrivate *m_editorPrivate;
-};
-
-QtPropertyEditorView::QtPropertyEditorView(QWidget *parent) :
-    QTreeWidget(parent),
-    m_editorPrivate(0)
-{
-    connect(header(), SIGNAL(sectionDoubleClicked(int)), this, SLOT(resizeColumnToContents(int)));
-}
-
-void QtPropertyEditorView::drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
-{
-    QStyleOptionViewItem opt = option;
-    bool hasValue = true;
-    if (m_editorPrivate) {
-        QtProperty *property = m_editorPrivate->indexToProperty(index);
-        if (property)
-            hasValue = property->hasValue();
-    }
-    if (!hasValue && m_editorPrivate->markPropertiesWithoutValue()) {
-        const QColor c = option.palette.color(QPalette::Dark);
-        painter->fillRect(option.rect, c);
-        opt.palette.setColor(QPalette::AlternateBase, c);
-    } else {
-        const QColor c = m_editorPrivate->calculatedBackgroundColor(m_editorPrivate->indexToBrowserItem(index));
-        if (c.isValid()) {
-            painter->fillRect(option.rect, c);
-            opt.palette.setColor(QPalette::AlternateBase, c.lighter(112));
-        }
-    }
-    QTreeWidget::drawRow(painter, opt, index);
-    QColor color = static_cast<QRgb>(QApplication::style()->styleHint(QStyle::SH_Table_GridLineColor, &opt));
-    painter->save();
-    painter->setPen(QPen(color));
-    painter->drawLine(opt.rect.x(), opt.rect.bottom(), opt.rect.right(), opt.rect.bottom());
-    painter->restore();
-}
-
-void QtPropertyEditorView::keyPressEvent(QKeyEvent *event)
-{
-    switch (event->key()) {
-    case Qt::Key_Return:
-    case Qt::Key_Enter:
-    case Qt::Key_Space: // Trigger Edit
-        if (!m_editorPrivate->editedItem())
-            if (const QTreeWidgetItem *item = currentItem())
-                if (item->columnCount() >= 2 && ((item->flags() & (Qt::ItemIsEditable | Qt::ItemIsEnabled)) == (Qt::ItemIsEditable | Qt::ItemIsEnabled))) {
-                    event->accept();
-                    // If the current position is at column 0, move to 1.
-                    QModelIndex index = currentIndex();
-                    if (index.column() == 0) {
-                        index = index.sibling(index.row(), 1);
-                        setCurrentIndex(index);
-                    }
-                    edit(index);
-                    return;
-                }
-        break;
-    default:
-        break;
-    }
-    QTreeWidget::keyPressEvent(event);
-}
-
-void QtPropertyEditorView::mousePressEvent(QMouseEvent *event)
-{
-    QTreeWidget::mousePressEvent(event);
-    QTreeWidgetItem *item = itemAt(event->pos());
-
-    if (item) {
-        if ((item != m_editorPrivate->editedItem()) && (event->button() == Qt::LeftButton)
-                && (header()->logicalIndexAt(event->pos().x()) == 1)
-                && ((item->flags() & (Qt::ItemIsEditable | Qt::ItemIsEnabled)) == (Qt::ItemIsEditable | Qt::ItemIsEnabled))) {
-            editItem(item, 1);
-        } else if (!m_editorPrivate->hasValue(item) && m_editorPrivate->markPropertiesWithoutValue() && !rootIsDecorated()) {
-            if (event->pos().x() + header()->offset() < 20)
-                item->setExpanded(!item->isExpanded());
-        }
-    }
-}
-
-// ------------ QtPropertyEditorDelegate
-class QtPropertyEditorDelegate : public QItemDelegate
-{
-    Q_OBJECT
-public:
-    QtPropertyEditorDelegate(QObject *parent = 0)
-        : QItemDelegate(parent), m_editorPrivate(0), m_editedItem(0), m_editedWidget(0)
-        {}
-
-    void setEditorPrivate(QtTreePropertyBrowserPrivate *editorPrivate)
-        { m_editorPrivate = editorPrivate; }
-
-    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
-            const QModelIndex &index) const;
-
-    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
-            const QModelIndex &index) const;
-
-    void paint(QPainter *painter, const QStyleOptionViewItem &option,
-            const QModelIndex &index) const;
-
-    QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
-
-    void setModelData(QWidget *, QAbstractItemModel *,
-            const QModelIndex &) const {}
-
-    void setEditorData(QWidget *, const QModelIndex &) const {}
-
-    bool eventFilter(QObject *object, QEvent *event);
-    void closeEditor(QtProperty *property);
-
-    QTreeWidgetItem *editedItem() const { return m_editedItem; }
-
-private slots:
-    void slotEditorDestroyed(QObject *object);
-
-private:
-    int indentation(const QModelIndex &index) const;
-
-    typedef QMap<QWidget *, QtProperty *> EditorToPropertyMap;
-    mutable EditorToPropertyMap m_editorToProperty;
-
-    typedef QMap<QtProperty *, QWidget *> PropertyToEditorMap;
-    mutable PropertyToEditorMap m_propertyToEditor;
-    QtTreePropertyBrowserPrivate *m_editorPrivate;
-    mutable QTreeWidgetItem *m_editedItem;
-    mutable QWidget *m_editedWidget;
-};
-
-int QtPropertyEditorDelegate::indentation(const QModelIndex &index) const
-{
-    if (!m_editorPrivate)
-        return 0;
-
-    QTreeWidgetItem *item = m_editorPrivate->indexToItem(index);
-    int indent = 0;
-    while (item->parent()) {
-        item = item->parent();
-        ++indent;
-    }
-    if (m_editorPrivate->treeWidget()->rootIsDecorated())
-        ++indent;
-    return indent * m_editorPrivate->treeWidget()->indentation();
-}
-
-void QtPropertyEditorDelegate::slotEditorDestroyed(QObject *object)
-{
-    if (QWidget *w = qobject_cast<QWidget *>(object)) {
-        const EditorToPropertyMap::iterator it = m_editorToProperty.find(w);
-        if (it != m_editorToProperty.end()) {
-            m_propertyToEditor.remove(it.value());
-            m_editorToProperty.erase(it);
-        }
-        if (m_editedWidget == w) {
-            m_editedWidget = 0;
-            m_editedItem = 0;
-        }
-    }
-}
-
-void QtPropertyEditorDelegate::closeEditor(QtProperty *property)
-{
-    if (QWidget *w = m_propertyToEditor.value(property, 0))
-        w->deleteLater();
-}
-
-QWidget *QtPropertyEditorDelegate::createEditor(QWidget *parent,
-        const QStyleOptionViewItem &, const QModelIndex &index) const
-{
-    if (index.column() == 1 && m_editorPrivate) {
-        QtProperty *property = m_editorPrivate->indexToProperty(index);
-        QTreeWidgetItem *item = m_editorPrivate->indexToItem(index);
-        if (property && item && (item->flags() & Qt::ItemIsEnabled)) {
-            QWidget *editor = m_editorPrivate->createEditor(property, parent);
-            if (editor) {
-                editor->setAutoFillBackground(true);
-                editor->installEventFilter(const_cast<QtPropertyEditorDelegate *>(this));
-                connect(editor, SIGNAL(destroyed(QObject*)), this, SLOT(slotEditorDestroyed(QObject*)));
-                m_propertyToEditor[property] = editor;
-                m_editorToProperty[editor] = property;
-                m_editedItem = item;
-                m_editedWidget = editor;
-            }
-            return editor;
-        }
-    }
-    return 0;
-}
-
-void QtPropertyEditorDelegate::updateEditorGeometry(QWidget *editor,
-        const QStyleOptionViewItem &option, const QModelIndex &index) const
-{
-    Q_UNUSED(index)
-    editor->setGeometry(option.rect.adjusted(0, 0, 0, -1));
-}
-
-void QtPropertyEditorDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
-            const QModelIndex &index) const
-{
-    bool hasValue = true;
-    if (m_editorPrivate) {
-        QtProperty *property = m_editorPrivate->indexToProperty(index);
-        if (property)
-            hasValue = property->hasValue();
-    }
-    QStyleOptionViewItem opt = option;
-    if ((m_editorPrivate && index.column() == 0) || !hasValue) {
-        QtProperty *property = m_editorPrivate->indexToProperty(index);
-        if (property && property->isModified()) {
-            opt.font.setBold(true);
-            opt.fontMetrics = QFontMetrics(opt.font);
-        }
-    }
-    QColor c;
-    if (!hasValue && m_editorPrivate->markPropertiesWithoutValue()) {
-        c = opt.palette.color(QPalette::Dark);
-        opt.palette.setColor(QPalette::Text, opt.palette.color(QPalette::BrightText));
-    } else {
-        c = m_editorPrivate->calculatedBackgroundColor(m_editorPrivate->indexToBrowserItem(index));
-        if (c.isValid() && (opt.features & QStyleOptionViewItem::Alternate))
-            c = c.lighter(112);
-    }
-    if (c.isValid())
-        painter->fillRect(option.rect, c);
-    opt.state &= ~QStyle::State_HasFocus;
-    QItemDelegate::paint(painter, opt, index);
-
-    opt.palette.setCurrentColorGroup(QPalette::Active);
-    QColor color = static_cast<QRgb>(QApplication::style()->styleHint(QStyle::SH_Table_GridLineColor, &opt));
-    painter->save();
-    painter->setPen(QPen(color));
-    if (!m_editorPrivate || (!m_editorPrivate->lastColumn(index.column()) && hasValue)) {
-        int right = (option.direction == Qt::LeftToRight) ? option.rect.right() : option.rect.left();
-        painter->drawLine(right, option.rect.y(), right, option.rect.bottom());
-    }
-    painter->restore();
-}
-
-QSize QtPropertyEditorDelegate::sizeHint(const QStyleOptionViewItem &option,
-            const QModelIndex &index) const
-{
-    return QItemDelegate::sizeHint(option, index) + QSize(3, 4);
-}
-
-bool QtPropertyEditorDelegate::eventFilter(QObject *object, QEvent *event)
-{
-    if (event->type() == QEvent::FocusOut) {
-        QFocusEvent *fe = static_cast<QFocusEvent *>(event);
-        if (fe->reason() == Qt::ActiveWindowFocusReason)
-            return false;
-    }
-    return QItemDelegate::eventFilter(object, event);
-}
-
-//  -------- QtTreePropertyBrowserPrivate implementation
-QtTreePropertyBrowserPrivate::QtTreePropertyBrowserPrivate() :
-    m_treeWidget(0),
-    m_headerVisible(true),
-    m_resizeMode(QtTreePropertyBrowser::Stretch),
-    m_delegate(0),
-    m_markPropertiesWithoutValue(false),
-    m_browserChangedBlocked(false)
-{
-}
-
-// Draw an icon indicating opened/closing branches
-static QIcon drawIndicatorIcon(const QPalette &palette, QStyle *style)
-{
-    QPixmap pix(14, 14);
-    pix.fill(Qt::transparent);
-    QStyleOption branchOption;
-    QRect r(QPoint(0, 0), pix.size());
-    branchOption.rect = QRect(2, 2, 9, 9); // ### hardcoded in qcommonstyle.cpp
-    branchOption.palette = palette;
-    branchOption.state = QStyle::State_Children;
-
-    QPainter p;
-    // Draw closed state
-    p.begin(&pix);
-    style->drawPrimitive(QStyle::PE_IndicatorBranch, &branchOption, &p);
-    p.end();
-    QIcon rc = pix;
-    rc.addPixmap(pix, QIcon::Selected, QIcon::Off);
-    // Draw opened state
-    branchOption.state |= QStyle::State_Open;
-    pix.fill(Qt::transparent);
-    p.begin(&pix);
-    style->drawPrimitive(QStyle::PE_IndicatorBranch, &branchOption, &p);
-    p.end();
-
-    rc.addPixmap(pix, QIcon::Normal, QIcon::On);
-    rc.addPixmap(pix, QIcon::Selected, QIcon::On);
-    return rc;
-}
-
-void QtTreePropertyBrowserPrivate::init(QWidget *parent)
-{
-    QHBoxLayout *layout = new QHBoxLayout(parent);
-    layout->setMargin(0);
-    m_treeWidget = new QtPropertyEditorView(parent);
-    m_treeWidget->setEditorPrivate(this);
-    m_treeWidget->setIconSize(QSize(18, 18));
-    layout->addWidget(m_treeWidget);
-
-    m_treeWidget->setColumnCount(2);
-    QStringList labels;
-    labels.append(QCoreApplication::translate("QtTreePropertyBrowser", "Property"));
-    labels.append(QCoreApplication::translate("QtTreePropertyBrowser", "Value"));
-    m_treeWidget->setHeaderLabels(labels);
-    m_treeWidget->setAlternatingRowColors(true);
-    m_treeWidget->setEditTriggers(QAbstractItemView::EditKeyPressed);
-    m_delegate = new QtPropertyEditorDelegate(parent);
-    m_delegate->setEditorPrivate(this);
-    m_treeWidget->setItemDelegate(m_delegate);
-    m_treeWidget->header()->setSectionsMovable(false);
-    m_treeWidget->header()->setSectionResizeMode(QHeaderView::Stretch);
-
-    m_expandIcon = drawIndicatorIcon(q_ptr->palette(), q_ptr->style());
-
-    QObject::connect(m_treeWidget, SIGNAL(collapsed(QModelIndex)), q_ptr, SLOT(slotCollapsed(QModelIndex)));
-    QObject::connect(m_treeWidget, SIGNAL(expanded(QModelIndex)), q_ptr, SLOT(slotExpanded(QModelIndex)));
-    QObject::connect(m_treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), q_ptr, SLOT(slotCurrentTreeItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
-}
-
-QtBrowserItem *QtTreePropertyBrowserPrivate::currentItem() const
-{
-    if (QTreeWidgetItem *treeItem = m_treeWidget->currentItem())
-        return m_itemToIndex.value(treeItem);
-    return 0;
-}
-
-void QtTreePropertyBrowserPrivate::setCurrentItem(QtBrowserItem *browserItem, bool block)
-{
-    const bool blocked = block ? m_treeWidget->blockSignals(true) : false;
-    if (browserItem == 0)
-        m_treeWidget->setCurrentItem(0);
-    else
-        m_treeWidget->setCurrentItem(m_indexToItem.value(browserItem));
-    if (block)
-        m_treeWidget->blockSignals(blocked);
-}
-
-QtProperty *QtTreePropertyBrowserPrivate::indexToProperty(const QModelIndex &index) const
-{
-    QTreeWidgetItem *item = m_treeWidget->indexToItem(index);
-    QtBrowserItem *idx = m_itemToIndex.value(item);
-    if (idx)
-        return idx->property();
-    return 0;
-}
-
-QtBrowserItem *QtTreePropertyBrowserPrivate::indexToBrowserItem(const QModelIndex &index) const
-{
-    QTreeWidgetItem *item = m_treeWidget->indexToItem(index);
-    return m_itemToIndex.value(item);
-}
-
-QTreeWidgetItem *QtTreePropertyBrowserPrivate::indexToItem(const QModelIndex &index) const
-{
-    return m_treeWidget->indexToItem(index);
-}
-
-bool QtTreePropertyBrowserPrivate::lastColumn(int column) const
-{
-    return m_treeWidget->header()->visualIndex(column) == m_treeWidget->columnCount() - 1;
-}
-
-void QtTreePropertyBrowserPrivate::disableItem(QTreeWidgetItem *item) const
-{
-    Qt::ItemFlags flags = item->flags();
-    if (flags & Qt::ItemIsEnabled) {
-        flags &= ~Qt::ItemIsEnabled;
-        item->setFlags(flags);
-        m_delegate->closeEditor(m_itemToIndex[item]->property());
-        const int childCount = item->childCount();
-        for (int i = 0; i < childCount; i++) {
-            QTreeWidgetItem *child = item->child(i);
-            disableItem(child);
-        }
-    }
-}
-
-void QtTreePropertyBrowserPrivate::enableItem(QTreeWidgetItem *item) const
-{
-    Qt::ItemFlags flags = item->flags();
-    flags |= Qt::ItemIsEnabled;
-    item->setFlags(flags);
-    const int childCount = item->childCount();
-    for (int i = 0; i < childCount; i++) {
-        QTreeWidgetItem *child = item->child(i);
-        QtProperty *property = m_itemToIndex[child]->property();
-        if (property->isEnabled()) {
-            enableItem(child);
-        }
-    }
-}
-
-bool QtTreePropertyBrowserPrivate::hasValue(QTreeWidgetItem *item) const
-{
-    QtBrowserItem *browserItem = m_itemToIndex.value(item);
-    if (browserItem)
-        return browserItem->property()->hasValue();
-    return false;
-}
-
-void QtTreePropertyBrowserPrivate::propertyInserted(QtBrowserItem *index, QtBrowserItem *afterIndex)
-{
-    QTreeWidgetItem *afterItem = m_indexToItem.value(afterIndex);
-    QTreeWidgetItem *parentItem = m_indexToItem.value(index->parent());
-
-    QTreeWidgetItem *newItem = 0;
-    if (parentItem) {
-        newItem = new QTreeWidgetItem(parentItem, afterItem);
-    } else {
-        newItem = new QTreeWidgetItem(m_treeWidget, afterItem);
-    }
-    m_itemToIndex[newItem] = index;
-    m_indexToItem[index] = newItem;
-
-    newItem->setFlags(newItem->flags() | Qt::ItemIsEditable);
-    m_treeWidget->setItemExpanded(newItem, true);
-
-    updateItem(newItem);
-}
-
-void QtTreePropertyBrowserPrivate::propertyRemoved(QtBrowserItem *index)
-{
-    QTreeWidgetItem *item = m_indexToItem.value(index);
-
-    if (m_treeWidget->currentItem() == item) {
-        m_treeWidget->setCurrentItem(0);
-    }
-
-    delete item;
-
-    m_indexToItem.remove(index);
-    m_itemToIndex.remove(item);
-    m_indexToBackgroundColor.remove(index);
-}
-
-void QtTreePropertyBrowserPrivate::propertyChanged(QtBrowserItem *index)
-{
-    QTreeWidgetItem *item = m_indexToItem.value(index);
-
-    updateItem(item);
-}
-
-void QtTreePropertyBrowserPrivate::updateItem(QTreeWidgetItem *item)
-{
-    QtProperty *property = m_itemToIndex[item]->property();
-    QIcon expandIcon;
-    if (property->hasValue()) {
-        QString toolTip = property->toolTip();
-        if (toolTip.isEmpty())
-            toolTip = property->valueText();
-        item->setToolTip(1, toolTip);
-        item->setIcon(1, property->valueIcon());
-        item->setText(1, property->valueText());
-    } else if (markPropertiesWithoutValue() && !m_treeWidget->rootIsDecorated()) {
-        expandIcon = m_expandIcon;
-    }
-    item->setIcon(0, expandIcon);
-    //item->setFirstColumnSpanned(!property->hasValue());
-    // g.p. 19.05.2017 Setting tooltip of first column to be the same as property tooltip
-    //item->setToolTip(0, property->propertyName());
-
-    QString toolTip = property->toolTip();
-    if (toolTip.isEmpty())
-        toolTip = property->propertyName();
-
-    item->setToolTip(0, toolTip);
-
-    // endof g.p.
-
-    item->setStatusTip(0, property->statusTip());
-    item->setWhatsThis(0, property->whatsThis());
-    item->setText(0, property->propertyName());
-    bool wasEnabled = item->flags() & Qt::ItemIsEnabled;
-    bool isEnabled = wasEnabled;
-    if (property->isEnabled()) {
-        QTreeWidgetItem *parent = item->parent();
-        if (!parent || (parent->flags() & Qt::ItemIsEnabled))
-            isEnabled = true;
-        else
-            isEnabled = false;
-    } else {
-        isEnabled = false;
-    }
-    if (wasEnabled != isEnabled) {
-        if (isEnabled)
-            enableItem(item);
-        else
-            disableItem(item);
-    }
-    m_treeWidget->viewport()->update();
-}
-
-QColor QtTreePropertyBrowserPrivate::calculatedBackgroundColor(QtBrowserItem *item) const
-{
-    QtBrowserItem *i = item;
-    const QMap<QtBrowserItem *, QColor>::const_iterator itEnd = m_indexToBackgroundColor.constEnd();
-    while (i) {
-        QMap<QtBrowserItem *, QColor>::const_iterator it = m_indexToBackgroundColor.constFind(i);
-        if (it != itEnd)
-            return it.value();
-        i = i->parent();
-    }
-    return QColor();
-}
-
-void QtTreePropertyBrowserPrivate::slotCollapsed(const QModelIndex &index)
-{
-    QTreeWidgetItem *item = indexToItem(index);
-    QtBrowserItem *idx = m_itemToIndex.value(item);
-    if (item)
-        emit q_ptr->collapsed(idx);
-}
-
-void QtTreePropertyBrowserPrivate::slotExpanded(const QModelIndex &index)
-{
-    QTreeWidgetItem *item = indexToItem(index);
-    QtBrowserItem *idx = m_itemToIndex.value(item);
-    if (item)
-        emit q_ptr->expanded(idx);
-}
-
-void QtTreePropertyBrowserPrivate::slotCurrentBrowserItemChanged(QtBrowserItem *item)
-{
-    if (!m_browserChangedBlocked && item != currentItem())
-        setCurrentItem(item, true);
-}
-
-void QtTreePropertyBrowserPrivate::slotCurrentTreeItemChanged(QTreeWidgetItem *newItem, QTreeWidgetItem *)
-{
-    QtBrowserItem *browserItem = newItem ? m_itemToIndex.value(newItem) : 0;
-    m_browserChangedBlocked = true;
-    q_ptr->setCurrentItem(browserItem);
-    m_browserChangedBlocked = false;
-}
-
-QTreeWidgetItem *QtTreePropertyBrowserPrivate::editedItem() const
-{
-    return m_delegate->editedItem();
-}
-
-void QtTreePropertyBrowserPrivate::editItem(QtBrowserItem *browserItem)
-{
-    if (QTreeWidgetItem *treeItem = m_indexToItem.value(browserItem, 0)) {
-        m_treeWidget->setCurrentItem (treeItem, 1);
-        m_treeWidget->editItem(treeItem, 1);
-    }
-}
-
-/*!
-    \class QtTreePropertyBrowser
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtTreePropertyBrowser class provides QTreeWidget based
-    property browser.
-
-    A property browser is a widget that enables the user to edit a
-    given set of properties. Each property is represented by a label
-    specifying the property's name, and an editing widget (e.g. a line
-    edit or a combobox) holding its value. A property can have zero or
-    more subproperties.
-
-    QtTreePropertyBrowser provides a tree based view for all nested
-    properties, i.e. properties that have subproperties can be in an
-    expanded (subproperties are visible) or collapsed (subproperties
-    are hidden) state. For example:
-
-    \image qttreepropertybrowser.png
-
-    Use the QtAbstractPropertyBrowser API to add, insert and remove
-    properties from an instance of the QtTreePropertyBrowser class.
-    The properties themselves are created and managed by
-    implementations of the QtAbstractPropertyManager class.
-
-    \sa QtGroupBoxPropertyBrowser, QtAbstractPropertyBrowser
-*/
-
-/*!
-    \fn void QtTreePropertyBrowser::collapsed(QtBrowserItem *item)
-
-    This signal is emitted when the \a item is collapsed.
-
-    \sa expanded(), setExpanded()
-*/
-
-/*!
-    \fn void QtTreePropertyBrowser::expanded(QtBrowserItem *item)
-
-    This signal is emitted when the \a item is expanded.
-
-    \sa collapsed(), setExpanded()
-*/
-
-/*!
-    Creates a property browser with the given \a parent.
-*/
-QtTreePropertyBrowser::QtTreePropertyBrowser(QWidget *parent)
-    : QtAbstractPropertyBrowser(parent), d_ptr(new QtTreePropertyBrowserPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->init(this);
-    connect(this, SIGNAL(currentItemChanged(QtBrowserItem*)), this, SLOT(slotCurrentBrowserItemChanged(QtBrowserItem*)));
-}
-
-/*!
-    Destroys this property browser.
-
-    Note that the properties that were inserted into this browser are
-    \e not destroyed since they may still be used in other
-    browsers. The properties are owned by the manager that created
-    them.
-
-    \sa QtProperty, QtAbstractPropertyManager
-*/
-QtTreePropertyBrowser::~QtTreePropertyBrowser()
-{
-}
-
-/*!
-    \property QtTreePropertyBrowser::indentation
-    \brief indentation of the items in the tree view.
-*/
-int QtTreePropertyBrowser::indentation() const
-{
-    return d_ptr->m_treeWidget->indentation();
-}
-
-void QtTreePropertyBrowser::setIndentation(int i)
-{
-    d_ptr->m_treeWidget->setIndentation(i);
-}
-
-/*!
-  \property QtTreePropertyBrowser::rootIsDecorated
-  \brief whether to show controls for expanding and collapsing root items.
-*/
-bool QtTreePropertyBrowser::rootIsDecorated() const
-{
-    return d_ptr->m_treeWidget->rootIsDecorated();
-}
-
-void QtTreePropertyBrowser::setRootIsDecorated(bool show)
-{
-    d_ptr->m_treeWidget->setRootIsDecorated(show);
-    QMapIterator<QTreeWidgetItem *, QtBrowserItem *> it(d_ptr->m_itemToIndex);
-    while (it.hasNext()) {
-        QtProperty *property = it.next().value()->property();
-        if (!property->hasValue())
-            d_ptr->updateItem(it.key());
-    }
-}
-
-/*!
-  \property QtTreePropertyBrowser::alternatingRowColors
-  \brief whether to draw the background using alternating colors.
-  By default this property is set to true.
-*/
-bool QtTreePropertyBrowser::alternatingRowColors() const
-{
-    return d_ptr->m_treeWidget->alternatingRowColors();
-}
-
-void QtTreePropertyBrowser::setAlternatingRowColors(bool enable)
-{
-    d_ptr->m_treeWidget->setAlternatingRowColors(enable);
-    QMapIterator<QTreeWidgetItem *, QtBrowserItem *> it(d_ptr->m_itemToIndex);
-}
-
-/*!
-  \property QtTreePropertyBrowser::headerVisible
-  \brief whether to show the header.
-*/
-bool QtTreePropertyBrowser::isHeaderVisible() const
-{
-    return d_ptr->m_headerVisible;
-}
-
-void QtTreePropertyBrowser::setHeaderVisible(bool visible)
-{
-    if (d_ptr->m_headerVisible == visible)
-        return;
-
-    d_ptr->m_headerVisible = visible;
-    d_ptr->m_treeWidget->header()->setVisible(visible);
-}
-
-/*!
-  \enum QtTreePropertyBrowser::ResizeMode
-
-  The resize mode specifies the behavior of the header sections.
-
-  \value Interactive The user can resize the sections.
-  The sections can also be resized programmatically using setSplitterPosition().
-
-  \value Fixed The user cannot resize the section.
-  The section can only be resized programmatically using setSplitterPosition().
-
-  \value Stretch QHeaderView will automatically resize the section to fill the available space.
-  The size cannot be changed by the user or programmatically.
-
-  \value ResizeToContents QHeaderView will automatically resize the section to its optimal
-  size based on the contents of the entire column.
-  The size cannot be changed by the user or programmatically.
-
-  \sa setResizeMode()
-*/
-
-/*!
-    \property QtTreePropertyBrowser::resizeMode
-    \brief the resize mode of setions in the header.
-*/
-
-QtTreePropertyBrowser::ResizeMode QtTreePropertyBrowser::resizeMode() const
-{
-    return d_ptr->m_resizeMode;
-}
-
-void QtTreePropertyBrowser::setResizeMode(QtTreePropertyBrowser::ResizeMode mode)
-{
-    if (d_ptr->m_resizeMode == mode)
-        return;
-
-    d_ptr->m_resizeMode = mode;
-    QHeaderView::ResizeMode m = QHeaderView::Stretch;
-    switch (mode) {
-        case QtTreePropertyBrowser::Interactive:      m = QHeaderView::Interactive;      break;
-        case QtTreePropertyBrowser::Fixed:            m = QHeaderView::Fixed;            break;
-        case QtTreePropertyBrowser::ResizeToContents: m = QHeaderView::ResizeToContents; break;
-        case QtTreePropertyBrowser::Stretch:
-        default:                                      m = QHeaderView::Stretch;          break;
-    }
-    d_ptr->m_treeWidget->header()->setSectionResizeMode(m);
-}
-
-/*!
-    \property QtTreePropertyBrowser::splitterPosition
-    \brief the position of the splitter between the colunms.
-*/
-
-int QtTreePropertyBrowser::splitterPosition() const
-{
-    return d_ptr->m_treeWidget->header()->sectionSize(0);
-}
-
-void QtTreePropertyBrowser::setSplitterPosition(int position)
-{
-    d_ptr->m_treeWidget->header()->resizeSection(0, position);
-}
-
-/*!
-    Sets the \a item to either collapse or expanded, depending on the value of \a expanded.
-
-    \sa isExpanded(), expanded(), collapsed()
-*/
-
-void QtTreePropertyBrowser::setExpanded(QtBrowserItem *item, bool expanded)
-{
-    QTreeWidgetItem *treeItem = d_ptr->m_indexToItem.value(item);
-    if (treeItem)
-        treeItem->setExpanded(expanded);
-}
-
-/*!
-    Returns true if the \a item is expanded; otherwise returns false.
-
-    \sa setExpanded()
-*/
-
-bool QtTreePropertyBrowser::isExpanded(QtBrowserItem *item) const
-{
-    QTreeWidgetItem *treeItem = d_ptr->m_indexToItem.value(item);
-    if (treeItem)
-        return treeItem->isExpanded();
-    return false;
-}
-
-/*!
-    Returns true if the \a item is visible; otherwise returns false.
-
-    \sa setItemVisible()
-    \since 4.5
-*/
-
-bool QtTreePropertyBrowser::isItemVisible(QtBrowserItem *item) const
-{
-    if (const QTreeWidgetItem *treeItem = d_ptr->m_indexToItem.value(item))
-        return !treeItem->isHidden();
-    return false;
-}
-
-/*!
-    Sets the \a item to be visible, depending on the value of \a visible.
-
-   \sa isItemVisible()
-   \since 4.5
-*/
-
-void QtTreePropertyBrowser::setItemVisible(QtBrowserItem *item, bool visible)
-{
-    if (QTreeWidgetItem *treeItem = d_ptr->m_indexToItem.value(item))
-        treeItem->setHidden(!visible);
-}
-
-/*!
-    Sets the \a item's background color to \a color. Note that while item's background
-    is rendered every second row is being drawn with alternate color (which is a bit lighter than items \a color)
-
-    \sa backgroundColor(), calculatedBackgroundColor()
-*/
-
-void QtTreePropertyBrowser::setBackgroundColor(QtBrowserItem *item, const QColor &color)
-{
-    if (!d_ptr->m_indexToItem.contains(item))
-        return;
-    if (color.isValid())
-        d_ptr->m_indexToBackgroundColor[item] = color;
-    else
-        d_ptr->m_indexToBackgroundColor.remove(item);
-    d_ptr->m_treeWidget->viewport()->update();
-}
-
-/*!
-    Returns the \a item's color. If there is no color set for item it returns invalid color.
-
-    \sa calculatedBackgroundColor(), setBackgroundColor()
-*/
-
-QColor QtTreePropertyBrowser::backgroundColor(QtBrowserItem *item) const
-{
-    return d_ptr->m_indexToBackgroundColor.value(item);
-}
-
-/*!
-    Returns the \a item's color. If there is no color set for item it returns parent \a item's
-    color (if there is no color set for parent it returns grandparent's color and so on). In case
-    the color is not set for \a item and it's top level item it returns invalid color.
-
-    \sa backgroundColor(), setBackgroundColor()
-*/
-
-QColor QtTreePropertyBrowser::calculatedBackgroundColor(QtBrowserItem *item) const
-{
-    return d_ptr->calculatedBackgroundColor(item);
-}
-
-/*!
-    \property QtTreePropertyBrowser::propertiesWithoutValueMarked
-    \brief whether to enable or disable marking properties without value.
-
-    When marking is enabled the item's background is rendered in dark color and item's
-    foreground is rendered with light color.
-
-    \sa propertiesWithoutValueMarked()
-*/
-void QtTreePropertyBrowser::setPropertiesWithoutValueMarked(bool mark)
-{
-    if (d_ptr->m_markPropertiesWithoutValue == mark)
-        return;
-
-    d_ptr->m_markPropertiesWithoutValue = mark;
-    QMapIterator<QTreeWidgetItem *, QtBrowserItem *> it(d_ptr->m_itemToIndex);
-    while (it.hasNext()) {
-        QtProperty *property = it.next().value()->property();
-        if (!property->hasValue())
-            d_ptr->updateItem(it.key());
-    }
-    d_ptr->m_treeWidget->viewport()->update();
-}
-
-bool QtTreePropertyBrowser::propertiesWithoutValueMarked() const
-{
-    return d_ptr->m_markPropertiesWithoutValue;
-}
-
-/*!
-    \reimp
-*/
-void QtTreePropertyBrowser::itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem)
-{
-    d_ptr->propertyInserted(item, afterItem);
-}
-
-/*!
-    \reimp
-*/
-void QtTreePropertyBrowser::itemRemoved(QtBrowserItem *item)
-{
-    d_ptr->propertyRemoved(item);
-}
-
-/*!
-    \reimp
-*/
-void QtTreePropertyBrowser::itemChanged(QtBrowserItem *item)
-{
-    d_ptr->propertyChanged(item);
-}
-
-/*!
-    Sets the current item to \a item and opens the relevant editor for it.
-*/
-void QtTreePropertyBrowser::editItem(QtBrowserItem *item)
-{
-    d_ptr->editItem(item);
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qttreepropertybrowser.cpp"
-#include "qttreepropertybrowser.moc"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.h b/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.h
deleted file mode 100644
index 58fce61ed8d0db4c532fad482e11116f31e203c4..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qttreepropertybrowser.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTTREEPROPERTYBROWSER_H
-#define QTTREEPROPERTYBROWSER_H
-
-#include "qtpropertybrowser.h"
-
-QT_BEGIN_NAMESPACE
-
-class QTreeWidgetItem;
-class QtTreePropertyBrowserPrivate;
-
-class QtTreePropertyBrowser : public QtAbstractPropertyBrowser
-{
-    Q_OBJECT
-    Q_ENUMS(ResizeMode)
-    Q_PROPERTY(int indentation READ indentation WRITE setIndentation)
-    Q_PROPERTY(bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated)
-    Q_PROPERTY(bool alternatingRowColors READ alternatingRowColors WRITE setAlternatingRowColors)
-    Q_PROPERTY(bool headerVisible READ isHeaderVisible WRITE setHeaderVisible)
-    Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
-    Q_PROPERTY(int splitterPosition READ splitterPosition WRITE setSplitterPosition)
-    Q_PROPERTY(bool propertiesWithoutValueMarked READ propertiesWithoutValueMarked WRITE setPropertiesWithoutValueMarked)
-public:
-
-    enum ResizeMode
-    {
-        Interactive,
-        Stretch,
-        Fixed,
-        ResizeToContents
-    };
-
-    QtTreePropertyBrowser(QWidget *parent = 0);
-    virtual ~QtTreePropertyBrowser();
-
-    int indentation() const;
-    void setIndentation(int i);
-
-    bool rootIsDecorated() const;
-    void setRootIsDecorated(bool show);
-
-    bool alternatingRowColors() const;
-    void setAlternatingRowColors(bool enable);
-
-    bool isHeaderVisible() const;
-    void setHeaderVisible(bool visible);
-
-    ResizeMode resizeMode() const;
-    void setResizeMode(ResizeMode mode);
-
-    int splitterPosition() const;
-    void setSplitterPosition(int position);
-
-    void setExpanded(QtBrowserItem *item, bool expanded);
-    bool isExpanded(QtBrowserItem *item) const;
-
-    bool isItemVisible(QtBrowserItem *item) const;
-    void setItemVisible(QtBrowserItem *item, bool visible);
-
-    void setBackgroundColor(QtBrowserItem *item, const QColor &color);
-    QColor backgroundColor(QtBrowserItem *item) const;
-    QColor calculatedBackgroundColor(QtBrowserItem *item) const;
-
-    void setPropertiesWithoutValueMarked(bool mark);
-    bool propertiesWithoutValueMarked() const;
-
-    void editItem(QtBrowserItem *item);
-
-Q_SIGNALS:
-
-    void collapsed(QtBrowserItem *item);
-    void expanded(QtBrowserItem *item);
-
-protected:
-    virtual void itemInserted(QtBrowserItem *item, QtBrowserItem *afterItem);
-    virtual void itemRemoved(QtBrowserItem *item);
-    virtual void itemChanged(QtBrowserItem *item);
-
-private:
-
-    QScopedPointer<QtTreePropertyBrowserPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtTreePropertyBrowser)
-    Q_DISABLE_COPY(QtTreePropertyBrowser)
-
-    Q_PRIVATE_SLOT(d_func(), void slotCollapsed(const QModelIndex &))
-    Q_PRIVATE_SLOT(d_func(), void slotExpanded(const QModelIndex &))
-    Q_PRIVATE_SLOT(d_func(), void slotCurrentBrowserItemChanged(QtBrowserItem *))
-    Q_PRIVATE_SLOT(d_func(), void slotCurrentTreeItemChanged(QTreeWidgetItem *, QTreeWidgetItem *))
-
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.cpp b/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.cpp
deleted file mode 100644
index 3056984a5e20937d738822febe5f9226faabbd3a..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.cpp
+++ /dev/null
@@ -1,2259 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qtvariantproperty.h"
-#include "qtpropertymanager.h"
-#include "qteditorfactory.h"
-#include <QtCore/QVariant>
-#include <QtGui/QIcon>
-#include <QtCore/QDate>
-#include <QtCore/QLocale>
-
-#if defined(Q_CC_MSVC)
-#    pragma warning(disable: 4786) /* MS VS 6: truncating debug info after 255 characters */
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QtEnumPropertyType
-{
-};
-
-
-class QtFlagPropertyType
-{
-};
-
-
-class QtGroupPropertyType
-{
-};
-
-QT_END_NAMESPACE
-
-Q_DECLARE_METATYPE(QtEnumPropertyType)
-Q_DECLARE_METATYPE(QtFlagPropertyType)
-Q_DECLARE_METATYPE(QtGroupPropertyType)
-
-QT_BEGIN_NAMESPACE
-
-/*!
-    Returns the type id for an enum property.
-
-    Note that the property's value type can be retrieved using the
-    valueType() function (which is QVariant::Int for the enum property
-    type).
-
-    \sa propertyType(), valueType()
-*/
-int QtVariantPropertyManager::enumTypeId()
-{
-    return qMetaTypeId<QtEnumPropertyType>();
-}
-
-/*!
-    Returns the type id for a flag property.
-
-    Note that the property's value type can be retrieved using the
-    valueType() function (which is QVariant::Int for the flag property
-    type).
-
-    \sa propertyType(), valueType()
-*/
-int QtVariantPropertyManager::flagTypeId()
-{
-    return qMetaTypeId<QtFlagPropertyType>();
-}
-
-/*!
-    Returns the type id for a group property.
-
-    Note that the property's value type can be retrieved using the
-    valueType() function (which is QVariant::Invalid for the group
-    property type, since it doesn't provide any value).
-
-    \sa propertyType(), valueType()
-*/
-int QtVariantPropertyManager::groupTypeId()
-{
-    return qMetaTypeId<QtGroupPropertyType>();
-}
-
-/*!
-    Returns the type id for a icon map attribute.
-
-    Note that the property's attribute type can be retrieved using the
-    attributeType() function.
-
-    \sa attributeType(), QtEnumPropertyManager::enumIcons()
-*/
-int QtVariantPropertyManager::iconMapTypeId()
-{
-    return qMetaTypeId<QtIconMap>();
-}
-
-typedef QMap<const QtProperty *, QtProperty *> PropertyMap;
-Q_GLOBAL_STATIC(PropertyMap, propertyToWrappedProperty)
-
-static QtProperty *wrappedProperty(QtProperty *property)
-{
-    return propertyToWrappedProperty()->value(property, 0);
-}
-
-class QtVariantPropertyPrivate
-{
-public:
-    QtVariantPropertyPrivate(QtVariantPropertyManager *m) : manager(m) {}
-
-    QtVariantPropertyManager *manager;
-};
-
-/*!
-    \class QtVariantProperty
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtVariantProperty class is a convenience class handling
-    QVariant based properties.
-
-    QtVariantProperty provides additional API: A property's type,
-    value type, attribute values and current value can easily be
-    retrieved using the propertyType(), valueType(), attributeValue()
-    and value() functions respectively. In addition, the attribute
-    values and the current value can be set using the corresponding
-    setValue() and setAttribute() functions.
-
-    For example, instead of writing:
-
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp 0
-
-    you can write:
-
-    \snippet doc/src/snippets/code/tools_shared_qtpropertybrowser_qtvariantproperty.cpp 1
-
-    QtVariantProperty instances can only be created by the
-    QtVariantPropertyManager class.
-
-    \sa QtProperty, QtVariantPropertyManager, QtVariantEditorFactory
-*/
-
-/*!
-    Creates a variant property using the given \a manager.
-
-    Do not use this constructor to create variant property instances;
-    use the QtVariantPropertyManager::addProperty() function
-    instead.  This constructor is used internally by the
-    QtVariantPropertyManager::createProperty() function.
-
-    \sa QtVariantPropertyManager
-*/
-QtVariantProperty::QtVariantProperty(QtVariantPropertyManager *manager)
-    : QtProperty(manager), d_ptr(new QtVariantPropertyPrivate(manager))
-{
-}
-
-/*!
-    Destroys this property.
-
-    \sa QtProperty::~QtProperty()
-*/
-QtVariantProperty::~QtVariantProperty()
-{
-}
-
-/*!
-    Returns the property's current value.
-
-    \sa valueType(), setValue()
-*/
-QVariant QtVariantProperty::value() const
-{
-    return d_ptr->manager->value(this);
-}
-
-/*!
-    Returns this property's value for the specified \a attribute.
-
-    QtVariantPropertyManager provides a couple of related functions:
-    \l{QtVariantPropertyManager::attributes()}{attributes()} and
-    \l{QtVariantPropertyManager::attributeType()}{attributeType()}.
-
-    \sa setAttribute()
-*/
-QVariant QtVariantProperty::attributeValue(const QString &attribute) const
-{
-    return d_ptr->manager->attributeValue(this, attribute);
-}
-
-/*!
-    Returns the type of this property's value.
-
-    \sa propertyType()
-*/
-int QtVariantProperty::valueType() const
-{
-    return d_ptr->manager->valueType(this);
-}
-
-/*!
-    Returns this property's type.
-
-    QtVariantPropertyManager provides several related functions:
-    \l{QtVariantPropertyManager::enumTypeId()}{enumTypeId()},
-    \l{QtVariantPropertyManager::flagTypeId()}{flagTypeId()} and
-    \l{QtVariantPropertyManager::groupTypeId()}{groupTypeId()}.
-
-    \sa valueType()
-*/
-int QtVariantProperty::propertyType() const
-{
-    return d_ptr->manager->propertyType(this);
-}
-
-/*!
-    Sets the value of this property to \a value.
-
-    The specified \a value must be of the type returned by
-    valueType(), or of a type that can be converted to valueType()
-    using the QVariant::canConvert() function; otherwise this function
-    does nothing.
-
-    \sa value()
-*/
-void QtVariantProperty::setValue(const QVariant &value)
-{
-    d_ptr->manager->setValue(this, value);
-}
-
-/*!
-    Sets the \a attribute of property to \a value.
-
-    QtVariantPropertyManager provides the related
-    \l{QtVariantPropertyManager::setAttribute()}{setAttribute()}
-    function.
-
-    \sa attributeValue()
-*/
-void QtVariantProperty::setAttribute(const QString &attribute, const QVariant &value)
-{
-    d_ptr->manager->setAttribute(this, attribute, value);
-}
-
-class QtVariantPropertyManagerPrivate
-{
-    QtVariantPropertyManager *q_ptr;
-    Q_DECLARE_PUBLIC(QtVariantPropertyManager)
-public:
-    QtVariantPropertyManagerPrivate();
-
-    bool m_creatingProperty;
-    bool m_creatingSubProperties;
-    bool m_destroyingSubProperties;
-    int m_propertyType;
-
-    void slotValueChanged(QtProperty *property, int val);
-    void slotRangeChanged(QtProperty *property, int min, int max);
-    void slotSingleStepChanged(QtProperty *property, int step);
-    void slotValueChanged(QtProperty *property, double val);
-    void slotRangeChanged(QtProperty *property, double min, double max);
-    void slotSingleStepChanged(QtProperty *property, double step);
-    void slotDecimalsChanged(QtProperty *property, int prec);
-    void slotValueChanged(QtProperty *property, bool val);
-    void slotValueChanged(QtProperty *property, const QString &val);
-    void slotRegExpChanged(QtProperty *property, const QRegExp &regExp);
-    void slotValueChanged(QtProperty *property, const QDate &val);
-    void slotRangeChanged(QtProperty *property, const QDate &min, const QDate &max);
-    void slotValueChanged(QtProperty *property, const QTime &val);
-    void slotValueChanged(QtProperty *property, const QDateTime &val);
-    void slotValueChanged(QtProperty *property, const QKeySequence &val);
-    void slotValueChanged(QtProperty *property, const QChar &val);
-    void slotValueChanged(QtProperty *property, const QLocale &val);
-    void slotValueChanged(QtProperty *property, const QPoint &val);
-    void slotValueChanged(QtProperty *property, const QPointF &val);
-    void slotValueChanged(QtProperty *property, const QSize &val);
-    void slotRangeChanged(QtProperty *property, const QSize &min, const QSize &max);
-    void slotValueChanged(QtProperty *property, const QSizeF &val);
-    void slotRangeChanged(QtProperty *property, const QSizeF &min, const QSizeF &max);
-    void slotValueChanged(QtProperty *property, const QRect &val);
-    void slotConstraintChanged(QtProperty *property, const QRect &val);
-    void slotValueChanged(QtProperty *property, const QRectF &val);
-    void slotConstraintChanged(QtProperty *property, const QRectF &val);
-    void slotValueChanged(QtProperty *property, const QColor &val);
-    void slotEnumChanged(QtProperty *property, int val);
-    void slotEnumNamesChanged(QtProperty *property, const QStringList &enumNames);
-    void slotEnumIconsChanged(QtProperty *property, const QMap<int, QIcon> &enumIcons);
-    void slotValueChanged(QtProperty *property, const QSizePolicy &val);
-    void slotValueChanged(QtProperty *property, const QFont &val);
-    void slotValueChanged(QtProperty *property, const QCursor &val);
-    void slotFlagChanged(QtProperty *property, int val);
-    void slotFlagNamesChanged(QtProperty *property, const QStringList &flagNames);
-    void slotPropertyInserted(QtProperty *property, QtProperty *parent, QtProperty *after);
-    void slotPropertyRemoved(QtProperty *property, QtProperty *parent);
-
-    void valueChanged(QtProperty *property, const QVariant &val);
-
-    int internalPropertyToType(QtProperty *property) const;
-    QtVariantProperty *createSubProperty(QtVariantProperty *parent, QtVariantProperty *after,
-            QtProperty *internal);
-    void removeSubProperty(QtVariantProperty *property);
-
-    QMap<int, QtAbstractPropertyManager *> m_typeToPropertyManager;
-    QMap<int, QMap<QString, int> > m_typeToAttributeToAttributeType;
-
-    QMap<const QtProperty *, QPair<QtVariantProperty *, int> > m_propertyToType;
-
-    QMap<int, int> m_typeToValueType;
-
-
-    QMap<QtProperty *, QtVariantProperty *> m_internalToProperty;
-
-    const QString m_constraintAttribute;
-    const QString m_singleStepAttribute;
-    const QString m_decimalsAttribute;
-    const QString m_enumIconsAttribute;
-    const QString m_enumNamesAttribute;
-    const QString m_flagNamesAttribute;
-    const QString m_maximumAttribute;
-    const QString m_minimumAttribute;
-    const QString m_regExpAttribute;
-};
-
-QtVariantPropertyManagerPrivate::QtVariantPropertyManagerPrivate() :
-    m_constraintAttribute(QLatin1String("constraint")),
-    m_singleStepAttribute(QLatin1String("singleStep")),
-    m_decimalsAttribute(QLatin1String("decimals")),
-    m_enumIconsAttribute(QLatin1String("enumIcons")),
-    m_enumNamesAttribute(QLatin1String("enumNames")),
-    m_flagNamesAttribute(QLatin1String("flagNames")),
-    m_maximumAttribute(QLatin1String("maximum")),
-    m_minimumAttribute(QLatin1String("minimum")),
-    m_regExpAttribute(QLatin1String("regExp"))
-{
-}
-
-int QtVariantPropertyManagerPrivate::internalPropertyToType(QtProperty *property) const
-{
-    int type = 0;
-    QtAbstractPropertyManager *internPropertyManager = property->propertyManager();
-    if (qobject_cast<QtIntPropertyManager *>(internPropertyManager))
-        type = QVariant::Int;
-    else if (qobject_cast<QtEnumPropertyManager *>(internPropertyManager))
-        type = QtVariantPropertyManager::enumTypeId();
-    else if (qobject_cast<QtBoolPropertyManager *>(internPropertyManager))
-        type = QVariant::Bool;
-    else if (qobject_cast<QtDoublePropertyManager *>(internPropertyManager))
-        type = QVariant::Double;
-    return type;
-}
-
-QtVariantProperty *QtVariantPropertyManagerPrivate::createSubProperty(QtVariantProperty *parent,
-            QtVariantProperty *after, QtProperty *internal)
-{
-    int type = internalPropertyToType(internal);
-    if (!type)
-        return 0;
-
-    bool wasCreatingSubProperties = m_creatingSubProperties;
-    m_creatingSubProperties = true;
-
-    QtVariantProperty *varChild = q_ptr->addProperty(type, internal->propertyName());
-
-    m_creatingSubProperties = wasCreatingSubProperties;
-
-    varChild->setPropertyName(internal->propertyName());
-    varChild->setToolTip(internal->toolTip());
-    varChild->setStatusTip(internal->statusTip());
-    varChild->setWhatsThis(internal->whatsThis());
-
-    parent->insertSubProperty(varChild, after);
-
-    m_internalToProperty[internal] = varChild;
-    propertyToWrappedProperty()->insert(varChild, internal);
-    return varChild;
-}
-
-void QtVariantPropertyManagerPrivate::removeSubProperty(QtVariantProperty *property)
-{
-    QtProperty *internChild = wrappedProperty(property);
-    bool wasDestroyingSubProperties = m_destroyingSubProperties;
-    m_destroyingSubProperties = true;
-    delete property;
-    m_destroyingSubProperties = wasDestroyingSubProperties;
-    m_internalToProperty.remove(internChild);
-    propertyToWrappedProperty()->remove(property);
-}
-
-void QtVariantPropertyManagerPrivate::slotPropertyInserted(QtProperty *property,
-            QtProperty *parent, QtProperty *after)
-{
-    if (m_creatingProperty)
-        return;
-
-    QtVariantProperty *varParent = m_internalToProperty.value(parent, 0);
-    if (!varParent)
-        return;
-
-    QtVariantProperty *varAfter = 0;
-    if (after) {
-        varAfter = m_internalToProperty.value(after, 0);
-        if (!varAfter)
-            return;
-    }
-
-    createSubProperty(varParent, varAfter, property);
-}
-
-void QtVariantPropertyManagerPrivate::slotPropertyRemoved(QtProperty *property, QtProperty *parent)
-{
-    Q_UNUSED(parent)
-
-    QtVariantProperty *varProperty = m_internalToProperty.value(property, 0);
-    if (!varProperty)
-        return;
-
-    removeSubProperty(varProperty);
-}
-
-void QtVariantPropertyManagerPrivate::valueChanged(QtProperty *property, const QVariant &val)
-{
-    QtVariantProperty *varProp = m_internalToProperty.value(property, 0);
-    if (!varProp)
-        return;
-    emit q_ptr->valueChanged(varProp, val);
-    emit q_ptr->propertyChanged(varProp);
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, int val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRangeChanged(QtProperty *property, int min, int max)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        emit q_ptr->attributeChanged(varProp, m_minimumAttribute, QVariant(min));
-        emit q_ptr->attributeChanged(varProp, m_maximumAttribute, QVariant(max));
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotSingleStepChanged(QtProperty *property, int step)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_singleStepAttribute, QVariant(step));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, double val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRangeChanged(QtProperty *property, double min, double max)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        emit q_ptr->attributeChanged(varProp, m_minimumAttribute, QVariant(min));
-        emit q_ptr->attributeChanged(varProp, m_maximumAttribute, QVariant(max));
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotSingleStepChanged(QtProperty *property, double step)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_singleStepAttribute, QVariant(step));
-}
-
-void QtVariantPropertyManagerPrivate::slotDecimalsChanged(QtProperty *property, int prec)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_decimalsAttribute, QVariant(prec));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, bool val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QString &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRegExpChanged(QtProperty *property, const QRegExp &regExp)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_regExpAttribute, QVariant(regExp));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QDate &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRangeChanged(QtProperty *property, const QDate &min, const QDate &max)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        emit q_ptr->attributeChanged(varProp, m_minimumAttribute, QVariant(min));
-        emit q_ptr->attributeChanged(varProp, m_maximumAttribute, QVariant(max));
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QTime &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QDateTime &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QKeySequence &val)
-{
-    QVariant v;
-    v.setValue(val);
-    valueChanged(property, v);
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QChar &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QLocale &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QPoint &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QPointF &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QSize &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRangeChanged(QtProperty *property, const QSize &min, const QSize &max)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        emit q_ptr->attributeChanged(varProp, m_minimumAttribute, QVariant(min));
-        emit q_ptr->attributeChanged(varProp, m_maximumAttribute, QVariant(max));
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QSizeF &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotRangeChanged(QtProperty *property, const QSizeF &min, const QSizeF &max)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        emit q_ptr->attributeChanged(varProp, m_minimumAttribute, QVariant(min));
-        emit q_ptr->attributeChanged(varProp, m_maximumAttribute, QVariant(max));
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QRect &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotConstraintChanged(QtProperty *property, const QRect &constraint)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_constraintAttribute, QVariant(constraint));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QRectF &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotConstraintChanged(QtProperty *property, const QRectF &constraint)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_constraintAttribute, QVariant(constraint));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QColor &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotEnumNamesChanged(QtProperty *property, const QStringList &enumNames)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_enumNamesAttribute, QVariant(enumNames));
-}
-
-void QtVariantPropertyManagerPrivate::slotEnumIconsChanged(QtProperty *property, const QMap<int, QIcon> &enumIcons)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0)) {
-        QVariant v;
-        v.setValue(enumIcons);
-        emit q_ptr->attributeChanged(varProp, m_enumIconsAttribute, v);
-    }
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QSizePolicy &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QFont &val)
-{
-    valueChanged(property, QVariant(val));
-}
-
-void QtVariantPropertyManagerPrivate::slotValueChanged(QtProperty *property, const QCursor &val)
-{
-#ifndef QT_NO_CURSOR
-    valueChanged(property, QVariant(val));
-#endif
-}
-
-void QtVariantPropertyManagerPrivate::slotFlagNamesChanged(QtProperty *property, const QStringList &flagNames)
-{
-    if (QtVariantProperty *varProp = m_internalToProperty.value(property, 0))
-        emit q_ptr->attributeChanged(varProp, m_flagNamesAttribute, QVariant(flagNames));
-}
-
-/*!
-    \class QtVariantPropertyManager
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtVariantPropertyManager class provides and manages QVariant based properties.
-
-    QtVariantPropertyManager provides the addProperty() function which
-    creates QtVariantProperty objects. The QtVariantProperty class is
-    a convenience class handling QVariant based properties inheriting
-    QtProperty. A QtProperty object created by a
-    QtVariantPropertyManager instance can be converted into a
-    QtVariantProperty object using the variantProperty() function.
-
-    The property's value can be retrieved using the value(), and set
-    using the setValue() slot. In addition the property's type, and
-    the type of its value, can be retrieved using the propertyType()
-    and valueType() functions respectively.
-
-    A property's type is a QVariant::Type enumerator value, and
-    usually a property's type is the same as its value type. But for
-    some properties the types differ, for example for enums, flags and
-    group types in which case QtVariantPropertyManager provides the
-    enumTypeId(), flagTypeId() and groupTypeId() functions,
-    respectively, to identify their property type (the value types are
-    QVariant::Int for the enum and flag types, and QVariant::Invalid
-    for the group type).
-
-    Use the isPropertyTypeSupported() function to check if a particular
-    property type is supported. The currently supported property types
-    are:
-
-    \table
-    \header
-        \li Property Type
-        \li Property Type Id
-    \row
-        \li int
-        \li QVariant::Int
-    \row
-        \li double
-        \li QVariant::Double
-    \row
-        \li bool
-        \li QVariant::Bool
-    \row
-        \li QString
-        \li QVariant::String
-    \row
-        \li QDate
-        \li QVariant::Date
-    \row
-        \li QTime
-        \li QVariant::Time
-    \row
-        \li QDateTime
-        \li QVariant::DateTime
-    \row
-        \li QKeySequence
-        \li QVariant::KeySequence
-    \row
-        \li QChar
-        \li QVariant::Char
-    \row
-        \li QLocale
-        \li QVariant::Locale
-    \row
-        \li QPoint
-        \li QVariant::Point
-    \row
-        \li QPointF
-        \li QVariant::PointF
-    \row
-        \li QSize
-        \li QVariant::Size
-    \row
-        \li QSizeF
-        \li QVariant::SizeF
-    \row
-        \li QRect
-        \li QVariant::Rect
-    \row
-        \li QRectF
-        \li QVariant::RectF
-    \row
-        \li QColor
-        \li QVariant::Color
-    \row
-        \li QSizePolicy
-        \li QVariant::SizePolicy
-    \row
-        \li QFont
-        \li QVariant::Font
-    \row
-        \li QCursor
-        \li QVariant::Cursor
-    \row
-        \li enum
-        \li enumTypeId()
-    \row
-        \li flag
-        \li flagTypeId()
-    \row
-        \li group
-        \li groupTypeId()
-    \endtable
-
-    Each property type can provide additional attributes,
-    e.g. QVariant::Int and QVariant::Double provides minimum and
-    maximum values. The currently supported attributes are:
-
-    \table
-    \header
-        \li Property Type
-        \li Attribute Name
-        \li Attribute Type
-    \row
-        \li \c int
-        \li minimum
-        \li QVariant::Int
-    \row
-        \li
-        \li maximum
-        \li QVariant::Int
-    \row
-        \li
-        \li singleStep
-        \li QVariant::Int
-    \row
-        \li \c double
-        \li minimum
-        \li QVariant::Double
-    \row
-        \li
-        \li maximum
-        \li QVariant::Double
-    \row
-        \li
-        \li singleStep
-        \li QVariant::Double
-    \row
-        \li
-        \li decimals
-        \li QVariant::Int
-    \row
-        \li QString
-        \li regExp
-        \li QVariant::RegExp
-    \row
-        \li QDate
-        \li minimum
-        \li QVariant::Date
-    \row
-        \li
-        \li maximum
-        \li QVariant::Date
-    \row
-        \li QPointF
-        \li decimals
-        \li QVariant::Int
-    \row
-        \li QSize
-        \li minimum
-        \li QVariant::Size
-    \row
-        \li
-        \li maximum
-        \li QVariant::Size
-    \row
-        \li QSizeF
-        \li minimum
-        \li QVariant::SizeF
-    \row
-        \li
-        \li maximum
-        \li QVariant::SizeF
-    \row
-        \li
-        \li decimals
-        \li QVariant::Int
-    \row
-        \li QRect
-        \li constraint
-        \li QVariant::Rect
-    \row
-        \li QRectF
-        \li constraint
-        \li QVariant::RectF
-    \row
-        \li
-        \li decimals
-        \li QVariant::Int
-    \row
-        \li \c enum
-        \li enumNames
-        \li QVariant::StringList
-    \row
-        \li
-        \li enumIcons
-        \li iconMapTypeId()
-    \row
-        \li \c flag
-        \li flagNames
-        \li QVariant::StringList
-    \endtable
-
-    The attributes for a given property type can be retrieved using
-    the attributes() function. Each attribute has a value type which
-    can be retrieved using the attributeType() function, and a value
-    accessible through the attributeValue() function. In addition, the
-    value can be set using the setAttribute() slot.
-
-    QtVariantManager also provides the valueChanged() signal which is
-    emitted whenever a property created by this manager change, and
-    the attributeChanged() signal which is emitted whenever an
-    attribute of such a property changes.
-
-    \sa QtVariantProperty, QtVariantEditorFactory
-*/
-
-/*!
-    \fn void QtVariantPropertyManager::valueChanged(QtProperty *property, const QVariant &value)
-
-    This signal is emitted whenever a property created by this manager
-    changes its value, passing a pointer to the \a property and the
-    new \a value as parameters.
-
-    \sa setValue()
-*/
-
-/*!
-    \fn void QtVariantPropertyManager::attributeChanged(QtProperty *property,
-                const QString &attribute, const QVariant &value)
-
-    This signal is emitted whenever an attribute of a property created
-    by this manager changes its value, passing a pointer to the \a
-    property, the \a attribute and the new \a value as parameters.
-
-    \sa setAttribute()
-*/
-
-/*!
-    Creates a manager with the given \a parent.
-*/
-QtVariantPropertyManager::QtVariantPropertyManager(QObject *parent)
-    : QtAbstractPropertyManager(parent), d_ptr(new QtVariantPropertyManagerPrivate)
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_creatingProperty = false;
-    d_ptr->m_creatingSubProperties = false;
-    d_ptr->m_destroyingSubProperties = false;
-    d_ptr->m_propertyType = 0;
-
-    // IntPropertyManager
-    QtIntPropertyManager *intPropertyManager = new QtIntPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Int] = intPropertyManager;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Int][d_ptr->m_minimumAttribute] = QVariant::Int;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Int][d_ptr->m_maximumAttribute] = QVariant::Int;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Int][d_ptr->m_singleStepAttribute] = QVariant::Int;
-    d_ptr->m_typeToValueType[QVariant::Int] = QVariant::Int;
-    connect(intPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(intPropertyManager, SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(intPropertyManager, SIGNAL(singleStepChanged(QtProperty*,int)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,int)));
-    // DoublePropertyManager
-    QtDoublePropertyManager *doublePropertyManager = new QtDoublePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Double] = doublePropertyManager;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Double][d_ptr->m_minimumAttribute] =
-            QVariant::Double;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Double][d_ptr->m_maximumAttribute] =
-            QVariant::Double;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Double][d_ptr->m_singleStepAttribute] =
-            QVariant::Double;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Double][d_ptr->m_decimalsAttribute] =
-            QVariant::Int;
-    d_ptr->m_typeToValueType[QVariant::Double] = QVariant::Double;
-    connect(doublePropertyManager, SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotValueChanged(QtProperty*,double)));
-    connect(doublePropertyManager, SIGNAL(rangeChanged(QtProperty*,double,double)),
-                this, SLOT(slotRangeChanged(QtProperty*,double,double)));
-    connect(doublePropertyManager, SIGNAL(singleStepChanged(QtProperty*,double)),
-                this, SLOT(slotSingleStepChanged(QtProperty*,double)));
-    connect(doublePropertyManager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-    // BoolPropertyManager
-    QtBoolPropertyManager *boolPropertyManager = new QtBoolPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Bool] = boolPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Bool] = QVariant::Bool;
-    connect(boolPropertyManager, SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotValueChanged(QtProperty*,bool)));
-    // StringPropertyManager
-    QtStringPropertyManager *stringPropertyManager = new QtStringPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::String] = stringPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::String] = QVariant::String;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::String][d_ptr->m_regExpAttribute] =
-            QVariant::RegExp;
-    connect(stringPropertyManager, SIGNAL(valueChanged(QtProperty*,QString)),
-                this, SLOT(slotValueChanged(QtProperty*,QString)));
-    connect(stringPropertyManager, SIGNAL(regExpChanged(QtProperty*,QRegExp)),
-                this, SLOT(slotRegExpChanged(QtProperty*,QRegExp)));
-    // DatePropertyManager
-    QtDatePropertyManager *datePropertyManager = new QtDatePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Date] = datePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Date] = QVariant::Date;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Date][d_ptr->m_minimumAttribute] =
-            QVariant::Date;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Date][d_ptr->m_maximumAttribute] =
-            QVariant::Date;
-    connect(datePropertyManager, SIGNAL(valueChanged(QtProperty*,QDate)),
-                this, SLOT(slotValueChanged(QtProperty*,QDate)));
-    connect(datePropertyManager, SIGNAL(rangeChanged(QtProperty*,QDate,QDate)),
-                this, SLOT(slotRangeChanged(QtProperty*,QDate,QDate)));
-    // TimePropertyManager
-    QtTimePropertyManager *timePropertyManager = new QtTimePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Time] = timePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Time] = QVariant::Time;
-    connect(timePropertyManager, SIGNAL(valueChanged(QtProperty*,QTime)),
-                this, SLOT(slotValueChanged(QtProperty*,QTime)));
-    // DateTimePropertyManager
-    QtDateTimePropertyManager *dateTimePropertyManager = new QtDateTimePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::DateTime] = dateTimePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::DateTime] = QVariant::DateTime;
-    connect(dateTimePropertyManager, SIGNAL(valueChanged(QtProperty*,QDateTime)),
-                this, SLOT(slotValueChanged(QtProperty*,QDateTime)));
-    // KeySequencePropertyManager
-    QtKeySequencePropertyManager *keySequencePropertyManager = new QtKeySequencePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::KeySequence] = keySequencePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::KeySequence] = QVariant::KeySequence;
-    connect(keySequencePropertyManager, SIGNAL(valueChanged(QtProperty*,QKeySequence)),
-                this, SLOT(slotValueChanged(QtProperty*,QKeySequence)));
-    // CharPropertyManager
-    QtCharPropertyManager *charPropertyManager = new QtCharPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Char] = charPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Char] = QVariant::Char;
-    connect(charPropertyManager, SIGNAL(valueChanged(QtProperty*,QChar)),
-                this, SLOT(slotValueChanged(QtProperty*,QChar)));
-    // LocalePropertyManager
-    QtLocalePropertyManager *localePropertyManager = new QtLocalePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Locale] = localePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Locale] = QVariant::Locale;
-    connect(localePropertyManager, SIGNAL(valueChanged(QtProperty*,QLocale)),
-                this, SLOT(slotValueChanged(QtProperty*,QLocale)));
-    connect(localePropertyManager->subEnumPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(localePropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(localePropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // PointPropertyManager
-    QtPointPropertyManager *pointPropertyManager = new QtPointPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Point] = pointPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Point] = QVariant::Point;
-    connect(pointPropertyManager, SIGNAL(valueChanged(QtProperty*,QPoint)),
-                this, SLOT(slotValueChanged(QtProperty*,QPoint)));
-    connect(pointPropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(pointPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(pointPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // PointFPropertyManager
-    QtPointFPropertyManager *pointFPropertyManager = new QtPointFPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::PointF] = pointFPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::PointF] = QVariant::PointF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::PointF][d_ptr->m_decimalsAttribute] =
-            QVariant::Int;
-    connect(pointFPropertyManager, SIGNAL(valueChanged(QtProperty*,QPointF)),
-                this, SLOT(slotValueChanged(QtProperty*,QPointF)));
-    connect(pointFPropertyManager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-    connect(pointFPropertyManager->subDoublePropertyManager(), SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotValueChanged(QtProperty*,double)));
-    connect(pointFPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(pointFPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // SizePropertyManager
-    QtSizePropertyManager *sizePropertyManager = new QtSizePropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Size] = sizePropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Size] = QVariant::Size;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Size][d_ptr->m_minimumAttribute] =
-            QVariant::Size;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Size][d_ptr->m_maximumAttribute] =
-            QVariant::Size;
-    connect(sizePropertyManager, SIGNAL(valueChanged(QtProperty*,QSize)),
-                this, SLOT(slotValueChanged(QtProperty*,QSize)));
-    connect(sizePropertyManager, SIGNAL(rangeChanged(QtProperty*,QSize,QSize)),
-                this, SLOT(slotRangeChanged(QtProperty*,QSize,QSize)));
-    connect(sizePropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(sizePropertyManager->subIntPropertyManager(), SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(sizePropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(sizePropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // SizeFPropertyManager
-    QtSizeFPropertyManager *sizeFPropertyManager = new QtSizeFPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::SizeF] = sizeFPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::SizeF] = QVariant::SizeF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::SizeF][d_ptr->m_minimumAttribute] =
-            QVariant::SizeF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::SizeF][d_ptr->m_maximumAttribute] =
-            QVariant::SizeF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::SizeF][d_ptr->m_decimalsAttribute] =
-            QVariant::Int;
-    connect(sizeFPropertyManager, SIGNAL(valueChanged(QtProperty*,QSizeF)),
-                this, SLOT(slotValueChanged(QtProperty*,QSizeF)));
-    connect(sizeFPropertyManager, SIGNAL(rangeChanged(QtProperty*,QSizeF,QSizeF)),
-                this, SLOT(slotRangeChanged(QtProperty*,QSizeF,QSizeF)));
-    connect(sizeFPropertyManager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-    connect(sizeFPropertyManager->subDoublePropertyManager(), SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotValueChanged(QtProperty*,double)));
-    connect(sizeFPropertyManager->subDoublePropertyManager(), SIGNAL(rangeChanged(QtProperty*,double,double)),
-                this, SLOT(slotRangeChanged(QtProperty*,double,double)));
-    connect(sizeFPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(sizeFPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // RectPropertyManager
-    QtRectPropertyManager *rectPropertyManager = new QtRectPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Rect] = rectPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Rect] = QVariant::Rect;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::Rect][d_ptr->m_constraintAttribute] =
-            QVariant::Rect;
-    connect(rectPropertyManager, SIGNAL(valueChanged(QtProperty*,QRect)),
-                this, SLOT(slotValueChanged(QtProperty*,QRect)));
-    connect(rectPropertyManager, SIGNAL(constraintChanged(QtProperty*,QRect)),
-                this, SLOT(slotConstraintChanged(QtProperty*,QRect)));
-    connect(rectPropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(rectPropertyManager->subIntPropertyManager(), SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(rectPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(rectPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // RectFPropertyManager
-    QtRectFPropertyManager *rectFPropertyManager = new QtRectFPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::RectF] = rectFPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::RectF] = QVariant::RectF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::RectF][d_ptr->m_constraintAttribute] =
-            QVariant::RectF;
-    d_ptr->m_typeToAttributeToAttributeType[QVariant::RectF][d_ptr->m_decimalsAttribute] =
-            QVariant::Int;
-    connect(rectFPropertyManager, SIGNAL(valueChanged(QtProperty*,QRectF)),
-                this, SLOT(slotValueChanged(QtProperty*,QRectF)));
-    connect(rectFPropertyManager, SIGNAL(constraintChanged(QtProperty*,QRectF)),
-                this, SLOT(slotConstraintChanged(QtProperty*,QRectF)));
-    connect(rectFPropertyManager, SIGNAL(decimalsChanged(QtProperty*,int)),
-                this, SLOT(slotDecimalsChanged(QtProperty*,int)));
-    connect(rectFPropertyManager->subDoublePropertyManager(), SIGNAL(valueChanged(QtProperty*,double)),
-                this, SLOT(slotValueChanged(QtProperty*,double)));
-    connect(rectFPropertyManager->subDoublePropertyManager(), SIGNAL(rangeChanged(QtProperty*,double,double)),
-                this, SLOT(slotRangeChanged(QtProperty*,double,double)));
-    connect(rectFPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(rectFPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // ColorPropertyManager
-    QtColorPropertyManager *colorPropertyManager = new QtColorPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Color] = colorPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Color] = QVariant::Color;
-    connect(colorPropertyManager, SIGNAL(valueChanged(QtProperty*,QColor)),
-                this, SLOT(slotValueChanged(QtProperty*,QColor)));
-    connect(colorPropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(colorPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(colorPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // EnumPropertyManager
-    int enumId = enumTypeId();
-    QtEnumPropertyManager *enumPropertyManager = new QtEnumPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[enumId] = enumPropertyManager;
-    d_ptr->m_typeToValueType[enumId] = QVariant::Int;
-    d_ptr->m_typeToAttributeToAttributeType[enumId][d_ptr->m_enumNamesAttribute] =
-            QVariant::StringList;
-    d_ptr->m_typeToAttributeToAttributeType[enumId][d_ptr->m_enumIconsAttribute] =
-            iconMapTypeId();
-    connect(enumPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(enumPropertyManager, SIGNAL(enumNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotEnumNamesChanged(QtProperty*,QStringList)));
-    connect(enumPropertyManager, SIGNAL(enumIconsChanged(QtProperty*,QMap<int,QIcon>)),
-                this, SLOT(slotEnumIconsChanged(QtProperty*,QMap<int,QIcon>)));
-    // SizePolicyPropertyManager
-    QtSizePolicyPropertyManager *sizePolicyPropertyManager = new QtSizePolicyPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::SizePolicy] = sizePolicyPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::SizePolicy] = QVariant::SizePolicy;
-    connect(sizePolicyPropertyManager, SIGNAL(valueChanged(QtProperty*,QSizePolicy)),
-                this, SLOT(slotValueChanged(QtProperty*,QSizePolicy)));
-    connect(sizePolicyPropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(sizePolicyPropertyManager->subIntPropertyManager(), SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(sizePolicyPropertyManager->subEnumPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(sizePolicyPropertyManager->subEnumPropertyManager(),
-                SIGNAL(enumNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotEnumNamesChanged(QtProperty*,QStringList)));
-    connect(sizePolicyPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(sizePolicyPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // FontPropertyManager
-    QtFontPropertyManager *fontPropertyManager = new QtFontPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Font] = fontPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Font] = QVariant::Font;
-    connect(fontPropertyManager, SIGNAL(valueChanged(QtProperty*,QFont)),
-                this, SLOT(slotValueChanged(QtProperty*,QFont)));
-    connect(fontPropertyManager->subIntPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(fontPropertyManager->subIntPropertyManager(), SIGNAL(rangeChanged(QtProperty*,int,int)),
-                this, SLOT(slotRangeChanged(QtProperty*,int,int)));
-    connect(fontPropertyManager->subEnumPropertyManager(), SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(fontPropertyManager->subEnumPropertyManager(),
-                SIGNAL(enumNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotEnumNamesChanged(QtProperty*,QStringList)));
-    connect(fontPropertyManager->subBoolPropertyManager(), SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotValueChanged(QtProperty*,bool)));
-    connect(fontPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(fontPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // CursorPropertyManager
-    QtCursorPropertyManager *cursorPropertyManager = new QtCursorPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[QVariant::Cursor] = cursorPropertyManager;
-    d_ptr->m_typeToValueType[QVariant::Cursor] = QVariant::Cursor;
-    connect(cursorPropertyManager, SIGNAL(valueChanged(QtProperty*,QCursor)),
-                this, SLOT(slotValueChanged(QtProperty*,QCursor)));
-    // FlagPropertyManager
-    int flagId = flagTypeId();
-    QtFlagPropertyManager *flagPropertyManager = new QtFlagPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[flagId] = flagPropertyManager;
-    d_ptr->m_typeToValueType[flagId] = QVariant::Int;
-    d_ptr->m_typeToAttributeToAttributeType[flagId][d_ptr->m_flagNamesAttribute] =
-            QVariant::StringList;
-    connect(flagPropertyManager, SIGNAL(valueChanged(QtProperty*,int)),
-                this, SLOT(slotValueChanged(QtProperty*,int)));
-    connect(flagPropertyManager, SIGNAL(flagNamesChanged(QtProperty*,QStringList)),
-                this, SLOT(slotFlagNamesChanged(QtProperty*,QStringList)));
-    connect(flagPropertyManager->subBoolPropertyManager(), SIGNAL(valueChanged(QtProperty*,bool)),
-                this, SLOT(slotValueChanged(QtProperty*,bool)));
-    connect(flagPropertyManager, SIGNAL(propertyInserted(QtProperty*,QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyInserted(QtProperty*,QtProperty*,QtProperty*)));
-    connect(flagPropertyManager, SIGNAL(propertyRemoved(QtProperty*,QtProperty*)),
-                this, SLOT(slotPropertyRemoved(QtProperty*,QtProperty*)));
-    // FlagPropertyManager
-    int groupId = groupTypeId();
-    QtGroupPropertyManager *groupPropertyManager = new QtGroupPropertyManager(this);
-    d_ptr->m_typeToPropertyManager[groupId] = groupPropertyManager;
-    d_ptr->m_typeToValueType[groupId] = QVariant::Invalid;
-}
-
-/*!
-    Destroys this manager, and all the properties it has created.
-*/
-QtVariantPropertyManager::~QtVariantPropertyManager()
-{
-    clear();
-}
-
-/*!
-    Returns the given \a property converted into a QtVariantProperty.
-
-    If the \a property was not created by this variant manager, the
-    function returns 0.
-
-    \sa createProperty()
-*/
-QtVariantProperty *QtVariantPropertyManager::variantProperty(const QtProperty *property) const
-{
-    const QMap<const QtProperty *, QPair<QtVariantProperty *, int> >::const_iterator it = d_ptr->m_propertyToType.constFind(property);
-    if (it == d_ptr->m_propertyToType.constEnd())
-        return 0;
-    return it.value().first;
-}
-
-/*!
-    Returns true if the given \a propertyType is supported by this
-    variant manager; otherwise false.
-
-    \sa propertyType()
-*/
-bool QtVariantPropertyManager::isPropertyTypeSupported(int propertyType) const
-{
-    if (d_ptr->m_typeToValueType.contains(propertyType))
-        return true;
-    return false;
-}
-
-/*!
-   Creates and returns a variant property of the given \a propertyType
-   with the given \a name.
-
-   If the specified \a propertyType is not supported by this variant
-   manager, this function returns 0.
-
-   Do not use the inherited
-   QtAbstractPropertyManager::addProperty() function to create a
-   variant property (that function will always return 0 since it will
-   not be clear what type the property should have).
-
-    \sa isPropertyTypeSupported()
-*/
-QtVariantProperty *QtVariantPropertyManager::addProperty(int propertyType, const QString &name)
-{
-    if (!isPropertyTypeSupported(propertyType))
-        return 0;
-
-    bool wasCreating = d_ptr->m_creatingProperty;
-    d_ptr->m_creatingProperty = true;
-    d_ptr->m_propertyType = propertyType;
-    QtProperty *property = QtAbstractPropertyManager::addProperty(name);
-    d_ptr->m_creatingProperty = wasCreating;
-    d_ptr->m_propertyType = 0;
-
-    if (!property)
-        return 0;
-
-    return variantProperty(property);
-}
-
-/*!
-    Returns the given \a property's value.
-
-    If the given \a property is not managed by this manager, this
-    function returns an invalid variant.
-
-    \sa setValue()
-*/
-QVariant QtVariantPropertyManager::value(const QtProperty *property) const
-{
-    QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    if (internProp == 0)
-        return QVariant();
-
-    QtAbstractPropertyManager *manager = internProp->propertyManager();
-    if (QtIntPropertyManager *intManager = qobject_cast<QtIntPropertyManager *>(manager)) {
-        return intManager->value(internProp);
-    } else if (QtDoublePropertyManager *doubleManager = qobject_cast<QtDoublePropertyManager *>(manager)) {
-        return doubleManager->value(internProp);
-    } else if (QtBoolPropertyManager *boolManager = qobject_cast<QtBoolPropertyManager *>(manager)) {
-        return boolManager->value(internProp);
-    } else if (QtStringPropertyManager *stringManager = qobject_cast<QtStringPropertyManager *>(manager)) {
-        return stringManager->value(internProp);
-    } else if (QtDatePropertyManager *dateManager = qobject_cast<QtDatePropertyManager *>(manager)) {
-        return dateManager->value(internProp);
-    } else if (QtTimePropertyManager *timeManager = qobject_cast<QtTimePropertyManager *>(manager)) {
-        return timeManager->value(internProp);
-    } else if (QtDateTimePropertyManager *dateTimeManager = qobject_cast<QtDateTimePropertyManager *>(manager)) {
-        return dateTimeManager->value(internProp);
-    } else if (QtKeySequencePropertyManager *keySequenceManager = qobject_cast<QtKeySequencePropertyManager *>(manager)) {
-        return QVariant::fromValue(keySequenceManager->value(internProp));
-    } else if (QtCharPropertyManager *charManager = qobject_cast<QtCharPropertyManager *>(manager)) {
-        return charManager->value(internProp);
-    } else if (QtLocalePropertyManager *localeManager = qobject_cast<QtLocalePropertyManager *>(manager)) {
-        return localeManager->value(internProp);
-    } else if (QtPointPropertyManager *pointManager = qobject_cast<QtPointPropertyManager *>(manager)) {
-        return pointManager->value(internProp);
-    } else if (QtPointFPropertyManager *pointFManager = qobject_cast<QtPointFPropertyManager *>(manager)) {
-        return pointFManager->value(internProp);
-    } else if (QtSizePropertyManager *sizeManager = qobject_cast<QtSizePropertyManager *>(manager)) {
-        return sizeManager->value(internProp);
-    } else if (QtSizeFPropertyManager *sizeFManager = qobject_cast<QtSizeFPropertyManager *>(manager)) {
-        return sizeFManager->value(internProp);
-    } else if (QtRectPropertyManager *rectManager = qobject_cast<QtRectPropertyManager *>(manager)) {
-        return rectManager->value(internProp);
-    } else if (QtRectFPropertyManager *rectFManager = qobject_cast<QtRectFPropertyManager *>(manager)) {
-        return rectFManager->value(internProp);
-    } else if (QtColorPropertyManager *colorManager = qobject_cast<QtColorPropertyManager *>(manager)) {
-        return colorManager->value(internProp);
-    } else if (QtEnumPropertyManager *enumManager = qobject_cast<QtEnumPropertyManager *>(manager)) {
-        return enumManager->value(internProp);
-    } else if (QtSizePolicyPropertyManager *sizePolicyManager =
-               qobject_cast<QtSizePolicyPropertyManager *>(manager)) {
-        return sizePolicyManager->value(internProp);
-    } else if (QtFontPropertyManager *fontManager = qobject_cast<QtFontPropertyManager *>(manager)) {
-        return fontManager->value(internProp);
-#ifndef QT_NO_CURSOR
-    } else if (QtCursorPropertyManager *cursorManager = qobject_cast<QtCursorPropertyManager *>(manager)) {
-        return cursorManager->value(internProp);
-#endif
-    } else if (QtFlagPropertyManager *flagManager = qobject_cast<QtFlagPropertyManager *>(manager)) {
-        return flagManager->value(internProp);
-    }
-    return QVariant();
-}
-
-/*!
-    Returns the given \a property's value type.
-
-    \sa propertyType()
-*/
-int QtVariantPropertyManager::valueType(const QtProperty *property) const
-{
-    int propType = propertyType(property);
-    return valueType(propType);
-}
-
-/*!
-    \overload
-
-    Returns the value type associated with the given \a propertyType.
-*/
-int QtVariantPropertyManager::valueType(int propertyType) const
-{
-    if (d_ptr->m_typeToValueType.contains(propertyType))
-        return d_ptr->m_typeToValueType[propertyType];
-    return 0;
-}
-
-/*!
-    Returns the given \a property's type.
-
-    \sa valueType()
-*/
-int QtVariantPropertyManager::propertyType(const QtProperty *property) const
-{
-    const QMap<const QtProperty *, QPair<QtVariantProperty *, int> >::const_iterator it = d_ptr->m_propertyToType.constFind(property);
-    if (it == d_ptr->m_propertyToType.constEnd())
-        return 0;
-    return it.value().second;
-}
-
-/*!
-    Returns the given \a property's value for the specified \a
-    attribute
-
-    If the given \a property was not created by \e this manager, or if
-    the specified \a attribute does not exist, this function returns
-    an invalid variant.
-
-    \sa attributes(), attributeType(), setAttribute()
-*/
-QVariant QtVariantPropertyManager::attributeValue(const QtProperty *property, const QString &attribute) const
-{
-    int propType = propertyType(property);
-    if (!propType)
-        return QVariant();
-
-    QMap<int, QMap<QString, int> >::ConstIterator it =
-            d_ptr->m_typeToAttributeToAttributeType.find(propType);
-    if (it == d_ptr->m_typeToAttributeToAttributeType.constEnd())
-        return QVariant();
-
-    QMap<QString, int> attributes = it.value();
-    QMap<QString, int>::ConstIterator itAttr = attributes.find(attribute);
-    if (itAttr == attributes.constEnd())
-        return QVariant();
-
-    QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    if (internProp == 0)
-        return QVariant();
-
-    QtAbstractPropertyManager *manager = internProp->propertyManager();
-    if (QtIntPropertyManager *intManager = qobject_cast<QtIntPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            return intManager->maximum(internProp);
-        if (attribute == d_ptr->m_minimumAttribute)
-            return intManager->minimum(internProp);
-        if (attribute == d_ptr->m_singleStepAttribute)
-            return intManager->singleStep(internProp);
-        return QVariant();
-    } else if (QtDoublePropertyManager *doubleManager = qobject_cast<QtDoublePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            return doubleManager->maximum(internProp);
-        if (attribute == d_ptr->m_minimumAttribute)
-            return doubleManager->minimum(internProp);
-        if (attribute == d_ptr->m_singleStepAttribute)
-            return doubleManager->singleStep(internProp);
-        if (attribute == d_ptr->m_decimalsAttribute)
-            return doubleManager->decimals(internProp);
-        return QVariant();
-    } else if (QtStringPropertyManager *stringManager = qobject_cast<QtStringPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_regExpAttribute)
-            return stringManager->regExp(internProp);
-        return QVariant();
-    } else if (QtDatePropertyManager *dateManager = qobject_cast<QtDatePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            return dateManager->maximum(internProp);
-        if (attribute == d_ptr->m_minimumAttribute)
-            return dateManager->minimum(internProp);
-        return QVariant();
-    } else if (QtPointFPropertyManager *pointFManager = qobject_cast<QtPointFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_decimalsAttribute)
-            return pointFManager->decimals(internProp);
-        return QVariant();
-    } else if (QtSizePropertyManager *sizeManager = qobject_cast<QtSizePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            return sizeManager->maximum(internProp);
-        if (attribute == d_ptr->m_minimumAttribute)
-            return sizeManager->minimum(internProp);
-        return QVariant();
-    } else if (QtSizeFPropertyManager *sizeFManager = qobject_cast<QtSizeFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            return sizeFManager->maximum(internProp);
-        if (attribute == d_ptr->m_minimumAttribute)
-            return sizeFManager->minimum(internProp);
-        if (attribute == d_ptr->m_decimalsAttribute)
-            return sizeFManager->decimals(internProp);
-        return QVariant();
-    } else if (QtRectPropertyManager *rectManager = qobject_cast<QtRectPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_constraintAttribute)
-            return rectManager->constraint(internProp);
-        return QVariant();
-    } else if (QtRectFPropertyManager *rectFManager = qobject_cast<QtRectFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_constraintAttribute)
-            return rectFManager->constraint(internProp);
-        if (attribute == d_ptr->m_decimalsAttribute)
-            return rectFManager->decimals(internProp);
-        return QVariant();
-    } else if (QtEnumPropertyManager *enumManager = qobject_cast<QtEnumPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_enumNamesAttribute)
-            return enumManager->enumNames(internProp);
-        if (attribute == d_ptr->m_enumIconsAttribute) {
-            QVariant v;
-            v.setValue(enumManager->enumIcons(internProp));
-            return v;
-        }
-        return QVariant();
-    } else if (QtFlagPropertyManager *flagManager = qobject_cast<QtFlagPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_flagNamesAttribute)
-            return flagManager->flagNames(internProp);
-        return QVariant();
-    }
-    return QVariant();
-}
-
-/*!
-    Returns a list of the given \a propertyType 's attributes.
-
-    \sa attributeValue(), attributeType()
-*/
-QStringList QtVariantPropertyManager::attributes(int propertyType) const
-{
-    QMap<int, QMap<QString, int> >::ConstIterator it =
-            d_ptr->m_typeToAttributeToAttributeType.find(propertyType);
-    if (it == d_ptr->m_typeToAttributeToAttributeType.constEnd())
-        return QStringList();
-    return it.value().keys();
-}
-
-/*!
-    Returns the type of the specified \a attribute of the given \a
-    propertyType.
-
-    If the given \a propertyType is not supported by \e this manager,
-    or if the given \a propertyType does not possess the specified \a
-    attribute, this function returns QVariant::Invalid.
-
-    \sa attributes(), valueType()
-*/
-int QtVariantPropertyManager::attributeType(int propertyType, const QString &attribute) const
-{
-    QMap<int, QMap<QString, int> >::ConstIterator it =
-            d_ptr->m_typeToAttributeToAttributeType.find(propertyType);
-    if (it == d_ptr->m_typeToAttributeToAttributeType.constEnd())
-        return 0;
-
-    QMap<QString, int> attributes = it.value();
-    QMap<QString, int>::ConstIterator itAttr = attributes.find(attribute);
-    if (itAttr == attributes.constEnd())
-        return 0;
-    return itAttr.value();
-}
-
-/*!
-    \fn void QtVariantPropertyManager::setValue(QtProperty *property, const QVariant &value)
-
-    Sets the value of the given \a property to \a value.
-
-    The specified \a value must be of a type returned by valueType(),
-    or of type that can be converted to valueType() using the
-    QVariant::canConvert() function, otherwise this function does
-    nothing.
-
-    \sa value(), QtVariantProperty::setValue(), valueChanged()
-*/
-void QtVariantPropertyManager::setValue(QtProperty *property, const QVariant &val)
-{
-    int propType = val.userType();
-    if (!propType)
-        return;
-
-    int valType = valueType(property);
-
-    if (propType != valType && !val.canConvert(static_cast<QVariant::Type>(valType)))
-        return;
-
-    QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    if (internProp == 0)
-        return;
-
-
-    QtAbstractPropertyManager *manager = internProp->propertyManager();
-    if (QtIntPropertyManager *intManager = qobject_cast<QtIntPropertyManager *>(manager)) {
-        intManager->setValue(internProp, qvariant_cast<int>(val));
-        return;
-    } else if (QtDoublePropertyManager *doubleManager = qobject_cast<QtDoublePropertyManager *>(manager)) {
-        doubleManager->setValue(internProp, qvariant_cast<double>(val));
-        return;
-    } else if (QtBoolPropertyManager *boolManager = qobject_cast<QtBoolPropertyManager *>(manager)) {
-        boolManager->setValue(internProp, qvariant_cast<bool>(val));
-        return;
-    } else if (QtStringPropertyManager *stringManager = qobject_cast<QtStringPropertyManager *>(manager)) {
-        stringManager->setValue(internProp, qvariant_cast<QString>(val));
-        return;
-    } else if (QtDatePropertyManager *dateManager = qobject_cast<QtDatePropertyManager *>(manager)) {
-        dateManager->setValue(internProp, qvariant_cast<QDate>(val));
-        return;
-    } else if (QtTimePropertyManager *timeManager = qobject_cast<QtTimePropertyManager *>(manager)) {
-        timeManager->setValue(internProp, qvariant_cast<QTime>(val));
-        return;
-    } else if (QtDateTimePropertyManager *dateTimeManager = qobject_cast<QtDateTimePropertyManager *>(manager)) {
-        dateTimeManager->setValue(internProp, qvariant_cast<QDateTime>(val));
-        return;
-    } else if (QtKeySequencePropertyManager *keySequenceManager = qobject_cast<QtKeySequencePropertyManager *>(manager)) {
-        keySequenceManager->setValue(internProp, qvariant_cast<QKeySequence>(val));
-        return;
-    } else if (QtCharPropertyManager *charManager = qobject_cast<QtCharPropertyManager *>(manager)) {
-        charManager->setValue(internProp, qvariant_cast<QChar>(val));
-        return;
-    } else if (QtLocalePropertyManager *localeManager = qobject_cast<QtLocalePropertyManager *>(manager)) {
-        localeManager->setValue(internProp, qvariant_cast<QLocale>(val));
-        return;
-    } else if (QtPointPropertyManager *pointManager = qobject_cast<QtPointPropertyManager *>(manager)) {
-        pointManager->setValue(internProp, qvariant_cast<QPoint>(val));
-        return;
-    } else if (QtPointFPropertyManager *pointFManager = qobject_cast<QtPointFPropertyManager *>(manager)) {
-        pointFManager->setValue(internProp, qvariant_cast<QPointF>(val));
-        return;
-    } else if (QtSizePropertyManager *sizeManager = qobject_cast<QtSizePropertyManager *>(manager)) {
-        sizeManager->setValue(internProp, qvariant_cast<QSize>(val));
-        return;
-    } else if (QtSizeFPropertyManager *sizeFManager = qobject_cast<QtSizeFPropertyManager *>(manager)) {
-        sizeFManager->setValue(internProp, qvariant_cast<QSizeF>(val));
-        return;
-    } else if (QtRectPropertyManager *rectManager = qobject_cast<QtRectPropertyManager *>(manager)) {
-        rectManager->setValue(internProp, qvariant_cast<QRect>(val));
-        return;
-    } else if (QtRectFPropertyManager *rectFManager = qobject_cast<QtRectFPropertyManager *>(manager)) {
-        rectFManager->setValue(internProp, qvariant_cast<QRectF>(val));
-        return;
-    } else if (QtColorPropertyManager *colorManager = qobject_cast<QtColorPropertyManager *>(manager)) {
-        colorManager->setValue(internProp, qvariant_cast<QColor>(val));
-        return;
-    } else if (QtEnumPropertyManager *enumManager = qobject_cast<QtEnumPropertyManager *>(manager)) {
-        enumManager->setValue(internProp, qvariant_cast<int>(val));
-        return;
-    } else if (QtSizePolicyPropertyManager *sizePolicyManager =
-               qobject_cast<QtSizePolicyPropertyManager *>(manager)) {
-        sizePolicyManager->setValue(internProp, qvariant_cast<QSizePolicy>(val));
-        return;
-    } else if (QtFontPropertyManager *fontManager = qobject_cast<QtFontPropertyManager *>(manager)) {
-        fontManager->setValue(internProp, qvariant_cast<QFont>(val));
-        return;
-#ifndef QT_NO_CURSOR
-    } else if (QtCursorPropertyManager *cursorManager = qobject_cast<QtCursorPropertyManager *>(manager)) {
-        cursorManager->setValue(internProp, qvariant_cast<QCursor>(val));
-        return;
-#endif
-    } else if (QtFlagPropertyManager *flagManager = qobject_cast<QtFlagPropertyManager *>(manager)) {
-        flagManager->setValue(internProp, qvariant_cast<int>(val));
-        return;
-    }
-}
-
-/*!
-    Sets the value of the specified \a attribute of the given \a
-    property, to \a value.
-
-    The new \a value's type must be of the type returned by
-    attributeType(), or of a type that can be converted to
-    attributeType() using the QVariant::canConvert() function,
-    otherwise this function does nothing.
-
-    \sa attributeValue(), QtVariantProperty::setAttribute(), attributeChanged()
-*/
-void QtVariantPropertyManager::setAttribute(QtProperty *property,
-        const QString &attribute, const QVariant &value)
-{
-    QVariant oldAttr = attributeValue(property, attribute);
-    if (!oldAttr.isValid())
-        return;
-
-    int attrType = value.userType();
-    if (!attrType)
-        return;
-
-    if (attrType != attributeType(propertyType(property), attribute) &&
-                !value.canConvert((QVariant::Type)attrType))
-        return;
-
-    QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    if (internProp == 0)
-        return;
-
-    QtAbstractPropertyManager *manager = internProp->propertyManager();
-    if (QtIntPropertyManager *intManager = qobject_cast<QtIntPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            intManager->setMaximum(internProp, qvariant_cast<int>(value));
-        else if (attribute == d_ptr->m_minimumAttribute)
-            intManager->setMinimum(internProp, qvariant_cast<int>(value));
-        else if (attribute == d_ptr->m_singleStepAttribute)
-            intManager->setSingleStep(internProp, qvariant_cast<int>(value));
-        return;
-    } else if (QtDoublePropertyManager *doubleManager = qobject_cast<QtDoublePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            doubleManager->setMaximum(internProp, qvariant_cast<double>(value));
-        if (attribute == d_ptr->m_minimumAttribute)
-            doubleManager->setMinimum(internProp, qvariant_cast<double>(value));
-        if (attribute == d_ptr->m_singleStepAttribute)
-            doubleManager->setSingleStep(internProp, qvariant_cast<double>(value));
-        if (attribute == d_ptr->m_decimalsAttribute)
-            doubleManager->setDecimals(internProp, qvariant_cast<int>(value));
-        return;
-    } else if (QtStringPropertyManager *stringManager = qobject_cast<QtStringPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_regExpAttribute)
-            stringManager->setRegExp(internProp, qvariant_cast<QRegExp>(value));
-        return;
-    } else if (QtDatePropertyManager *dateManager = qobject_cast<QtDatePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            dateManager->setMaximum(internProp, qvariant_cast<QDate>(value));
-        if (attribute == d_ptr->m_minimumAttribute)
-            dateManager->setMinimum(internProp, qvariant_cast<QDate>(value));
-        return;
-    } else if (QtPointFPropertyManager *pointFManager = qobject_cast<QtPointFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_decimalsAttribute)
-            pointFManager->setDecimals(internProp, qvariant_cast<int>(value));
-        return;
-    } else if (QtSizePropertyManager *sizeManager = qobject_cast<QtSizePropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            sizeManager->setMaximum(internProp, qvariant_cast<QSize>(value));
-        if (attribute == d_ptr->m_minimumAttribute)
-            sizeManager->setMinimum(internProp, qvariant_cast<QSize>(value));
-        return;
-    } else if (QtSizeFPropertyManager *sizeFManager = qobject_cast<QtSizeFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_maximumAttribute)
-            sizeFManager->setMaximum(internProp, qvariant_cast<QSizeF>(value));
-        if (attribute == d_ptr->m_minimumAttribute)
-            sizeFManager->setMinimum(internProp, qvariant_cast<QSizeF>(value));
-        if (attribute == d_ptr->m_decimalsAttribute)
-            sizeFManager->setDecimals(internProp, qvariant_cast<int>(value));
-        return;
-    } else if (QtRectPropertyManager *rectManager = qobject_cast<QtRectPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_constraintAttribute)
-            rectManager->setConstraint(internProp, qvariant_cast<QRect>(value));
-        return;
-    } else if (QtRectFPropertyManager *rectFManager = qobject_cast<QtRectFPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_constraintAttribute)
-            rectFManager->setConstraint(internProp, qvariant_cast<QRectF>(value));
-        if (attribute == d_ptr->m_decimalsAttribute)
-            rectFManager->setDecimals(internProp, qvariant_cast<int>(value));
-        return;
-    } else if (QtEnumPropertyManager *enumManager = qobject_cast<QtEnumPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_enumNamesAttribute)
-            enumManager->setEnumNames(internProp, qvariant_cast<QStringList>(value));
-        if (attribute == d_ptr->m_enumIconsAttribute)
-            enumManager->setEnumIcons(internProp, qvariant_cast<QtIconMap>(value));
-        return;
-    } else if (QtFlagPropertyManager *flagManager = qobject_cast<QtFlagPropertyManager *>(manager)) {
-        if (attribute == d_ptr->m_flagNamesAttribute)
-            flagManager->setFlagNames(internProp, qvariant_cast<QStringList>(value));
-        return;
-    }
-}
-
-/*!
-    \internal
-*/
-bool QtVariantPropertyManager::hasValue(const QtProperty *property) const
-{
-    if (propertyType(property) == groupTypeId())
-        return false;
-    return true;
-}
-
-/*!
-    \internal
-*/
-QString QtVariantPropertyManager::valueText(const QtProperty *property) const
-{
-    const QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    return internProp ? internProp->valueText() : QString();
-}
-
-/*!
-    \internal
-*/
-QIcon QtVariantPropertyManager::valueIcon(const QtProperty *property) const
-{
-    const QtProperty *internProp = propertyToWrappedProperty()->value(property, 0);
-    return internProp ? internProp->valueIcon() : QIcon();
-}
-
-/*!
-    \internal
-*/
-void QtVariantPropertyManager::initializeProperty(QtProperty *property)
-{
-    QtVariantProperty *varProp = variantProperty(property);
-    if (!varProp)
-        return;
-
-    QMap<int, QtAbstractPropertyManager *>::ConstIterator it =
-            d_ptr->m_typeToPropertyManager.find(d_ptr->m_propertyType);
-    if (it != d_ptr->m_typeToPropertyManager.constEnd()) {
-        QtProperty *internProp = 0;
-        if (!d_ptr->m_creatingSubProperties) {
-            QtAbstractPropertyManager *manager = it.value();
-            internProp = manager->addProperty();
-            d_ptr->m_internalToProperty[internProp] = varProp;
-        }
-        propertyToWrappedProperty()->insert(varProp, internProp);
-        if (internProp) {
-            QList<QtProperty *> children = internProp->subProperties();
-            QListIterator<QtProperty *> itChild(children);
-            QtVariantProperty *lastProperty = 0;
-            while (itChild.hasNext()) {
-                QtVariantProperty *prop = d_ptr->createSubProperty(varProp, lastProperty, itChild.next());
-                lastProperty = prop ? prop : lastProperty;
-            }
-        }
-    }
-}
-
-/*!
-    \internal
-*/
-void QtVariantPropertyManager::uninitializeProperty(QtProperty *property)
-{
-    const QMap<const QtProperty *, QPair<QtVariantProperty *, int> >::iterator type_it = d_ptr->m_propertyToType.find(property);
-    if (type_it == d_ptr->m_propertyToType.end())
-        return;
-
-    PropertyMap::iterator it = propertyToWrappedProperty()->find(property);
-    if (it != propertyToWrappedProperty()->end()) {
-        QtProperty *internProp = it.value();
-        if (internProp) {
-            d_ptr->m_internalToProperty.remove(internProp);
-            if (!d_ptr->m_destroyingSubProperties) {
-                delete internProp;
-            }
-        }
-        propertyToWrappedProperty()->erase(it);
-    }
-    d_ptr->m_propertyToType.erase(type_it);
-}
-
-/*!
-    \internal
-*/
-QtProperty *QtVariantPropertyManager::createProperty()
-{
-    if (!d_ptr->m_creatingProperty)
-        return 0;
-
-    QtVariantProperty *property = new QtVariantProperty(this);
-    d_ptr->m_propertyToType.insert(property, qMakePair(property, d_ptr->m_propertyType));
-
-    return property;
-}
-
-/////////////////////////////
-
-class QtVariantEditorFactoryPrivate
-{
-    QtVariantEditorFactory *q_ptr;
-    Q_DECLARE_PUBLIC(QtVariantEditorFactory)
-public:
-
-    QtSpinBoxFactory           *m_spinBoxFactory;
-    QtDoubleSpinBoxFactory     *m_doubleSpinBoxFactory;
-    QtCheckBoxFactory          *m_checkBoxFactory;
-    QtLineEditFactory          *m_lineEditFactory;
-    QtDateEditFactory          *m_dateEditFactory;
-    QtTimeEditFactory          *m_timeEditFactory;
-    QtDateTimeEditFactory      *m_dateTimeEditFactory;
-    QtKeySequenceEditorFactory *m_keySequenceEditorFactory;
-    QtCharEditorFactory        *m_charEditorFactory;
-    QtEnumEditorFactory        *m_comboBoxFactory;
-    QtCursorEditorFactory      *m_cursorEditorFactory;
-    QtColorEditorFactory       *m_colorEditorFactory;
-    QtFontEditorFactory        *m_fontEditorFactory;
-
-    QMap<QtAbstractEditorFactoryBase *, int> m_factoryToType;
-    QMap<int, QtAbstractEditorFactoryBase *> m_typeToFactory;
-};
-
-/*!
-    \class QtVariantEditorFactory
-    \internal
-    \inmodule QtDesigner
-    \since 4.4
-
-    \brief The QtVariantEditorFactory class provides widgets for properties
-    created by QtVariantPropertyManager objects.
-
-    The variant factory provides the following widgets for the
-    specified property types:
-
-    \table
-    \header
-        \li Property Type
-        \li Widget
-    \row
-        \li \c int
-        \li QSpinBox
-    \row
-        \li \c double
-        \li QDoubleSpinBox
-    \row
-        \li \c bool
-        \li QCheckBox
-    \row
-        \li QString
-        \li QLineEdit
-    \row
-        \li QDate
-        \li QDateEdit
-    \row
-        \li QTime
-        \li QTimeEdit
-    \row
-        \li QDateTime
-        \li QDateTimeEdit
-    \row
-        \li QKeySequence
-        \li customized editor
-    \row
-        \li QChar
-        \li customized editor
-    \row
-        \li \c enum
-        \li QComboBox
-    \row
-        \li QCursor
-        \li QComboBox
-    \endtable
-
-    Note that QtVariantPropertyManager supports several additional property
-    types for which the QtVariantEditorFactory class does not provide
-    editing widgets, e.g. QPoint and QSize. To provide widgets for other
-    types using the variant approach, derive from the QtVariantEditorFactory
-    class.
-
-    \sa QtAbstractEditorFactory, QtVariantPropertyManager
-*/
-
-/*!
-    Creates a factory with the given \a parent.
-*/
-QtVariantEditorFactory::QtVariantEditorFactory(QObject *parent)
-    : QtAbstractEditorFactory<QtVariantPropertyManager>(parent), d_ptr(new QtVariantEditorFactoryPrivate())
-{
-    d_ptr->q_ptr = this;
-
-    d_ptr->m_spinBoxFactory = new QtSpinBoxFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_spinBoxFactory] = QVariant::Int;
-    d_ptr->m_typeToFactory[QVariant::Int] = d_ptr->m_spinBoxFactory;
-
-    d_ptr->m_doubleSpinBoxFactory = new QtDoubleSpinBoxFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_doubleSpinBoxFactory] = QVariant::Double;
-    d_ptr->m_typeToFactory[QVariant::Double] = d_ptr->m_doubleSpinBoxFactory;
-
-    d_ptr->m_checkBoxFactory = new QtCheckBoxFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_checkBoxFactory] = QVariant::Bool;
-    d_ptr->m_typeToFactory[QVariant::Bool] = d_ptr->m_checkBoxFactory;
-
-    d_ptr->m_lineEditFactory = new QtLineEditFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_lineEditFactory] = QVariant::String;
-    d_ptr->m_typeToFactory[QVariant::String] = d_ptr->m_lineEditFactory;
-
-    d_ptr->m_dateEditFactory = new QtDateEditFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_dateEditFactory] = QVariant::Date;
-    d_ptr->m_typeToFactory[QVariant::Date] = d_ptr->m_dateEditFactory;
-
-    d_ptr->m_timeEditFactory = new QtTimeEditFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_timeEditFactory] = QVariant::Time;
-    d_ptr->m_typeToFactory[QVariant::Time] = d_ptr->m_timeEditFactory;
-
-    d_ptr->m_dateTimeEditFactory = new QtDateTimeEditFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_dateTimeEditFactory] = QVariant::DateTime;
-    d_ptr->m_typeToFactory[QVariant::DateTime] = d_ptr->m_dateTimeEditFactory;
-
-    d_ptr->m_keySequenceEditorFactory = new QtKeySequenceEditorFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_keySequenceEditorFactory] = QVariant::KeySequence;
-    d_ptr->m_typeToFactory[QVariant::KeySequence] = d_ptr->m_keySequenceEditorFactory;
-
-    d_ptr->m_charEditorFactory = new QtCharEditorFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_charEditorFactory] = QVariant::Char;
-    d_ptr->m_typeToFactory[QVariant::Char] = d_ptr->m_charEditorFactory;
-
-    d_ptr->m_cursorEditorFactory = new QtCursorEditorFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_cursorEditorFactory] = QVariant::Cursor;
-    d_ptr->m_typeToFactory[QVariant::Cursor] = d_ptr->m_cursorEditorFactory;
-
-    d_ptr->m_colorEditorFactory = new QtColorEditorFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_colorEditorFactory] = QVariant::Color;
-    d_ptr->m_typeToFactory[QVariant::Color] = d_ptr->m_colorEditorFactory;
-
-    d_ptr->m_fontEditorFactory = new QtFontEditorFactory(this);
-    d_ptr->m_factoryToType[d_ptr->m_fontEditorFactory] = QVariant::Font;
-    d_ptr->m_typeToFactory[QVariant::Font] = d_ptr->m_fontEditorFactory;
-
-    d_ptr->m_comboBoxFactory = new QtEnumEditorFactory(this);
-    const int enumId = QtVariantPropertyManager::enumTypeId();
-    d_ptr->m_factoryToType[d_ptr->m_comboBoxFactory] = enumId;
-    d_ptr->m_typeToFactory[enumId] = d_ptr->m_comboBoxFactory;
-}
-
-/*!
-    Destroys this factory, and all the widgets it has created.
-*/
-QtVariantEditorFactory::~QtVariantEditorFactory()
-{
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtVariantEditorFactory::connectPropertyManager(QtVariantPropertyManager *manager)
-{
-    QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();
-    QListIterator<QtIntPropertyManager *> itInt(intPropertyManagers);
-    while (itInt.hasNext())
-        d_ptr->m_spinBoxFactory->addPropertyManager(itInt.next());
-
-    QList<QtDoublePropertyManager *> doublePropertyManagers = manager->findChildren<QtDoublePropertyManager *>();
-    QListIterator<QtDoublePropertyManager *> itDouble(doublePropertyManagers);
-    while (itDouble.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->addPropertyManager(itDouble.next());
-
-    QList<QtBoolPropertyManager *> boolPropertyManagers = manager->findChildren<QtBoolPropertyManager *>();
-    QListIterator<QtBoolPropertyManager *> itBool(boolPropertyManagers);
-    while (itBool.hasNext())
-        d_ptr->m_checkBoxFactory->addPropertyManager(itBool.next());
-
-    QList<QtStringPropertyManager *> stringPropertyManagers = manager->findChildren<QtStringPropertyManager *>();
-    QListIterator<QtStringPropertyManager *> itString(stringPropertyManagers);
-    while (itString.hasNext())
-        d_ptr->m_lineEditFactory->addPropertyManager(itString.next());
-
-    QList<QtDatePropertyManager *> datePropertyManagers = manager->findChildren<QtDatePropertyManager *>();
-    QListIterator<QtDatePropertyManager *> itDate(datePropertyManagers);
-    while (itDate.hasNext())
-        d_ptr->m_dateEditFactory->addPropertyManager(itDate.next());
-
-    QList<QtTimePropertyManager *> timePropertyManagers = manager->findChildren<QtTimePropertyManager *>();
-    QListIterator<QtTimePropertyManager *> itTime(timePropertyManagers);
-    while (itTime.hasNext())
-        d_ptr->m_timeEditFactory->addPropertyManager(itTime.next());
-
-    QList<QtDateTimePropertyManager *> dateTimePropertyManagers = manager->findChildren<QtDateTimePropertyManager *>();
-    QListIterator<QtDateTimePropertyManager *> itDateTime(dateTimePropertyManagers);
-    while (itDateTime.hasNext())
-        d_ptr->m_dateTimeEditFactory->addPropertyManager(itDateTime.next());
-
-    QList<QtKeySequencePropertyManager *> keySequencePropertyManagers = manager->findChildren<QtKeySequencePropertyManager *>();
-    QListIterator<QtKeySequencePropertyManager *> itKeySequence(keySequencePropertyManagers);
-    while (itKeySequence.hasNext())
-        d_ptr->m_keySequenceEditorFactory->addPropertyManager(itKeySequence.next());
-
-    QList<QtCharPropertyManager *> charPropertyManagers = manager->findChildren<QtCharPropertyManager *>();
-    QListIterator<QtCharPropertyManager *> itChar(charPropertyManagers);
-    while (itChar.hasNext())
-        d_ptr->m_charEditorFactory->addPropertyManager(itChar.next());
-
-    QList<QtLocalePropertyManager *> localePropertyManagers = manager->findChildren<QtLocalePropertyManager *>();
-    QListIterator<QtLocalePropertyManager *> itLocale(localePropertyManagers);
-    while (itLocale.hasNext())
-        d_ptr->m_comboBoxFactory->addPropertyManager(itLocale.next()->subEnumPropertyManager());
-
-    QList<QtPointPropertyManager *> pointPropertyManagers = manager->findChildren<QtPointPropertyManager *>();
-    QListIterator<QtPointPropertyManager *> itPoint(pointPropertyManagers);
-    while (itPoint.hasNext())
-        d_ptr->m_spinBoxFactory->addPropertyManager(itPoint.next()->subIntPropertyManager());
-
-    QList<QtPointFPropertyManager *> pointFPropertyManagers = manager->findChildren<QtPointFPropertyManager *>();
-    QListIterator<QtPointFPropertyManager *> itPointF(pointFPropertyManagers);
-    while (itPointF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->addPropertyManager(itPointF.next()->subDoublePropertyManager());
-
-    QList<QtSizePropertyManager *> sizePropertyManagers = manager->findChildren<QtSizePropertyManager *>();
-    QListIterator<QtSizePropertyManager *> itSize(sizePropertyManagers);
-    while (itSize.hasNext())
-        d_ptr->m_spinBoxFactory->addPropertyManager(itSize.next()->subIntPropertyManager());
-
-    QList<QtSizeFPropertyManager *> sizeFPropertyManagers = manager->findChildren<QtSizeFPropertyManager *>();
-    QListIterator<QtSizeFPropertyManager *> itSizeF(sizeFPropertyManagers);
-    while (itSizeF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->addPropertyManager(itSizeF.next()->subDoublePropertyManager());
-
-    QList<QtRectPropertyManager *> rectPropertyManagers = manager->findChildren<QtRectPropertyManager *>();
-    QListIterator<QtRectPropertyManager *> itRect(rectPropertyManagers);
-    while (itRect.hasNext())
-        d_ptr->m_spinBoxFactory->addPropertyManager(itRect.next()->subIntPropertyManager());
-
-    QList<QtRectFPropertyManager *> rectFPropertyManagers = manager->findChildren<QtRectFPropertyManager *>();
-    QListIterator<QtRectFPropertyManager *> itRectF(rectFPropertyManagers);
-    while (itRectF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->addPropertyManager(itRectF.next()->subDoublePropertyManager());
-
-    QList<QtColorPropertyManager *> colorPropertyManagers = manager->findChildren<QtColorPropertyManager *>();
-    QListIterator<QtColorPropertyManager *> itColor(colorPropertyManagers);
-    while (itColor.hasNext()) {
-        QtColorPropertyManager *manager = itColor.next();
-        d_ptr->m_colorEditorFactory->addPropertyManager(manager);
-        d_ptr->m_spinBoxFactory->addPropertyManager(manager->subIntPropertyManager());
-    }
-
-    QList<QtEnumPropertyManager *> enumPropertyManagers = manager->findChildren<QtEnumPropertyManager *>();
-    QListIterator<QtEnumPropertyManager *> itEnum(enumPropertyManagers);
-    while (itEnum.hasNext())
-        d_ptr->m_comboBoxFactory->addPropertyManager(itEnum.next());
-
-    QList<QtSizePolicyPropertyManager *> sizePolicyPropertyManagers = manager->findChildren<QtSizePolicyPropertyManager *>();
-    QListIterator<QtSizePolicyPropertyManager *> itSizePolicy(sizePolicyPropertyManagers);
-    while (itSizePolicy.hasNext()) {
-        QtSizePolicyPropertyManager *manager = itSizePolicy.next();
-        d_ptr->m_spinBoxFactory->addPropertyManager(manager->subIntPropertyManager());
-        d_ptr->m_comboBoxFactory->addPropertyManager(manager->subEnumPropertyManager());
-    }
-
-    QList<QtFontPropertyManager *> fontPropertyManagers = manager->findChildren<QtFontPropertyManager *>();
-    QListIterator<QtFontPropertyManager *> itFont(fontPropertyManagers);
-    while (itFont.hasNext()) {
-        QtFontPropertyManager *manager = itFont.next();
-        d_ptr->m_fontEditorFactory->addPropertyManager(manager);
-        d_ptr->m_spinBoxFactory->addPropertyManager(manager->subIntPropertyManager());
-        d_ptr->m_comboBoxFactory->addPropertyManager(manager->subEnumPropertyManager());
-        d_ptr->m_checkBoxFactory->addPropertyManager(manager->subBoolPropertyManager());
-    }
-
-    QList<QtCursorPropertyManager *> cursorPropertyManagers = manager->findChildren<QtCursorPropertyManager *>();
-    QListIterator<QtCursorPropertyManager *> itCursor(cursorPropertyManagers);
-    while (itCursor.hasNext())
-        d_ptr->m_cursorEditorFactory->addPropertyManager(itCursor.next());
-
-    QList<QtFlagPropertyManager *> flagPropertyManagers = manager->findChildren<QtFlagPropertyManager *>();
-    QListIterator<QtFlagPropertyManager *> itFlag(flagPropertyManagers);
-    while (itFlag.hasNext())
-        d_ptr->m_checkBoxFactory->addPropertyManager(itFlag.next()->subBoolPropertyManager());
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-QWidget *QtVariantEditorFactory::createEditor(QtVariantPropertyManager *manager, QtProperty *property,
-        QWidget *parent)
-{
-    const int propType = manager->propertyType(property);
-    QtAbstractEditorFactoryBase *factory = d_ptr->m_typeToFactory.value(propType, 0);
-    if (!factory)
-        return 0;
-    return factory->createEditor(wrappedProperty(property), parent);
-}
-
-/*!
-    \internal
-
-    Reimplemented from the QtAbstractEditorFactory class.
-*/
-void QtVariantEditorFactory::disconnectPropertyManager(QtVariantPropertyManager *manager)
-{
-    QList<QtIntPropertyManager *> intPropertyManagers = manager->findChildren<QtIntPropertyManager *>();
-    QListIterator<QtIntPropertyManager *> itInt(intPropertyManagers);
-    while (itInt.hasNext())
-        d_ptr->m_spinBoxFactory->removePropertyManager(itInt.next());
-
-    QList<QtDoublePropertyManager *> doublePropertyManagers = manager->findChildren<QtDoublePropertyManager *>();
-    QListIterator<QtDoublePropertyManager *> itDouble(doublePropertyManagers);
-    while (itDouble.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->removePropertyManager(itDouble.next());
-
-    QList<QtBoolPropertyManager *> boolPropertyManagers = manager->findChildren<QtBoolPropertyManager *>();
-    QListIterator<QtBoolPropertyManager *> itBool(boolPropertyManagers);
-    while (itBool.hasNext())
-        d_ptr->m_checkBoxFactory->removePropertyManager(itBool.next());
-
-    QList<QtStringPropertyManager *> stringPropertyManagers = manager->findChildren<QtStringPropertyManager *>();
-    QListIterator<QtStringPropertyManager *> itString(stringPropertyManagers);
-    while (itString.hasNext())
-        d_ptr->m_lineEditFactory->removePropertyManager(itString.next());
-
-    QList<QtDatePropertyManager *> datePropertyManagers = manager->findChildren<QtDatePropertyManager *>();
-    QListIterator<QtDatePropertyManager *> itDate(datePropertyManagers);
-    while (itDate.hasNext())
-        d_ptr->m_dateEditFactory->removePropertyManager(itDate.next());
-
-    QList<QtTimePropertyManager *> timePropertyManagers = manager->findChildren<QtTimePropertyManager *>();
-    QListIterator<QtTimePropertyManager *> itTime(timePropertyManagers);
-    while (itTime.hasNext())
-        d_ptr->m_timeEditFactory->removePropertyManager(itTime.next());
-
-    QList<QtDateTimePropertyManager *> dateTimePropertyManagers = manager->findChildren<QtDateTimePropertyManager *>();
-    QListIterator<QtDateTimePropertyManager *> itDateTime(dateTimePropertyManagers);
-    while (itDateTime.hasNext())
-        d_ptr->m_dateTimeEditFactory->removePropertyManager(itDateTime.next());
-
-    QList<QtKeySequencePropertyManager *> keySequencePropertyManagers = manager->findChildren<QtKeySequencePropertyManager *>();
-    QListIterator<QtKeySequencePropertyManager *> itKeySequence(keySequencePropertyManagers);
-    while (itKeySequence.hasNext())
-        d_ptr->m_keySequenceEditorFactory->removePropertyManager(itKeySequence.next());
-
-    QList<QtCharPropertyManager *> charPropertyManagers = manager->findChildren<QtCharPropertyManager *>();
-    QListIterator<QtCharPropertyManager *> itChar(charPropertyManagers);
-    while (itChar.hasNext())
-        d_ptr->m_charEditorFactory->removePropertyManager(itChar.next());
-
-    QList<QtLocalePropertyManager *> localePropertyManagers = manager->findChildren<QtLocalePropertyManager *>();
-    QListIterator<QtLocalePropertyManager *> itLocale(localePropertyManagers);
-    while (itLocale.hasNext())
-        d_ptr->m_comboBoxFactory->removePropertyManager(itLocale.next()->subEnumPropertyManager());
-
-    QList<QtPointPropertyManager *> pointPropertyManagers = manager->findChildren<QtPointPropertyManager *>();
-    QListIterator<QtPointPropertyManager *> itPoint(pointPropertyManagers);
-    while (itPoint.hasNext())
-        d_ptr->m_spinBoxFactory->removePropertyManager(itPoint.next()->subIntPropertyManager());
-
-    QList<QtPointFPropertyManager *> pointFPropertyManagers = manager->findChildren<QtPointFPropertyManager *>();
-    QListIterator<QtPointFPropertyManager *> itPointF(pointFPropertyManagers);
-    while (itPointF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->removePropertyManager(itPointF.next()->subDoublePropertyManager());
-
-    QList<QtSizePropertyManager *> sizePropertyManagers = manager->findChildren<QtSizePropertyManager *>();
-    QListIterator<QtSizePropertyManager *> itSize(sizePropertyManagers);
-    while (itSize.hasNext())
-        d_ptr->m_spinBoxFactory->removePropertyManager(itSize.next()->subIntPropertyManager());
-
-    QList<QtSizeFPropertyManager *> sizeFPropertyManagers = manager->findChildren<QtSizeFPropertyManager *>();
-    QListIterator<QtSizeFPropertyManager *> itSizeF(sizeFPropertyManagers);
-    while (itSizeF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->removePropertyManager(itSizeF.next()->subDoublePropertyManager());
-
-    QList<QtRectPropertyManager *> rectPropertyManagers = manager->findChildren<QtRectPropertyManager *>();
-    QListIterator<QtRectPropertyManager *> itRect(rectPropertyManagers);
-    while (itRect.hasNext())
-        d_ptr->m_spinBoxFactory->removePropertyManager(itRect.next()->subIntPropertyManager());
-
-    QList<QtRectFPropertyManager *> rectFPropertyManagers = manager->findChildren<QtRectFPropertyManager *>();
-    QListIterator<QtRectFPropertyManager *> itRectF(rectFPropertyManagers);
-    while (itRectF.hasNext())
-        d_ptr->m_doubleSpinBoxFactory->removePropertyManager(itRectF.next()->subDoublePropertyManager());
-
-    QList<QtColorPropertyManager *> colorPropertyManagers = manager->findChildren<QtColorPropertyManager *>();
-    QListIterator<QtColorPropertyManager *> itColor(colorPropertyManagers);
-    while (itColor.hasNext()) {
-        QtColorPropertyManager *manager = itColor.next();
-        d_ptr->m_colorEditorFactory->removePropertyManager(manager);
-        d_ptr->m_spinBoxFactory->removePropertyManager(manager->subIntPropertyManager());
-    }
-
-    QList<QtEnumPropertyManager *> enumPropertyManagers = manager->findChildren<QtEnumPropertyManager *>();
-    QListIterator<QtEnumPropertyManager *> itEnum(enumPropertyManagers);
-    while (itEnum.hasNext())
-        d_ptr->m_comboBoxFactory->removePropertyManager(itEnum.next());
-
-    QList<QtSizePolicyPropertyManager *> sizePolicyPropertyManagers = manager->findChildren<QtSizePolicyPropertyManager *>();
-    QListIterator<QtSizePolicyPropertyManager *> itSizePolicy(sizePolicyPropertyManagers);
-    while (itSizePolicy.hasNext()) {
-        QtSizePolicyPropertyManager *manager = itSizePolicy.next();
-        d_ptr->m_spinBoxFactory->removePropertyManager(manager->subIntPropertyManager());
-        d_ptr->m_comboBoxFactory->removePropertyManager(manager->subEnumPropertyManager());
-    }
-
-    QList<QtFontPropertyManager *> fontPropertyManagers = manager->findChildren<QtFontPropertyManager *>();
-    QListIterator<QtFontPropertyManager *> itFont(fontPropertyManagers);
-    while (itFont.hasNext()) {
-        QtFontPropertyManager *manager = itFont.next();
-        d_ptr->m_fontEditorFactory->removePropertyManager(manager);
-        d_ptr->m_spinBoxFactory->removePropertyManager(manager->subIntPropertyManager());
-        d_ptr->m_comboBoxFactory->removePropertyManager(manager->subEnumPropertyManager());
-        d_ptr->m_checkBoxFactory->removePropertyManager(manager->subBoolPropertyManager());
-    }
-
-    QList<QtCursorPropertyManager *> cursorPropertyManagers = manager->findChildren<QtCursorPropertyManager *>();
-    QListIterator<QtCursorPropertyManager *> itCursor(cursorPropertyManagers);
-    while (itCursor.hasNext())
-        d_ptr->m_cursorEditorFactory->removePropertyManager(itCursor.next());
-
-    QList<QtFlagPropertyManager *> flagPropertyManagers = manager->findChildren<QtFlagPropertyManager *>();
-    QListIterator<QtFlagPropertyManager *> itFlag(flagPropertyManagers);
-    while (itFlag.hasNext())
-        d_ptr->m_checkBoxFactory->removePropertyManager(itFlag.next()->subBoolPropertyManager());
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qtvariantproperty.cpp"
diff --git a/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.h b/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.h
deleted file mode 100644
index bd439be47757539a52cb2d976ad7b44ebb6b0e64..0000000000000000000000000000000000000000
--- a/ThirdParty/GUI/qtpropertybrowser/qtvariantproperty.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QTVARIANTPROPERTY_H
-#define QTVARIANTPROPERTY_H
-
-#include "qtpropertybrowser.h"
-#include <QtCore/QVariant>
-#include <QtGui/QIcon>
-
-QT_BEGIN_NAMESPACE
-
-typedef QMap<int, QIcon> QtIconMap;
-
-class QtVariantPropertyManager;
-
-class QtVariantProperty : public QtProperty
-{
-public:
-    virtual ~QtVariantProperty();
-    QVariant value() const;
-    QVariant attributeValue(const QString &attribute) const;
-    int valueType() const;
-    int propertyType() const;
-
-    void setValue(const QVariant &value);
-    void setAttribute(const QString &attribute, const QVariant &value);
-protected:
-    QtVariantProperty(QtVariantPropertyManager *manager);
-private:
-    friend class QtVariantPropertyManager;
-    QScopedPointer<class QtVariantPropertyPrivate> d_ptr;
-};
-
-class QtVariantPropertyManager : public QtAbstractPropertyManager
-{
-    Q_OBJECT
-public:
-    QtVariantPropertyManager(QObject *parent = 0);
-    virtual ~QtVariantPropertyManager();
-
-    virtual QtVariantProperty *addProperty(int propertyType, const QString &name = QString());
-
-    int propertyType(const QtProperty *property) const;
-    virtual int valueType(const QtProperty *property) const;
-    QtVariantProperty *variantProperty(const QtProperty *property) const;
-
-    virtual bool isPropertyTypeSupported(int propertyType) const;
-    virtual int valueType(int propertyType) const;
-    virtual QStringList attributes(int propertyType) const;
-    virtual int attributeType(int propertyType, const QString &attribute) const;
-
-    virtual QVariant value(const QtProperty *property) const;
-    virtual QVariant attributeValue(const QtProperty *property, const QString &attribute) const;
-
-    static int enumTypeId();
-    static int flagTypeId();
-    static int groupTypeId();
-    static int iconMapTypeId();
-public Q_SLOTS:
-    virtual void setValue(QtProperty *property, const QVariant &val);
-    virtual void setAttribute(QtProperty *property,
-                const QString &attribute, const QVariant &value);
-Q_SIGNALS:
-    void valueChanged(QtProperty *property, const QVariant &val);
-    void attributeChanged(QtProperty *property,
-                const QString &attribute, const QVariant &val);
-protected:
-    virtual bool hasValue(const QtProperty *property) const;
-    virtual QString valueText(const QtProperty *property) const;
-    virtual QIcon valueIcon(const QtProperty *property) const;
-    virtual void initializeProperty(QtProperty *property);
-    virtual void uninitializeProperty(QtProperty *property);
-    virtual QtProperty *createProperty();
-private:
-    QScopedPointer<class QtVariantPropertyManagerPrivate> d_ptr;
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, int, int))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, double, double))
-    Q_PRIVATE_SLOT(d_func(), void slotSingleStepChanged(QtProperty *, double))
-    Q_PRIVATE_SLOT(d_func(), void slotDecimalsChanged(QtProperty *, int))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, bool))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QString &))
-    Q_PRIVATE_SLOT(d_func(), void slotRegExpChanged(QtProperty *, const QRegExp &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QDate &))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QDate &, const QDate &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QDateTime &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QKeySequence &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QChar &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QLocale &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QPoint &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QPointF &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSize &))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QSize &, const QSize &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSizeF &))
-    Q_PRIVATE_SLOT(d_func(), void slotRangeChanged(QtProperty *, const QSizeF &, const QSizeF &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QRect &))
-    Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QRect &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QRectF &))
-    Q_PRIVATE_SLOT(d_func(), void slotConstraintChanged(QtProperty *, const QRectF &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QColor &))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumNamesChanged(QtProperty *, const QStringList &))
-    Q_PRIVATE_SLOT(d_func(), void slotEnumIconsChanged(QtProperty *, const QMap<int, QIcon> &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QSizePolicy &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QFont &))
-    Q_PRIVATE_SLOT(d_func(), void slotValueChanged(QtProperty *, const QCursor &))
-    Q_PRIVATE_SLOT(d_func(), void slotFlagNamesChanged(QtProperty *, const QStringList &))
-
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyInserted(QtProperty *, QtProperty *, QtProperty *))
-    Q_PRIVATE_SLOT(d_func(), void slotPropertyRemoved(QtProperty *, QtProperty *))
-    Q_DECLARE_PRIVATE(QtVariantPropertyManager)
-    Q_DISABLE_COPY(QtVariantPropertyManager)
-};
-
-class QtVariantEditorFactory : public QtAbstractEditorFactory<QtVariantPropertyManager>
-{
-    Q_OBJECT
-public:
-    QtVariantEditorFactory(QObject *parent = 0);
-    virtual ~QtVariantEditorFactory();
-    using QtAbstractEditorFactory<QtVariantPropertyManager>::createEditor;
-protected:
-    virtual void connectPropertyManager(QtVariantPropertyManager *manager);
-    virtual QWidget *createEditor(QtVariantPropertyManager *manager, QtProperty *property,
-                QWidget *parent);
-    virtual void disconnectPropertyManager(QtVariantPropertyManager *manager);
-private:
-    QScopedPointer<class QtVariantEditorFactoryPrivate> d_ptr;
-    Q_DECLARE_PRIVATE(QtVariantEditorFactory)
-    Q_DISABLE_COPY(QtVariantEditorFactory)
-};
-
-QT_END_NAMESPACE
-
-Q_DECLARE_METATYPE(QIcon)
-Q_DECLARE_METATYPE(QtIconMap)
-#endif
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 00c6fe67e6b3ccd87e9a4a26ce083add16bea87f..0df5f8f8c4c7cdfcdd06df109bcb0b5c01bd9e11 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -92781,16 +92781,16 @@ fail:
 SWIGINTERN PyObject *_wrap_Lattice_getReciprocalLatticeBasis(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Lattice *arg1 = (Lattice *) 0 ;
-  kvector_t arg2 ;
-  kvector_t arg3 ;
-  kvector_t arg4 ;
+  kvector_t *arg2 = 0 ;
+  kvector_t *arg3 = 0 ;
+  kvector_t *arg4 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  void *argp2 ;
+  void *argp2 = 0 ;
   int res2 = 0 ;
-  void *argp3 ;
+  void *argp3 = 0 ;
   int res3 = 0 ;
-  void *argp4 ;
+  void *argp4 = 0 ;
   int res4 = 0 ;
   PyObject * obj0 = 0 ;
   PyObject * obj1 = 0 ;
@@ -92803,46 +92803,31 @@ SWIGINTERN PyObject *_wrap_Lattice_getReciprocalLatticeBasis(PyObject *SWIGUNUSE
     SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "1"" of type '" "Lattice const *""'"); 
   }
   arg1 = reinterpret_cast< Lattice * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_BasicVector3DT_double_t,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "2"" of type '" "kvector_t""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "2"" of type '" "kvector_t""'");
-    } else {
-      kvector_t * temp = reinterpret_cast< kvector_t * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
+  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "2"" of type '" "kvector_t &""'"); 
   }
-  {
-    res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_BasicVector3DT_double_t,  0  | 0);
-    if (!SWIG_IsOK(res3)) {
-      SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "3"" of type '" "kvector_t""'"); 
-    }  
-    if (!argp3) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "3"" of type '" "kvector_t""'");
-    } else {
-      kvector_t * temp = reinterpret_cast< kvector_t * >(argp3);
-      arg3 = *temp;
-      if (SWIG_IsNewObj(res3)) delete temp;
-    }
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "2"" of type '" "kvector_t &""'"); 
   }
-  {
-    res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_BasicVector3DT_double_t,  0  | 0);
-    if (!SWIG_IsOK(res4)) {
-      SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "4"" of type '" "kvector_t""'"); 
-    }  
-    if (!argp4) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "4"" of type '" "kvector_t""'");
-    } else {
-      kvector_t * temp = reinterpret_cast< kvector_t * >(argp4);
-      arg4 = *temp;
-      if (SWIG_IsNewObj(res4)) delete temp;
-    }
+  arg2 = reinterpret_cast< kvector_t * >(argp2);
+  res3 = SWIG_ConvertPtr(obj2, &argp3, SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  if (!SWIG_IsOK(res3)) {
+    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "3"" of type '" "kvector_t &""'"); 
+  }
+  if (!argp3) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "3"" of type '" "kvector_t &""'"); 
   }
-  ((Lattice const *)arg1)->getReciprocalLatticeBasis(arg2,arg3,arg4);
+  arg3 = reinterpret_cast< kvector_t * >(argp3);
+  res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  if (!SWIG_IsOK(res4)) {
+    SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "4"" of type '" "kvector_t &""'"); 
+  }
+  if (!argp4) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Lattice_getReciprocalLatticeBasis" "', argument " "4"" of type '" "kvector_t &""'"); 
+  }
+  arg4 = reinterpret_cast< kvector_t * >(argp4);
+  ((Lattice const *)arg1)->getReciprocalLatticeBasis(*arg2,*arg3,*arg4);
   resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
diff --git a/dev-tools/log/perf_history.txt b/dev-tools/log/perf_history.txt
index b8a63e3f40408c82a0bb462459bb2f19fb505b60..9a7cc65566773025896e38c3153253c63d9fe684 100644
--- a/dev-tools/log/perf_history.txt
+++ b/dev-tools/log/perf_history.txt
@@ -623,3 +623,15 @@ compile time: real 4m18.371s, user 24m2.298s, sys 1m56.004s
 ctest time:   real 0m45.376s, user 1m10.176s, sys 0m3.583s
 | 2017-09-29 12:33:18 | scgsun   | Linux x86_64 | 2.7    | 97.9540   | 15.4191    | 0.5813     | 0.5248          | 3.1319          | 0.3585    | 2.1234        | 0.5118            | 2.5499         | 0.8501 | 2.0469      | 1.9635    | 0.7772    |
 GUI Performance: domain2gui 1.412 | gui2domain 1.534 |realTime 1.303
+
+# Befor qtproperttybrowser framework removal
+| date                | hostname | sysinfo      | python | total cpu | total wall | MultiLayer | CylindersInDWBA | RotatedPyramids | CoreShell | SquareLattice | RadialParaCrystal | HexParaCrystal | SSCA   | Mesocrystal | PolMagCyl | Custom FF |
+| 2017-12-07 12:46:15 | scgsun   | Linux x86_64 | 2.7    | 88.9056   | 13.7139    | 0.5326     | 0.5061          | 3.1150          | 0.3598    | 2.1117        | 0.5101            | 2.5284         | 0.8601 | 0.4302      | 1.9775    | 0.7826    |
+
+compile time: real 4m39.873s, user 26m6.687s,  sys 1m56.863s
+ctest time:   real 0m47.258s, user  1m12.286s, sys 0m3.785s
+domain2gui: 1.136, gui2domain: 1.734, realTime: 1.274
+
+# after qtpropertybrowserframework removal
+compile time: real 4m29.715s, user 25m18.486s, sys 1m53.298s
+