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.
146 lines
3.8 KiB
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
|