diff options
Diffstat (limited to 'lib/interfaces/extensions/tdevversioncontrol.h')
-rw-r--r-- | lib/interfaces/extensions/tdevversioncontrol.h | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/lib/interfaces/extensions/tdevversioncontrol.h b/lib/interfaces/extensions/tdevversioncontrol.h deleted file mode 100644 index d796e31f..00000000 --- a/lib/interfaces/extensions/tdevversioncontrol.h +++ /dev/null @@ -1,239 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2001 Matthias Hoelzer-Kluepfel <hoelzer@kde.org> - Copyright (C) 2002-2003 Roberto Raggi <roberto@kdevelop.org> - Copyright (C) 2002 Simon Hausmann <hausmann@kde.org> - Copyright (C) 2003 Mario Scalas <mario.scalas@libero.it> - 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 TDEVVERSIONCONTROL_H -#define TDEVVERSIONCONTROL_H - -#include <tqobject.h> -#include <tqstring.h> -#include <tqwidget.h> -#include <tqmap.h> -#include <tqvaluelist.h> - -#include <tdevplugin.h> - -/** -@file tdevversioncontrol.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( TQString fn, TQString workRev, TQString repoRev, FileState aState ) - : fileName(fn), workRevision(workRev), repoRevision(repoRev), state(aState) {} - - /**The file name.*/ - TQString fileName; // Yeah, _just_ the file name ;-) - /**The working revision number.*/ - TQString workRevision; - /**The repository revision number.*/ - TQString repoRevision; - /**The state of a file.*/ - FileState state; - - /**@return A descriptive string with all VCS related info about the file.*/ - TQString toString() const - { - return "(" + fileName + ", " + workRevision + ", " + repoRevision + ", " + state2String( state ) + ")"; - } - - /**@return A textual VCS state description.*/ - static TQString 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 TQMap<TQString,VCSFileInfo> VCSFileInfoMap; @endcode -*/ -typedef TQMap<TQString,VCSFileInfo> VCSFileInfoMap; - -class TDevVCSFileInfoProvider; - - -/** -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 -TDevVersionControl *vcs = extension<TDevVersionControl>("TDevelop/VersionControl"); -if (vcs) { - // do something -} else { - // fail -} -@endcode -@sa TDevPlugin::extension method documentation. -*/ -class TDevVersionControl: public TDevPlugin -{ - 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 TDevApi - interface. Otherwise the plugin will not be constructed. - @param name The internal name which identifies the plugin.*/ - TDevVersionControl(const TDevPluginInfo *info, TQObject *parent, const char *name ) - :TDevPlugin(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 TQString& 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 TDevVCSFileInfoProvider *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 TQString &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(TQString destinationDir); - -}; - -/** -Basic interface for providing info on file registered in a version control repository repository. -*/ -class TDevVCSFileInfoProvider: public TQObject -{ - Q_OBJECT - -public: - /**Constructor. - @param parent The parent VCS plugin. - @param name The name of a provider object.*/ - TDevVCSFileInfoProvider(TDevVersionControl *parent, const char *name) - : TQObject( 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 TQString &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 TQString &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.*/ - TDevVersionControl *owner() const { return m_owner; } - -private: - TDevVersionControl *m_owner; - -private: - TDevVCSFileInfoProvider( const TDevVCSFileInfoProvider & ); - TDevVCSFileInfoProvider &operator=( const TDevVCSFileInfoProvider & ); -}; - -#endif |