void KisPaintDeviceTest::testStore() { const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8(); KisPaintDeviceSP dev = new KisPaintDevice(cs); KoStore * readStore = KoStore::createStore(QString(FILES_DATA_DIR) + QDir::separator() + "store_test.kra", KoStore::Read); readStore->open("built image/layers/layer0"); QVERIFY(dev->read(readStore->device())); readStore->close(); delete readStore; QVERIFY(dev->exactBounds() == QRect(0, 0, 100, 100)); KoStore * writeStore = KoStore::createStore(QString(FILES_OUTPUT_DIR) + QDir::separator() + "store_test_out.kra", KoStore::Write); KisFakePaintDeviceWriter fakeWriter(writeStore); writeStore->open("built image/layers/layer0"); QVERIFY(dev->write(fakeWriter)); writeStore->close(); delete writeStore; KisPaintDeviceSP dev2 = new KisPaintDevice(cs); readStore = KoStore::createStore(QString(FILES_OUTPUT_DIR) + QDir::separator() + "store_test_out.kra", KoStore::Read); readStore->open("built image/layers/layer0"); QVERIFY(dev2->read(readStore->device())); readStore->close(); delete readStore; QVERIFY(dev2->exactBounds() == QRect(0, 0, 100, 100)); QPoint pt; if (!TestUtil::comparePaintDevices(pt, dev, dev2)) { QFAIL(QString("Loading a saved image is not pixel perfect, first different pixel: %1,%2 ").arg(pt.x()).arg(pt.y()).toLatin1()); } }
QObject *KoScriptingOdfStore::open(const QString &fileName) { delete m_reader; m_reader = 0; KoStore *store = getReadStore(); if (! store) return 0; if (store->isOpen()) store->close(); if (! store->open(fileName)) { kWarning(32010) <<"KoScriptingOdfStore::openFile() Failed to open file:"<<fileName; return 0; } //kDebug(32010) <<"KoScriptingOdfStore::openFile() fileName="<<fileName<<" store->isOpen="<<store->isOpen()<<endl; Q_ASSERT(store->device()); //KoOasisStore oasisStore(store); KoXmlDocument doc; QString errorMsg; int errorLine, errorColumn; if (! doc.setContent(store->device(), &errorMsg, &errorLine, &errorColumn)) { kWarning(32010) << "Parse-Error message" << errorMsg << "line" << errorLine << "col" << errorColumn; return 0; } const QString tagName = doc.documentElement().tagName(); kDebug(32010) <<"KoScriptingOdfStore::open documentElement.tagName="<<tagName; if (tagName == "office:document-content") m_reader = new KoScriptingOdfContentReader(this, doc); if (tagName == "office:document-styles") m_reader = new KoScriptingOdfStylesReader(this, doc); else if (tagName == "manifest:manifest") m_reader = new KoScriptingOdfManifestReader(this, doc); else m_reader = new KoScriptingOdfReader(this, doc); return m_reader; }
void KugarPart::slotPreferredTemplate( const QString &tpl ) { KURL url( tpl ); QString localtpl; bool isTemp = false; if ( !url.isValid() ) { /* kdDebug() << "mailformed url" << endl;*/ if ( tpl.find( '/' ) >= 0 ) { if ( tpl.startsWith( "." ) ) { KURL tmpURL( m_docURL ); tmpURL.setFileName( "" ); tmpURL.addPath( tpl ); if ( KIO::NetAccess::download( tmpURL, localtpl ) ) isTemp = true; else KMessageBox::sorry( 0, i18n( "Unable to download template file: %1" ).arg( url.prettyURL() ) ); } else localtpl = tpl; } else { QString former_localtpl = localtpl; localtpl = kapp -> dirs() -> findResource( "data", "kugar/templates/" + tpl ); if ( localtpl.isEmpty() ) { KURL tmpURL( m_docURL ); tmpURL.setFileName( "" ); tmpURL.addPath( tpl ); if ( KIO::NetAccess::download( tmpURL, localtpl ) ) isTemp = true; else KMessageBox::sorry( 0, i18n( "Unable to download template file: %1" ).arg( url.prettyURL() ) ); } } } else { if ( KIO::NetAccess::download( url, localtpl ) ) isTemp = true; else KMessageBox::sorry( 0, i18n( "Unable to download template file: %1" ).arg( url.prettyURL() ) ); } /* kdDebug() << "localtpl: " << localtpl.latin1() << endl;*/ if ( !localtpl.isEmpty() ) { QFile f( localtpl ); if ( f.open( IO_ReadOnly ) ) { /* kdDebug() << "localtpl opened" << endl;*/ // Try to find out whether it is a mime multi part file char buf[ 5 ]; if ( f.readBlock( buf, 4 ) == 4 ) { bool isRawXML = ( strncasecmp( buf, "<?xm", 4 ) == 0 ); f.close(); if ( isRawXML ) { /* kdDebug() << "RawXML" << endl;*/ f.open( IO_ReadOnly ); if ( !m_reportEngine -> setReportTemplate( &f ) ) KMessageBox::sorry( 0, i18n( "Invalid template file: %1" ).arg( localtpl ) ); else { m_templateOk = true; /* kdDebug() << "Setting m_templateOk" << endl;*/ } f.close(); } else { KoStore *tmpStore = KoStore::createStore( localtpl, KoStore::Read ); if ( tmpStore->open( "maindoc.xml" ) ) { if ( !m_reportEngine -> setReportTemplate( tmpStore->device() ) ) KMessageBox::sorry( 0, i18n( "%1 is not a valid Kugar Designer template file." ).arg( localtpl ) ); else m_templateOk = true; tmpStore->close(); } else KMessageBox::sorry( 0, i18n( "%1 is not a valid Kugar Designer template file." ).arg( localtpl ) ); delete tmpStore; } } else { f.close(); KMessageBox::sorry( 0, i18n( "Couldn't read the beginning of the template file: %1" ).arg( localtpl ) ); } } else KMessageBox::sorry( 0, i18n( "Unable to open template file: %1" ).arg( localtpl ) ); if ( isTemp ) KIO::NetAccess::removeTempFile( localtpl ); } }
bool OdfReader::readContent(OdfReaderBackend *backend, OdfReaderContext *context) { debugOdfReader << "entering"; m_backend = backend; m_context = context; if (m_textReader) { m_textReader->setContext(context); } // ---------------------------------------------------------------- // Read the body from content.xml KoStore *odfStore = m_context->odfStore(); if (!odfStore->open("content.xml")) { errorOdfReader << "Unable to open input file content.xml" << endl; return false; } debugOdfReader << "open content.xml ok"; KoXmlStreamReader reader; prepareForOdfInternal(reader); reader.setDevice(odfStore->device()); bool foundContent = false; while (!reader.atEnd()) { reader.readNext(); if (reader.isStartElement() && reader.qualifiedName() == "office:document-content") { foundContent = true; break; } } if (!foundContent) { errorOdfReader << "Couldn't find the content in content.xml" << endl; } m_backend->elementOfficeDocumentcontent(reader, m_context); // <office:document-content> has the following children in ODF 1.2: // <office:automatic-styles> 3.15.3 // [done] <office:body> 3.3 // <office:font-face-decls> 3.14 // <office:scripts> 3.12. while (reader.readNextStartElement()) { QString tagName = reader.qualifiedName().toString(); if (tagName == "office:automatic-styles") { // We already have the styles in the context. No need to read them again. reader.skipCurrentElement(); } else if (tagName == "office:body") { // This is the big one. readElementOfficeBody(reader); } else if (tagName == "office:font-face-decls") { // FIXME: Not yet implemented reader.skipCurrentElement(); } else if (tagName == "office:scripts") { // FIXME: Not yet implemented reader.skipCurrentElement(); } else { reader.skipCurrentElement(); } } m_backend->elementOfficeDocumentcontent(reader, m_context); odfStore->close(); return true; }