22#include <tqtextcodec.h>
26#include <KoFilterChain.h>
27#include <kgenericfactory.h>
32#include <tdetempfile.h>
34#include "generic_filter.h"
36typedef KGenericFactory<GenericFilter, KoFilter> GenericFilterFactory;
37K_EXPORT_COMPONENT_FACTORY( libgenerickofilter, GenericFilterFactory )
40GenericFilter::GenericFilter(KoFilter *, const char *, const TQStringList&) :
44KoFilter::ConversionStatus GenericFilter::convert( const TQCString &from, const TQCString &to )
48 TDETrader::OfferList offers = TDETrader::self()->query( "KOfficeGenericFilter",
49 "(Type == 'Service') and ('KOfficeGenericFilter' in ServiceTypes) and (exist Exec)");
52 return KoFilter::NotImplemented;
54 TDETrader::OfferList::ConstIterator it;
55 for (it=offers.begin(); it!=offers.end(); ++it)
57 kdDebug() << "Got a filter script, exec: " << (*it)->exec() <<
58 ", imports: " << (*it)->property( "X-TDE-Wrapper-Import").toString() <<
59 ", exports: " << (*it)->property( "X-TDE-Wrapper-Export").toString() << endl;
60 if ((*it)->property( "X-TDE-Wrapper-Import").toCString()==from
61 && (*it)->property( "X-TDE-Wrapper-Export").toCString()==to)
71 if( m_to == "application/x-kword" || m_to == "application/x-karbon" ||
72 m_to == "application/x-kspread" || m_to == "application/x-kivio" ||
73 m_to == "application/x-kchart" || m_to == "application/x-kpresenter" )
75 else if ( m_from == "application/x-kword" || m_from == "application/x-karbon" ||
76 m_from == "application/x-kspread" || m_from == "application/x-kivio" ||
77 m_from == "application/x-kchart" || m_from == "application/x-kpresenter" )
80 return KoFilter::NotImplemented;
83KoFilter::ConversionStatus GenericFilter::doImport()
85 KTempFile temp(TQString( "genericfilter-"));
86 temp.setAutoDelete( true);
88 TQFile tempFile(temp.name());
90 m_out = KoStore::createStore(&tempFile, KoStore::Write);
92 if (!m_out || !m_out->open( "root"))
94 kdError() << "Unable to create output store!" << endl;
96 return KoFilter::StorageCreationError;
100 TQString exec = m_exec + " " + TDEProcess::quote(m_chain->inputFile()) + " "
101 + TDEProcess::quote(m_chain->outputFile());
102 system(TQFile::encodeName(exec));
104 kdDebug() << "Executing: " << exec << endl;
106 TQFile outFile(m_chain->outputFile());
107 outFile.open(IO_ReadOnly);
108 TQByteArray outData = outFile.readAll();
109 if (outData.size()==0) {
111 return KoFilter::UnexpectedEOF;
114 m_out->write(outData);
122KoFilter::ConversionStatus GenericFilter::doExport()
124 return KoFilter::NotImplemented;
127#include "generic_filter.moc"
|