void Q3WizardPlugin::initialize(QDesignerFormEditorInterface *core) { Q_UNUSED(core); if (m_initialized) return; m_initialized = true; QExtensionManager *mgr = core->extensionManager(); Q3WizardPropertySheetFactory::registerExtension(mgr); mgr->registerExtensions(new Q3WizardContainerFactory(mgr), Q_TYPEID(QDesignerContainerExtension)); mgr->registerExtensions(new Q3WizardExtraInfoFactory(core, mgr), Q_TYPEID(QDesignerExtraInfoExtension)); }
void QAxWidgetPlugin::initialize(QDesignerFormEditorInterface *core) { if (m_core != 0) return; m_core = core; QExtensionManager *mgr = core->extensionManager(); ActiveXPropertySheetFactory::registerExtension(mgr); ActiveXTaskMenuFactory::registerExtension(mgr, Q_TYPEID(QDesignerTaskMenuExtension)); QAxWidgetExtraInfoFactory *extraInfoFactory = new QAxWidgetExtraInfoFactory(core, mgr); mgr->registerExtensions(extraInfoFactory, Q_TYPEID(QDesignerExtraInfoExtension)); }
//! [1] QObject *AGeneralExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MyCustomWidget *widget = qobject_cast<MyCustomWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerTaskMenuExtension))) { return new MyTaskMenuExtension(widget, parent); } else if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MyContainerExtension(widget, parent); } else { return 0; } }
QObject *WolfDesignerMenuFactory::createExtension( QObject *_object, const QString &_iid, QObject *_parent ) const { if( _iid != Q_TYPEID( QDesignerTaskMenuExtension ) ) { return 0; } if( qobject_cast<QWidget *>( _object ) ) { QWidget *w = qobject_cast<QWidget *>( _object ); // the menu is requested once per widget and lifetime, // so we can't make things depend on properties or states! //~ QDesignerFormWindowInterface *formWindow; //~ formWindow = QDesignerFormWindowInterface::findFormWindow( w ); //~ //~ formWindow->cursor()->setProperty(myWidget, myProperty, newValue); QString className = w->metaObject( )->className( ); // request/answer menues just for the top level widget in // the form editor, otherwise we loose default edit actions // (F2, double click) for example for text fields, push buttons //~ if( className == "QDesignerWidget" ) { return new WolfDesignerMenu( w, _parent ); //~ } } return 0; }
QObject *QDesignerMemberSheetFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid == Q_TYPEID(QDesignerMemberSheetExtension)) { return new QDesignerMemberSheet(object, parent); } return 0; }
void VideoPlayerPlugin::initialize(QDesignerFormEditorInterface * core) { if (m_initialized) return; QExtensionManager *mgr = core->extensionManager(); VideoPlayerTaskMenuFactory::registerExtension(mgr, Q_TYPEID(QDesignerTaskMenuExtension)); m_initialized = true; }
QObject *NavBarExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { NavBar *widget = qobject_cast<NavBar*>(object); if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) return new NavBarContainerExtension(widget, parent); else return 0; }
QObject *Q3ListBoxExtraInfoFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerExtraInfoExtension)) return 0; if (Q3ListBox *w = qobject_cast<Q3ListBox*>(object)) return new Q3ListBoxExtraInfo(w, m_core, parent); return 0; }
QObject *Q3WidgetStackContainerFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerContainerExtension)) return 0; if (QDesignerQ3WidgetStack *w = qobject_cast<QDesignerQ3WidgetStack*>(object)) return new Q3WidgetStackContainer(w, parent); return 0; }
void QwwTwoColorIndicatorIface::initialize(QDesignerFormEditorInterface * formEditor) { if (isInitialized()) return; wwWidgetInterface::initialize(formEditor); QExtensionManager *manager = formEditor->extensionManager(); QExtensionFactory *factory = new QwwWidgetsExtensionFactory(manager); Q_ASSERT(manager != 0); manager->registerExtensions(factory, Q_TYPEID(QDesignerTaskMenuExtension)); }
void QDesignerFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties) { typedef QList<DomProperty*> DomPropertyList; if (properties.empty()) return; const QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core()->extensionManager(), o); const QDesignerDynamicPropertySheetExtension *dynamicSheet = qt_extension<QDesignerDynamicPropertySheetExtension*>(core()->extensionManager(), o); const bool changingMetaObject = WidgetFactory::classNameOf(core(), o) == QStringLiteral("QAxWidget"); const QDesignerMetaObjectInterface *meta = core()->introspection()->metaObject(o); const bool dynamicPropertiesAllowed = dynamicSheet && dynamicSheet->dynamicPropertiesAllowed(); QDesignerPropertySheet *designerPropertySheet = qobject_cast<QDesignerPropertySheet *>( core()->extensionManager()->extension(o, Q_TYPEID(QDesignerPropertySheetExtension))); if (designerPropertySheet) { if (designerPropertySheet->pixmapCache()) designerPropertySheet->setPixmapCache(m_pixmapCache); if (designerPropertySheet->iconCache()) designerPropertySheet->setIconCache(m_iconCache); } const DomPropertyList::const_iterator cend = properties.constEnd(); for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) { DomProperty *p = *it; QVariant v; if (!readDomEnumerationValue(p, sheet, v)) v = toVariant(o->metaObject(), p); if (v.isNull()) continue; const QString attributeName = p->attributeName(); if (d->applyPropertyInternally(o, attributeName, v)) continue; // refuse fake properties like current tab name (weak test) if (!dynamicPropertiesAllowed) { if (changingMetaObject) // Changes after setting control of QAxWidget meta = core()->introspection()->metaObject(o); if (meta->indexOfProperty(attributeName) == -1) continue; } QObject *obj = o; QAbstractScrollArea *scroll = qobject_cast<QAbstractScrollArea *>(o); if (scroll && attributeName == QStringLiteral("cursor") && scroll->viewport()) obj = scroll->viewport(); // a real property obj->setProperty(attributeName.toUtf8(), v); } }
QObject *atcmgraphTaskMenuFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerTaskMenuExtension)) return 0; if (ATCMgraph *anim = qobject_cast<ATCMgraph*>(object)) return new atcmgraphTaskMenu(anim, parent); return 0; }
//! [5] QObject *TicTacToeTaskMenuFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerTaskMenuExtension)) return 0; if (TicTacToe *tic = qobject_cast<TicTacToe*>(object)) return new TicTacToeTaskMenu(tic, parent); return 0; }
void NavBarPlugin::initialize(QDesignerFormEditorInterface *formEditor) { if(initialized) return; QExtensionManager *manager = formEditor->extensionManager(); QExtensionFactory *factory = new NavBarExtensionFactory(manager); Q_ASSERT(manager != 0); manager->registerExtensions(factory, Q_TYPEID(QDesignerContainerExtension)); initialized = true; }
//! [0] QObject *ANewExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerContainerExtension)) return 0; if (MyCustomWidget *widget = qobject_cast<MyCustomWidget*> (object)) return new MyContainerExtension(widget, parent); return 0; }
//! [1] QObject *MultiPageWidgetExtensionFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { MultiPageWidget *widget = qobject_cast<MultiPageWidget*>(object); if (widget && (iid == Q_TYPEID(QDesignerContainerExtension))) { return new MultiPageWidgetContainerExtension(widget, parent); } else { return 0; } }
QObject *BfSubFormTaskMenuFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (iid != Q_TYPEID(QDesignerTaskMenuExtension)) return 0; if (BfSubForm *bfsf = qobject_cast<BfSubForm*>(object)) return new BfSubFormTaskMenu(bfsf, parent); return 0; }
void wActionButtonPlugin::initialize(QDesignerFormEditorInterface *core) { if (m_initialized) return; Q_UNUSED(core); QExtensionManager *manager = core->extensionManager(); Q_ASSERT(manager != 0); manager->registerExtensions(new wActionButtonTaskMenuFactory(manager), Q_TYPEID(QDesignerTaskMenuExtension)); m_initialized = true; }
//! [0] void MyPlugin::initialize(QDesignerFormEditorInterface *formEditor) { if (initialized) return; QExtensionManager *manager = formEditor->extensionManager(); Q_ASSERT(manager != 0); manager->registerExtensions(new MyExtensionFactory(manager), Q_TYPEID(QDesignerTaskMenuExtension)); initialized = true; }
void Q3IconViewPlugin::initialize(QDesignerFormEditorInterface *core) { Q_UNUSED(core); if (m_initialized) return; QExtensionManager *mgr = core->extensionManager(); Q_ASSERT(mgr != 0); mgr->registerExtensions(new Q3IconViewExtraInfoFactory(core, mgr), Q_TYPEID(QDesignerExtraInfoExtension)); m_initialized = true; }
void wDBTablePlugin::initialize(QDesignerFormEditorInterface *core) { if (m_initialized) return; Q_UNUSED(core); QExtensionManager *manager = core->extensionManager(); Q_ASSERT(manager != 0); manager->registerExtensions(new wDBTableTaskMenuFactory(manager), Q_TYPEID(QDesignerTaskMenuExtension)); m_initialized = true; printf("wDBTable inited\n"); }
QObject *QDesignerLayoutDecorationFactory::createExtension(QObject *object, const QString &iid, QObject *parent) const { if (!object->isWidgetType() || iid != Q_TYPEID(QDesignerLayoutDecorationExtension)) return 0; QWidget *widget = qobject_cast<QWidget*>(object); if (const QLayoutWidget *layoutWidget = qobject_cast<const QLayoutWidget*>(widget)) return QLayoutSupport::createLayoutSupport(layoutWidget->formWindow(), widget, parent); if (QDesignerFormWindowInterface *fw = QDesignerFormWindowInterface::findFormWindow(widget)) if (LayoutInfo::managedLayout(fw->core(), widget)) return QLayoutSupport::createLayoutSupport(fw, widget, parent); return 0; }
bool SetControlCommand::apply(const QString &clsid) { if (m_oldClsid == m_newClsid) return true; QObject *ext = m_formWindow->core()->extensionManager()->extension(m_axWidget, Q_TYPEID(QDesignerPropertySheetExtension)); QAxWidgetPropertySheet *sheet = qobject_cast<QAxWidgetPropertySheet*>(ext); if (!sheet) return false; const bool hasClsid = !clsid.isEmpty(); const int index = sheet->indexOf(QLatin1String(QAxWidgetPropertySheet::controlPropertyName)); if (hasClsid) sheet->setProperty(index, clsid); else sheet->reset(index); return true; }
void PropertyEditor::setObject(QObject *object) { QDesignerFormWindowInterface *oldFormWindow = QDesignerFormWindowInterface::findFormWindow(m_object); // In the first setObject() call following the addition of a dynamic property, focus and edit it. const bool editNewDynamicProperty = object != 0 && m_object == object && !m_recentlyAddedDynamicProperty.isEmpty(); m_object = object; m_propertyManager->setObject(object); QDesignerFormWindowInterface *formWindow = QDesignerFormWindowInterface::findFormWindow(m_object); FormWindowBase *fwb = qobject_cast<FormWindowBase *>(formWindow); m_treeFactory->setFormWindowBase(fwb); m_groupFactory->setFormWindowBase(fwb); storeExpansionState(); UpdateBlocker ub(this); updateToolBarLabel(); QMap<QString, QtVariantProperty *> toRemove = m_nameToProperty; const QDesignerDynamicPropertySheetExtension *dynamicSheet = qt_extension<QDesignerDynamicPropertySheetExtension*>(m_core->extensionManager(), m_object); const QDesignerPropertySheet *sheet = qobject_cast<QDesignerPropertySheet*>(m_core->extensionManager()->extension(m_object, Q_TYPEID(QDesignerPropertySheetExtension))); // Optimizization: Instead of rebuilding the complete list every time, compile a list of properties to remove, // remove them, traverse the sheet, in case property exists just set a value, otherwise - create it. QExtensionManager *m = m_core->extensionManager(); m_propertySheet = qobject_cast<QDesignerPropertySheetExtension*>(m->extension(object, Q_TYPEID(QDesignerPropertySheetExtension))); if (m_propertySheet) { const int propertyCount = m_propertySheet->count(); for (int i = 0; i < propertyCount; ++i) { if (!m_propertySheet->isVisible(i)) continue; const QString propertyName = m_propertySheet->propertyName(i); if (m_propertySheet->indexOf(propertyName) != i) continue; const QString groupName = m_propertySheet->propertyGroup(i); const QMap<QString, QtVariantProperty *>::const_iterator rit = toRemove.constFind(propertyName); if (rit != toRemove.constEnd()) { QtVariantProperty *property = rit.value(); if (m_propertyToGroup.value(property) == groupName && toBrowserType(m_propertySheet->property(i), propertyName) == property->propertyType()) toRemove.remove(propertyName); } } } QMapIterator<QString, QtVariantProperty *> itRemove(toRemove); while (itRemove.hasNext()) { itRemove.next(); QtVariantProperty *property = itRemove.value(); m_nameToProperty.remove(itRemove.key()); m_propertyToGroup.remove(property); delete property; } if (oldFormWindow != formWindow) reloadResourceProperties(); bool isMainContainer = false; if (QWidget *widget = qobject_cast<QWidget*>(object)) { if (QDesignerFormWindowInterface *fw = QDesignerFormWindowInterface::findFormWindow(widget)) { isMainContainer = (fw->mainContainer() == widget); } } m_groups.clear(); if (m_propertySheet) { QtProperty *lastProperty = 0; QtProperty *lastGroup = 0; const int propertyCount = m_propertySheet->count(); for (int i = 0; i < propertyCount; ++i) { if (!m_propertySheet->isVisible(i)) continue; const QString propertyName = m_propertySheet->propertyName(i); if (m_propertySheet->indexOf(propertyName) != i) continue; const QVariant value = m_propertySheet->property(i); const int type = toBrowserType(value, propertyName); QtVariantProperty *property = m_nameToProperty.value(propertyName, 0); bool newProperty = property == 0; if (newProperty) { property = m_propertyManager->addProperty(type, propertyName); if (property) { newProperty = true; if (type == DesignerPropertyManager::enumTypeId()) { const PropertySheetEnumValue e = qvariant_cast<PropertySheetEnumValue>(value); QStringList names; QStringListIterator it(e.metaEnum.keys()); while (it.hasNext()) names.append(it.next()); m_updatingBrowser = true; property->setAttribute(m_strings.m_enumNamesAttribute, names); m_updatingBrowser = false; } else if (type == DesignerPropertyManager::designerFlagTypeId()) { const PropertySheetFlagValue f = qvariant_cast<PropertySheetFlagValue>(value); QList<QPair<QString, uint> > flags; QStringListIterator it(f.metaFlags.keys()); while (it.hasNext()) { const QString name = it.next(); const uint val = f.metaFlags.keyToValue(name); flags.append(qMakePair(name, val)); } m_updatingBrowser = true; QVariant v; qVariantSetValue(v, flags); property->setAttribute(m_strings.m_flagsAttribute, v); m_updatingBrowser = false; } } } if (property != 0) { const bool dynamicProperty = (dynamicSheet && dynamicSheet->isDynamicProperty(i)) || (sheet && sheet->isDefaultDynamicProperty(i)); switch (type) { case QVariant::Palette: setupPaletteProperty(property); break; case QVariant::KeySequence: //addCommentProperty(property, propertyName); break; default: break; } if (type == QVariant::String || type == qMetaTypeId<PropertySheetStringValue>()) setupStringProperty(property, isMainContainer); property->setAttribute(m_strings.m_resettableAttribute, m_propertySheet->hasReset(i)); const QString groupName = m_propertySheet->propertyGroup(i); QtVariantProperty *groupProperty = 0; if (newProperty) { QMap<QString, QtVariantProperty*>::const_iterator itPrev = m_nameToProperty.insert(propertyName, property); m_propertyToGroup[property] = groupName; if (m_sorting) { QtProperty *previous = 0; if (itPrev != m_nameToProperty.constBegin()) previous = (--itPrev).value(); m_currentBrowser->insertProperty(property, previous); } } const QMap<QString, QtVariantProperty*>::const_iterator gnit = m_nameToGroup.constFind(groupName); if (gnit != m_nameToGroup.constEnd()) { groupProperty = gnit.value(); } else { groupProperty = m_propertyManager->addProperty(QtVariantPropertyManager::groupTypeId(), groupName); QtBrowserItem *item = 0; if (!m_sorting) item = m_currentBrowser->insertProperty(groupProperty, lastGroup); m_nameToGroup[groupName] = groupProperty; m_groups.append(groupProperty); if (dynamicProperty) m_dynamicGroup = groupProperty; if (m_currentBrowser == m_treeBrowser && item) { m_treeBrowser->setBackgroundColor(item, propertyColor(groupProperty)); groupProperty->setModified(true); } } /* Group changed or new group. Append to last subproperty of * that group. Note that there are cases in which a derived * property sheet appends fake properties for the class * which will appear after the layout group properties * (QWizardPage). To make them appear at the end of the * actual class group, goto last element. */ if (lastGroup != groupProperty) { lastGroup = groupProperty; lastProperty = 0; // Append at end const QList<QtProperty*> subProperties = lastGroup->subProperties(); if (!subProperties.empty()) lastProperty = subProperties.back(); lastGroup = groupProperty; } if (!m_groups.contains(groupProperty)) m_groups.append(groupProperty); if (newProperty) groupProperty->insertSubProperty(property, lastProperty); lastProperty = property; updateBrowserValue(property, value); property->setModified(m_propertySheet->isChanged(i)); if (propertyName == QLatin1String("geometry") && type == QVariant::Rect) { QList<QtProperty *> subProperties = property->subProperties(); foreach (QtProperty *subProperty, subProperties) { const QString subPropertyName = subProperty->propertyName(); if (subPropertyName == QLatin1String("X") || subPropertyName == QLatin1String("Y")) subProperty->setEnabled(!isMainContainer); } } } else { qWarning("%s", qPrintable(msgUnsupportedType(propertyName, type))); } }
void PropertyEditor::updateBrowserValue(QtVariantProperty *property, const QVariant &value) { QVariant v = value; const int type = property->propertyType(); if (type == QtVariantPropertyManager::enumTypeId()) { const PropertySheetEnumValue e = qvariant_cast<PropertySheetEnumValue>(v); v = e.metaEnum.keys().indexOf(e.metaEnum.valueToKey(e.value)); } else if (type == DesignerPropertyManager::designerFlagTypeId()) { const PropertySheetFlagValue f = qvariant_cast<PropertySheetFlagValue>(v); v = QVariant(f.value); } else if (type == DesignerPropertyManager::designerAlignmentTypeId()) { const PropertySheetFlagValue f = qvariant_cast<PropertySheetFlagValue>(v); v = QVariant(f.value); } QDesignerPropertySheet *sheet = qobject_cast<QDesignerPropertySheet*>(m_core->extensionManager()->extension(m_object, Q_TYPEID(QDesignerPropertySheetExtension))); int index = -1; if (sheet) index = sheet->indexOf(property->propertyName()); if (sheet && m_propertyToGroup.contains(property)) { // don't do it for comments since property sheet doesn't keep them property->setEnabled(sheet->isEnabled(index)); } // Rich text string property with comment: Store/Update the font the rich text editor dialog starts out with if (type == QVariant::String && !property->subProperties().empty()) { const int fontIndex = m_propertySheet->indexOf(m_strings.m_fontProperty); if (fontIndex != -1) property->setAttribute(m_strings.m_fontAttribute, m_propertySheet->property(fontIndex)); } m_updatingBrowser = true; property->setValue(v); if (sheet && sheet->isResourceProperty(index)) property->setAttribute(QLatin1String("defaultResource"), sheet->defaultResourceProperty(index)); m_updatingBrowser = false; }
FormEditor::FormEditor(QObject *parent) : QDesignerFormEditorInterface(parent) { setIntrospection(new QDesignerIntrospection); setDialogGui(new DialogGui); QDesignerPluginManager *pluginManager = new QDesignerPluginManager(this); setPluginManager(pluginManager); WidgetDataBase *widgetDatabase = new WidgetDataBase(this, this); setWidgetDataBase(widgetDatabase); MetaDataBase *metaDataBase = new MetaDataBase(this, this); setMetaDataBase(metaDataBase); WidgetFactory *widgetFactory = new WidgetFactory(this, this); setWidgetFactory(widgetFactory); FormWindowManager *formWindowManager = new FormWindowManager(this, this); setFormManager(formWindowManager); connect(formWindowManager, SIGNAL(formWindowAdded(QDesignerFormWindowInterface*)), widgetFactory, SLOT(formWindowAdded(QDesignerFormWindowInterface*))); connect(formWindowManager, SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface*)), widgetFactory, SLOT(activeFormWindowChanged(QDesignerFormWindowInterface*))); QExtensionManager *mgr = new QExtensionManager(this); const QString containerExtensionId = Q_TYPEID(QDesignerContainerExtension); QDesignerStackedWidgetContainerFactory::registerExtension(mgr, containerExtensionId); QDesignerTabWidgetContainerFactory::registerExtension(mgr, containerExtensionId); QDesignerToolBoxContainerFactory::registerExtension(mgr, containerExtensionId); QMainWindowContainerFactory::registerExtension(mgr, containerExtensionId); QDockWidgetContainerFactory::registerExtension(mgr, containerExtensionId); QScrollAreaContainerFactory::registerExtension(mgr, containerExtensionId); QWorkspaceContainerFactory::registerExtension(mgr, containerExtensionId); QMdiAreaContainerFactory::registerExtension(mgr, containerExtensionId); QWizardContainerFactory::registerExtension(mgr, containerExtensionId); mgr->registerExtensions(new QDesignerLayoutDecorationFactory(mgr), Q_TYPEID(QDesignerLayoutDecorationExtension)); const QString actionProviderExtensionId = Q_TYPEID(QDesignerActionProviderExtension); QToolBarActionProviderFactory::registerExtension(mgr, actionProviderExtensionId); QMenuBarActionProviderFactory::registerExtension(mgr, actionProviderExtensionId); QMenuActionProviderFactory::registerExtension(mgr, actionProviderExtensionId); QDesignerDefaultPropertySheetFactory::registerExtension(mgr); QLayoutWidgetPropertySheetFactory::registerExtension(mgr); SpacerPropertySheetFactory::registerExtension(mgr); LinePropertySheetFactory::registerExtension(mgr); LayoutPropertySheetFactory::registerExtension(mgr); QStackedWidgetPropertySheetFactory::registerExtension(mgr); QToolBoxWidgetPropertySheetFactory::registerExtension(mgr); QTabWidgetPropertySheetFactory::registerExtension(mgr); QMdiAreaPropertySheetFactory::registerExtension(mgr); QWorkspacePropertySheetFactory::registerExtension(mgr); QWizardPagePropertySheetFactory::registerExtension(mgr); QWizardPropertySheetFactory::registerExtension(mgr); QTreeViewPropertySheetFactory::registerExtension(mgr); QTableViewPropertySheetFactory::registerExtension(mgr); const QString internalTaskMenuId = QLatin1String("QDesignerInternalTaskMenuExtension"); QDesignerTaskMenuFactory::registerExtension(mgr, internalTaskMenuId); mgr->registerExtensions(new QDesignerMemberSheetFactory(mgr), Q_TYPEID(QDesignerMemberSheetExtension)); setExtensionManager(mgr); setIconCache(new IconCache(this)); QtBrushManager *brushManager = new QtBrushManager(this); setBrushManager(brushManager); BrushManagerProxy *brushProxy = new BrushManagerProxy(this, this); brushProxy->setBrushManager(brushManager); setPromotion(new QDesignerPromotion(this)); QtResourceModel *resourceModel = new QtResourceModel(this); setResourceModel(resourceModel); connect(resourceModel, SIGNAL(qrcFileModifiedExternally(QString)), this, SLOT(slotQrcFileChangedExternally(QString))); QList<QDesignerOptionsPageInterface*> optionsPages; optionsPages << new TemplateOptionsPage(this) << new FormEditorOptionsPage(this) << new EmbeddedOptionsPage(this); setOptionsPages(optionsPages); setSettingsManager(new QDesignerQSettings()); }