qt_demoe/designer/lib/uilib/formbuilderextra_p.h

263 lines
8.7 KiB
C++

/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Designer of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** 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, Nokia gives you certain additional
** rights. These rights are described in the Nokia 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.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef ABSTRACTFORMBUILDERPRIVATE_H
#define ABSTRACTFORMBUILDERPRIVATE_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "uilib_global.h"
#ifndef QT_FORMBUILDER_NO_SCRIPT
# include "formscriptrunner_p.h"
#endif
#include <QtCore/QHash>
#include <QtCore/QPointer>
#include <QtCore/QString>
QT_BEGIN_NAMESPACE
class QObject;
class QVariant;
class QWidget;
class QObject;
class QLabel;
class QButtonGroup;
class QBoxLayout;
class QGridLayout;
#ifdef QFORMINTERNAL_NAMESPACE
namespace QFormInternal
{
#endif
class DomButtonGroups;
class DomButtonGroup;
class DomCustomWidget;
class QAbstractFormBuilder;
class QResourceBuilder;
class QTextBuilder;
class QDESIGNER_UILIB_EXPORT QFormBuilderExtra
{
QFormBuilderExtra();
~QFormBuilderExtra();
public:
struct CustomWidgetData {
CustomWidgetData();
explicit CustomWidgetData(const DomCustomWidget *dc);
QString addPageMethod;
QString script;
QString baseClass;
bool isContainer;
};
void clear();
bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
void applyInternalProperties() const;
static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label);
const QPointer<QWidget> &parentWidget() const;
bool parentWidgetIsSet() const;
void setParentWidget(const QPointer<QWidget> &w);
#ifndef QT_FORMBUILDER_NO_SCRIPT
QFormScriptRunner &formScriptRunner();
QString customWidgetScript(const QString &className) const;
#endif
void setProcessingLayoutWidget(bool processing);
bool processingLayoutWidget() const;
void setResourceBuilder(QResourceBuilder *builder);
QResourceBuilder *resourceBuilder() const;
void setTextBuilder(QTextBuilder *builder);
QTextBuilder *textBuilder() const;
static QFormBuilderExtra *instance(const QAbstractFormBuilder *afb);
static void removeInstance(const QAbstractFormBuilder *afb);
void storeCustomWidgetData(const QString &className, const DomCustomWidget *d);
QString customWidgetAddPageMethod(const QString &className) const;
QString customWidgetBaseClass(const QString &className) const;
bool isCustomWidgetContainer(const QString &className) const;
// --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group
void registerButtonGroups(const DomButtonGroups *groups);
typedef QPair<DomButtonGroup *, QButtonGroup*> ButtonGroupEntry;
typedef QHash<QString, ButtonGroupEntry> ButtonGroupHash;
const ButtonGroupHash &buttonGroups() const { return m_buttonGroups; }
ButtonGroupHash &buttonGroups() { return m_buttonGroups; }
// return stretch as a comma-separated list
static QString boxLayoutStretch(const QBoxLayout*);
// apply stretch
static bool setBoxLayoutStretch(const QString &, QBoxLayout*);
static void clearBoxLayoutStretch(QBoxLayout*);
static QString gridLayoutRowStretch(const QGridLayout *);
static bool setGridLayoutRowStretch(const QString &, QGridLayout *);
static void clearGridLayoutRowStretch(QGridLayout *);
static QString gridLayoutColumnStretch(const QGridLayout *);
static bool setGridLayoutColumnStretch(const QString &, QGridLayout *);
static void clearGridLayoutColumnStretch(QGridLayout *);
// return the row/column sizes as comma-separated lists
static QString gridLayoutRowMinimumHeight(const QGridLayout *);
static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *);
static void clearGridLayoutRowMinimumHeight(QGridLayout *);
static QString gridLayoutColumnMinimumWidth(const QGridLayout *);
static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *);
static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
private:
void clearResourceBuilder();
void clearTextBuilder();
typedef QHash<QLabel*, QString> BuddyHash;
BuddyHash m_buddies;
#ifndef QT_FORMBUILDER_NO_SCRIPT
QFormScriptRunner m_FormScriptRunner;
#endif
QHash<QString, CustomWidgetData> m_customWidgetDataHash;
ButtonGroupHash m_buttonGroups;
bool m_layoutWidget;
QResourceBuilder *m_resourceBuilder;
QTextBuilder *m_textBuilder;
QPointer<QWidget> m_parentWidget;
bool m_parentWidgetIsSet;
};
void uiLibWarning(const QString &message);
// Struct with static accessor that provides most strings used in the form builder.
struct QDESIGNER_UILIB_EXPORT QFormBuilderStrings {
QFormBuilderStrings();
static const QFormBuilderStrings &instance();
const QString buddyProperty;
const QString cursorProperty;
const QString objectNameProperty;
const QString trueValue;
const QString falseValue;
const QString horizontalPostFix;
const QString separator;
const QString defaultTitle;
const QString titleAttribute;
const QString labelAttribute;
const QString toolTipAttribute;
const QString whatsThisAttribute;
const QString flagsAttribute;
const QString iconAttribute;
const QString pixmapAttribute;
const QString textAttribute;
const QString currentIndexProperty;
const QString toolBarAreaAttribute;
const QString toolBarBreakAttribute;
const QString dockWidgetAreaAttribute;
const QString marginProperty;
const QString spacingProperty;
const QString leftMarginProperty;
const QString topMarginProperty;
const QString rightMarginProperty;
const QString bottomMarginProperty;
const QString horizontalSpacingProperty;
const QString verticalSpacingProperty;
const QString sizeHintProperty;
const QString sizeTypeProperty;
const QString orientationProperty;
const QString styleSheetProperty;
const QString qtHorizontal;
const QString qtVertical;
const QString currentRowProperty;
const QString tabSpacingProperty;
const QString qWidgetClass;
const QString lineClass;
const QString geometryProperty;
const QString scriptWidgetVariable;
const QString scriptChildWidgetsVariable;
typedef QPair<Qt::ItemDataRole, QString> RoleNName;
QList<RoleNName> itemRoles;
QHash<QString, Qt::ItemDataRole> treeItemRoleHash;
// first.first is primary role, first.second is shadow role.
// Shadow is used for either the translation source or the designer
// representation of the string value.
typedef QPair<QPair<Qt::ItemDataRole, Qt::ItemDataRole>, QString> TextRoleNName;
QList<TextRoleNName> itemTextRoles;
QHash<QString, QPair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash;
};
#ifdef QFORMINTERNAL_NAMESPACE
}
#endif
QT_END_NAMESPACE
#endif // ABSTRACTFORMBUILDERPRIVATE_H