UserVariableFactory::UserVariableFactory() : KoInlineObjectFactoryBase("user", TextVariable) { KoInlineObjectTemplate var1; var1.id = "userfieldget"; var1.name = i18n("Custom"); KoProperties *props = new KoProperties(); props->setProperty("varproperty", KoInlineObject::UserGet); props->setProperty("varname", QString()); var1.properties = props; addTemplate(var1); /* KoInlineObjectTemplate var2; var2.id = "userfieldinput"; var2.name = i18n("User Input"); props = new KProperties(); props->setProperty("varproperty", KoInlineObject::UserField); var2.properties = props; addTemplate(var2); */ QStringList elementNames; elementNames << "user-field-get" << "user-field-input"; setOdfElementNames(KoXmlNS::text, elementNames); }
QMimeData* CollectionItemModel::mimeData(const QModelIndexList& indexes) const { if(indexes.isEmpty()) return 0; QModelIndex index = indexes.first(); if(!index.isValid()) return 0; if(m_shapeTemplateList.isEmpty()) return 0; QByteArray itemData; QDataStream dataStream(&itemData, QIODevice::WriteOnly); dataStream << m_shapeTemplateList[index.row()].id; KoProperties *props = m_shapeTemplateList[index.row()].properties; if(props) dataStream << props->store("shapes"); else dataStream << QString(); QMimeData* mimeData = new QMimeData; mimeData->setData(SHAPETEMPLATE_MIMETYPE, itemData); return mimeData; }
PageVariableFactory::PageVariableFactory() : KoInlineObjectFactoryBase("page", TextVariable) { KoInlineObjectTemplate var1; var1.id = "pagecount"; var1.name = i18n("Page Count"); KoProperties *props = new KoProperties(); props->setProperty("vartype", 1); var1.properties = props; addTemplate(var1); KoInlineObjectTemplate var2; var2.id = "pagenumber"; var2.name = i18n("Page Number"); props = new KoProperties(); props->setProperty("vartype", 2); var2.properties = props; addTemplate(var2); //KoInlineObjectTemplate var3; //var3.id = "pagecontinuation"; //var3.name = i18n("Page Continuation"); //props = new KoProperties(); //props->setProperty("vartype", 3); //var3.properties = props; //addTemplate(var3); QStringList elementNames; elementNames << "page-count" << "page-number" << "page-continuation-string"; setOdfElementNames(KoXmlNS::text, elementNames); }
void KPrPlaceholderTextStrategy::init(KoDocumentResourceManager *documentResources) { KoShapeFactoryBase *factory = KoShapeRegistry::instance()->value( "TextShapeID" ); Q_ASSERT( factory ); KoProperties props; props.setProperty("text", text()); delete m_textShape; m_textShape = factory->createShape(&props, documentResources); }
DateVariableFactory::DateVariableFactory() : KoVariableFactory("date") { KoVariableTemplate var; var.id = "fixed"; var.name = i18n("Fixed"); KoProperties *props = new KoProperties(); props->setProperty("id", DateVariable::Fixed); props->setProperty("definition", "dd/MM/yy"); var.properties = props; addTemplate(var); QStringList elementNames; elementNames << "date" << "time"; setOdfElementNames(KoXmlNS::text, elementNames); }
AnnotationTextShapeFactory::AnnotationTextShapeFactory() : KoShapeFactoryBase(AnnotationShape_SHAPEID, i18n("Annotation")) { setToolTip(i18n("Annotation shape to show annotation content")); QList<QPair<QString, QStringList> > odfElements; odfElements.append(QPair<QString, QStringList>(KoXmlNS::office, QStringList("annotation"))); setXmlElements(odfElements); KoShapeTemplate t; t.name = i18n("Annotation"); t.iconName = koIconName("x-shape-text"); // Any icon for now :) t.toolTip = i18n("Annotation Shape"); KoProperties *props = new KoProperties(); t.properties = props; props->setProperty("demo", true); addTemplate(t); }
void KisBaseNode::mergeNodeProperties(const KoProperties & properties) { QMapIterator<QString, QVariant> iter = properties.propertyIterator(); while (iter.hasNext()) { iter.next(); m_d->properties.setProperty(iter.key(), iter.value()); } }
void run() { int visibility = 0; for(int i = 0; i < NUM_CYCLES; i++) { if(i % 3 == 0) { m_nastyChild->setVisible(visibility++ & 0x1); // dbgKrita << "visibility" << i << m_nastyChild->visible(); } else if (i%3 == 1){ KoProperties props; props.setProperty("visible", true); QList<KisNodeSP> visibleNodes = m_victimNode->childNodes(QStringList("TestNodeB"), props); foreach(KisNodeSP node, visibleNodes) { m_nastyChild->setVisible(visibility++ & 0x1); } // dbgKrita << visibleNodes; }
bool KisBaseNode::check(const KoProperties & properties) const { QMapIterator<QString, QVariant> iter = properties.propertyIterator(); while (iter.hasNext()) { iter.next(); if (m_d->properties.contains(iter.key())) { if (m_d->properties.value(iter.key()) != iter.value()) return false; } } return true; }
void KisNodeTest::testChildNodes() { KisNodeSP root = new TestNodeA(); KisNodeSP a = new TestNodeA(); root->add(a, 0); a->setVisible(true); a->setUserLocked(true); KisNodeSP b = new TestNodeB(); root->add(b, 0); b->setVisible(false); b->setUserLocked(true); KisNodeSP c = new TestNodeC(); root->add(c, 0); c->setVisible(false); c->setVisible(false); QList<KisNodeSP> allNodes = root->childNodes(QStringList(), KoProperties()); QCOMPARE((int) allNodes.count(), 3); // a, b, c QStringList nodeTypes; nodeTypes << "TestNodeA" << "TestNodeB"; QList<KisNodeSP> subSetOfNodeTypes = root->childNodes(nodeTypes, KoProperties()); QVERIFY(subSetOfNodeTypes.count() == 2); // a, b nodeTypes.clear(); nodeTypes << "TestNodeB" << "TestNodeC"; KoProperties props; props.setProperty("visibile", false); props.setProperty("locked", true); QList<KisNodeSP> subsetOfTypesAndProps = root->childNodes(nodeTypes, props); QVERIFY(subsetOfTypesAndProps.count() == 1); // b KoProperties props2; props.setProperty("visibile", false); QList<KisNodeSP> subSetOfProps = root->childNodes(QStringList(), props); QVERIFY(subSetOfProps.count() == 2); // b, c }
QList<KisNodeSP> KisNode::childNodes(const QStringList & nodeTypes, const KoProperties & properties) const { QList<KisNodeSP> nodes; foreach(const KisNodeSP & node, m_d->nodes) { if (!nodeTypes.isEmpty()) { foreach(const QString & nodeType, nodeTypes) { if (node->inherits(nodeType.toAscii())) { if (properties.isEmpty() || node->check(properties)) nodes.append(node); } } } else if (properties.isEmpty() || node->check(properties))
PresentationVariableFactory::PresentationVariableFactory() : KoInlineObjectFactoryBase("PresentationVariable", Other) { KoInlineObjectTemplate var1; var1.id = "Header"; var1.name = i18n("Header"); KoProperties *props = new KoProperties(); props->setProperty("vartype", 1); var1.properties = props; addTemplate(var1); KoInlineObjectTemplate var2; var2.id = "Footer"; var2.name = i18n("Footer"); props = new KoProperties(); props->setProperty("vartype", 2); var2.properties = props; addTemplate(var2); QStringList elementNames; elementNames << "footer" << "header" << "date-time"; setOdfElementNames(KoXmlNS::presentation, elementNames); }
void KoPAView::addImages(const QList<QImage> &imageList, const QPoint &insertAt) { // get position from event and convert to document coordinates QPointF pos = zoomHandler()->viewToDocument(insertAt) + kopaCanvas()->documentOffset() - kopaCanvas()->documentOrigin(); // create a factory KoShapeFactoryBase *factory = KoShapeRegistry::instance()->value("PictureShape"); if (!factory) { kWarning(30003) << "No picture shape found, cannot drop images."; return; } foreach(const QImage &image, imageList) { KoProperties params; QVariant v; v.setValue<QImage>(image); params.setProperty("qimage", v); KoShape *shape = factory->createShape(¶ms, d->doc->resourceManager()); if (!shape) { kWarning(30003) << "Could not create a shape from the image"; return; } shape->setPosition(pos); pos += QPointF(25,25); // increase the position for each shape we insert so the // user can see them all. KUndo2Command *cmd = kopaCanvas()->shapeController()->addShapeDirect(shape); if (cmd) { KoSelection *selection = kopaCanvas()->shapeManager()->selection(); selection->deselectAll(); selection->select(shape); } kopaCanvas()->addCommand(cmd); }
StarShapeFactory::StarShapeFactory() : KoShapeFactoryBase(StarShapeId, i18n("A star shape")) { setToolTip(i18n("A star")); setIconName(koIconNameCStr("star-shape")); QStringList elementNames; elementNames << "regular-polygon" << "custom-shape"; setXmlElementNames(KoXmlNS::draw, elementNames); setLoadingPriority(5); KoShapeTemplate t; t.id = KoPathShapeId; t.templateId = "star"; t.name = i18n("Star"); t.family = "geometric"; t.toolTip = i18n("A star"); t.iconName = koIconName("star-shape"); KoProperties *props = new KoProperties(); props->setProperty("corners", 5); QVariant v; v.setValue(QColor(Qt::yellow)); props->setProperty("background", v); t.properties = props; addTemplate(t); t.id = KoPathShapeId; t.templateId = "flower"; t.name = i18n("Flower"); t.family = "funny"; t.toolTip = i18n("A flower"); t.iconName = koIconName("flower-shape"); props = new KoProperties(); props->setProperty("corners", 5); props->setProperty("baseRadius", 10.0); props->setProperty("tipRadius", 50.0); props->setProperty("baseRoundness", 0.0); props->setProperty("tipRoundness", 40.0); v.setValue(QColor(Qt::magenta)); props->setProperty("background", v); t.properties = props; addTemplate(t); t.id = KoPathShapeId; t.templateId = "pentagon"; t.name = i18n("Pentagon"); t.family = "geometric"; t.toolTip = i18n("A pentagon"); t.iconName = koIconName("pentagon-shape"); props = new KoProperties(); props->setProperty("corners", 5); props->setProperty("convex", true); props->setProperty("tipRadius", 50.0); props->setProperty("tipRoundness", 0.0); v.setValue(QColor(Qt::blue)); props->setProperty("background", v); t.properties = props; addTemplate(t); t.id = KoPathShapeId; t.templateId = "hexagon"; t.name = i18n("Hexagon"); t.family = "geometric"; t.toolTip = i18n("A hexagon"); t.iconName = koIconName("hexagon-shape"); props = new KoProperties(); props->setProperty("corners", 6); props->setProperty("convex", true); props->setProperty("tipRadius", 50.0); props->setProperty("tipRoundness", 0.0); v.setValue(QColor(Qt::blue)); props->setProperty("background", v); t.properties = props; addTemplate(t); }
void KisCustomBrushWidget::createBrush() { if (!m_image) return; if (m_brush){ // don't delete shared pointer, please bool removedCorrectly = KisBrushServer::instance()->brushServer()->removeResourceFromServer( m_brush.data() ); if (!removedCorrectly){ kWarning() << "Brush was not removed correctly for the resource server"; } } if (brushStyle->currentIndex() == 0) { KisSelectionSP selection = m_image->globalSelection(); // create copy of the data m_image->lock(); KisPaintDeviceSP dev = new KisPaintDevice(*m_image->mergedImage()); m_image->unlock(); if (!selection){ m_brush = new KisGbrBrush(dev, 0, 0, m_image->width(), m_image->height()); } else { // apply selection mask QRect r = selection->selectedExactRect(); dev->crop(r); KisHLineIteratorSP pixelIt = dev->createHLineIteratorNG(r.x(), r.top(), r.width()); KisHLineConstIteratorSP maskIt = selection->projection()->createHLineIteratorNG(r.x(), r.top(), r.width()); for (qint32 y = r.top(); y <= r.bottom(); ++y) { do { dev->colorSpace()->applyAlphaU8Mask(pixelIt->rawData(), maskIt->oldRawData(), 1); } while (pixelIt->nextPixel() && maskIt->nextPixel()); pixelIt->nextRow(); maskIt->nextRow(); } QRect rc = dev->exactBounds(); m_brush = new KisGbrBrush(dev, rc.x(), rc.y(), rc.width(), rc.height()); } } else { // For each layer in the current image, create a new image, and add it to the list QVector< QVector<KisPaintDevice*> > devices; devices.push_back(QVector<KisPaintDevice*>()); int w = m_image->width(); int h = m_image->height(); m_image->lock(); // We only loop over the rootLayer. Since we actually should have a layer selection // list, no need to elaborate on that here and now KoProperties properties; properties.setProperty("visible", true); QList<KisNodeSP> layers = m_image->root()->childNodes(QStringList("KisLayer"), properties); KisNodeSP node; foreach(KisNodeSP node, layers) { devices[0].push_back(node->projection().data()); } QVector<KisParasite::SelectionMode> modes; switch (comboBox2->currentIndex()) { case 0: modes.push_back(KisParasite::Constant); break; case 1: modes.push_back(KisParasite::Random); break; case 2: modes.push_back(KisParasite::Incremental); break; case 3: modes.push_back(KisParasite::Pressure); break; case 4: modes.push_back(KisParasite::Angular); break; default: modes.push_back(KisParasite::Incremental); } m_brush = new KisImagePipeBrush(m_image->objectName(), w, h, devices, modes); m_image->unlock(); }