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 ®Exp); - 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 ®Exp) -{ - 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 ®Exp) - - 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 ®Exp) -{ - 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 ®Exp); -Q_SIGNALS: - void valueChanged(QtProperty *property, const QString &val); - void regExpChanged(QtProperty *property, const QRegExp ®Exp); -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 ®Exp); - 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 ®Exp) -{ - 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 +