/*! \brief Return all information, that is needed to represent the item on the legend In case of LegendBarTitles an entry for each bar is returned, otherwise the chart is represented like any other plot item from its title() and the legendIcon(). \sa title(), setLegendMode(), barTitle(), QwtLegend, QwtPlotLegendItem */ QList<QwtLegendData> QwtPlotBarChart::legendData() const { QList<QwtLegendData> list; if ( d_data->legendMode == LegendBarTitles ) { const size_t numSamples = dataSize(); for ( size_t i = 0; i < numSamples; i++ ) { QwtLegendData data; QVariant titleValue; qVariantSetValue( titleValue, barTitle( i ) ); data.setValue( QwtLegendData::TitleRole, titleValue ); if ( !legendIconSize().isEmpty() ) { QVariant iconValue; qVariantSetValue( iconValue, legendIcon( i, legendIconSize() ) ); data.setValue( QwtLegendData::IconRole, iconValue ); } list += data; } } else { return QwtPlotAbstractBarChart::legendData(); } return list; }
/*! \return Information to be displayed on the legend The chart is represented by a list of entries - one for each bar title. Each element contains a bar title and an icon showing its corresponding bar. \sa barTitles(), legendIcon(), legendIconSize() */ QList<QwtLegendData> QwtPlotMultiBarChart::legendData() const { QList<QwtLegendData> list; for ( int i = 0; i < d_data->barTitles.size(); i++ ) { QwtLegendData data; QVariant titleValue; qVariantSetValue( titleValue, d_data->barTitles[i] ); data.setValue( QwtLegendData::TitleRole, titleValue ); if ( !legendIconSize().isEmpty() ) { QVariant iconValue; qVariantSetValue( iconValue, legendIcon( i, legendIconSize() ) ); data.setValue( QwtLegendData::IconRole, iconValue ); } list += data; } return list; }
bool BrushPropertyManager::value(const QtProperty *property, QVariant *v) const { const PropertyBrushMap::const_iterator brit = m_brushValues.constFind(const_cast<QtProperty *>(property)); if (brit == m_brushValues.constEnd()) return false; qVariantSetValue(*v, brit.value()); return true; }
bool ToolBarEventFilter::handleContextMenuEvent(QContextMenuEvent * event ) { event->accept(); const QPoint globalPos = event->globalPos(); const int index = actionIndexAt(m_toolBar, m_toolBar->mapFromGlobal(globalPos), m_toolBar->orientation()); const ActionList actions = m_toolBar->actions(); QAction *action = index != -1 ?actions.at(index) : 0; QVariant itemData; QMenu menu(0); // Insert before if (action && index != 0 && !action->isSeparator()) { QAction *newSeperatorAct = menu.addAction(tr("Insert Separator before '%1'").arg(action->objectName())); qVariantSetValue(itemData, action); newSeperatorAct->setData(itemData); connect(newSeperatorAct, SIGNAL(triggered()), this, SLOT(slotInsertSeparator())); } // Append separator if (actions.empty() || !actions.back()->isSeparator()) { QAction *newSeperatorAct = menu.addAction(tr("Append Separator")); qVariantSetValue(itemData, static_cast<QAction*>(0)); newSeperatorAct->setData(itemData); connect(newSeperatorAct, SIGNAL(triggered()), this, SLOT(slotInsertSeparator())); } // Remove if (!menu.actions().empty()) menu.addSeparator(); // Remove if (action) { QAction *a = menu.addAction(tr("Remove action '%1'").arg(action->objectName())); qVariantSetValue(itemData, action); a->setData(itemData); connect(a, SIGNAL(triggered()), this, SLOT(slotRemoveSelectedAction())); } QAction *remove_toolbar = menu.addAction(tr("Remove Toolbar '%1'").arg(m_toolBar->objectName())); connect(remove_toolbar, SIGNAL(triggered()), this, SLOT(slotRemoveToolBar())); menu.exec(globalPos); return true; }
ActionList ToolBarEventFilter::contextMenuActions(const QPoint &globalPos) { ActionList rc; const int index = actionIndexAt(m_toolBar, m_toolBar->mapFromGlobal(globalPos), m_toolBar->orientation()); const ActionList actions = m_toolBar->actions(); QAction *action = index != -1 ?actions.at(index) : 0; QVariant itemData; // Insert before if (action && index != 0 && !action->isSeparator()) { QAction *newSeperatorAct = new QAction(tr("Insert Separator before '%1'").arg(action->objectName()), 0); qVariantSetValue(itemData, action); newSeperatorAct->setData(itemData); connect(newSeperatorAct, SIGNAL(triggered()), this, SLOT(slotInsertSeparator())); rc.push_back(newSeperatorAct); } // Append separator if (actions.empty() || !actions.back()->isSeparator()) { QAction *newSeperatorAct = new QAction(tr("Append Separator"), 0); qVariantSetValue(itemData, static_cast<QAction*>(0)); newSeperatorAct->setData(itemData); connect(newSeperatorAct, SIGNAL(triggered()), this, SLOT(slotInsertSeparator())); rc.push_back(newSeperatorAct); } // Promotion if (!m_promotionTaskMenu) m_promotionTaskMenu = new PromotionTaskMenu(m_toolBar, PromotionTaskMenu::ModeSingleWidget, this); m_promotionTaskMenu->addActions(formWindow(), PromotionTaskMenu::LeadingSeparator|PromotionTaskMenu::TrailingSeparator, rc); // Remove if (action) { QAction *a = new QAction(tr("Remove action '%1'").arg(action->objectName()), 0); qVariantSetValue(itemData, action); a->setData(itemData); connect(a, SIGNAL(triggered()), this, SLOT(slotRemoveSelectedAction())); rc.push_back(a); } QAction *remove_toolbar = new QAction(tr("Remove Toolbar '%1'").arg(m_toolBar->objectName()), 0); connect(remove_toolbar, SIGNAL(triggered()), this, SLOT(slotRemoveToolBar())); rc.push_back(remove_toolbar); return rc; }
void testVariant2() { QVariant var; QVariant var3; QHostAddress ha("127.0.0.1"); qVariantSetValue(var, ha); var3 = var; var3 = var; var3 = var; var3 = var; QHostAddress ha1 = var.value<QHostAddress>(); }
/*! \brief Return all information, that is needed to represent the item on the legend Most items are represented by one entry on the legend showing an icon and a text. QwtLegendData is basically a list of QVariants that makes it possible to overload and reimplement legendData() to return almost any type of information, that is understood by the receiver that acts as the legend. The default implementation returns one entry with the title() of the item and the legendIcon(). \sa title(), legendIcon(), QwtLegend */ QList<QwtLegendData> QwtPolarItem::legendData() const { QwtLegendData data; QwtText label = title(); label.setRenderFlags( label.renderFlags() & Qt::AlignLeft ); QVariant titleValue; qVariantSetValue( titleValue, label ); data.setValue( QwtLegendData::TitleRole, titleValue ); const QwtGraphic graphic = legendIcon( 0, legendIconSize() ); if ( !graphic.isNull() ) { QVariant iconValue; qVariantSetValue( iconValue, graphic ); data.setValue( QwtLegendData::IconRole, iconValue ); } QList<QwtLegendData> list; list += data; return list; }
bool FontPropertyManager::resetFontSubProperty(QtVariantPropertyManager *vm, QtProperty *property) { const PropertyToPropertyMap::iterator it = m_fontSubPropertyToProperty.find(property); if (it == m_fontSubPropertyToProperty.end()) return false; QtVariantProperty *fontProperty = vm->variantProperty(it.value()); QVariant v = fontProperty->value(); QFont font = qvariant_cast<QFont>(v); unsigned mask = font.resolve(); const unsigned flag = fontFlag(m_fontSubPropertyToFlag.value(property)); mask &= ~flag; font.resolve(mask); qVariantSetValue(v, font); fontProperty->setValue(v); return true; }
QModelIndex ActionModel::addAction(QAction *action) { Q_ASSERT(m_core); QStandardItemList items; const Qt::ItemFlags flags = Qt::ItemIsSelectable|Qt::ItemIsDropEnabled|Qt::ItemIsDragEnabled|Qt::ItemIsEnabled; QVariant itemData; qVariantSetValue(itemData, action); for (int i = 0; i < NumColumns; i++) { QStandardItem *item = new QStandardItem; item->setData(itemData, ActionRole); item->setFlags(flags); items.push_back(item); } setItems(m_core, action, items); appendRow(items); return indexFromItem(items.front()); }
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))); } }
/* Interprets element \a e as a variant and returns the result of the interpretation, extracting the data as a text element is the \a comment matches the tag name. If the interpretation fails the \a defValue is returned instead. */ QVariant DomTool::elementToVariant(const QDomElement& e, const QVariant& defValue, QString &comment) { Q_UNUSED(defValue); QVariant v; Variant var; if (e.tagName() == QLatin1String("rect")) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0, w = 0, h = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("x")) x = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("y")) y = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("width")) w = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("height")) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } var.createRect(x, y, w, h); qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("point")) { QDomElement n3 = e.firstChild().toElement(); int x = 0, y = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("x")) x = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("y")) y = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } var.createPoint(x,y); qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("size")) { QDomElement n3 = e.firstChild().toElement(); int w = 0, h = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("width")) w = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("height")) h = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } var.createSize(w, h); qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("color")) { var.color = readColor(e); qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("font")) { QDomElement n3 = e.firstChild().toElement(); Font f; f.init(); while (!n3.isNull()) { if (n3.tagName() == QLatin1String("family")) f.family = qstrdup(n3.firstChild().toText().data().toLatin1()); else if (n3.tagName() == QLatin1String("pointsize")) f.pointsize = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("bold")) f.bold = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("italic")) f.italic = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("underline")) f.underline = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("strikeout")) f.strikeout = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } var.font = f; qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("string")) { v = QVariant(e.firstChild().toText().data()); QDomElement n = e; n = n.nextSibling().toElement(); if (n.tagName() == QLatin1String("comment")) comment = n.firstChild().toText().data(); } else if (e.tagName() == QLatin1String("cstring")) { v = QVariant(e.firstChild().toText().data().toAscii()); } else if (e.tagName() == QLatin1String("number")) { bool ok = true; v = QVariant(e.firstChild().toText().data().toInt(&ok)); if (!ok) v = QVariant(e.firstChild().toText().data().toDouble()); } else if (e.tagName() == QLatin1String("bool")) { QString t = e.firstChild().toText().data(); v = QVariant(t == QLatin1String("true") || t == QLatin1String("1")); } else if (e.tagName() == QLatin1String("pixmap")) { v = QVariant(e.firstChild().toText().data()); } else if (e.tagName() == QLatin1String("iconset")) { v = QVariant(e.firstChild().toText().data()); } else if (e.tagName() == QLatin1String("image")) { v = QVariant(e.firstChild().toText().data()); } else if (e.tagName() == QLatin1String("enum")) { v = QVariant(e.firstChild().toText().data()); } else if (e.tagName() == QLatin1String("set")) { v = QVariant(e.firstChild().toText().data()); } else if (e.tagName() == QLatin1String("sizepolicy")) { QDomElement n3 = e.firstChild().toElement(); var.createSizePolicy(); while (!n3.isNull()) { if (n3.tagName() == QLatin1String("hsizetype")) var.sizePolicy.hsizetype = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("vsizetype")) var.sizePolicy.vsizetype = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("horstretch")) var.sizePolicy.horstretch = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("verstretch")) var.sizePolicy.verstretch = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("cursor")) { var.createCursor(e.firstChild().toText().data().toInt()); qVariantSetValue(v, var); } else if (e.tagName() == QLatin1String("stringlist")) { QStringList lst; QDomElement n; for (n = e.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement()) lst << n.firstChild().toText().data(); v = QVariant(lst); } else if (e.tagName() == QLatin1String("date")) { QDomElement n3 = e.firstChild().toElement(); int y, m, d; y = m = d = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("year")) y = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("month")) m = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("day")) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = QVariant(QDate(y, m, d)); } else if (e.tagName() == QLatin1String("time")) { QDomElement n3 = e.firstChild().toElement(); int h, m, s; h = m = s = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("hour")) h = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("minute")) m = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("second")) s = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = QVariant(QTime(h, m, s)); } else if (e.tagName() == QLatin1String("datetime")) { QDomElement n3 = e.firstChild().toElement(); int h, mi, s, y, mo, d ; h = mi = s = y = mo = d = 0; while (!n3.isNull()) { if (n3.tagName() == QLatin1String("hour")) h = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("minute")) mi = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("second")) s = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("year")) y = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("month")) mo = n3.firstChild().toText().data().toInt(); else if (n3.tagName() == QLatin1String("day")) d = n3.firstChild().toText().data().toInt(); n3 = n3.nextSibling().toElement(); } v = QVariant(QDateTime(QDate(y, mo, d), QTime(h, mi, s))); } return v; }
/* static */ void wxWindowQt::QtStoreWindowPointer( QWidget *widget, const wxWindowQt *window ) { QVariant variant; qVariantSetValue( variant, window ); widget->setProperty( WINDOW_POINTER_PROPERTY_NAME, variant ); }