summaryrefslogtreecommitdiffstats
path: root/vcs/clearcase
diff options
context:
space:
mode:
Diffstat (limited to 'vcs/clearcase')
-rw-r--r--vcs/clearcase/Makefile.am18
-rw-r--r--vcs/clearcase/README3
-rw-r--r--vcs/clearcase/README.dox42
-rw-r--r--vcs/clearcase/clearcasefileinfoprovider.cpp66
-rw-r--r--vcs/clearcase/clearcasefileinfoprovider.h50
-rw-r--r--vcs/clearcase/clearcasemanipulator.cpp133
-rw-r--r--vcs/clearcase/clearcasemanipulator.h49
-rw-r--r--vcs/clearcase/clearcasepart.cpp363
-rw-r--r--vcs/clearcase/clearcasepart.h65
-rw-r--r--vcs/clearcase/commentdlg.cpp61
-rw-r--r--vcs/clearcase/commentdlg.h32
-rw-r--r--vcs/clearcase/integrator/Makefile.am13
-rw-r--r--vcs/clearcase/integrator/ccintegratordlg.cpp40
-rw-r--r--vcs/clearcase/integrator/ccintegratordlg.h36
-rw-r--r--vcs/clearcase/integrator/ccintegratordlgbase.ui47
-rw-r--r--vcs/clearcase/integrator/clearcaseintegrator.cpp54
-rw-r--r--vcs/clearcase/integrator/clearcaseintegrator.h39
-rw-r--r--vcs/clearcase/integrator/kdevclearcaseintegrator.desktop44
-rw-r--r--vcs/clearcase/kdevclearcase.desktop82
19 files changed, 1237 insertions, 0 deletions
diff --git a/vcs/clearcase/Makefile.am b/vcs/clearcase/Makefile.am
new file mode 100644
index 00000000..64b70392
--- /dev/null
+++ b/vcs/clearcase/Makefile.am
@@ -0,0 +1,18 @@
+# Here resides the clearcase part
+
+INCLUDES = -I$(top_srcdir)/lib/interfaces \
+ -I$(top_srcdir)/lib/interfaces/extensions -I$(top_srcdir)/lib/util $(all_includes)
+
+kde_module_LTLIBRARIES = libkdevclearcase.la
+libkdevclearcase_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
+libkdevclearcase_la_LIBADD = $(top_builddir)/lib/libkdevelop.la $(top_builddir)/lib/interfaces/extensions/libkdevextensions.la
+
+libkdevclearcase_la_SOURCES = clearcasepart.cpp commentdlg.cpp \
+ clearcasefileinfoprovider.cpp clearcasemanipulator.cpp
+
+METASOURCES = AUTO
+
+servicedir = $(kde_servicesdir)
+service_DATA = kdevclearcase.desktop
+
+SUBDIRS = integrator
diff --git a/vcs/clearcase/README b/vcs/clearcase/README
new file mode 100644
index 00000000..731741e1
--- /dev/null
+++ b/vcs/clearcase/README
@@ -0,0 +1,3 @@
+Please read the on-line, automaticaly updated KDevelop API documentation at:
+http://www.kdevelop.org
+or read the README.dox file.
diff --git a/vcs/clearcase/README.dox b/vcs/clearcase/README.dox
new file mode 100644
index 00000000..74f2678b
--- /dev/null
+++ b/vcs/clearcase/README.dox
@@ -0,0 +1,42 @@
+/** \class ClearcasePart
+Integrates Clearcase configuration management system into KDevelop.
+Based on Perforce (PerforcePart) implementation by Harald Fernengel <harry AT kdevelop.org>
+
+To use clearcase functions, you need to:
+ -# Create a view in which you will keep your project files
+ -# Start the view and open project as a view extended directory.<br>
+ <b>IMPORTANT:</b> If you have a view test_vu and your project is located
+ under /vobs/source/project1 you should open the project
+ from /view/test_vu/vobs/source/project1 rather than
+ inside the view from /vobs/source/project1. File open
+ dialog does not show any files if you do otherwise. Who
+ knows, maybe it will work for you. If so, let me know.
+ -# Clearcase functions appear in the popup menu for an open file just
+ like cvs or perforce.
+ -# Functions supported so far are: checkout, checkin, uncheckout, diff,
+ mkelem, rmname (not rmelem), lshistory, and lsco (list checkouts).
+ -# For mkelem or rmname, you need to make sure that current directory
+ is checked out or the operation will fail.
+ -# For lshistory, the history is printed to the Messages window.
+ -# For lsco, the checkouts are listed recursively from the directory
+ containing the selected file.
+ -# Snapshot views should work.
+ -# To checkout a directory, select directory in file selector part and use
+ popup-menu.
+ -# The Clearcase popup-menu will appear for any file, even if it is not in
+ a VOB. Attempts to perform Clearcase operations on these files will not
+ succeed, and the output can be viewed in the Messages window.
+
+\authors <a href="mailto:ajay_guleria AT yahoo dot com">Ajay Guleria</a>
+\authors <a href="mailto:pnoffke AT bigpond dot com">Patrick Noffke</a>
+\authors <a href="mailto:phil AT hetroy dot org">Philippe Htroy</a>
+
+\feature Integrates Clearcase configuration management system into KDevelop and displays VCS file information
+\feature Detects the clearcase environment and activates menus
+\feature Provided a dialog for checkout and checkin comments.
+
+
+\todo Update the tree view when a VCS action is done (checkout, checkin...)
+\todo Add a clearcase logging window
+
+*/
diff --git a/vcs/clearcase/clearcasefileinfoprovider.cpp b/vcs/clearcase/clearcasefileinfoprovider.cpp
new file mode 100644
index 00000000..66dec0c8
--- /dev/null
+++ b/vcs/clearcase/clearcasefileinfoprovider.cpp
@@ -0,0 +1,66 @@
+//
+// C++ Implementation: clearcasefileinfoprovider
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel@kdevelop.org>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "clearcasefileinfoprovider.h"
+#include "clearcasepart.h"
+#include "kdevversioncontrol.h"
+
+#include <kprocess.h>
+#include <qapplication.h>
+
+ClearcaseFileinfoProvider::ClearcaseFileinfoProvider(ClearcasePart *parent)
+ : KDevVCSFileInfoProvider( (KDevVersionControl*) parent, "clearcasefileinfoprovider")
+{
+ vcsInfo_ = NULL;
+
+ connect(parent, SIGNAL(statusReady(const VCSFileInfoMap&, void*)), SIGNAL(triggerUpdate(const VCSFileInfoMap&, void*)));
+
+ kdevVCS_ = parent;
+}
+
+
+ClearcaseFileinfoProvider::~ClearcaseFileinfoProvider()
+{
+}
+
+
+const VCSFileInfoMap* ClearcaseFileinfoProvider::status( const QString &dirPath ) {
+
+ if (curDirPath_ == dirPath) return vcsInfo_;
+
+ curDirPath_ = dirPath;
+
+ if (vcsInfo_ != NULL) delete vcsInfo_;
+
+ vcsInfo_ = ccManipulator_.retreiveFilesInfos(dirPath);
+
+ return vcsInfo_;
+}
+
+bool ClearcaseFileinfoProvider::requestStatus( const QString &dirPath, void *callerData, bool recursive, bool checkRepos ) {
+
+ VCSFileInfoMap* vcsDirInfos = ccManipulator_.retreiveFilesInfos(dirPath);
+
+ // update the file tree view
+ emit statusReady(*vcsDirInfos, callerData);
+
+ delete vcsDirInfos;
+ return true;
+}
+
+
+
+QStringList ClearcaseFileinfoProvider::registeredEntryList() const
+{
+ QStringList l;
+ return l;
+}
+
diff --git a/vcs/clearcase/clearcasefileinfoprovider.h b/vcs/clearcase/clearcasefileinfoprovider.h
new file mode 100644
index 00000000..b716d01b
--- /dev/null
+++ b/vcs/clearcase/clearcasefileinfoprovider.h
@@ -0,0 +1,50 @@
+//
+// C++ Interface: clearcasefileinfoprovider
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel@kdevelop.org>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef CLEARCASEFILEINFOPROVIDER_H
+#define CLEARCASEFILEINFOPROVIDER_H
+
+#include "clearcasepart.h"
+#include "clearcasemanipulator.h"
+
+
+/**
+@author KDevelop Authors
+*/
+class ClearcaseFileinfoProvider : public KDevVCSFileInfoProvider
+{
+ Q_OBJECT
+public:
+ ClearcaseFileinfoProvider(ClearcasePart *parent);
+
+ virtual ~ClearcaseFileinfoProvider();
+
+ // -- Sync interface
+ const VCSFileInfoMap *status( const QString &dirPath ) ;
+
+ // -- Async interface for requesting data
+ bool requestStatus( const QString &dirPath, void *callerData, bool recursive = true, bool checkRepos = true );
+
+
+private:
+
+ QStringList registeredEntryList() const;
+
+
+private:
+ ClearcaseManipulator ccManipulator_;
+ QString curDirPath_;
+ VCSFileInfoMap* vcsInfo_;
+ ClearcasePart* kdevVCS_;
+
+};
+
+#endif
diff --git a/vcs/clearcase/clearcasemanipulator.cpp b/vcs/clearcase/clearcasemanipulator.cpp
new file mode 100644
index 00000000..c51436ba
--- /dev/null
+++ b/vcs/clearcase/clearcasemanipulator.cpp
@@ -0,0 +1,133 @@
+//
+// C++ Implementation: ClearcaseManipulator
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel@kdevelop.org>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "clearcasemanipulator.h"
+
+#include <kprocess.h>
+
+#include <qregexp.h>
+#include <qstring.h>
+
+#include <stdlib.h>
+#include <libgen.h>
+#include <errno.h>
+#ifdef __NetBSD__
+#include <sys/param.h>
+#endif
+
+#if defined(Q_OS_MACX) || defined(MACOSX) || defined(Q_OS_SOLARIS) || defined(Q_OS_FREEBSD) || (defined(__NetBSD__) && (__NetBSD_Version__ < 599001500)) || defined(__DragonFly__)
+//this function is taken from GNU libc
+//it does not exist on macos
+int getline(char **lineptr, size_t *n, FILE *stream)
+{
+ static char line[256];
+ char *ptr;
+ unsigned int len;
+
+ if (lineptr == NULL || n == NULL)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (ferror (stream))
+ return -1;
+
+ if (feof(stream))
+ return -1;
+
+ fgets(line,256,stream);
+
+ ptr = strchr(line,'\n');
+ if (ptr)
+ *ptr = '\0';
+
+ len = strlen(line);
+
+ if ((len+1) < 256)
+ {
+ ptr = (char*)realloc(*lineptr, 256);
+ if (ptr == NULL)
+ return(-1);
+ *lineptr = ptr;
+ *n = 256;
+ }
+
+ strcpy(*lineptr,line);
+ return(len);
+}
+#endif
+
+const char ClearcaseManipulator::CT_DESC_SEPARATOR = ';';
+
+
+ClearcaseManipulator::ClearcaseManipulator()
+{
+}
+
+
+ClearcaseManipulator::~ClearcaseManipulator()
+{}
+
+
+bool ClearcaseManipulator::isCCRepository( const QString & directory ) {
+ QString cmd;
+ cmd = "cd " + directory + " && cleartool pwv -root";
+ if ( system(cmd.ascii()) == 0 ) return true;
+
+ return false;
+}
+
+VCSFileInfoMap* ClearcaseManipulator::retreiveFilesInfos(const QString& directory) {
+
+
+ VCSFileInfoMap* fileInfoMap = new VCSFileInfoMap();
+
+ char CCcommand[1024];
+ sprintf(CCcommand, "cleartool desc -fmt \"%%m;%%En;%%Rf;%%Sn;%%PVn\\n\" %s/*", directory.ascii());
+ FILE* outputFile = popen(CCcommand, "r");
+
+ char* line = NULL;
+ size_t numRead;
+ while (!feof(outputFile)) {
+ getline(&line,&numRead,outputFile);
+
+ if (numRead > 0) {
+ int pos = 0;
+ int lastPos = -1;
+
+ QStringList outputList;
+ outputList = outputList.split(CT_DESC_SEPARATOR, QString(line), true );
+ outputList[Name] = QString(basename((char*)outputList[Name].ascii()));
+
+ VCSFileInfo::FileState state;
+ if (outputList[ClearcaseManipulator::State] == "unreserved" || outputList[ClearcaseManipulator::State] == "reserved") {
+ state = VCSFileInfo::Modified;
+ }
+ else if (outputList[ClearcaseManipulator::State] == "") {
+ state = VCSFileInfo::Uptodate;
+ }
+ else {
+ state = VCSFileInfo::Unknown;
+ }
+
+
+ (*fileInfoMap)[outputList[ClearcaseManipulator::Name]] = VCSFileInfo(outputList[ClearcaseManipulator::Name], outputList[ClearcaseManipulator::Version], outputList[ClearcaseManipulator::RepositoryVersion], state);
+ }
+ }
+
+ pclose(outputFile);
+
+ return fileInfoMap;
+}
+
+
+
diff --git a/vcs/clearcase/clearcasemanipulator.h b/vcs/clearcase/clearcasemanipulator.h
new file mode 100644
index 00000000..baa7c17f
--- /dev/null
+++ b/vcs/clearcase/clearcasemanipulator.h
@@ -0,0 +1,49 @@
+//
+// C++ Interface: ClearcaseManipulator
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel@kdevelop.org>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#ifndef CLEARCASEMANIPULATOR_H
+#define CLEARCASEMANIPULATOR_H
+
+#include "kdevversioncontrol.h"
+
+#include <kprocess.h>
+
+#include <qregexp.h>
+
+#include <string>
+
+/**
+ @author KDevelop Authors
+ */
+class ClearcaseManipulator {
+ public:
+ ClearcaseManipulator();
+
+ ~ClearcaseManipulator();
+
+ static bool isCCRepository(const QString& directory);
+
+ VCSFileInfoMap* retreiveFilesInfos(const QString& directory);
+
+ private:
+ enum FileInfosFields {
+ Type = 0,
+ Name,
+ State,
+ Version,
+ RepositoryVersion
+ };
+
+ static const char CT_DESC_SEPARATOR;
+
+};
+
+#endif
diff --git a/vcs/clearcase/clearcasepart.cpp b/vcs/clearcase/clearcasepart.cpp
new file mode 100644
index 00000000..6c11a4a6
--- /dev/null
+++ b/vcs/clearcase/clearcasepart.cpp
@@ -0,0 +1,363 @@
+/***************************************************************************
+ * Copyright (C) 2003 by Ajay Guleria *
+ * ajay_guleria at yahoo dot com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "clearcasepart.h"
+#include "commentdlg.h"
+
+#include <qfileinfo.h>
+#include <qpopupmenu.h>
+
+#include <kpopupmenu.h>
+#include <kdebug.h>
+#include <kdevgenericfactory.h>
+#include <klocale.h>
+#include <kprocess.h>
+#include <kmessagebox.h>
+#include <kapplication.h>
+
+#include "kdevcore.h"
+#include "kdevmakefrontend.h"
+#include "kdevdifffrontend.h"
+#include "kdevappfrontend.h"
+#include "execcommand.h"
+#include "domutil.h"
+#include "kdevmainwindow.h"
+#include "kdevproject.h"
+#include "kdevplugininfo.h"
+
+#include "clearcasefileinfoprovider.h"
+#include "clearcasemanipulator.h"
+
+
+static const KDevPluginInfo data("kdevclearcase");
+
+typedef KDevGenericFactory<ClearcasePart> ClearcaseFactory;
+K_EXPORT_COMPONENT_FACTORY( libkdevclearcase, ClearcaseFactory( data ) )
+
+ClearcasePart::ClearcasePart( QObject *parent, const char *name, const QStringList & )
+ : KDevVersionControl( &data, parent, name ? name : "ClearcasePart" ),
+ default_checkin(""),
+ default_checkout(""),
+ default_uncheckout("-rm"),
+ default_create("-ci"),
+ default_remove("-f"),
+ default_lshistory(""),
+ default_diff("-pred -diff"),
+ default_lscheckout("-recurse")
+{
+
+ // check if project directory is valid and cache it
+ isValidCCDirectory_ = ClearcaseManipulator::isCCRepository( project()->projectDirectory() );
+
+ fileInfoProvider_ = new ClearcaseFileinfoProvider(this);
+
+ setInstance(ClearcaseFactory::instance());
+ connect( core(), SIGNAL(contextMenu(QPopupMenu *, const Context *)),
+ this, SLOT(contextMenu(QPopupMenu *, const Context *)) );
+}
+
+ClearcasePart::~ClearcasePart()
+{}
+
+
+
+bool ClearcasePart::isValidDirectory(const QString &dirPath) const {
+ return isValidCCDirectory_;
+}
+
+
+void ClearcasePart::contextMenu(QPopupMenu *popup, const Context *context)
+{
+
+ if (context->hasType( Context::FileContext )) {
+ const FileContext *fcontext = static_cast<const FileContext*>(context);
+ popupfile_ = fcontext->urls().first().path();
+
+ QFileInfo fi(popupfile_);
+ popup->insertSeparator();
+
+ KPopupMenu *sub = new KPopupMenu(popup);
+ QString name = fi.fileName();
+ sub->insertTitle( i18n("Actions for %1").arg(name) );
+ sub->insertItem( i18n("Checkin"),
+ this, SLOT(slotCheckin()) );
+ sub->insertItem( i18n("Checkout"),
+ this, SLOT(slotCheckout()) );
+ sub->insertItem( i18n("Uncheckout"),
+ this, SLOT(slotUncheckout()) );
+ sub->insertSeparator();
+ sub->insertItem( i18n("Create Element"),
+ this, SLOT(slotCreate()) );
+ sub->insertItem( i18n("Remove Element"),
+ this, SLOT(slotRemove()) );
+ sub->insertSeparator();
+ sub->insertItem( i18n("History"),
+ this, SLOT(slotListHistory()) );
+ sub->insertSeparator();
+ sub->insertItem( i18n("Diff"),
+ this, SLOT(slotDiff()) );
+
+ sub->insertSeparator();
+ sub->insertItem( i18n("List Checkouts"),
+ this, SLOT(slotListCheckouts()) );
+
+ popup->insertItem(i18n("Clearcase"), sub);
+
+ if (!project() || !isValidDirectory( project()->projectDirectory() )) {
+ sub->setEnabled( false );
+ }
+ }
+}
+
+
+void ClearcasePart::slotCheckin()
+{
+ QString dir, name;
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
+
+ CcaseCommentDlg dlg(FALSE);
+ if (dlg.exec() == QDialog::Rejected)
+ return;
+
+ QDomDocument &dom = *this->projectDom();
+ QString message = DomUtil::readEntry(dom,"/kdevclearcase/checkin_options",default_checkin);
+ if(dlg.logMessage().isEmpty())
+ message += "-nc ";
+ else
+ message += "-c \"" + dlg.logMessage() + "\"";
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ command += " && ";
+ command += " cleartool checkin ";
+ command += message; // Already quoted, see above
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+}
+
+
+void ClearcasePart::slotCheckout()
+{
+ QString dir, name;
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
+
+ CcaseCommentDlg dlg(TRUE);
+ if (dlg.exec() == QDialog::Rejected)
+ return;
+
+ QDomDocument &dom = *this->projectDom();
+ QString message = DomUtil::readEntry(dom,"/kdevclearcase/checkout_options",default_checkout);
+ if(!dlg.isReserved())
+ message += "-unres ";
+ if(dlg.logMessage().isEmpty())
+ message += "-nc ";
+ else
+ message += "-c \"" + dlg.logMessage() + "\"";
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ command += " && cleartool checkout ";
+ command += message;
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
+}
+
+
+void ClearcasePart::slotUncheckout()
+{
+ QString dir, name;
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
+
+ QDomDocument &dom = *this->projectDom();
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ command += " && cleartool uncheckout ";
+ command += DomUtil::readEntry(dom,"/kdevclearcase/uncheckout_options",default_uncheckout);
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
+}
+
+void ClearcasePart::slotCreate()
+{
+ QFileInfo fi(popupfile_);
+ QString dir = fi.dirPath();
+ QString name = fi.fileName();
+
+ QDomDocument &dom = *this->projectDom();
+
+ // Checking whether current directory is checked out or not is cumbersome so skip it for now
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ QFileInfo di(dir);
+ if(!di.isWritable()) { // Work-around to check if directory is checked out
+ command += " && cleartool co -unres -nc ";
+ command += KShellProcess::quote(dir);
+ }
+ command += " && cleartool mkelem ";
+ if(fi.isDir())
+ command += " -elt directory ";
+ command += DomUtil::readEntry(dom,"/kdevclearcase/create_options",default_create);
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
+}
+
+
+void ClearcasePart::slotRemove()
+{
+ QFileInfo fi(popupfile_);
+ QString dir = fi.dirPath();
+ QString name = fi.fileName();
+
+ QDomDocument &dom = *this->projectDom();
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ QFileInfo di(dir);
+ if(!di.isWritable()) { // Work-around to check if directory is checked out
+ command += " && cleartool co -unres -nc ";
+ command += KShellProcess::quote(dir);
+ }
+ command += " && cleartool rmname "; // Don't use rm command
+ command += DomUtil::readEntry(dom,"/kdevclearcase/remove_options",default_remove);
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
+}
+
+void ClearcasePart::slotListHistory()
+{
+ QFileInfo fi(popupfile_);
+ QString dir = fi.dirPath();
+ QString name = fi.fileName();
+ QStringList args;
+ QStringList env;
+ QString str;
+
+ QDomDocument &dom = *this->projectDom();
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ command += " && cleartool lshistory ";
+ command += DomUtil::readEntry(dom, "/kdevclearcase/lshistory_options", default_lshistory);
+ command += " ";
+ command += KShellProcess::quote(name);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+}
+
+void ClearcasePart::slotDiff()
+{
+ QFileInfo fi(popupfile_);
+ QString dir = fi.dirPath();
+ QString name = fi.fileName();
+ QStringList args;
+ QStringList env;
+ QString str;
+
+ QDomDocument &dom = *this->projectDom();
+
+ args << "diff";
+ str = DomUtil::readEntry(dom,"/kdevclearcase/diff_options",default_diff);
+ if (str.length()) {
+ QStringList list = QStringList::split(' ',str);
+ for(QStringList::Iterator it = list.begin(); it != list.end(); ++it) args << *it;
+ }
+
+ args << name;
+
+ ExecCommand* cmv = new ExecCommand( "cleartool", args, dir, env, this );
+ connect( cmv, SIGNAL(finished( const QString&, const QString& )),
+ this, SLOT(slotDiffFinished( const QString&, const QString& )) );
+}
+
+
+void ClearcasePart::slotDiffFinished( const QString& diff, const QString& err )
+{
+ if ( diff.isNull() && err.isNull() ) {
+ kdDebug(9000) << "clearcase diff canceled" << endl;
+ return; // user pressed cancel or an error occured
+ }
+
+ if ( diff.isEmpty() && !err.isEmpty() ) {
+ KMessageBox::detailedError( 0, i18n("Clearcase output errors during diff."), err, i18n("Errors During Diff") );
+ return;
+ }
+
+ if ( !err.isEmpty() ) {
+ int s = KMessageBox::warningContinueCancelList( 0, i18n("Clearcase outputted errors during diff. Do you still want to continue?"),
+ QStringList::split( "\n", err, false ), i18n("Errors During Diff") );
+ if ( s != KMessageBox::Continue )
+ return;
+ }
+
+ if ( diff.isEmpty() ) {
+ KMessageBox::information( 0, i18n("There is no difference to the repository."), i18n("No Difference Found") );
+ return;
+ }
+
+ if (KDevDiffFrontend *diffFrontend = extension<KDevDiffFrontend>("KDevelop/DiffFrontend"))
+ diffFrontend->showDiff( diff );
+}
+
+void ClearcasePart::slotListCheckouts()
+{
+ QString dir;
+ QFileInfo fi(popupfile_);
+ if (fi.isDir()) {
+ dir = fi.absFilePath();
+ } else {
+ dir = fi.dirPath();
+ }
+
+ QDomDocument &dom = *this->projectDom();
+
+ QString command("cd ");
+ command += KShellProcess::quote(dir);
+ command += " && cleartool lsco ";
+ command += DomUtil::readEntry(dom, "/kdevclearcase/lscheckout_options", default_lscheckout);
+
+ if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
+ makeFrontend->queueCommand(dir, command);
+
+}
+
+
+#include "clearcasepart.moc"
diff --git a/vcs/clearcase/clearcasepart.h b/vcs/clearcase/clearcasepart.h
new file mode 100644
index 00000000..2f82b61d
--- /dev/null
+++ b/vcs/clearcase/clearcasepart.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ * Copyright (C) 2003 by Ajay Guleria *
+ * ajay_guleria at yahoo dot com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _CLEARCASEPART_H_
+#define _CLEARCASEPART_H_
+
+#include <kdevversioncontrol.h>
+
+class Context;
+class QPopupMenu;
+
+class ClearcasePart : public KDevVersionControl {
+ Q_OBJECT
+
+public:
+ ClearcasePart( QObject *parent, const char *name, const QStringList & );
+ ~ClearcasePart();
+
+ const QString default_checkin;
+ const QString default_checkout;
+ const QString default_uncheckout;
+ const QString default_create;
+ const QString default_remove;
+ const QString default_lshistory;
+ const QString default_lscheckout;
+ const QString default_diff;
+
+ virtual void createNewProject(const QString& dir) {}
+ virtual bool fetchFromRepository() { return true; }
+ virtual KDevVCSFileInfoProvider *fileInfoProvider() const { return fileInfoProvider_; }
+ virtual bool isValidDirectory(const QString &dirPath) const;
+
+private slots:
+ void contextMenu(QPopupMenu *popup, const Context *context);
+
+ void slotCheckin();
+ void slotCheckout();
+ void slotUncheckout();
+
+ void slotCreate();
+ void slotRemove();
+ void slotDiff();
+ void slotDiffFinished( const QString& diff, const QString& err );
+ void slotListHistory();
+ void slotListCheckouts();
+
+
+private:
+
+ bool isValidCCDirectory_;
+ QString popupfile_;
+ QString viewname;
+
+ KDevVCSFileInfoProvider *fileInfoProvider_;
+};
+
+#endif
diff --git a/vcs/clearcase/commentdlg.cpp b/vcs/clearcase/commentdlg.cpp
new file mode 100644
index 00000000..36b3bc6f
--- /dev/null
+++ b/vcs/clearcase/commentdlg.cpp
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * Copyright (C) 2003 by Ajay Guleria *
+ * ajay_guleria at yahoo dot com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include "commentdlg.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <kapplication.h>
+#include <kbuttonbox.h>
+#include <klocale.h>
+#include <kmessagebox.h>
+#include <kstdguiitem.h>
+
+CcaseCommentDlg::CcaseCommentDlg(bool bCheckin)
+ : QDialog(0, "", true)
+{
+ setCaption( i18n("Clearcase Comment") );
+
+ QBoxLayout *layout = new QVBoxLayout(this, 10);
+
+ QLabel *messagelabel = new QLabel(i18n("Enter log message:"), this);
+ messagelabel->setMinimumSize(messagelabel->sizeHint());
+ layout->addWidget(messagelabel, 0);
+
+ _edit = new QMultiLineEdit(this);
+ QFontMetrics fm(_edit->fontMetrics());
+ _edit->setMinimumSize(fm.width("0")*40, fm.lineSpacing()*3);
+ layout->addWidget(_edit, 10);
+
+ QBoxLayout *layout2 = new QHBoxLayout(layout);
+ if(bCheckin) {
+ _check = new QCheckBox(i18n("Reserve"), this);
+ layout2->addWidget(_check);
+ }
+
+ KButtonBox *buttonbox = new KButtonBox(this);
+ buttonbox->addStretch();
+ QPushButton *ok = buttonbox->addButton(KStdGuiItem::ok());
+ QPushButton *cancel = buttonbox->addButton(KStdGuiItem::cancel());
+ connect(ok, SIGNAL(clicked()), SLOT(accept()) );
+ connect(cancel, SIGNAL(clicked()), SLOT(reject()) );
+ ok->setDefault(true);
+ buttonbox->layout();
+ layout2->addWidget(buttonbox, 0);
+
+ layout->activate();
+ adjustSize();
+}
+
+
+
+#include "commentdlg.moc"
diff --git a/vcs/clearcase/commentdlg.h b/vcs/clearcase/commentdlg.h
new file mode 100644
index 00000000..8ac50a38
--- /dev/null
+++ b/vcs/clearcase/commentdlg.h
@@ -0,0 +1,32 @@
+/***************************************************************************
+ * Copyright (C) 2003 by Ajay Guleria *
+ * ajay_guleria at yahoo dot com *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _CLEARCASECOMMENTDLG_H_
+#define _CLEARCASECOMMENTDLG_H_
+
+#include <qcheckbox.h>
+#include <qdialog.h>
+#include <qmultilineedit.h>
+
+class CcaseCommentDlg : public QDialog
+{
+Q_OBJECT
+public:
+ CcaseCommentDlg(bool = FALSE);
+ QString logMessage() { return _edit->text(); };
+ bool isReserved() { return (_check) ? _check->isChecked() : FALSE; };
+
+private:
+ QMultiLineEdit *_edit;
+ QCheckBox* _check;
+};
+
+#endif
diff --git a/vcs/clearcase/integrator/Makefile.am b/vcs/clearcase/integrator/Makefile.am
new file mode 100644
index 00000000..cd998856
--- /dev/null
+++ b/vcs/clearcase/integrator/Makefile.am
@@ -0,0 +1,13 @@
+INCLUDES = -I$(top_srcdir)/lib/interfaces \
+ -I$(top_srcdir)/lib/interfaces/extensions -I$(top_srcdir)/lib/interfaces/extras -I$(top_srcdir)/lib/util \
+ $(all_includes)
+METASOURCES = AUTO
+kde_module_LTLIBRARIES = libclearcaseintegrator.la
+libclearcaseintegrator_la_LDFLAGS = -avoid-version -no-undefined $(all_libraries)
+libclearcaseintegrator_la_LIBADD =\
+ $(top_builddir)/lib/interfaces/extras/libkdevextras.la\
+ $(top_builddir)/lib/libkdevelop.la
+kde_services_DATA = kdevclearcaseintegrator.desktop
+noinst_HEADERS = clearcaseintegrator.h ccintegratordlg.h
+libclearcaseintegrator_la_SOURCES = clearcaseintegrator.cpp \
+ ccintegratordlgbase.ui ccintegratordlg.cpp
diff --git a/vcs/clearcase/integrator/ccintegratordlg.cpp b/vcs/clearcase/integrator/ccintegratordlg.cpp
new file mode 100644
index 00000000..3e58aada
--- /dev/null
+++ b/vcs/clearcase/integrator/ccintegratordlg.cpp
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Alexander Dymo *
+ * adymo@kdevelop.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#include "ccintegratordlg.h"
+
+CCIntegratorDlg::CCIntegratorDlg(QWidget *parent, const char *name)
+ :CCIntegratorDlgBase(parent, name)
+{
+}
+
+void CCIntegratorDlg::accept()
+{
+}
+
+void CCIntegratorDlg::init(const QString &/*projectName*/, const QString &/*projectLocation*/)
+{
+}
+
+QWidget *CCIntegratorDlg::self()
+{
+ return const_cast<CCIntegratorDlg*>(this);
+}
+
+#include "ccintegratordlg.moc"
diff --git a/vcs/clearcase/integrator/ccintegratordlg.h b/vcs/clearcase/integrator/ccintegratordlg.h
new file mode 100644
index 00000000..0b197437
--- /dev/null
+++ b/vcs/clearcase/integrator/ccintegratordlg.h
@@ -0,0 +1,36 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Alexander Dymo *
+ * adymo@kdevelop.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef CCINTEGRATORDLG_H
+#define CCINTEGRATORDLG_H
+
+#include "ccintegratordlgbase.h"
+#include <kdevvcsintegrator.h>
+
+class CCIntegratorDlg: public CCIntegratorDlgBase, public VCSDialog {
+Q_OBJECT
+public:
+ CCIntegratorDlg(QWidget *parent = 0, const char *name = 0);
+
+ virtual void accept();
+ virtual void init(const QString &projectName, const QString &projectLocation);
+ virtual QWidget *self();
+};
+
+#endif
diff --git a/vcs/clearcase/integrator/ccintegratordlgbase.ui b/vcs/clearcase/integrator/ccintegratordlgbase.ui
new file mode 100644
index 00000000..ae961a9f
--- /dev/null
+++ b/vcs/clearcase/integrator/ccintegratordlgbase.ui
@@ -0,0 +1,47 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>CCIntegratorDlgBase</class>
+<widget class="QWidget">
+ <property name="name">
+ <cstring>CCIntegratorDlgBase</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>600</width>
+ <height>480</height>
+ </rect>
+ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <widget class="QLabel">
+ <property name="name">
+ <cstring>textLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>No options available for this VCS.</string>
+ </property>
+ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer2</cstring>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="sizeType">
+ <enum>Expanding</enum>
+ </property>
+ <property name="sizeHint">
+ <size>
+ <width>20</width>
+ <height>437</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+</widget>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/vcs/clearcase/integrator/clearcaseintegrator.cpp b/vcs/clearcase/integrator/clearcaseintegrator.cpp
new file mode 100644
index 00000000..3ea4295f
--- /dev/null
+++ b/vcs/clearcase/integrator/clearcaseintegrator.cpp
@@ -0,0 +1,54 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Alexander Dymo *
+ * adymo@kdevelop.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#include "clearcaseintegrator.h"
+
+#include <kdevgenericfactory.h>
+#include <kdevplugininfo.h>
+
+#include "ccintegratordlg.h"
+
+static const KDevPluginInfo data("kdevclearcaseintegrator");
+typedef KDevGenericFactory<ClearcaseIntegrator> ClearcaseIntegratorFactory;
+K_EXPORT_COMPONENT_FACTORY( libclearcaseintegrator, ClearcaseIntegratorFactory(data) )
+
+ClearcaseIntegrator::ClearcaseIntegrator(QObject* parent, const char* name,
+ const QStringList // args
+ )
+ :KDevVCSIntegrator(parent, name)
+{
+}
+
+ClearcaseIntegrator::~ClearcaseIntegrator()
+{
+}
+
+VCSDialog* ClearcaseIntegrator::fetcher(QWidget* // parent
+ )
+{
+ return 0;
+}
+
+VCSDialog* ClearcaseIntegrator::integrator(QWidget* parent)
+{
+ CCIntegratorDlg *dlg = new CCIntegratorDlg(parent);
+ return dlg;
+}
+
+#include "clearcaseintegrator.moc"
diff --git a/vcs/clearcase/integrator/clearcaseintegrator.h b/vcs/clearcase/integrator/clearcaseintegrator.h
new file mode 100644
index 00000000..a6aaf396
--- /dev/null
+++ b/vcs/clearcase/integrator/clearcaseintegrator.h
@@ -0,0 +1,39 @@
+/***************************************************************************
+ * Copyright (C) 2004 by Alexander Dymo *
+ * adymo@kdevelop.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+#ifndef CLEARCASEINTEGRATOR_H
+#define CLEARCASEINTEGRATOR_H
+
+#include <kdevvcsintegrator.h>
+
+#include <qstringlist.h>
+
+class ClearcaseIntegrator : public KDevVCSIntegrator
+{
+Q_OBJECT
+public:
+ ClearcaseIntegrator(QObject* parent, const char* name, const QStringList args = QStringList());
+ ~ClearcaseIntegrator();
+
+ virtual VCSDialog* fetcher(QWidget* parent);
+ virtual VCSDialog* integrator(QWidget* parent);
+
+};
+
+#endif
diff --git a/vcs/clearcase/integrator/kdevclearcaseintegrator.desktop b/vcs/clearcase/integrator/kdevclearcaseintegrator.desktop
new file mode 100644
index 00000000..b9957370
--- /dev/null
+++ b/vcs/clearcase/integrator/kdevclearcaseintegrator.desktop
@@ -0,0 +1,44 @@
+[Desktop Entry]
+Type=Service
+Name=KDevClearcaseIntegrator
+Name[da]=KDevelop Clearcase-integration
+Name[nds]=KDevelop-Clearcase-Integreren
+Name[sk]=KDev ClearCase integrácia
+Name[sv]=KDevelop Clearcase-integration
+Name[zh_TW]=KDevelop Clearcase 整合器
+Comment=Clearcase Project Integration Facility
+Comment[ca]=Faciliat per a la integració amb projectes Clearcase
+Comment[da]=Clearcase projektintegration
+Comment[de]=Clearcase-Integration
+Comment[el]=Λειτουργία ενσωμάτωσης Clearcase στο έργο
+Comment[es]=Facilidad para integración con proyectos Clearcase
+Comment[et]=Clearcase projekti põimimisvahend
+Comment[eu]=Clearcase proiektu-integraziorako tresna
+Comment[fa]=تسهیلات مجتمع‌سازی پروژۀ Clearcase
+Comment[fr]=Fonction d'intégration pour un projet utilisant Clearcase
+Comment[gl]=Utilidade para a integración de proxectos ClearCase
+Comment[hu]=Integrálás Clearcase-projektekkel
+Comment[it]=Funzione di integrazione del progetto ClearCase
+Comment[ja]=Clearcase プロジェクト統合ツール
+Comment[ms]=Kemudahan Integrasi Projek Clearcase
+Comment[nds]=Projektintegreren för Clearcase
+Comment[ne]=क्लेयरकेस परियोजना एकिकरण सुविधा
+Comment[nl]=Clearcase-projectintegratie
+Comment[pl]=Integracja z Clearcase
+Comment[pt]=Integração com Projectos Clearcase
+Comment[pt_BR]=Facilidade de Integração ao Projeto de Clearcase
+Comment[ru]=Интеграция Clearcase
+Comment[sk]=Integrácia ClearCase projektu
+Comment[sr]=Интеграција Clearcase-а у пројекат
+Comment[sr@Latn]=Integracija Clearcase-a u projekat
+Comment[sv]=Funktion för integrering av Clearcase i projekt
+Comment[tr]=Clearcase Proje Bütünleştirilmesi Aracı
+Comment[zh_CN]=Clearcase 工程集成功能
+Comment[zh_TW]=Clearcase 專案整合工具
+Exec=blubb
+ServiceTypes=KDevelop/VCSIntegrator
+X-KDE-Library=libclearcaseintegrator
+X-KDevelop-Default=false
+X-KDevelop-VCS=ClearCase
+X-KDevelop-VCSPlugin=kdevclearcase
+X-KDevelop-Version=5
diff --git a/vcs/clearcase/kdevclearcase.desktop b/vcs/clearcase/kdevclearcase.desktop
new file mode 100644
index 00000000..5a691980
--- /dev/null
+++ b/vcs/clearcase/kdevclearcase.desktop
@@ -0,0 +1,82 @@
+[Desktop Entry]
+Type=Service
+Exec=blubb
+Comment=A plugin that provides support for Rational ClearCase, a large version control and build management system. http://www.rational.com/products/clearcase/index.jsp
+Comment[ca]=Un connector que proporciona suport per a ClearCase de Rational, un potent sistema de control de versions i gestió de compilacions. http://www.rational.com/products/clearcase/index.jsp
+Comment[da]=Et plugin der sørger for støtte for Rational ClearCase, et stort versionskontrol og byggehåndteringssystem. http://www.rational.com/products/clearcase/index.jsp
+Comment[de]=Eine Komponente, die eine Schnittstelle zu Rational ClearCase zur Verfügung stellt, einem umfangreichen Werkzeug zur Verwaltung von Versionen und Erstellungsvorgängen. http://www.rational.com/products/clearcase/index.jsp
+Comment[el]=Ένα πρόσθετο που προσφέρει υποστήριξη για το Rational ClearCase, ένα μεγάλο σύστημα διαχείρισης ελέγχου εκδόσεων και κατασκευής. http://www.rational.com/products/clearcase/index.jsp
+Comment[es]=Un complemento que proporciona soporte para Rational ClearCase, un potente sistema de control de versiones y administración de compilaciones (http://www.rational.com/products/clearcase/index.jsp)
+Comment[et]=See plugin pakub suure versioonikontrolli ja ehitamise haldamise süsteemi Rational ClearCase toetust. http://www.rational.com/products/clearcase/index.jsp
+Comment[eu]=Rational ClearCase euskarri plugin bat. ClearCase bertsio kontrol eta eraikuntza kudeaketa sistema handi bat da. http://www.rational.com/products/clearcase/index.jsp
+Comment[fa]=وصله‌ای که پشتیبانی برای Rational ClearCase، یک کنترل نسخۀ بزرگ و سیستم مدیریت ساختن فراهم ‌می‌کند. http://www.rational.com/products/clearcase/index.jsp
+Comment[fr]=Un module externe qui offre une prise en charge pour Rational ClearCase, un puissant système de contrôle de versions et de gestion de compilation. http://www.rational.com/products/clearcase/index.jsp
+Comment[gl]=Extensión que proporciona soporte para Rational ClearCase, un gran sistema de control de versións e xestión da compilación. http://www.rational.com/products/clearcase/index.jsp
+Comment[hu]=Bővítőmodul a Rational ClearCase komplex verziókövető rendszerhez. http://www.rational.com/products/clearcase/index.jsp
+Comment[it]=Un plugin che offre il supporto per Rational ClearCase, un sistema molto vasto per il controllo di versione e la compilazione. http://www.rational.com/products/clearcase/index.jsp
+Comment[ja]=大規模なバージョンコントロールやビルド管理システムの合理的な ClearCase の支援を提供するプラグイン。http://www.rational.com/products/clearcase/index.jsp
+Comment[ms]=Plugin yang menyediakan sokongan untuk Rational ClearCase, sistem kawalan versi dan pengurus pembinaan yang besar. http://www.rational.com/products/clearcase/index.jsp
+Comment[nds]=En Moduul, dat Ünnerstütten för "Rational ClearCase" praatstellt, en groot Verschoonkuntrull- un Opstellen-Pleegsysteem. http://www.rational.com/products/clearcase/index.jsp
+Comment[ne]=एउटा प्लगइन जसले र्यासनल क्लेयरकेस, एउटा ठूलो संस्करण नियन्त्रण र निर्माण व्यवस्थापन प्रणालीका लागि समर्थन प्रदान गर्दछ । http://www.rational.com/products/clearcase/index.jsp
+Comment[nl]=Een plugin die ondersteuning biedt voor Rational ClearCase, een omvangrijk versiebeheer en buildmanagement-systeem. Zie http://www.rational.com/products/clearcase/index.jsp
+Comment[pl]=Wtyczka udostępniająca obsługę Rational ClearCase, dużego systemu kontroli wersji i zarządzania budowaniem. http://www.rational.com/products/clearcase/index.jsp
+Comment[pt]=Um 'plugin' que oferece o suporte para o ClearCase da Rational, um sistema grande de controlo de versões e de gestão de compilações. http://www.rational.com/products/clearcase/index.jsp
+Comment[pt_BR]=Um plug-in que fornece suporte para o Rational ClearCase, um grande sistema de controle de versão e gerenciamento de compilação. http://www.rational.com/products/clearcase/index.jsp
+Comment[ru]=Модуль поддержки Rational ClearCase, мощной системы контроля версий и управления проектом. http://www.rational.com/products/clearcase/index.jsp
+Comment[sk]=Modul poskytuje podporu pre Rational ClearCase, riadenie verzií a projektový manažment.
+Comment[sl]=Vstavek, ki omogoča podporo za Rational ClearCase, velik sistem za upravljanje z različicami in grajenjem. http://www.rational.com/products/clearcase/index.jsp
+Comment[sr]=Прикључак који обезбеђује подршку за Rational-ов ClearCase, велики систем за контролу верзија и управљање градњом. http://www.rational.com/products/clearcase/index.jsp
+Comment[sr@Latn]=Priključak koji obezbeđuje podršku za Rational-ov ClearCase, veliki sistem za kontrolu verzija i upravljanje gradnjom. http://www.rational.com/products/clearcase/index.jsp
+Comment[sv]=Ett insticksprogram som stöder Rational ClearCase, ett omfattande versions- och bygghanteringssystem. http://www.rational.com/products/clearcase/index.jsp
+Comment[ta]=சொருகி ரெஷியனல் தெளிவான எழுத்தை ஆதரிக்கும்,கடைசி பதிப்பை இயக்க மற்றும் மேலாளர் அமைப்பை கட்ட.http://www.rational.com/products/clearcase/index.jsp
+Comment[tg]=Модули тарафдори Rational ClearCase, барномаи назораткунандаи калони тафсир ва идоракунии лоиҳаҳо мебошад.http://www.rational.com/products/clearcase/index.jsp
+Comment[tr]=Mantıksal ClearCase, büyük bir kontrol ve yapım yönetim sistemi, için destek sağlayan bir eklenti. http://www.rational.com/products/clearcase/index.jsp
+Comment[zh_CN]=提供 Rational ClearCase 支持,一个大型的版本控制和编译管理系统。http://www.rational.com/products/clearcase/index.jsp
+Comment[zh_TW]=提供支援 Rational ClearCase,大型的版本控制與建立管理系統的外掛程式。http://www.rational.com/products/clearcase/index.jsp
+Name=KDevClearCase
+Name[da]=KDevelop ClearCase
+Name[de]=Unterstützung für ClearCase (KDevelop)
+Name[hi]=के-डेव-क्लीयर-केस
+Name[nds]=ClearCase-Ünnerstütten för KDevelop
+Name[sk]=KDev ClearCase
+Name[sv]=KDevelop ClearCase
+Name[ta]=KDevதெளிவானஎழுத்து
+Name[zh_TW]=KDevelop ClearCase
+GenericName=ClearCase Integration
+GenericName[ca]=Integració amb ClearClase
+GenericName[da]=ClearCase integration
+GenericName[de]=ClearCase-Integration
+GenericName[el]=Ενσωμάτωση ClearCase
+GenericName[es]=Integración con ClearClase
+GenericName[et]=ClearCase'i integratsioon
+GenericName[eu]=ClearCase integrazioa
+GenericName[fa]=مجتمع‌سازی ClearCase
+GenericName[fr]=Intégration de « ClearCase »
+GenericName[ga]=Comhtháthú ClearCase
+GenericName[gl]=Integración de ClearCase
+GenericName[hi]=क्लीयर-केस इंटीग्रेशन
+GenericName[hu]=ClearCase-integráció
+GenericName[it]=Integrazione di ClearCase
+GenericName[ja]=ClearCase 統合
+GenericName[ms]=Intergrasi ClearCase
+GenericName[nds]=ClearCase-Integreren
+GenericName[ne]=क्लेयरकेस एकिकरण
+GenericName[nl]=ClearCase-integratie
+GenericName[pl]=Integracja z ClearCase
+GenericName[pt]=Integração com o ClearCase
+GenericName[pt_BR]=Integração com o ClearCase
+GenericName[ru]=Интеграция ClearCase
+GenericName[sk]=Integrácia ClearCase
+GenericName[sl]=Integracija ClearCase
+GenericName[sr]=Интеграција ClearCase-а
+GenericName[sr@Latn]=Integracija ClearCase-a
+GenericName[sv]=Integrering av ClearCase
+GenericName[ta]=தெளிவான எழுத்து ஒருங்கிணைப்பு
+GenericName[tg]=Интегратсияи ClearCase
+GenericName[tr]=ClearCase Bütünleştirmesi
+GenericName[zh_CN]=ClearCase集成
+GenericName[zh_TW]=ClearCase 整合
+ServiceTypes=KDevelop/VersionControl
+X-KDE-Library=libkdevclearcase
+X-KDevelop-Version=5
+X-KDevelop-Properties=VCS,ClearcaseVCS