diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch) | |
tree | acaf47eb0fa12142d3896416a69e74cbf5a72242 /lib/interfaces/extensions | |
download | tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/interfaces/extensions')
26 files changed, 1595 insertions, 0 deletions
diff --git a/lib/interfaces/extensions/Mainpage.dox b/lib/interfaces/extensions/Mainpage.dox new file mode 100644 index 00000000..d306a1e8 --- /dev/null +++ b/lib/interfaces/extensions/Mainpage.dox @@ -0,0 +1,61 @@ +/** +@mainpage The KDevelop Extension Interfaces Library + +This library contains extension interfaces used by KDevelop plugin architecture. + +<b>Link with</b>: -lkdevelop + +<b>Include path</b>: -I\$(kde_includes)/kdevelop/interfaces/extensions + +\section whatisextension What is the KDevelop extension + +Extension is a KDevelop plugin which implements one of extension interfaces. +Extension is usually not important enough to be returned by @ref KDevApi and @ref KDevPlugin +methods. Therefore extension instance can be obtained by @ref KDevPlugin::extension method. + +Note: extension plugins can be either core, global and project plugins. They are loaded +in the same way other plugins are. But extensions differ from usual plugins. + +Note: many plugins implementing extension interface can be created but only one of +those should be loaded at a time. This can be accomplished by: +- using a shell plugin profile (as done in current generic shell implementation) - define + different X-KDevelop-Properties for different extension implementations; +- writing project manager which looks into the project file and loads the neccesary extension. + +\section creatingextension Creating and using an extension +- Define a service, use following .desktop file: + @code + [Desktop Entry] + Encoding=UTF-8 + Type=ServiceType + X-KDE-ServiceType=KDevelop/MyExtension + X-KDE-Derived=KDevelop/Plugin + Name=My Extension Interface + [PropertyDef::X-KDevelop-Version] + Type=int + @endcode +- Define an abstract base class for an extension like: + @code + class KDevMyExtension: public KDevPlugin { + public: + KDevMyExtension(const KDevPluginInfo *info, QObject* parent, const char* name) + :KDevPlugin(info, parent, name) {} + + virtual void doSomething() = 0; + }; + @endcode +- Create an usual plugin, but instead of setting service type to "KDevelop/Plugin", set: + @code + ServiceTypes=KDevelop/MyExtension + @endcode +- Use your extension: + @code + KDevMyExtension *myext = extension<KDevMyExtension>("KDevelop/MyExtension"); + if (sf) { + // do something + } else { + // fail + } + @endcode +*/ + diff --git a/lib/interfaces/extensions/Makefile.am b/lib/interfaces/extensions/Makefile.am new file mode 100644 index 00000000..4bc069cb --- /dev/null +++ b/lib/interfaces/extensions/Makefile.am @@ -0,0 +1,23 @@ +kdevelopincludeextdir = $(includedir)/kdevelop/interfaces/extensions +kdevelopincludeext_HEADERS = codebrowserfrontend.h kdevappfrontend.h \ + kdevcreatefile.h kdevdifffrontend.h kdevmakefrontend.h kdevquickopen.h \ + kdevsourceformatter.h kdevversioncontrol.h + +servicetypedir = $(kde_servicetypesdir) +servicetype_DATA = kdevelopappfrontend.desktop \ + kdevelopcodebrowserfrontend.desktop kdevelopcreatefile.desktop kdevelopdifffrontend.desktop \ + kdevelopmakefrontend.desktop kdevelopquickopen.desktop kdevelopsourceformatter.desktop \ + kdevelopversioncontrol.desktop + +SUBDIRS = dcop +libkdevextensions_la_LDFLAGS = $(all_libraries) +noinst_LTLIBRARIES = libkdevextensions.la +libkdevextensions_la_SOURCES = kdevappfrontend.cpp kdevmakefrontend.cpp +INCLUDES = -I$(top_srcdir)/lib/interfaces $(all_includes) +METASOURCES = AUTO + +DOXYGEN_REFERENCES = dcop interfaces kdecore kdefx kdeui khtml kmdi kio kjs kparts kutils kdevinterfaces +DOXYGEN_PROJECTNAME = KDevelop Extension Interfaces Library +DOXYGEN_DOCDIRPREFIX = kdev +include ../../../Doxyfile.am +noinst_HEADERS = codebrowserfrontend.h diff --git a/lib/interfaces/extensions/codebrowserfrontend.h b/lib/interfaces/extensions/codebrowserfrontend.h new file mode 100644 index 00000000..57852ac8 --- /dev/null +++ b/lib/interfaces/extensions/codebrowserfrontend.h @@ -0,0 +1,40 @@ +/* This file is part of the KDE project + Copyright (C) 2006 David Nolden <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef CODEBROWSERRONTEND_H +#define CODEBROWSERRONTEND_H + + +#include <kdevplugin.h> +#include <codemodel.h> + +namespace Extensions { + +class KDevCodeBrowserFrontend : public KDevPlugin { + Q_OBJECT + + public: + KDevCodeBrowserFrontend(const KDevPluginInfo *info, QObject *parent=0, const char *name=0 ) + :KDevPlugin(info, parent, name ? name : "CodeBrowserFrontend") {} + + ///Used by the quickopen-plugin to notify extensions that it jumped to a searched item + virtual bool jumpedToItem( ItemDom item ) = 0; +}; +} + +#endif diff --git a/lib/interfaces/extensions/dcop/KDevAppFrontendIface.cpp b/lib/interfaces/extensions/dcop/KDevAppFrontendIface.cpp new file mode 100644 index 00000000..8bf5b7ce --- /dev/null +++ b/lib/interfaces/extensions/dcop/KDevAppFrontendIface.cpp @@ -0,0 +1,76 @@ + + +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2002 Roberto Raggi <[email protected]> + Copyright (C) 2002 Bernd Gehrmann <[email protected]> + Copyright (C) 2003 Amilcar do Carmo Lucas <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#include "KDevAppFrontendIface.h" +#include "kdevappfrontend.h" + + +KDevAppFrontendIface::KDevAppFrontendIface(KDevAppFrontend *appFrontend) + : DCOPObject("KDevAppFrontend"), m_appFrontend(appFrontend) +{ +} + + +KDevAppFrontendIface::~KDevAppFrontendIface() +{} + + +void KDevAppFrontendIface::startAppCommand(const QString &directory, const QString &command, bool inTerminal) +{ + m_appFrontend->startAppCommand(directory, command, inTerminal); +} + +void KDevAppFrontendIface::stopApplication( ) +{ + m_appFrontend->stopApplication(); +} + +bool KDevAppFrontendIface::isRunning( ) +{ + return m_appFrontend->isRunning(); +} + +void KDevAppFrontendIface::clearView( ) +{ + m_appFrontend->clearView(); +} + +void KDevAppFrontendIface::insertStderrLine( const QCString & line ) +{ + m_appFrontend->insertStderrLine(line); +} + +void KDevAppFrontendIface::insertStdoutLine( const QCString & line ) +{ + m_appFrontend->insertStdoutLine(line); +} + +void KDevAppFrontendIface::addPartialStderrLine( const QCString& line ) +{ + m_appFrontend->addPartialStderrLine(line); +} + +void KDevAppFrontendIface::addPartialStdoutLine( const QCString& line ) +{ + m_appFrontend->addPartialStdoutLine(line); +} diff --git a/lib/interfaces/extensions/dcop/KDevAppFrontendIface.h b/lib/interfaces/extensions/dcop/KDevAppFrontendIface.h new file mode 100644 index 00000000..e54e25b0 --- /dev/null +++ b/lib/interfaces/extensions/dcop/KDevAppFrontendIface.h @@ -0,0 +1,52 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2002 Roberto Raggi <[email protected]> + Copyright (C) 2002 Bernd Gehrmann <[email protected]> + Copyright (C) 2003 Amilcar do Carmo Lucas <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef _KDEVAPPFRONTENDIFACE_H_ +#define _KDEVAPPFRONTENDIFACE_H_ + +#include <dcopobject.h> + +class KDevAppFrontend; + +class KDevAppFrontendIface : public DCOPObject +{ + K_DCOP + +public: + + KDevAppFrontendIface( KDevAppFrontend *appFrontend ); + ~KDevAppFrontendIface(); + +k_dcop: + void startAppCommand(const QString &directory, const QString &command, bool inTerminal); + void stopApplication(); + bool isRunning(); + void clearView(); + void insertStderrLine(const QCString &line); + void insertStdoutLine(const QCString &line); + void addPartialStderrLine(const QCString &line); + void addPartialStdoutLine(const QCString &line); + +private: + KDevAppFrontend *m_appFrontend; +}; + +#endif diff --git a/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.cpp b/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.cpp new file mode 100644 index 00000000..2050a970 --- /dev/null +++ b/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.cpp @@ -0,0 +1,46 @@ + + +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2001 Bernd Gehrmann <[email protected]> + Copyright (C) 2002 Roberto Raggi <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#include "KDevMakeFrontendIface.h" +#include "kdevmakefrontend.h" + + +KDevMakeFrontendIface::KDevMakeFrontendIface(KDevMakeFrontend *makeFrontend) + : DCOPObject("KDevMakeFrontend") +{ + m_makeFrontend = makeFrontend; +} + + +KDevMakeFrontendIface::~KDevMakeFrontendIface() +{} + + +void KDevMakeFrontendIface::queueCommand(const QString &dir, const QString &command) +{ + m_makeFrontend->queueCommand(dir, command); +} + +bool KDevMakeFrontendIface::isRunning( ) +{ + return m_makeFrontend->isRunning(); +} diff --git a/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.h b/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.h new file mode 100644 index 00000000..89ecdf5e --- /dev/null +++ b/lib/interfaces/extensions/dcop/KDevMakeFrontendIface.h @@ -0,0 +1,45 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2001 Bernd Gehrmann <[email protected]> + Copyright (C) 2002 Roberto Raggi <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef _KDEVMAKEFRONTENDIFACE_H_ +#define _KDEVMAKEFRONTENDIFACE_H_ + +#include <dcopobject.h> + +class KDevMakeFrontend; + +class KDevMakeFrontendIface : public DCOPObject +{ + K_DCOP + +public: + + KDevMakeFrontendIface( KDevMakeFrontend *makeFrontend ); + ~KDevMakeFrontendIface(); + +k_dcop: + void queueCommand(const QString &dir, const QString &command); + bool isRunning(); + +private: + KDevMakeFrontend *m_makeFrontend; +}; + +#endif diff --git a/lib/interfaces/extensions/dcop/Makefile.am b/lib/interfaces/extensions/dcop/Makefile.am new file mode 100644 index 00000000..0b904eeb --- /dev/null +++ b/lib/interfaces/extensions/dcop/Makefile.am @@ -0,0 +1,10 @@ +INCLUDES = -I$(top_srcdir)/lib/interfaces -I$(top_srcdir)/lib/interfaces/extensions $(all_includes) +METASOURCES = AUTO + +noinst_LTLIBRARIES = libkdevdcopextensions.la +libkdevdcopextensions_la_LDFLAGS = $(all_libraries) +libkdevdcopextensions_la_SOURCES = KDevAppFrontendIface.cpp \ + KDevMakeFrontendIface.cpp KDevAppFrontendIface.skel KDevMakeFrontendIface.skel + +dcopincludeextdir = $(includedir)/kdevelop/interfaces/extensions/dcop +dcopincludeext_HEADERS = KDevAppFrontendIface.h KDevMakeFrontendIface.h diff --git a/lib/interfaces/extensions/kdevappfrontend.cpp b/lib/interfaces/extensions/kdevappfrontend.cpp new file mode 100644 index 00000000..3d918fe2 --- /dev/null +++ b/lib/interfaces/extensions/kdevappfrontend.cpp @@ -0,0 +1,2 @@ +#include "kdevappfrontend.h" +#include "kdevappfrontend.moc" diff --git a/lib/interfaces/extensions/kdevappfrontend.h b/lib/interfaces/extensions/kdevappfrontend.h new file mode 100644 index 00000000..65424ed9 --- /dev/null +++ b/lib/interfaces/extensions/kdevappfrontend.h @@ -0,0 +1,115 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2001-2002 Bernd Gehrmann <[email protected]> + Copyright (C) 2002-2003 Roberto Raggi <[email protected]> + Copyright (C) 2002 Simon Hausmann <[email protected]> + Copyright (C) 2002 John Firebaugh <[email protected]> + Copyright (C) 2003 Amilcar do Carmo Lucas <[email protected]> + Copyright (C) 2003 Hamish Rodda <[email protected]> + Copyright (C) 2003 Jens Dagerbo <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVAPPFRONTEND_H +#define KDEVAPPFRONTEND_H + +#include <qstringlist.h> +#include <kdevplugin.h> + +/** +@file kdevappfrontend.h +Application frontend interface. +*/ + +/** +Application frontend interface. +This interface is responsible for handling the running of an application in KDevelop. +Currently, this interface defines ways to do the following: +- check if the application is running; +- execute the application; +- stop the currently running application; +- control the output view as seen in the 'Application' tool dock. + +Instances that implement this interface are available through extension architecture: +@code +KDevAppFrontend *apf = extension<KDevAppFrontend>("KDevelop/AppFrontend"); +if (apf) { + // do something +} else { + // fail +} +@endcode +@sa KDevPlugin::extension method documentation. +*/ +class KDevAppFrontend : public KDevPlugin +{ + Q_OBJECT + +public: + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevAppFrontend(const KDevPluginInfo *info, QObject *parent=0, const char *name=0 ) + :KDevPlugin(info, parent, name ? name : "KDevAppFrontend") {} + + /**@return Whether the application is currently running.*/ + virtual bool isRunning() = 0; + +public slots: + /** + * The component shall start to execute an app-like command. + * Running the application is always asynchronous. + * @param directory The working directory to start the app in, + * if empty then the user's home directory is used. + * @param program A program to start. + * @param inTerminal If true then the program is started in an external konsole. + */ + virtual void startAppCommand(const QString &directory, const QString &program, bool inTerminal) = 0; + + /** + * Stops the currently running application. + */ + virtual void stopApplication() = 0; + + /** + * Inserts a string into the application output view. + * @param line A string to insert. + */ + virtual void insertStdoutLine(const QCString &line) = 0; + + /** + * Inserts a string into the application output view marked as stderr output + * (usually colored). + * @param line An error string to insert. + */ + virtual void insertStderrLine(const QCString &line) = 0; + + virtual void addPartialStderrLine( const QCString& line ) = 0; + virtual void addPartialStdoutLine( const QCString& line ) = 0; + + /** + * Clears the output view. + */ + virtual void clearView() = 0; +}; + +#endif diff --git a/lib/interfaces/extensions/kdevcreatefile.h b/lib/interfaces/extensions/kdevcreatefile.h new file mode 100644 index 00000000..b142cd4d --- /dev/null +++ b/lib/interfaces/extensions/kdevcreatefile.h @@ -0,0 +1,146 @@ +/* This file is part of the KDE project + Copyright (C) 2003 Julian Rockey <[email protected]> + Copyright (C) 2003 Roberto Raggi <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVCREATEFILE_H +#define KDEVCREATEFILE_H + +#include <qstring.h> + +#include <kdevplugin.h> + +/** +@file kdevcreatefile.h +File creation facility interface. +*/ + +/** +File creation facility interface. + +An abstract class for all extensions that are responsible for file creation. + +Instances that implement this interface are available through extension architecture: +@code +KDevCreateFile *cf = extension<KDevCreateFile>("KDevelop/CreateFile"); +if (cf) { + // do something +} else { + // fail +} +@endcode +@sa KDevPlugin::extension method documentation. +*/ +class KDevCreateFile : public KDevPlugin +{ + +public: + /**File created with @ref KDevCreateFile implementation.*/ + class CreatedFile { + + public: + /**The status of a file.*/ + enum Status { + STATUS_OK /**<File was successfuly created.*/, + STATUS_CANCELED /**<File was not created due to user intervention.*/, + STATUS_NOTCREATED /**<File was not created due to error.*/, + STATUS_NOTWITHINPROJECT /**<File was successfuly created but not added to a project.*/ + }; + + /**Constructor. + Sets status to STATUS_NOTCREATED.*/ + CreatedFile() + : status( STATUS_NOTCREATED ) {} + + CreatedFile( const CreatedFile& source ) + : dir( source.dir ), filename( source.filename ), + ext( source.ext ), subtype( source.subtype ), + status( source.status ), addToProject(false) {} + + CreatedFile& operator = ( const CreatedFile& source ) + { + dir = source.dir; + filename = source.filename; + ext = source.ext; + subtype = source.subtype; + status = source.status; + addToProject = source.addToProject; + return( *this ); + } + + bool operator == ( const CreatedFile& source ) const + { + return + dir == source.dir && + filename == source.filename && + ext == source.ext && + subtype == source.subtype && + status == source.status && + addToProject == source.addToProject; + } + + // this should be private + /**The directory.*/ + QString dir; + /**The name (without directory path).*/ + QString filename; + /**The extension of a file. Extension defines a "type" of the file template + to use during file creation.*/ + QString ext; + /**The subtype of a file. "Subtype" defines a file template to use when + there are several file templates for each extension.*/ + QString subtype; + /**Current status.*/ + Status status; + /**true if the file should be added to a project.*/ + bool addToProject; + }; + + +public: + + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevCreateFile(const KDevPluginInfo *info, QObject * parent = 0, const char * name = 0) + :KDevPlugin(info, parent, name) {} + + /**Creates a new file, within or without the project. + Supply as much information as you know. Leave what you don't know as QString::null. + The user will be prompted as necessary for the missing information, and the + file created, and added to the project as necessary. + @param ext File extension (type). + @param dir The absolute path to a directory. + @param name The name of a file. + @param subtype The subtype, pass this only if an extension is not enough to find the + file template. + @return @ref CreatedFile instance with information about file and file creation process.*/ + virtual CreatedFile createNewFile(QString ext = QString::null, + QString dir = QString::null, + QString name = QString::null, + QString subtype = QString::null) = 0; + + +}; + +#endif diff --git a/lib/interfaces/extensions/kdevdifffrontend.cpp b/lib/interfaces/extensions/kdevdifffrontend.cpp new file mode 100644 index 00000000..a2e2c49b --- /dev/null +++ b/lib/interfaces/extensions/kdevdifffrontend.cpp @@ -0,0 +1,33 @@ +/* This file is part of the KDE project + Copyright (C) 2002 Harald Fernengel <[email protected]> + Copyright (C) 2002 F@lk Brettschneider <[email protected]> + Copyright (C) 2003 Roberto Raggi <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#include "kdevdifffrontend.h" + + +KDevDiffFrontend::KDevDiffFrontend(const KDevPluginInfo *info, QObject *parent, const char *name) + : KDevPlugin(info, parent, name ? name : "KDevDiffFrontend") +{ +} + +KDevDiffFrontend::~KDevDiffFrontend() +{ +} + +#include "kdevdifffrontend.moc" diff --git a/lib/interfaces/extensions/kdevdifffrontend.h b/lib/interfaces/extensions/kdevdifffrontend.h new file mode 100644 index 00000000..7c5874a2 --- /dev/null +++ b/lib/interfaces/extensions/kdevdifffrontend.h @@ -0,0 +1,79 @@ +/* This file is part of the KDE project + Copyright (C) 2002 Harald Fernengel <[email protected]> + Copyright (C) 2002 F@lk Brettschneider <[email protected]> + Copyright (C) 2003 Roberto Raggi <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVDIFFFRONTEND_H +#define KDEVDIFFFRONTEND_H + +#include <kurl.h> +#include <kdevplugin.h> + +/** +@file kdevdifffrontend.h +Diff frontend interface. +*/ + +/** +KDevelop diff frontend interface. +This is the abstract base class for plugins that want to display differencies between +files. + +Instances that implement this interface are available through extension architecture: +@code +KDevDiffFrontend *df = extension<KDevDiffFrontend>("KDevelop/DiffFrontend"); +if (df) { + // do something +} else { + // fail +} +@endcode +@sa KDevPlugin::extension method documentation. +*/ +class KDevDiffFrontend : public KDevPlugin +{ + +public: + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevDiffFrontend( const KDevPluginInfo *info, QObject *parent=0, const char *name=0 ) + :KDevPlugin(info, parent, name ? name : "KDevDiffFrontend") {} + + /**Displays the patch. + @param diff A string which contains a patch in unified format.*/ + virtual void showDiff( const QString& diff ) = 0; + + /**Displays a patch file. + @param url An url of the patch file.*/ + virtual void openURL( const KURL &url ) = 0; + + /**Displays the difference between the two files. + @param url1 First file to compare. + @param url2 Second file to compare.*/ + virtual void showDiff( const KURL &url1, const KURL &url2 ) = 0; + +}; + +#endif diff --git a/lib/interfaces/extensions/kdevelopappfrontend.desktop b/lib/interfaces/extensions/kdevelopappfrontend.desktop new file mode 100644 index 00000000..60cd678b --- /dev/null +++ b/lib/interfaces/extensions/kdevelopappfrontend.desktop @@ -0,0 +1,38 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/AppFrontend +X-KDE-Derived=KDevelop/Plugin +Name=App Frontend Interface +Name[ca]=Interfície de l'entorn de les aplicacions +Name[da]=Programbrugerflade-grænseflade +Name[de]=Oberflächen-Schnittstelle (KDevelop) +Name[el]=Διασύνδεση προγράμματος App +Name[es]=Interfaz de entorno de aplicación +Name[et]=Rakenduse kasutajaliides +Name[eu]=Aplikazioaren inguruneko interfazea +Name[fa]=واسط پایانۀ کاربرد +Name[fr]=Interface graphique pour une application +Name[gl]=Interface do frontal da aplicación +Name[hu]=Alkalmazás kezelőfelülete +Name[it]=Applicazione per le interfacce +Name[ja]=App フロントエンド インターフェース +Name[nds]=Programmböversiet-Koppelsteed +Name[ne]=एप फ्रेन्टइन्ड इन्टरफेस +Name[pl]=Interfejs do programów +Name[pt]=Interface da Aplicação +Name[pt_BR]=Interface Frontend para Aplicativos +Name[ru]=Интерфейс менеджера приложений +Name[sk]=Aplikačné rozhranie +Name[sr]=Кориснички интерфејс програма +Name[sr@Latn]=Korisnički interfejs programa +Name[sv]=Programgränssnitt +Name[ta]=ஆப் முன்னிருந்த இடைமுகம் +Name[tg]=Интерфейси мудири гузориш +Name[tr]=Uygulama Önucu Arayüzü +Name[zh_CN]=应用程序前端接口 +Name[zh_TW]=App 前端介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopcodebrowserfrontend.desktop b/lib/interfaces/extensions/kdevelopcodebrowserfrontend.desktop new file mode 100644 index 00000000..9dd7f8d2 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopcodebrowserfrontend.desktop @@ -0,0 +1,28 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/CodeBrowserFrontend +X-KDE-Derived=KDevelop/Plugin +Name=Code Browser Frontend +Name[ca]=Interfície per al navegador de codi +Name[da]=Kodebrowser-grænseflade +Name[de]=Quelltextbrowser-Oberfläche +Name[el]=Πρόγραμμα περιήγησης κώδικα +Name[es]=Interfaz para el navegador de código +Name[et]=Koodibrauseri kasutajaliides +Name[fr]=Interface de navigation dans le code +Name[hu]=Kódböngésző +Name[it]=Interfaccia di navigazione del codice +Name[ja]=コードブラウザのフロントエンド +Name[nds]=Kodekieker-Böversiet +Name[pl]=Interfejs do przeglądarki kodu +Name[pt]=Interface de Navegação do Código +Name[pt_BR]=Interface de Navegação do Código +Name[ru]=Навигатор по коду +Name[sk]=Rozhranie pre prehliadač kódu +Name[sr]=Интерфејс прегледача кода +Name[sr@Latn]=Interfejs pregledača koda +Name[sv]=Kodbläddringsgränssnitt +Name[zh_TW]=源碼瀏覽器前端介面 + +[PropertyDef::X-KDevelop-Version] +Type=int diff --git a/lib/interfaces/extensions/kdevelopcreatefile.desktop b/lib/interfaces/extensions/kdevelopcreatefile.desktop new file mode 100644 index 00000000..d100b330 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopcreatefile.desktop @@ -0,0 +1,38 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/CreateFile +X-KDE-Derived=KDevelop/Plugin +Name=KDevelop Create File Interface +Name[ca]=Interfície de creació de fitxers per a KDevelop +Name[da]=KDevelop opret filgrænseflade +Name[de]=KDevelop-Schnittstelle zum Anlegen von Dateien +Name[el]=Διασύνδεση δημιουργίας αρχείου KDevelop +Name[es]=Interfaz de creación de archivos de KDevelop +Name[et]=KDevelopi faili loomise liides +Name[eu]=KDevelop-en "Sortu fitxategia" interfazea +Name[fa]=واسط پروندۀ ایجاد KDevelop +Name[fr]=Interface de création de fichiers pour KDevelop +Name[gl]=Interface de crear ficheiro de KDevelop +Name[hu]=KDevelop fájllétrehozási felület +Name[it]=Interfaccia KDevelop per creare file +Name[ja]=KDevelop Create File インターフェース +Name[nds]=KDevelop-Koppelsteed för't Dateiopstellen +Name[ne]=केडीई विकास फाइल इन्टरफेस सिर्जना +Name[nl]=KDevelop Bestand aanmaken-interface +Name[pl]=Interfejs KDevelopa do tworzenia pliku +Name[pt]=Interface de Criação de Ficheiro do KDevelop +Name[pt_BR]=Interface para Criar Arquivo do KDevelop +Name[ru]=Интерфейс средства создания файлов для KDevelop +Name[sk]=KDevelop rozhranie na vytvorenie súboru +Name[sl]=Vmesnik za ustvarjanje datotek v KDevelopu +Name[sr]=KDevelop-ов интерфејс за прављење фајла +Name[sr@Latn]=KDevelop-ov interfejs za pravljenje fajla +Name[sv]=KDevelop gränssnitt för att skapa filer +Name[tr]=KDevelop Dosya Yaratma Arayüzü +Name[zh_CN]=KDevelop 文件创建接口 +Name[zh_TW]=KDevelop 建立檔案介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopdifffrontend.desktop b/lib/interfaces/extensions/kdevelopdifffrontend.desktop new file mode 100644 index 00000000..31dec5af --- /dev/null +++ b/lib/interfaces/extensions/kdevelopdifffrontend.desktop @@ -0,0 +1,41 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/DiffFrontend +X-KDE-Derived=KDevelop/Plugin +Name=Diff Frontend Interface +Name[ca]=Interfície de l'entorn per a diff +Name[da]=Diff-brugerflade grænseflade +Name[de]=Schnittstelle für Diff-Oberflächen (KDevelop) +Name[el]=Διασύνδεση προγράμματος Diff +Name[es]=Interfaz del entorno de diff +Name[et]=Diff kasutajaliides +Name[eu]=Desberdintasun ingurunearen interfazea +Name[fa]=واسط پایانۀ تفاوت +Name[fr]=Interface du programme « Diff » +Name[gl]=Interface do frontal de Diff +Name[hi]=डिफ़ फ्रन्टएण्ड इंटरफ़ेस +Name[hu]=Diff-kezelési felület +Name[it]=Interfaccia a Diff +Name[ja]=Diff フロントエンド インターフェース +Name[nds]=Koppelsteed för "Diff"-Böversiet +Name[ne]=डिफ फ्रेन्टइन्ड इन्टरफेस +Name[nl]=Diff Frontend-interface +Name[pl]=Interfejs do programu diff +Name[pt]=Interface para o 'Diff' +Name[pt_BR]=Interface de Frontend do Diff +Name[ru]=Интерфейс системы нахождения различий +Name[sk]=Rozhranie rozdielu +Name[sl]=Vmesnik za diff +Name[sr]=Кориснички интерфејс за diff +Name[sr@Latn]=Korisnički interfejs za diff +Name[sv]=Gränssnitt för jämförelse +Name[ta]=டிப் முன்நிறுத்த இடைமுகம் +Name[tg]=Барномаи интерфейс барои ёфтани тағирпазирӣ +Name[tr]=Diff Önuç Arayüzü +Name[zh_CN]=Diff 前端接口 +Name[zh_TW]=Diff 前端介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopmakefrontend.desktop b/lib/interfaces/extensions/kdevelopmakefrontend.desktop new file mode 100644 index 00000000..f38d2d14 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopmakefrontend.desktop @@ -0,0 +1,41 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/MakeFrontend +X-KDE-Derived=KDevelop/Plugin +Name=Make Frontend Interface +Name[ca]=Interfície de l'entorn per a make +Name[da]=Make brugerflade-grænseflade +Name[de]=Schnittstelle für Make-Oberflächen (KDevelop) +Name[el]=Διασύνδεση προγράμματος Make +Name[es]=Interfaz del entorno de make +Name[et]=Make kasutajaliides +Name[eu]=Make ingurunearen interfazea +Name[fa]=واسط پایانۀ Make +Name[fr]=Interface du programme « make » +Name[gl]=Interface do frontal de Make +Name[hi]=मेक फ्रन्टएण्ड इंटरफ़ेस +Name[hu]=Make kezelőfelület +Name[it]=Interfaccia per Make +Name[ja]=Make フロントエンド インターフェース +Name[nds]=Koppelsteed för "Make"-Böversiet +Name[ne]=मेक फ्रेन्टइन्ड इन्टरफेस +Name[nl]=Make Frontend-interface +Name[pl]=Interfejs do Make +Name[pt]=Interface para o Make +Name[pt_BR]=Interface de Frontend do Make +Name[ru]=Интерфейс Make +Name[sk]=Rozhranie pre make +Name[sl]=Vmesnik za make +Name[sr]=Кориснички интерфејс за make +Name[sr@Latn]=Korisnički interfejs za make +Name[sv]=Byggränssnitt +Name[ta]=முன்பகுதி இடை விளிம்பை அமை +Name[tg]=Интерфейс пӯсти Make +Name[tr]=Make Önuç Arayüzü +Name[zh_CN]=Make 前端接口 +Name[zh_TW]=Make 前端介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopquickopen.desktop b/lib/interfaces/extensions/kdevelopquickopen.desktop new file mode 100644 index 00000000..57ae2fd5 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopquickopen.desktop @@ -0,0 +1,58 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/QuickOpen +X-KDE-Derived=KDevelop/Plugin +Name=Quick Open Interface +Name[ca]=Interfície Open Quick +Name[da]=Quick Open-grænseflade +Name[de]=Schnittstelle für Schnellöffnen +Name[el]=Διασύνδεση γρήγορου ανοίγματος +Name[es]=Interfaz de apertura rápida +Name[et]=Kiiravamise kasutajaliides +Name[hu]=Gyors megnyitási kezelőfelület +Name[it]=Interfaccia Quick Open +Name[nds]=Fixopmaak-Koppelsteed +Name[nl]=Snelopen-interface +Name[pl]=Open Interface +Name[pt]=Interface de Abertura Rápida +Name[pt_BR]=Interface de Abertura Rápida +Name[ru]=Интерфейс быстрого открытия +Name[sk]=Rozhranie pre Quick Open +Name[sr]=Интерфејс брзог отварања +Name[sr@Latn]=Interfejs brzog otvaranja +Name[sv]=Snabböppningsgränssnitt +Name[zh_TW]=快速開啟介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/QuickOpen +X-KDE-Derived=KDevelop/Plugin +Name=Quick Open Interface +Name[ca]=Interfície Open Quick +Name[da]=Quick Open-grænseflade +Name[de]=Schnittstelle für Schnellöffnen +Name[el]=Διασύνδεση γρήγορου ανοίγματος +Name[es]=Interfaz de apertura rápida +Name[et]=Kiiravamise kasutajaliides +Name[hu]=Gyors megnyitási kezelőfelület +Name[it]=Interfaccia Quick Open +Name[nds]=Fixopmaak-Koppelsteed +Name[nl]=Snelopen-interface +Name[pl]=Open Interface +Name[pt]=Interface de Abertura Rápida +Name[pt_BR]=Interface de Abertura Rápida +Name[ru]=Интерфейс быстрого открытия +Name[sk]=Rozhranie pre Quick Open +Name[sr]=Интерфејс брзог отварања +Name[sr@Latn]=Interfejs brzog otvaranja +Name[sv]=Snabböppningsgränssnitt +Name[zh_TW]=快速開啟介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopsourceformatter.desktop b/lib/interfaces/extensions/kdevelopsourceformatter.desktop new file mode 100644 index 00000000..2bdadc38 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopsourceformatter.desktop @@ -0,0 +1,39 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/SourceFormatter +X-KDE-Derived=KDevelop/Plugin +Name=Source Formatter Interface +Name[ca]=Interfície del formatador de codi font +Name[da]=Kildekodeformatering grænseflade +Name[de]=Quelltext-Formatierer-Schnittstelle (KDevelop) +Name[el]=Διασύνδεση μορφοποίησης κώδικα +Name[es]=Interfaz del formateador de código fuente +Name[et]=Koodi vormindamise liides +Name[eu]=Iturburu formateatzailearen interfazea +Name[fa]=واسط قالبدهندۀ منبع +Name[fr]=Interface pour le formatage de code source +Name[gl]=Interface do formateador de código +Name[hu]=Forrásformázási felület +Name[it]=Interfaccia per il formattatore del codice sorgente +Name[ja]=ソースフォーマッタ インターフェース +Name[nds]=Koppelsteed för Borntext-Formaterer +Name[ne]=स्रोत ढाँचाबद्धक इन्टरफेस +Name[nl]=Broncode formatteren-interface +Name[pl]=Interfejs do programu formatowania źródeł +Name[pt]=Interface de Formatação de Código +Name[pt_BR]=Interface de Formatação de Fonte +Name[ru]=Интерфейс форматирования исходного кода +Name[sk]=Rozhranie pre formátovanie +Name[sr]=Интерфејс форматера изворног кода +Name[sr@Latn]=Interfejs formatera izvornog koda +Name[sv]=Gränssnitt för källkodsformatering +Name[ta]=வடிவமைப்பவரின் இடை விளிம்பு மூலம் +Name[tg]=Интерфейс қолабгузори коди берунӣ +Name[tr]=Kaynak Biçimleyici Arayüzü +Name[zh_CN]=源代码格式化接口 +Name[zh_TW]=程式碼格式化介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevelopversioncontrol.desktop b/lib/interfaces/extensions/kdevelopversioncontrol.desktop new file mode 100644 index 00000000..c772b9a6 --- /dev/null +++ b/lib/interfaces/extensions/kdevelopversioncontrol.desktop @@ -0,0 +1,40 @@ +[Desktop Entry] +Type=ServiceType +X-KDE-ServiceType=KDevelop/VersionControl +X-KDE-Derived=KDevelop/Plugin +Name=KDevelop Version Control Interface +Name[ca]=Interfície del control de versions per a KDevelop +Name[da]=KDevelop versionskontrol grænseflade +Name[de]=Versionsverwaltung-Schnittstelle (KDevelop) +Name[el]=Διασύνδεση ελέγχου εκδόσεων KDevelop +Name[es]=Interfaz del control de versiones de KDevelop +Name[et]=KDevelopi versioonide kontrollimise liides +Name[eu]=KDevelop bertsio kontrol interfazea +Name[fa]=واسط کنترل نسخۀ KDevelop +Name[fr]=Interface pour le contrôle de versions de KDevelop +Name[gl]=Interface do control de versións de KDevelop +Name[hi]=के-डेवलप संस्करण नियंत्रण इंटरफ़ेस +Name[hu]=KDevelop verziókezelési felület +Name[ja]=KDevelop バージョンコントロール インターフェース +Name[nds]=Verschoonkuntrull-Koppelsteed vun KDevelop +Name[ne]=केडीई विकास संस्करण नियन्त्रण इन्टरफेस +Name[nl]=KDevelop Versiebeheer-interface +Name[pl]=Interfejs Kdevelopa do kontroli wersji +Name[pt]=Interface de Controlo de Versões do KDevelop +Name[pt_BR]=Interface de Controle de Versão do KDevelop +Name[ru]=Интерфейс системы управления версиями +Name[sk]=KDevelop rozhranie pre riadenie verzií +Name[sl]=Vmesnik nadzora različic za KDevelop +Name[sr]=KDevelop-ов интерфејс за контролу верзије +Name[sr@Latn]=KDevelop-ov interfejs za kontrolu verzije +Name[sv]=KDevelop gränssnitt för versionskontroll +Name[ta]=KDevelop பதிப்பு கட்டுப்பாட்டு இடைஇணைப்பு +Name[tg]=Интерфейс барномаи идоракунии тафсирҳо +Name[tr]=KDevelop Sürüm Kontrol Arayüzü +Name[zh_CN]=KDevelop 版本控制接口 +Name[zh_TW]=KDevelop 版本控制介面 + +# versioning - prevent DLL hell +[PropertyDef::X-KDevelop-Version] +Type=int + diff --git a/lib/interfaces/extensions/kdevmakefrontend.cpp b/lib/interfaces/extensions/kdevmakefrontend.cpp new file mode 100644 index 00000000..5e035270 --- /dev/null +++ b/lib/interfaces/extensions/kdevmakefrontend.cpp @@ -0,0 +1,2 @@ +#include "kdevmakefrontend.h" +#include "kdevmakefrontend.moc" diff --git a/lib/interfaces/extensions/kdevmakefrontend.h b/lib/interfaces/extensions/kdevmakefrontend.h new file mode 100644 index 00000000..6014ff34 --- /dev/null +++ b/lib/interfaces/extensions/kdevmakefrontend.h @@ -0,0 +1,106 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2001 Sandy Meier <[email protected]> + Copyright (C) 2001-2002 Bernd Gehrmann <[email protected]> + Copyright (C) 2002-2003 Roberto Raggi <[email protected]> + Copyright (C) 2002 Simon Hausmann <[email protected]> + Copyright (C) 2002 F@lk Brettschneider <[email protected]> + Copyright (C) 2003 Amilcar do Carmo Lucas <[email protected]> + Copyright (C) 2003 Hamish Rodda <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVMAKEFRONTEND_H +#define KDEVMAKEFRONTEND_H + +#include <qstringlist.h> +#include <kdevplugin.h> + +/** +@file kdevmakefrontend.h +Make frontend interface. +*/ + +/** +KDevelop make frontend interface. +This is the abstract base class for plugins that are able to run "make" +or similar commands to build a project, api documentation, etc. + +Instances that implement this interface are available through extension architecture: +@code +KDevMakeFrontend *mf = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"); +if (mf) { + // do something +} else { + // fail +} +@endcode +@sa KDevPlugin::extension method documentation. +*/ +class KDevMakeFrontend : public KDevPlugin +{ + Q_OBJECT + +public: + + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevMakeFrontend(const KDevPluginInfo *info, QObject *parent=0, const char *name=0 ) + :KDevPlugin(info, parent, name ? name : "KDevMakeFrontend") {} + + /**@return The widget where the make output is shown.*/ + virtual QWidget* widget() { return 0L; } + + /**The component shall start to execute a make-like command. + * Commands are always asynchronous. You can submit several jobs + * without caring about another job already running. There are + * executed in the order in which they are submitted. If one of + * then fails, all following jobs are dropped. + * You should not make any assumptions about the directory in which + * the command is started. If the command depends on that, put and + * explicit 'cd' into the command. + * @param dir A starting directory to find files when parsing compiler error + * messages. + * @param command A shell command to execute. + */ + virtual void queueCommand(const QString &dir, const QString &command) = 0; + + /**@return Whether the application is currently running.*/ + virtual bool isRunning() = 0; + + /**Advices to synchronize the settings from KConfig because they were changed externally.*/ + virtual void updateSettingsFromConfig() = 0; + +signals: + /** + * Only emitted if the command was succesfully finished. + */ + void commandFinished(const QString &command); + + /** + * Emitted if a command failed. + */ + void commandFailed(const QString &command); +}; + +#endif diff --git a/lib/interfaces/extensions/kdevquickopen.h b/lib/interfaces/extensions/kdevquickopen.h new file mode 100644 index 00000000..3fd108c8 --- /dev/null +++ b/lib/interfaces/extensions/kdevquickopen.h @@ -0,0 +1,130 @@ +/* This file is part of the KDE project + Copyright (C) 2007 Alexander Dymo <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVQUICKOPEN_H +#define KDEVQUICKOPEN_H + +#include <kdevplugin.h> +#include <kurl.h> + +/** +@file kdevquickopen.h +Source formatter interface. +*/ + +/** +Quick open plugin interface. + +Use it when you need to present a dialog to choose between files to open. +@code +KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); +if (qo) { + // do something +} else { + // fail +} +@endcode +@sa @ref KDevPlugin::extension method documentation. +@sa @ref whatisextension and @ref creatingextension sections of Platform API documentation. +*/ +class KDevQuickOpen : public KDevPlugin +{ +public: + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevQuickOpen(const KDevPluginInfo *info, QObject* parent, const char* name) + :KDevPlugin(info, parent, name) {} + + /**Shows the file selection dialog. + @param text A list of urls to open.*/ + virtual void quickOpenFile(const KURL::List urls) = 0; +}; + +#endif +/* This file is part of the KDE project + Copyright (C) 2007 Alexander Dymo <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVQUICKOPEN_H +#define KDEVQUICKOPEN_H + +#include <kdevplugin.h> +#include <kurl.h> + +/** +@file kdevquickopen.h +Source formatter interface. +*/ + +/** +Quick open plugin interface. + +Use it when you need to present a dialog to choose between files to open. +@code +KDevQuickOpen *qo = extension<KDevQuickOpen>("KDevelop/QuickOpen"); +if (qo) { + // do something +} else { + // fail +} +@endcode +@sa @ref KDevPlugin::extension method documentation. +@sa @ref whatisextension and @ref creatingextension sections of Platform API documentation. +*/ +class KDevQuickOpen : public KDevPlugin +{ +public: + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevQuickOpen(const KDevPluginInfo *info, QObject* parent, const char* name) + :KDevPlugin(info, parent, name) {} + + /**Shows the file selection dialog. + @param text A list of urls to open.*/ + virtual void quickOpenFile(const KURL::List urls) = 0; +}; + +#endif diff --git a/lib/interfaces/extensions/kdevsourceformatter.h b/lib/interfaces/extensions/kdevsourceformatter.h new file mode 100644 index 00000000..82a9531f --- /dev/null +++ b/lib/interfaces/extensions/kdevsourceformatter.h @@ -0,0 +1,69 @@ +/* This file is part of the KDE project + Copyright (C) 2003-2004 Alexander Dymo <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVSOURCEFORMATTER_H +#define KDEVSOURCEFORMATTER_H + +#include <kdevplugin.h> + +/** +@file kdevsourceformatter.h +Source formatter interface. +*/ + +/** +Source formatter interface. +This interface is responsible for formatting source files and strings of code. + +Instances that implement this interface are available through extension architecture: +@code +KDevSourceFormatter *sf = extension<KDevSourceFormatter>("KDevelop/SourceFormatter"); +if (sf) { + // do something +} else { + // fail +} +@endcode +@sa @ref KDevPlugin::extension method documentation. +@sa @ref whatisextension and @ref creatingextension sections of Platform API documentation. +*/ +class KDevSourceFormatter : public KDevPlugin +{ +public: + /**Constructor. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevSourceFormatter(const KDevPluginInfo *info, QObject* parent, const char* name) + :KDevPlugin(info, parent, name) {} + + /**Formats the source. + @param text A string with a code. + @return The formatted string.*/ + virtual QString formatSource(const QString text) = 0; + + /**@return The indentation string. For example, tab or four spaces can be returned.*/ + virtual QString indentString() const = 0; +}; + +#endif diff --git a/lib/interfaces/extensions/kdevversioncontrol.h b/lib/interfaces/extensions/kdevversioncontrol.h new file mode 100644 index 00000000..d6e69e08 --- /dev/null +++ b/lib/interfaces/extensions/kdevversioncontrol.h @@ -0,0 +1,237 @@ +/* This file is part of the KDE project + Copyright (C) 2001 Matthias Hoelzer-Kluepfel <[email protected]> + Copyright (C) 2002-2003 Roberto Raggi <[email protected]> + Copyright (C) 2002 Simon Hausmann <[email protected]> + Copyright (C) 2003 Mario Scalas <[email protected]> + Copyright (C) 2004 Alexander Dymo <[email protected]> + + 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +#ifndef KDEVVERSIONCONTROL_H +#define KDEVVERSIONCONTROL_H + +#include <qobject.h> +#include <qstring.h> +#include <qwidget.h> +#include <qmap.h> +#include <qvaluelist.h> + +#include <kdevplugin.h> + +/** +@file kdevversioncontrol.h +Version control system interface and utility classes. +*/ + +/** +Info about file state in VCS. + +Used, for example in file views to display VCS related information about files. +*/ +struct VCSFileInfo +{ + /**State of the file.*/ + enum FileState { + Unknown /**<No VCS information about a file is known.*/, + Added /**<File was added to the repository but not commited.*/, + Uptodate /**<File was updated or it is already at up to date version.*/, + Modified /**<File was modified locally.*/, + Conflict /**<Local version conflicts with the one in a repository.*/, + Sticky /**<File is sticky.*/, + NeedsPatch /**<File needs a patch.*/, + NeedsCheckout /**<File needs to be checkout again.*/, + Directory /**<This is a directory.*/ , + Deleted /**<File or Directory is scheduled to be deleted. */ , + Replaced /**<File was scheduled for deletion, and then a new file with the same name was scheduled for addition in its place. */ + }; + + /**Constructor.*/ + VCSFileInfo() {} + /**Constructor. + @param fn The file name (without a path). + @param workRev The current working revision of a file. + @param repoRev The last revision of a file in the repository. + @param aState The state of a file.*/ + VCSFileInfo( QString fn, QString workRev, QString repoRev, FileState aState ) + : fileName(fn), workRevision(workRev), repoRevision(repoRev), state(aState) {} + + /**The file name.*/ + QString fileName; // Yeah, _just_ the file name ;-) + /**The working revision number.*/ + QString workRevision; + /**The repository revision number.*/ + QString repoRevision; + /**The state of a file.*/ + FileState state; + + /**@return A descriptive string with all VCS related info about the file.*/ + QString toString() const + { + return "(" + fileName + ", " + workRevision + ", " + repoRevision + ", " + state2String( state ) + ")"; + } + + /**@return A textual VCS state description.*/ + static QString state2String( FileState state ) + { + switch (state) + { + case Added: return "added"; + case Uptodate: return "up-to-date"; + case Modified: return "modified"; + case Conflict: return "conflict"; + case Sticky: return "sticky"; + case NeedsPatch: return "needs patch"; + case NeedsCheckout: return "needs check-out"; + case Directory: return "directory"; + case Deleted: return "deleted"; + case Replaced: return "replaced"; + case Unknown: + default: + return "unknown"; + } + } + +}; + +/**@class FileDom +Info for a bunch of files that got modified. +This is a type definition: @code QMap<QString,VCSFileInfo> VCSFileInfoMap; @endcode +*/ +typedef QMap<QString,VCSFileInfo> VCSFileInfoMap; + +class KDevVCSFileInfoProvider; + + +/** +KDevelop version control system interface. +This is the abstract base class which encapsulates everything +necessary for communicating with version control systems. +VCS support plugins should implement this interface. + +Instances that implement this interface are available through extension architecture: +@code +KDevVersionControl *vcs = extension<KDevVersionControl>("KDevelop/VersionControl"); +if (vcs) { + // do something +} else { + // fail +} +@endcode +@sa KDevPlugin::extension method documentation. +*/ +class KDevVersionControl: public KDevPlugin +{ + Q_OBJECT + +public: + /**Constructs a VCS plugin. + @param info Important information about the plugin - plugin internal and generic + (GUI) name, description, a list of authors, etc. That information is used to show + plugin information in various places like "about application" dialog, plugin selector + dialog, etc. Plugin does not take ownership on info object, also its lifetime should + be equal to the lifetime of the plugin. + @param parent The parent object for the plugin. Parent object must implement @ref KDevApi + interface. Otherwise the plugin will not be constructed. + @param name The internal name which identifies the plugin.*/ + KDevVersionControl(const KDevPluginInfo *info, QObject *parent, const char *name ) + :KDevPlugin(info, parent, name ) {} + + /**Creates a new project in the passed path @p dir. This should instantiate + VCS infrastructure and import a project into the VCS in that directory. + @param dir The absolute path to the directory where VCS infrastructure should be + created.*/ + virtual void createNewProject(const QString& dir) = 0; + + /**Fetches a module from remote repository, so it can be used for importing. + @return true in case of success.*/ + virtual bool fetchFromRepository() = 0; + + /**@return The file info provider for this version control (0 if none is available).*/ + virtual KDevVCSFileInfoProvider *fileInfoProvider() const = 0; + + /**Checks if the directory is valid for this version control (for example + CVS may check for the presence of "<dirPath>/CVS/" subdir and something else) + @param dirPath The absolute path of the directory. + @return true if the directory is valid for this version control + <b>warning</b>: this returns false by default.*/ + virtual bool isValidDirectory(const QString &dirPath) const = 0; + + +signals: + /**Emitted when the Version Control has finished importing a module from remote + repository + @param destinationDir The directory where the module has been fetched.*/ + void finishedFetching(QString destinationDir); + +}; + +/** +Basic interface for providing info on file registered in a version control repository repository. +*/ +class KDevVCSFileInfoProvider: public QObject +{ + Q_OBJECT +public: + /**Constructor. + @param parent The parent VCS plugin. + @param name The name of a provider object.*/ + KDevVCSFileInfoProvider(KDevVersionControl *parent, const char *name) + : QObject( parent, name ), m_owner(parent) {} + + /**Gets the status for local files in the specified directory: + the info are collected locally so they are necessarily in sync with the repository + + This is a <b>synchronous operation</b> (blocking). + @param dirPath The relative (to project dir) directory path to stat. + @return Status for all <b>registered</b> files.*/ + virtual const VCSFileInfoMap *status(const QString &dirPath) = 0; + + /**Starts a request for directory status to the remote repository. + Requests and answers are asynchronous. + + This is an <b>asynchronous operation for requesting data</b>, so + for obvious reasons: the caller must connect the statusReady() signal and + check for the return value of this method. + @param dirPath The (relative to project directory) directory which status you are asking for. + @param callerData The pointer to some data you want the provider will return + to you when it has done. + @param recursive If false, retrieve information only for dirPath's immediate children. + @param checkRepos If true, contact remote repository and augment repository's status. + If false, retrieve only for local modification information. + @return true if the request has been successfully started, false otherwise.*/ + virtual bool requestStatus( const QString &dirPath, void *callerData, bool recursive = true, bool checkRepos = true ) = 0; + +signals: + /**Emitted when the status request to remote repository has finished. + @param fileInfoMap The status for <b>registered in repository</b> files. + @param callerData The pointer to some data you want the provider will return + to you when it has done + @see requestStatus for to find out when this signal should be used.*/ + void statusReady(const VCSFileInfoMap &fileInfoMap, void *callerData); + +protected: + /**@return The version control which owns this provider.*/ + KDevVersionControl *owner() const { return m_owner; } + +private: + KDevVersionControl *m_owner; + +private: + KDevVCSFileInfoProvider( const KDevVCSFileInfoProvider & ); + KDevVCSFileInfoProvider &operator=( const KDevVCSFileInfoProvider & ); +}; + +#endif |