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/pmviewfactory.h

146 lines
3.8 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 PMVIEWFACTORY_H
#define PMVIEWFACTORY_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <tqstring.h>
#include <tqptrlist.h>
#include <tqdict.h>
#include <kstaticdeleter.h>
class PMViewBase;
class TQWidget;
class PMPart;
class TQDomElement;
class PMViewOptions;
class PMViewOptionsWidget;
/**
* Factory and description class for one view type
* @see PMViewFactory
*/
class PMViewTypeFactory
{
public:
/**
* Default constructor
*/
PMViewTypeFactory( ) { }
/**
* Destructor
*/
virtual ~PMViewTypeFactory( ) { }
/**
* Returns the id for the view type. Choose an unique name.
*/
virtual TQString viewType( ) const = 0;
/**
* Returns a i18n'ed description for the view type
*/
virtual TQString description( ) const = 0;
/**
* Returns a i18n'ed description for the view type, dependent
* on the options. Calls the method above by default.
*/
virtual TQString description( PMViewOptions* ) const
{
return description( );
}
/**
* Returns the icon name for the view
*/
virtual TQString iconName( ) const = 0;
/**
* Returns a new view instance
*/
virtual PMViewBase* newInstance( TQWidget* parent, PMPart* part ) const = 0;
/**
* Creates a config object for the view type.
* If the view doesn't have special attributes, the function returns 0;
*/
virtual PMViewOptions* newOptionsInstance( ) const { return 0; }
/**
* Creates a widget to configure the custom options
*/
virtual PMViewOptionsWidget* newOptionsWidget( TQWidget*, PMViewOptions* )
{
return 0;
}
};
/**
* Factory class for KPovModeler views.
*
* Plugins can add new view types by adding new
* @ref PMViewTypeFactory objects.
*/
class PMViewFactory
{
public:
/**
* Destructor
*/
~PMViewFactory( );
/**
* Returns the factory instance
*/
static PMViewFactory* theFactory( );
/**
* Adds a new view type
*
* The factory becomes the owner of the object
*/
void addViewType( PMViewTypeFactory* vt );
/**
* Returns a new view of type viewType if available
*/
PMViewBase* newViewInstance( const TQString& viewType,
TQWidget* parent, PMPart* part ) const;
/**
* Returns a new view option instance for the given view type
*/
PMViewOptions* newOptionsInstance( const TQString& viewType ) const;
/**
* Returns the factory for the given view type
*/
PMViewTypeFactory* viewFactory( const TQString& viewType ) const;
/**
* Returns the list of available view types
*/
const TQPtrList<PMViewTypeFactory>& viewTypes( ) const;
private:
/**
* Constructor
*/
PMViewFactory( );
TQPtrList<PMViewTypeFactory> m_viewTypes;
TQDict<PMViewTypeFactory> m_dict;
static PMViewFactory* s_pInstance;
static KStaticDeleter<PMViewFactory> s_staticDeleter;
};
#endif