tools/designer/src/lib/uilib/formbuilderextra.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
    63 
    63 
    64 void uiLibWarning(const QString &message) {
    64 void uiLibWarning(const QString &message) {
    65     qWarning("Designer: %s", qPrintable(message));
    65     qWarning("Designer: %s", qPrintable(message));
    66 }
    66 }
    67 
    67 
       
    68 
       
    69 QFormBuilderExtra::CustomWidgetData::CustomWidgetData() :
       
    70     isContainer(false)
       
    71 {
       
    72 }
       
    73 
       
    74 QFormBuilderExtra::CustomWidgetData::CustomWidgetData(const DomCustomWidget *dcw) :
       
    75     addPageMethod(dcw->elementAddPageMethod()),
       
    76     baseClass(dcw->elementExtends()),
       
    77     isContainer(dcw->hasElementContainer() && dcw->elementContainer() != 0)
       
    78 {
       
    79 #ifndef QT_FORMBUILDER_NO_SCRIPT
       
    80     if (const DomScript *domScript = dcw->elementScript())
       
    81         script = domScript->text();
       
    82 #endif
       
    83 }
       
    84 
    68 QFormBuilderExtra::QFormBuilderExtra() :
    85 QFormBuilderExtra::QFormBuilderExtra() :
    69     m_layoutWidget(false),
    86     m_layoutWidget(false),
    70     m_resourceBuilder(0),
    87     m_resourceBuilder(0),
    71     m_textBuilder(0)
    88     m_textBuilder(0)
    72 {
    89 {
    83     m_buddies.clear();
   100     m_buddies.clear();
    84     m_parentWidget = 0;
   101     m_parentWidget = 0;
    85     m_parentWidgetIsSet = false;
   102     m_parentWidgetIsSet = false;
    86 #ifndef QT_FORMBUILDER_NO_SCRIPT
   103 #ifndef QT_FORMBUILDER_NO_SCRIPT
    87     m_FormScriptRunner.clearErrors();
   104     m_FormScriptRunner.clearErrors();
    88     m_customWidgetScriptHash.clear();
       
    89 #endif
   105 #endif
       
   106     m_customWidgetDataHash.clear();
    90     m_buttonGroups.clear();
   107     m_buttonGroups.clear();
    91 }
   108 }
    92 
   109 
    93 
   110 
    94 bool QFormBuilderExtra::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value)
   111 bool QFormBuilderExtra::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value)
   158 QFormScriptRunner &QFormBuilderExtra::formScriptRunner()
   175 QFormScriptRunner &QFormBuilderExtra::formScriptRunner()
   159 {
   176 {
   160     return m_FormScriptRunner;
   177     return m_FormScriptRunner;
   161 }
   178 }
   162 
   179 
   163 void QFormBuilderExtra::storeCustomWidgetScript(const QString &className, const QString &script)
       
   164 {
       
   165     m_customWidgetScriptHash.insert(className, script);
       
   166 }
       
   167 
       
   168 QString QFormBuilderExtra::customWidgetScript(const QString &className) const
   180 QString QFormBuilderExtra::customWidgetScript(const QString &className) const
   169 {
   181 {
   170     const CustomWidgetScriptHash::const_iterator it = m_customWidgetScriptHash.constFind(className);
   182     const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
   171     if ( it == m_customWidgetScriptHash.constEnd())
   183     if (it != m_customWidgetDataHash.constEnd())
   172         return QString();
   184         return it.value().script;
   173     return it.value();
   185     return QString();
   174 }
   186 }
   175 
   187 
   176 #endif
   188 #endif
   177 
   189 
   178 void QFormBuilderExtra::storeCustomWidgetBaseClass(const QString &className, const QString &baseClassName)
   190 void QFormBuilderExtra::storeCustomWidgetData(const QString &className, const DomCustomWidget *d)
   179 {
   191 {
   180     m_customWidgetBaseClassHash.insert(className, baseClassName);
   192     if (d)
       
   193         m_customWidgetDataHash.insert(className, CustomWidgetData(d));
   181 }
   194 }
   182 
   195 
   183 QString QFormBuilderExtra::customWidgetBaseClass(const QString &className) const
   196 QString QFormBuilderExtra::customWidgetBaseClass(const QString &className) const
   184 {
   197 {
   185     const QHash<QString, QString>::const_iterator it = m_customWidgetBaseClassHash.constFind(className);
   198     const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
   186     if (it == m_customWidgetBaseClassHash.constEnd())
   199     if (it != m_customWidgetDataHash.constEnd())
   187         return QString();
   200             return it.value().baseClass;
   188     return it.value();
   201     return QString();
   189 }
       
   190 
       
   191 void QFormBuilderExtra::storeCustomWidgetAddPageMethod(const QString &className, const QString &ct)
       
   192 {
       
   193     m_customWidgetAddPageMethodHash.insert(className, ct);
       
   194 }
   202 }
   195 
   203 
   196 QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const
   204 QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const
   197 {
   205 {
   198     const QHash<QString, QString>::const_iterator it = m_customWidgetAddPageMethodHash.constFind(className);
   206     const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
   199     if (it == m_customWidgetAddPageMethodHash.constEnd())
   207     if (it != m_customWidgetDataHash.constEnd())
   200         return QString();
   208         return it.value().addPageMethod;
   201     return it.value();
   209     return QString();
       
   210 }
       
   211 
       
   212 bool QFormBuilderExtra::isCustomWidgetContainer(const QString &className) const
       
   213 {
       
   214     const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className);
       
   215     if (it != m_customWidgetDataHash.constEnd())
       
   216         return it.value().isContainer;
       
   217     return false;
   202 }
   218 }
   203 
   219 
   204 namespace {
   220 namespace {
   205     typedef QHash<const QAbstractFormBuilder *, QFormBuilderExtra *> FormBuilderPrivateHash;
   221     typedef QHash<const QAbstractFormBuilder *, QFormBuilderExtra *> FormBuilderPrivateHash;
   206 }
   222 }