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"