summaryrefslogtreecommitdiffstats
path: root/kparts/plugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kparts/plugin.cpp')
-rw-r--r--kparts/plugin.cpp315
1 files changed, 0 insertions, 315 deletions
diff --git a/kparts/plugin.cpp b/kparts/plugin.cpp
deleted file mode 100644
index 0dc729de1..000000000
--- a/kparts/plugin.cpp
+++ /dev/null
@@ -1,315 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 1999 Simon Hausmann <hausmann@kde.org>
- (C) 1999 David Faure <faure@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <config.h>
-#include <kparts/plugin.h>
-#include <kparts/part.h>
-#include <kparts/componentfactory.h>
-
-#include <assert.h>
-
-#include <tqfile.h>
-#include <tqobjectlist.h>
-#include <tqfileinfo.h>
-
-#include <klibloader.h>
-#include <kinstance.h>
-#include <kstandarddirs.h>
-#include <kdebug.h>
-#include <kxmlguifactory.h>
-#include <klocale.h>
-#include <kconfig.h>
-#include <ksimpleconfig.h>
-
-using namespace KParts;
-
-class Plugin::PluginPrivate
-{
-public:
- PluginPrivate() : m_parentInstance( 0 ) {}
-
- const TDEInstance *m_parentInstance;
- TQString m_library; // filename of the library
-};
-
-Plugin::Plugin( TQObject* parent, const char* name )
- : TQObject( parent, name )
-{
- //kdDebug() << className() << endl;
- d = new PluginPrivate();
-}
-
-Plugin::~Plugin()
-{
- delete d;
-}
-
-TQString Plugin::xmlFile() const
-{
- TQString path = KXMLGUIClient::xmlFile();
-
- if ( !d->m_parentInstance || ( path.length() > 0 && path[ 0 ] == '/' ) )
- return path;
-
- TQString absPath = locate( "data", TQString::fromLatin1( d->m_parentInstance->instanceName() ) + '/' + path );
- assert( !absPath.isEmpty() );
- return absPath;
-}
-
-TQString Plugin::localXMLFile() const
-{
- TQString path = KXMLGUIClient::xmlFile();
-
- if ( !d->m_parentInstance || ( path.length() > 0 && path[ 0 ] == '/' ) )
- return path;
-
- TQString absPath = locateLocal( "data", TQString::fromLatin1( d->m_parentInstance->instanceName() ) + '/' + path );
- assert( !absPath.isEmpty() );
- return absPath;
-}
-
-//static
-TQValueList<Plugin::PluginInfo> Plugin::pluginInfos( const TDEInstance * instance )
-{
- if ( !instance )
- kdError(1000) << "No instance ???" << endl;
-
- TQValueList<PluginInfo> plugins;
-
- // KDE4: change * into *.rc and remove test for .desktop from the for loop below.
- const TQStringList pluginDocs = instance->dirs()->findAllResources(
- "data", instance->instanceName()+"/kpartplugins/*", true, false );
-
- TQMap<TQString,TQStringList> sortedPlugins;
-
- TQStringList::ConstIterator pIt = pluginDocs.begin();
- TQStringList::ConstIterator pEnd = pluginDocs.end();
- for (; pIt != pEnd; ++pIt )
- {
- TQFileInfo fInfo( *pIt );
- if ( fInfo.extension() == TQString::fromLatin1( "desktop" ) )
- continue;
-
- TQMap<TQString,TQStringList>::Iterator mapIt = sortedPlugins.find( fInfo.fileName() );
- if ( mapIt == sortedPlugins.end() )
- mapIt = sortedPlugins.insert( fInfo.fileName(), TQStringList() );
-
- mapIt.data().append( *pIt );
- }
-
- TQMap<TQString,TQStringList>::ConstIterator mapIt = sortedPlugins.begin();
- TQMap<TQString,TQStringList>::ConstIterator mapEnd = sortedPlugins.end();
- for (; mapIt != mapEnd; ++mapIt )
- {
- PluginInfo info;
- TQString doc;
- info.m_absXMLFileName = KXMLGUIClient::findMostRecentXMLFile( mapIt.data(), doc );
- if ( info.m_absXMLFileName.isEmpty() )
- continue;
-
- kdDebug( 1000 ) << "found KParts Plugin : " << info.m_absXMLFileName << endl;
- info.m_relXMLFileName = "kpartplugins/";
- info.m_relXMLFileName += mapIt.key();
-
- info.m_document.setContent( doc );
- if ( info.m_document.documentElement().isNull() )
- continue;
-
- plugins.append( info );
- }
-
- return plugins;
-}
-
-void Plugin::loadPlugins( TQObject *parent, const TDEInstance *instance )
-{
- loadPlugins( parent, pluginInfos( instance ), instance );
-}
-
-void Plugin::loadPlugins( TQObject *parent, const TQValueList<PluginInfo> &pluginInfos, const TDEInstance *instance )
-{
- TQValueList<PluginInfo>::ConstIterator pIt = pluginInfos.begin();
- TQValueList<PluginInfo>::ConstIterator pEnd = pluginInfos.end();
- for (; pIt != pEnd; ++pIt )
- {
- TQString library = (*pIt).m_document.documentElement().attribute( "library" );
-
- if ( library.isEmpty() || hasPlugin( parent, library ) )
- continue;
-
- Plugin *plugin = loadPlugin( parent, TQFile::encodeName(library) );
-
- if ( plugin )
- {
- plugin->d->m_parentInstance = instance;
- plugin->setXMLFile( (*pIt).m_relXMLFileName, false, false );
- plugin->setDOMDocument( (*pIt).m_document );
-
- }
- }
-
-}
-
-void Plugin::loadPlugins( TQObject *parent, const TQValueList<PluginInfo> &pluginInfos )
-{
- loadPlugins(parent, pluginInfos, 0);
-}
-
-// static
-Plugin* Plugin::loadPlugin( TQObject * parent, const char* libname )
-{
- Plugin* plugin = ComponentFactory::createInstanceFromLibrary<Plugin>( libname, parent, libname );
- if ( !plugin )
- return 0L;
- plugin->d->m_library = libname;
- return plugin;
-}
-
-TQPtrList<KParts::Plugin> Plugin::pluginObjects( TQObject *parent )
-{
- TQPtrList<KParts::Plugin> objects;
-
- if (!parent )
- return objects;
-
- TQObjectList *plugins = parent->queryList( "KParts::Plugin", 0, false, false );
-
- TQObjectListIt it( *plugins );
- for ( ; it.current() ; ++it )
- {
- objects.append( static_cast<Plugin *>( it.current() ) );
- }
-
- delete plugins;
-
- return objects;
-}
-
-bool Plugin::hasPlugin( TQObject* parent, const TQString& library )
-{
- TQObjectList *plugins = parent->queryList( "KParts::Plugin", 0, false, false );
- TQObjectListIt it( *plugins );
- for ( ; it.current() ; ++it )
- {
- if ( static_cast<Plugin *>( it.current() )->d->m_library == library )
- {
- delete plugins;
- return true;
- }
- }
- delete plugins;
- return false;
-}
-
-void Plugin::setInstance( TDEInstance *instance )
-{
- TDEGlobal::locale()->insertCatalogue( instance->instanceName() );
- KXMLGUIClient::setInstance( instance );
-}
-
-void Plugin::loadPlugins( TQObject *parent, KXMLGUIClient* parentGUIClient, TDEInstance* instance, bool enableNewPluginsByDefault )
-{
- TDEConfigGroup cfgGroup( instance->config(), "KParts Plugins" );
- TQValueList<PluginInfo> plugins = pluginInfos( instance );
- TQValueList<PluginInfo>::ConstIterator pIt = plugins.begin();
- TQValueList<PluginInfo>::ConstIterator pEnd = plugins.end();
- for (; pIt != pEnd; ++pIt )
- {
- TQDomElement docElem = (*pIt).m_document.documentElement();
- TQString library = docElem.attribute( "library" );
-
- if ( library.isEmpty() )
- continue;
-
- // Check configuration
- const TQString name = docElem.attribute( "name" );
-
- bool pluginEnabled = enableNewPluginsByDefault;
- if ( cfgGroup.hasKey( name + "Enabled" ) )
- {
- pluginEnabled = cfgGroup.readBoolEntry( name + "Enabled" );
- }
- else
- { // no user-setting, load plugin default setting
- TQString relPath = TQString( instance->instanceName() ) + "/" + (*pIt).m_relXMLFileName;
- relPath.truncate( relPath.findRev( '.' ) ); // remove extension
- relPath += ".desktop";
- //kdDebug(1000) << "looking for " << relPath << endl;
- const TQString desktopfile = instance->dirs()->findResource( "data", relPath );
- if( !desktopfile.isEmpty() )
- {
- //kdDebug(1000) << "loadPlugins found desktop file for " << name << ": " << desktopfile << endl;
- KSimpleConfig desktop( desktopfile, true );
- desktop.setDesktopGroup();
- pluginEnabled = desktop.readBoolEntry(
- "X-TDE-PluginInfo-EnabledByDefault", enableNewPluginsByDefault );
- }
- else
- {
- //kdDebug(1000) << "loadPlugins no desktop file found in " << relPath << endl;
- }
- }
-
- // search through already present plugins
- TQObjectList *pluginList = parent->queryList( "KParts::Plugin", 0, false, false );
- TQObjectListIt it( *pluginList );
- bool pluginFound = false;
- for ( ; it.current() ; ++it )
- {
- Plugin * plugin = static_cast<Plugin *>( it.current() );
- if( plugin->d->m_library == library )
- {
- // delete and unload disabled plugins
- if( !pluginEnabled )
- {
- kdDebug( 1000 ) << "remove plugin " << name << endl;
- KXMLGUIFactory * factory = plugin->factory();
- if( factory )
- factory->removeClient( plugin );
- delete plugin;
- }
-
- pluginFound = true;
- break;
- }
- }
- delete pluginList;
-
- // if the plugin is already loaded or if it's disabled in the
- // configuration do nothing
- if( pluginFound || !pluginEnabled )
- continue;
-
- kdDebug( 1000 ) << "load plugin " << name << endl;
- Plugin *plugin = loadPlugin( parent, TQFile::encodeName(library) );
-
- if ( plugin )
- {
- plugin->d->m_parentInstance = instance;
- plugin->setXMLFile( (*pIt).m_relXMLFileName, false, false );
- plugin->setDOMDocument( (*pIt).m_document );
- parentGUIClient->insertChildClient( plugin );
- }
- }
-}
-
-// vim:sw=4:et:sts=4
-
-#include "plugin.moc"