19#ifndef __koffice_filter_chain_h__
20#define __koffice_filter_chain_h__
23#include <tqasciidict.h>
25#include <tqstringlist.h>
28#include <KoQueryTrader.h>
29#include <KoStoreDevice.h>
30#include <koffice_export.h>
54 friend class KOffice::Graph;
58 typedef TDESharedPtr<KoFilterChain> Ptr;
79 TQString chainOutput() const;
90 TQString outputFile();
102 KoStoreDevice* storageFile( const TQString& name = "root", KoStore::Mode mode = KoStore::Read );
129 void appendChainLink( KoFilterEntry::Ptr filterEntry, const TQCString& from, const TQCString& to );
130 void prependChainLink( KoFilterEntry::Ptr filterEntry, const TQCString& from, const TQCString& to );
137 friend void KoEmbeddingFilter::filterChainEnterDirectory( const TQString& directory ) const;
138 void enterDirectory( const TQString& directory );
139 friend void KoEmbeddingFilter::filterChainLeaveDirectory() const;
140 void leaveDirectory();
145 TQString filterManagerImportFile() const;
146 TQString filterManagerExportFile() const;
148 int filterManagerDirection() const;
158 bool createTempFile( KTempFile** tempFile, bool autoDelete = true );
160 void inputFileHelper( KoDocument* document, const TQString& alternativeFile );
161 void outputFileHelper( bool autoDelete );
163 KoStoreDevice* storageHelper( const TQString& file, const TQString& streamName,
165 void storageInit( const TQString& file, KoStore::Mode mode, KoStore** storage );
170 KoDocument* createDocument( const TQString& file );
171 KoDocument* createDocument( const TQCString& mimeType );
182 ChainLink( KoFilterChain* chain, KoFilterEntry::Ptr filterEntry,
183 const TQCString& from, const TQCString& to );
187 TQCString from() const { return m_from; }
188 TQCString to() const { return m_to; }
195 int lruPartIndex() const;
198 ChainLink( const ChainLink& rhs );
199 ChainLink& operator=( const ChainLink& rhs );
201 void setupCommunication( const KoFilter* const parentFilter ) const;
202 void setupConnections( const KoFilter* sender, const TQStrList& sigs,
203 const KoFilter* receiver, const TQStrList& sl0ts ) const;
206 KoFilterEntry::Ptr m_filterEntry;
207 TQCString m_from, m_to;
219 enum Whole { Beginning = 1, Middle = 2, End = 4, Done = 8 };
226 TQPtrList<ChainLink> m_chainLinks;
231 TQString m_inputFile;
232 TQString m_outputFile;
242 KTempFile* m_inputTempFile;
243 KTempFile* m_outputTempFile;
247 enum IOState { Nil, File, Storage, Document };
248 IOState m_inputQueried, m_outputQueried;
255 TQStringList m_internalEmbeddingDirectories;
266 template< class T> class PriorityQueue;
277 Edge( Vertex* vertex, KoFilterEntry::Ptr filterEntry );
280 unsigned int weight() const { return m_filterEntry ? m_filterEntry->weight : 0; }
281 KoFilterEntry::Ptr filterEntry() const { return m_filterEntry; }
282 const Vertex* vertex() const { return m_vertex; }
289 void relax( const Vertex* predecessor, PriorityQueue<Vertex>& queue );
292 void dump( const TQCString& indent ) const;
295 Edge( const Edge& rhs );
296 Edge& operator=( const Edge& rhs );
299 KoFilterEntry::Ptr m_filterEntry;
314 Vertex( const TQCString& mimeType );
317 TQCString mimeType() const { return m_mimeType; }
322 bool setKey( unsigned int key );
323 unsigned int key() const { return m_weight; }
329 void setIndex( int index ) { m_index=index; }
330 int index() const { return m_index; }
334 void setPredecessor( const Vertex* predecessor ) { m_predecessor=predecessor; }
335 const Vertex* predecessor() const { return m_predecessor; }
338 void addEdge( const Edge* edge );
341 const Edge* findEdge( const Vertex* vertex ) const;
345 void relaxVertices( PriorityQueue<Vertex>& queue );
348 void dump( const TQCString& indent ) const;
351 Vertex( const Vertex& rhs );
352 Vertex& operator=( const Vertex& rhs );
354 TQPtrList<Edge> m_edges;
355 const Vertex* m_predecessor;
356 TQCString m_mimeType;
357 unsigned int m_weight;
374 Graph( const TQCString& from );
377 bool isValid() const { return m_graphValid; }
379 TQCString sourceMimeType() const { return m_from; }
380 void setSourceMimeType( const TQCString& from );
387 KoFilterChain::Ptr chain( const KoFilterManager* manager, TQCString& to ) const;
393 Graph( const Graph& rhs );
394 Graph& operator=( const Graph& rhs );
397 void shortestPaths();
398 TQCString findKOfficePart() const;
400 TQAsciiDict<Vertex> m_vertices;
A document that can contain a lot of formulas (container).
The KOffice document class.
This class represents a chain of plain KoFilter instances.
const KoFilterManager * manager() const The filter manager returned may be 0!
The class managing all the filters.
The base class for import and export filters.
ConversionStatus This enum is used to signal the return state of your filter.
This class implements a TQIODevice around KoStore, so that it can be used to create a TQDomDocument f...
Saves and loads KOffice documents using various backends.
Namespace for general KOFFICE functions.
|