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.
tdevelop/lib/interfaces/tdevplugincontroller.h

120 lines
4.8 KiB

/* This file is part of the KDE project
Copyright (C) 2004 Alexander Dymo <adymo@kdevelop.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.
*/
#ifndef TDEVPLUGINCONTROLLER_H
#define TDEVPLUGINCONTROLLER_H
#include <tqobject.h>
#include <kurl.h>
#include <ktrader.h>
/**
@file tdevplugincontroller.h
TDevelop plugin controller interface.
*/
class TDevPlugin;
class ProfileEngine;
/**
The base class for TDevelop plugin controller.
Plugin controller is responsible for quering, loading and unloading available plugins.
*/
class TDevPluginController: public TQObject
{
Q_OBJECT
public:
/**
* Returns a uniquely specified plugin. If it isn't already loaded, it will be.
* Use with caution! See extension for parameter details.
*/
virtual TDevPlugin * loadPlugin( const TQString & serviceType, const TQString & constraint ) = 0;
/**
* Unloads the plugin specified by @p plugin
* @param plugin The plugin desktopEntryName of the plugin to unload
*/
virtual void unloadPlugin( const TQString & plugin ) = 0;
/**Unloads plugins specified by @p list.
@param list The list of plugin names to unload. plugin name corresponds
to the "Name" property in plugin .desktop file.*/
virtual void unloadPlugins(TQStringList const &list) = 0;
/**@return The list of currently loaded plugins.*/
virtual const TQValueList<TDevPlugin*> loadedPlugins() = 0;
/**Queries for the plugin which supports given service type.
All already loaded plugins will be queried and the first one to support the service type
will be returned. Any plugin can be an extension, only "ServiceTypes=..." entry is
required in .desktop file for that plugin.
@param serviceType The service type of an extension (like "TDevelop/SourceFormatter")
@param constraint The constraint which is applied when quering for the service. This
constraint is a usual TDETrader constraint statement (like "[X-TDevelop-Foo]=='MyFoo'").
@return A KDevelop extension plugin for given service type or 0 if no plugin supports it*/
virtual TDevPlugin *extension(const TQString &serviceType, const TQString &constraint = "") = 0;
/**Queries KDevelop services. Version is checked automatically
by adding proper X-TDevelop-Version=N statement into the query.
@param serviceType The service type to query, for example "TDevelop/Plugin" or
"TDevelop/SourceFormatter."
@param constraint A constraint for the service. Do not include plugin version number - it
is done automatically.
@return The list of plugin offers.*/
static TDETrader::OfferList query(const TQString &serviceType, const TQString &constraint);
/**Queries TDevelop plugins. Works like
TDevPluginController::query with serviceType set to "TDevelop/Plugin".
@param constraint A constraint for the service. Do not include plugin version number - it
is done automatically.
@return The list of plugin offers.*/
static TDETrader::OfferList queryPlugins(const TQString &constraint);
/**Reimplement this function only if your shell supports plugin profiles.
@return The list of URLs to the profile resources (files) with given @p extension.
@param nameFilter Name filter for files. @see TQDir::setNameFilter documentation
for name filters syntax.*/
virtual KURL::List profileResources(const TQString &nameFilter);
/**Reimplement this function only if your shell supports plugin profiles.
@return The list of URLs to the resources (files) with given @p extension.
This list is obtained by a recursive search that process given profile
and all it's subprofiles.
@param nameFilter Name filter for files. @see TQDir::setNameFilter documentation
for name filters syntax.*/
virtual KURL::List profileResourcesRecursive(const TQString &nameFilter);
/** @return The current Profile Engine */
virtual ProfileEngine &engine() = 0;
signals:
/**Emitted when a plugin profile was changed (reloaded, other profile opened, etc.).
Should work only on shells with plugin profiles support.*/
void profileChanged();
protected:
/**Constructor.*/
TDevPluginController();
};
#endif