You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdegraphics/kpovmodeler/pmiomanager.h

185 lines
4.4 KiB

/*
**************************************************************************
description
--------------------
copyright : (C) 2003 by Andreas Zehender
email : zehender@kde.org
**************************************************************************
**************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
**************************************************************************/
#ifndef PMIOMANAGER
#define PMIOMANAGER
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <tqstring.h>
#include <tqstringlist.h>
#include <tqptrlist.h>
#include <tqdict.h>
class PMParser;
class PMSerializer;
class PMRenderer;
class PMPart;
class TQIODevice;
/**
* Description class for input and output formats.
*
* A format may provide the following services:
*
* Import: The class can provide a parser to load and import data
*
* Export: The class can provide a output device to export and save data
*
* Renderer: A renderer exists to render the exported data
*
* The class @ref PMIOManager stores a list of instances
* of this class
*/
class PMIOFormat
{
public:
/**
* Format type enum
*/
enum Services { Import = 1, Export = 2, Renderer = 4,
AllServices = Import | Export | Renderer };
/**
* Default constructor
*/
PMIOFormat( );
/**
* Destructor
*/
virtual ~PMIOFormat( );
/**
* Returns an unique name of this format.
*/
virtual TQString name( ) const = 0;
/**
* Returns a translated description of this format
*/
virtual TQString description( ) const = 0;
/**
* Returns the supported services
* (a bitwise combination of the Services enum values)
*/
virtual int services( ) const = 0;
/**
* Returns a parser to parse the io device.
*
* The caller is responsible to delete the returned parser.
*/
virtual PMParser* newParser( PMPart*, TQIODevice* ) const
{
return 0;
};
/**
* Returns a parser to parse the byte array.
*
* The caller is responsible to delete the returned parser.
*/
virtual PMParser* newParser( PMPart*, const TQByteArray& ) const
{
return 0;
};
/**
* Returns an output device to export objects or the complete
* scene to the given io device.
*
* The caller is responsible to delete the returned device
*/
virtual PMSerializer* newSerializer( TQIODevice* )
{
return 0;
}
/**
* Returns a new renderer
*/
virtual PMRenderer* newRenderer( PMPart* ) const
{
return 0;
}
/**
* Returns the mime type for this format
*/
virtual TQString mimeType( ) const
{
return TQString::null;
}
/**
* Returns a list of patterns for the import file dialog
*/
virtual TQStringList importPatterns( ) const
{
return TQStringList( );
}
/**
* Returns a list of patterns for the export file dialog
*/
virtual TQStringList exportPatterns( ) const
{
return TQStringList( );
}
};
/**
* Manager class that handles all available input and output formats
* as well as renderers for one part
*/
class PMIOManager
{
public:
/**
* Creates an io manager for the part
*/
PMIOManager( PMPart* part );
/**
* Deletes the io manager
*/
~PMIOManager( );
/**
* Adds a new format
*/
void addFormat( PMIOFormat* format );
/**
* Removes a format by name
*/
void removeFormat( const TQString& name );
/**
* Returns the list of registered io formats
*/
const TQPtrList<PMIOFormat>& formats( ) const { return m_formats; }
/**
* Returns a view type by name
*/
PMIOFormat* format( const TQString& name ) const;
/**
* Returns the first io format that can handle the mime type
* or 0 if there is none
*/
PMIOFormat* formatForMimeType( const TQString& mime ) const;
private:
TQPtrList<PMIOFormat> m_formats;
TQDict<PMIOFormat> m_dict;
PMPart* m_pPart;
};
#endif