void RdfTest::testCreateMarkers() { QObject parent; // the rdf storage. In calligra, it's part of the KoDocument. KoDocumentRdf rdfDoc; // create a document QTextDocument doc; KoTextRangeManager rangeManager(&parent); KoTextDocument textDoc(&doc); textDoc.setTextRangeManager(&rangeManager); KoTextEditor editor(&doc); textDoc.setTextEditor(&editor); // insert some lorem ipsum editor.insertText(lorem); // insert a table and set a bookmark on it with semantics QString newId = insertTableWithSemItem(editor, rdfDoc, "test item1"); // insert some more lorem before the table editor.insertText(lorem); // verify that the bookmark marks the table and only that QPair<int,int> position = rdfDoc.findExtent(newId); QCOMPARE(position.first, 2*(lorem.length()+1)); QCOMPARE(position.second, 2*(lorem.length()+1)+TABLESIZE-1); editor.setPosition(position.first + 1); QPair<int,int> position2 = rdfDoc.findExtent(&editor); qDebug()<<position<<position2; QCOMPARE(position, position2); // check that the id is like we expext QCOMPARE(rdfDoc.findXmlId(&editor), newId); }
void RdfTest::testFindMarkers() { QObject parent; // the rdf storage. In calligra, it's part of the KoDocument. KoDocumentRdf rdfDoc; // create a document QTextDocument doc; KoTextRangeManager rangeManager(&parent); KoTextDocument textDoc(&doc); textDoc.setTextRangeManager(&rangeManager); KoTextEditor editor(&doc); textDoc.setTextEditor(&editor); // insert some lorem ipsum editor.insertText(lorem); // insert a table and set a bookmark on it QStringList idList; QString newId = insertTableWithSemItem(editor, rdfDoc, "test item1"); idList << newId; editor.setPosition(0); // now use soprano to find the tables QList<hTestSemanticItem> semItems = TestSemanticItem::allObjects(&rdfDoc); Q_ASSERT(semItems.length() == 1); foreach(hTestSemanticItem semItem, semItems) { QStringList xmlidlist = semItem->xmlIdList(); Q_ASSERT(xmlidlist.length() == 1); foreach(const QString xmlid, xmlidlist) { Q_ASSERT(idList.contains(xmlid)); QPair<int, int> position = rdfDoc.findExtent(xmlid); QCOMPARE(position.first, lorem.length() + 1); QCOMPARE(position.second, lorem.length() + 1 + TABLESIZE - 1); editor.setPosition(position.first + 2); const QTextTable *table = editor.currentTable(); QVERIFY(table); Q_UNUSED(table); }
void KoRdfSemanticItemViewSite::select(KoCanvasBase *host) { Q_ASSERT(d->m_semItem); Q_ASSERT(d->m_semItem->documentRdf()); Q_ASSERT(host); KoTextEditor *editor = KoDocumentRdf::ensureTextTool(host); KoResourceManager *provider = host->resourceManager(); KoDocumentRdf *rdf = d->m_semItem->documentRdf(); QPair<int, int> p = p = rdf->findExtent(d->m_xmlid); int startpos = p.first; int endpos = p.second + 1; if (!endpos) { kDebug(30015) << "No end point found for semantic item:" << d->m_semItem->name(); kDebug(30015) << "xmlid:" << d->m_xmlid; return; } kDebug(30015) << "xmlid:" << d->m_xmlid; kDebug(30015) << "start:" << startpos << " endpos:" << endpos; selectRange(provider, startpos, endpos); kDebug(30015) << "selected text:" << editor->selectedText(); }