diff options
Diffstat (limited to 'tqtinterface/qt4/src/widgets/tqwidgetplugin.cpp')
-rw-r--r-- | tqtinterface/qt4/src/widgets/tqwidgetplugin.cpp | 729 |
1 files changed, 0 insertions, 729 deletions
diff --git a/tqtinterface/qt4/src/widgets/tqwidgetplugin.cpp b/tqtinterface/qt4/src/widgets/tqwidgetplugin.cpp deleted file mode 100644 index 57eed86..0000000 --- a/tqtinterface/qt4/src/widgets/tqwidgetplugin.cpp +++ /dev/null @@ -1,729 +0,0 @@ -/**************************************************************************** -** -** Implementation of TQWidgetPlugin class -** -** Created : 010920 -** -** Copyright (C) 2001-2008 Trolltech ASA. All rights reserved. -** -** This file is part of the widgets module of the TQt GUI Toolkit. -** -** This file may be used under the terms of the GNU General -** Public License versions 2.0 or 3.0 as published by the Free -** Software Foundation and appearing in the files LICENSE.GPL2 -** and LICENSE.GPL3 included in the packaging of this file. -** Alternatively you may (at your option) use any later version -** of the GNU General Public License if such license has been -** publicly approved by Trolltech ASA (or its successors, if any) -** and the KDE Free TQt Foundation. -** -** Please review the following information to ensure GNU General -** Public Licensing requirements will be met: -** http://trolltech.com/products/qt/licenses/licensing/opensource/. -** If you are unsure which license is appropriate for your use, please -** review the following information: -** http://trolltech.com/products/qt/licenses/licensing/licensingoverview -** or contact the sales department at sales@trolltech.com. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** Commercial License Agreement provided with the Software. -** -** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, -** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted -** herein. -** -**********************************************************************/ - -#include "tqwidgetplugin.h" - -#ifndef TQT_NO_WIDGETPLUGIN -#include "tqwidgetinterface_p.h" -#include "tqobjectcleanuphandler.h" -#include "tqwidget.h" -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS -#include "tqwidgetlist.h" -#endif - -/*! - \class TQWidgetPlugin tqwidgetplugin.h - \brief The TQWidgetPlugin class provides an abstract base for custom TQWidget plugins. - - \ingroup plugins - - The widget plugin is a simple plugin interface that makes it easy - to create custom widgets that can be included in forms using \link - designer-manual.book TQt Designer\endlink and used by applications. - - Writing a widget plugin is achieved by subclassing this base - class, reimplementing the pure virtual functions keys(), create(), - group(), iconSet(), includeFile(), toolTip(), whatsThis() and - isContainer(), and exporting the class with the \c TQ_EXPORT_PLUGIN - macro. - - See the \link designer-manual.book TQt Designer manual's\endlink, - 'Creating Custom Widgets' section in the 'Creating Custom Widgets' - chapter, for a complete example of a TQWidgetPlugin. - - See also the \link plugins-howto.html Plugins - documentation\endlink and the \l{TQWidgetFactory} class that is - supplied with \link designer-manual.book TQt Designer\endlink. -*/ - -class TQWidgetPluginPrivate : public TQWidgetFactoryInterface, -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - public TQWidgetContainerInterfacePrivate, -#endif - private TQLibraryInterface -{ -public: - TQWidgetPluginPrivate( TQWidgetPlugin *p ) - : plugin( p ) - { - } - - virtual ~TQWidgetPluginPrivate(); - - TQRESULT queryInterface( const TQUuid &iid, TQUnknownInterface **iface ); - TQ_REFCOUNT; - - TQStringList featureList() const; - TQWidget *create( const TQString &key, TQWidget *parent, const char *name ); - TQString group( const TQString &widget ) const; - TQIconSet iconSet( const TQString &widget ) const; - TQString includeFile( const TQString &widget ) const; - TQString toolTip( const TQString &widget ) const; - TQString whatsThis( const TQString &widget ) const; - bool isContainer( const TQString &widget ) const; -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - TQWidget* containerOfWidget( const TQString &key, TQWidget *widget ) const; - bool isPassiveInteractor( const TQString &key, TQWidget *widget ) const; - bool supportsPages( const TQString &key ) const; - TQWidget *addPage( const TQString &key, TQWidget *container, const TQString &name, int index ) const; - void insertPage( const TQString &key, TQWidget *container, - const TQString &name, int index, TQWidget *page ) const; - void Page( const TQString &key, TQWidget *container, - const TQString &name, int index, TQWidget *page ) const; - void removePage( const TQString &key, TQWidget *container, int index ) const; - void movePage( const TQString &key, TQWidget *container, int fromIndex, int toIndex ) const; - int count( const TQString &key, TQWidget *container ) const; - int currentIndex( const TQString &key, TQWidget *container ) const; - TQString pageLabel( const TQString &key, TQWidget *container, int index ) const; - TQWidget *page( const TQString &key, TQWidget *container, int index ) const; - void renamePage( const TQString &key, TQWidget *container, int index, const TQString &newName ) const; - TQWidgetList pages( const TQString &key, TQWidget *container ) const; - TQString createCode( const TQString &key, const TQString &container, - const TQString &page, const TQString &pageName ) const; -#endif // TQT_CONTAINER_CUSTOM_WIDGETS - bool init(); - void cleanup(); - bool canUnload() const; - -private: - TQWidgetPlugin *plugin; - TQObjectCleanupHandler widgets; -}; - -TQRESULT TQWidgetPluginPrivate::queryInterface( const TQUuid &iid, TQUnknownInterface **iface ) -{ - *iface = 0; - - if ( iid == IID_TQUnknown ) - *iface = (TQWidgetFactoryInterface*)this; - else if ( iid == IID_TQFeatureList ) - *iface = (TQFeatureListInterface*)this; - else if ( iid == IID_TQWidgetFactory ) - *iface = (TQWidgetFactoryInterface*)this; - else if ( iid == IID_TQLibrary ) - *iface = (TQLibraryInterface*)this; -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - else if ( iid == IID_TQWidgetContainer ) - *iface = (TQWidgetContainerInterfacePrivate*)this; -#endif - else - return TQE_NOINTERFACE; - - (*iface)->addRef(); - return TQS_OK; -} - -/*! - \fn TQStringList TQWidgetPlugin::keys() const - - Returns the list of widget keys this plugin supports. - - These keys must be the class names of the custom widgets that are - implemented in the plugin. - - \sa create() -*/ - -/*! - \fn TQWidget *TQWidgetPlugin::create( const TQString &, TQWidget *, const char * ) - - Creates and returns a TQWidget object for the widget key \a key. - The widget key is the class name of the required widget. The \a - name and \a parent arguments are passed to the custom widget's - constructor. - - \sa keys() -*/ - -TQWidgetPluginPrivate::~TQWidgetPluginPrivate() -{ - delete plugin; -} - -TQStringList TQWidgetPluginPrivate::featureList() const -{ - return plugin->keys(); -} - -TQWidget *TQWidgetPluginPrivate::create( const TQString &key, TQWidget *parent, const char *name ) -{ - TQWidget *w = plugin->create( key, parent, name ); - widgets.add( TQT_TQOBJECT(w) ); - return w; -} - -TQString TQWidgetPluginPrivate::group( const TQString &widget ) const -{ - return plugin->group( widget ); -} - -TQIconSet TQWidgetPluginPrivate::iconSet( const TQString &widget ) const -{ - return plugin->iconSet( widget ); -} - -TQString TQWidgetPluginPrivate::includeFile( const TQString &widget ) const -{ - return plugin->includeFile( widget ); -} - -TQString TQWidgetPluginPrivate::toolTip( const TQString &widget ) const -{ - return plugin->toolTip( widget ); -} - -TQString TQWidgetPluginPrivate::whatsThis( const TQString &widget ) const -{ - return plugin->whatsThis( widget ); -} - -bool TQWidgetPluginPrivate::isContainer( const TQString &widget ) const -{ - return plugin->isContainer( widget ); -} - -bool TQWidgetPluginPrivate::init() -{ - return TRUE; -} - -void TQWidgetPluginPrivate::cleanup() -{ - widgets.clear(); -} - -bool TQWidgetPluginPrivate::canUnload() const -{ - return widgets.isEmpty(); -} - -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS -TQWidget* TQWidgetPluginPrivate::containerOfWidget( const TQString &key, TQWidget *widget ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->containerOfWidget( key, widget ); - return widget; -} - -int TQWidgetPluginPrivate::count( const TQString &key, TQWidget *container ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->count( key, container ); - return 0; -} - -int TQWidgetPluginPrivate::currentIndex( const TQString &key, TQWidget *container ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->currentIndex( key, container ); - return -1; -} - -TQString TQWidgetPluginPrivate::pageLabel( const TQString &key, TQWidget *container, int index ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->pageLabel( key, container, index ); - return TQString::null; -} - -TQWidget *TQWidgetPluginPrivate::page( const TQString &key, TQWidget *container, int index ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->page( key, container, index ); - return 0; -} - -bool TQWidgetPluginPrivate::isPassiveInteractor( const TQString &key, TQWidget *widget ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->isPassiveInteractor( key, widget ); - return FALSE; -} - -bool TQWidgetPluginPrivate::supportsPages( const TQString &key ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->supportsPages( key ); - return 0; -} - -TQWidget *TQWidgetPluginPrivate::addPage( const TQString &key, TQWidget *container, - const TQString &name, int index ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->addPage( key, container, name, index ); - return 0; -} - -void TQWidgetPluginPrivate::insertPage( const TQString &key, TQWidget *container, - const TQString &name, int index, TQWidget *page ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - p->insertPage( key, container, name, index, page ); -} - -void TQWidgetPluginPrivate::removePage( const TQString &key, TQWidget *container, int index ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - p->removePage( key, container, index ); -} - -void TQWidgetPluginPrivate::movePage( const TQString &key, TQWidget *container, - int fromIndex, int toIndex ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - p->movePage( key, container, fromIndex, toIndex ); -} - -void TQWidgetPluginPrivate::renamePage( const TQString &key, TQWidget *container, - int index, const TQString &newName ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - p->renamePage( key, container, index, newName ); -} - -TQWidgetList TQWidgetPluginPrivate::pages( const TQString &key, TQWidget *container ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->pages( key, container ); - return TQWidgetList(); -} - -TQString TQWidgetPluginPrivate::createCode( const TQString &key, const TQString &container, - const TQString &page, const TQString &pageName ) const -{ - TQWidgetContainerPlugin *p = (TQWidgetContainerPlugin*)plugin->tqqt_cast( "TQWidgetContainerPlugin" ); - if ( p ) - return p->createCode( key, container, page, pageName ); - return TQString::null; -} -#endif // TQT_CONTAINER_CUSTOM_WIDGETS - -/*! - Constructs a widget plugin. This is invoked automatically by the - \c TQ_EXPORT_PLUGIN macro. -*/ -TQWidgetPlugin::TQWidgetPlugin() - : TQGPlugin( (TQWidgetFactoryInterface*)(d = new TQWidgetPluginPrivate( this )) ) -{ -} - -/*! - Destroys the widget plugin. - - You never have to call this explicitly. TQt destroys a plugin - automatically when it is no longer used. -*/ -TQWidgetPlugin::~TQWidgetPlugin() -{ - // don't delete d, as this is deleted by d -} - -/*! - Returns the group (toolbar name) that the custom widget of class - \a key should be part of when \e{TQt Designer} loads it. - - The default implementation returns TQString::null. -*/ -TQString TQWidgetPlugin::group( const TQString & ) const -{ - return TQString::null; -} - -/*! - Returns the iconset that \e{TQt Designer} should use to represent - the custom widget of class \a key in the toolbar. - - The default implementation returns an null iconset. -*/ -TQIconSet TQWidgetPlugin::iconSet( const TQString & ) const -{ - return TQIconSet(); -} - -/*! - Returns the name of the include file that \e{TQt Designer} and \c - uic should use to include the custom widget of class \a key in - generated code. - - The default implementation returns TQString::null. -*/ -TQString TQWidgetPlugin::includeFile( const TQString & ) const -{ - return TQString::null; -} - -/*! - Returns the text of the tooltip that \e{TQt Designer} should use - for the custom widget of class \a key's toolbar button. - - The default implementation returns TQString::null. -*/ -TQString TQWidgetPlugin::toolTip( const TQString & ) const -{ - return TQString::null; -} - -/*! - Returns the text of the whatsThis text that \e{TQt Designer} should - use when the user requests whatsThis help for the custom widget of - class \a key. - - The default implementation returns TQString::null. -*/ -TQString TQWidgetPlugin::whatsThis( const TQString & ) const -{ - return TQString::null; -} - -/*! - Returns TRUE if the custom widget of class \a key can contain - other widgets, e.g. like TQFrame; otherwise returns FALSE. - - The default implementation returns FALSE. -*/ -bool TQWidgetPlugin::isContainer( const TQString & ) const -{ - return FALSE; -} - -#ifdef TQT_CONTAINER_CUSTOM_WIDGETS - -/*! - \class TQWidgetContainerPlugin tqwidgetplugin.h - \brief The TQWidgetContainerPlugin class provides an abstract base - for complex custom container TQWidget plugins. - - \internal - - \ingroup plugins - - The widget container plugin is a subclass of TQWidgetPlugin and - extends the interface with functions necessary for supporting - complex container widgets via plugins. These container widgets are - widgets that have one or multiple sub widgets which act as the - widget's containers. If the widget has multiple container - subwidgets, they are referred to as "pages", and only one can be - active at a time. Examples of complex container widgets include: - TQTabWidget, TQWidgetStack and TQToolBox. - - Writing a complex container widget plugin is achieved by - subclassing this base class. First by reimplementing - TQWidgetPlugin's pure virtual functions keys(), create(), group(), - iconSet(), includeFile(), toolTip(), whatsThis() and - isContainer(), and exporting the class with the \c TQ_EXPORT_PLUGIN - macro. In addition containerOfWidget(), isPassiveInteractor() and - supportsPages() must be reimplemented. If the widget - supportsPages(), count(), currentIndex(), pageLabel(), page(), - pages() and createCode() must be implemented. If the widget - supportsPages() and you want to allow the containers pages to be - modified, you must also reimplement addPage(), insertPage(), - removePage(), movePage() and renamePage(). - - \sa TQWidgetPlugin -*/ - -/*! - Constructs a complex container widget plugin. This is invoked - automatically by the \c TQ_EXPORT_PLUGIN macro. -*/ - -TQWidgetContainerPlugin::TQWidgetContainerPlugin() - : TQWidgetPlugin() -{ -} - -/*! - Destroys the complex container widget plugin. - - You never have to call this explicitly. TQt destroys a plugin - automatically when it is no longer used. -*/ - -TQWidgetContainerPlugin::~TQWidgetContainerPlugin() -{ -} - -/*! - Operates on the plugin's \a key class. - - Returns the current \a container's custom widget. If the custom - widget is a tab widget, this function takes the \a container as - input and returns the widget's current page. - - The default implementation returns \a container. -*/ - -TQWidget* TQWidgetContainerPlugin::containerOfWidget( const TQString &, - TQWidget *container ) const -{ - return container; -} - -/*! - Operates on the plugin's \a key class. - - Returns the \a container custom widget's number of pages. If the - custom widget is a tab widget, this function returns the number of - tabs. - - The default implementation returns 0. -*/ - -int TQWidgetContainerPlugin::count( const TQString &, TQWidget * ) const -{ - return 0; -} - -/*! - Operates on the plugin's \a key class. - - Returns the \a container custom widget's current page index. If - the custom widget is a tab widget, this function returns the - current tab's index. - - The default implementation returns -1. -*/ - -int TQWidgetContainerPlugin::currentIndex( const TQString &, TQWidget * ) const -{ - return -1; -} - -/*! - Operates on the plugin's \a key class. - - Returns the \a container custom widget's label at position \a - index. If the custom widget is a tab widget, this function returns - the current tab's label. - - The default implementation returns a null string. -*/ - -TQString TQWidgetContainerPlugin::pageLabel( const TQString &, TQWidget *, int ) const -{ - return TQString::null; -} - -/*! - Operates on the plugin's \a key class. - - Returns the \a container custom widget's page at position \a - index. If the custom widget is a tab widget, this function returns - the tab at index position \e index. - - - The default implementation returns 0. -*/ - -TQWidget *TQWidgetContainerPlugin::page( const TQString &, TQWidget *, int ) const -{ - return 0; -} - -/*! - Operates on the plugin's \a key class. - - Returns TRUE if the \a container custom widget is a passive - interactor for class \e key; otherwise returns FALSE. The \a - container is a child widget of the actual custom widget. - - Usually, when a custom widget is used in \e{TQt Designer}'s design - mode, no widget receives any mouse or key events, since \e{TQt - Designer} filters and processes them itself. If one or more - widgets of a custom widget still need to receive such events, for - example, because the widget needs to change pages, this function - must return TRUE for the widget. In such cases \e{TQt Designer} - will not filter out key and mouse events destined for the widget. - - If the custom widget is a tab widget, the tab bar is the passive - interactor, since that's what the user will use to change pages. - - The default implementation returns FALSE. -*/ - -bool TQWidgetContainerPlugin::isPassiveInteractor( const TQString &, - TQWidget *container ) const -{ - TQ_UNUSED( container ) - return FALSE; -} - -/*! - Operates on the plugin's \a key class. - - Returns TRUE if the widget supports pages; otherwise returns - FALSE. If the custom widget is a tab widget this function should - return TRUE. - - The default implementation returns FALSE. -*/ - -bool TQWidgetContainerPlugin::supportsPages( const TQString & ) const -{ - return FALSE; -} - -/*! - Operates on the plugin's \a key class. - - This function is called when a new page with the given \a name - should be added to the \a container custom widget at position \a - index. - - The default implementation does nothing. -*/ - -TQWidget* TQWidgetContainerPlugin::addPage( const TQString &, TQWidget *, - const TQString &, int ) const -{ - return 0; -} - -/*! - Operates on the plugin's \a key class. - - This function is called when a new page, \a page, with the given - \a name should be added to the \a container custom widget at - position \a index. - - The default implementation does nothing. -*/ - -void TQWidgetContainerPlugin::insertPage( const TQString &, TQWidget *, - const TQString &, int, TQWidget * ) const -{ -} - -/*! - Operates on the plugin's \a key class. - - This function is called when the page at position \a index should - be removed from the \a container custom widget. - - The default implementation does nothing. -*/ - -void TQWidgetContainerPlugin::removePage( const TQString &, TQWidget *, int ) const -{ -} - -/*! - Operates on the plugin's \a key class. - - This function is called when the page at position \a fromIndex should - be moved to position \a toIndex in the \a container custom widget. - - The default implementation does nothing. -*/ - -void TQWidgetContainerPlugin::movePage( const TQString &, TQWidget *, int, int ) const -{ -} - -/*! - Operates on the plugin's \a key class. - - This function is called when the page at position \a index should - be renamed (have its label changed) to \a newName in the \a - container custom widget. - - The default implementation does nothing. -*/ - -void TQWidgetContainerPlugin::renamePage( const TQString &, TQWidget *, - int, const TQString & ) const -{ -} - -/*! - Operates on the plugin's \a key class. - - This function should return a list of the \a container custom - widget's pages. -*/ - -TQWidgetList TQWidgetContainerPlugin::pages( const TQString &, TQWidget * ) const -{ - return TQWidgetList(); -} - -/*! - Operates on the plugin's \a key class. - - This function is called from \e{TQt Designer}'s User Interface - Compiler \c uic, when generating C++ code for inserting a page in - the \a container custom widget. The name of the page widget which - should be inserted at the end of the container is \a page, and the - label of the page should be \a pageName. - - If the custom widget was a TQTabWidget, the implementation of this - function should return: - - \code - return widget + "->addTab( " + page + ", \"" + pageName + "\" )"; - \endcode - - Warning: If the code returned by this function contains invalid - C++ syntax, the generated \c uic code will not compile. -*/ - -TQString TQWidgetContainerPlugin::createCode( const TQString &, const TQString &, - const TQString &, const TQString & ) const -{ - return TQString::null; -} - -#endif // TQT_CONTAINER_CUSTOM_WIDGETS - -#endif //TQT_NO_WIDGETPLUGIN |