ClearCase integration with QMake project (patch included, help needed)
Philippe Hétroy
Phil at hetroy.org
Wed Sep 14 17:22:17 UTC 2005
Hi,
You will find attached a clearcase part patch against kdevelop.3.2.2 and
certainly above.
This patch contains also the modifications made by Patrick Noffke. This
version supports :
* adding new entries in the clearcase menu
* detects the clearcase environment and activates the menu. It does not
check a hard coded path anymore!
* adds the clearcase VCS file infos
* enables VCS synchronisation when right clicking on a folder...
Many things can still be improved. I am opened to any suggestions.
Cheers,
Philippe
--
Philippe Hétroy, Phil at hetroy.org
-------------- next part --------------
diff -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/Makefile.am kdevelop-3.2.2.patch/vcs/clearcase/Makefile.am
--- kdevelop-3.2.2.ORIG/vcs/clearcase/Makefile.am 2005-05-23 14:10:08.000000000 +0200
+++ kdevelop-3.2.2.patch/vcs/clearcase/Makefile.am 2005-09-12 23:37:30.000000000 +0200
@@ -7,11 +7,12 @@ kde_module_LTLIBRARIES = libkdevclearcas
libkdevclearcase_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN)
libkdevclearcase_la_LIBADD = $(top_builddir)/lib/libkdevelop.la
-libkdevclearcase_la_SOURCES = clearcasepart.cpp commentdlg.cpp
+libkdevclearcase_la_SOURCES = clearcasepart.cpp commentdlg.cpp \
+ clearcasefileinfoprovider.cpp clearcasemanipulator.cpp
METASOURCES = AUTO
servicedir = $(kde_servicesdir)
service_DATA = kdevclearcase.desktop
-SUBDIRS = integrator
\ No newline at end of file
+SUBDIRS = integrator
diff -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/README.dox kdevelop-3.2.2.patch/vcs/clearcase/README.dox
--- kdevelop-3.2.2.ORIG/vcs/clearcase/README.dox 2005-05-23 14:10:08.000000000 +0200
+++ kdevelop-3.2.2.patch/vcs/clearcase/README.dox 2005-09-12 22:51:57.000000000 +0200
@@ -14,19 +14,29 @@ To use clearcase functions, you need to:
-# 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, and rmname (not rmelem).
+ 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.
- -# No support for snapshot views yet. I haven't worked with them.
+ -# 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 Hétroy</a>
-\feature Integrates Clearcase configuration management system into KDevelop.
+\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.
-\feature If selected file is not a clearcase file, "ClearCase" menu does not appear
- in the popup. A filename must start with /view or /vobs to qualify as a
- clearcase filename.
+
+
+\todo Update the tree view when a VCS action is done (checkout, checkin...)
+\todo Add a clearcase logging window
*/
diff -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasefileinfoprovider.cpp kdevelop-3.2.2.patch/vcs/clearcase/clearcasefileinfoprovider.cpp
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasefileinfoprovider.cpp 1970-01-01 01:00:00.000000000 +0100
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasefileinfoprovider.cpp 2005-09-12 22:40:45.000000000 +0200
@@ -0,0 +1,66 @@
+//
+// C++ Implementation: clearcasefileinfoprovider
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel at 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 ) {
+
+ 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 -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasefileinfoprovider.h kdevelop-3.2.2.patch/vcs/clearcase/clearcasefileinfoprovider.h
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasefileinfoprovider.h 1970-01-01 01:00:00.000000000 +0100
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasefileinfoprovider.h 2005-09-12 22:39:39.000000000 +0200
@@ -0,0 +1,50 @@
+//
+// C++ Interface: clearcasefileinfoprovider
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel at 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"
+
+
+/**
+ at 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 );
+
+
+private:
+
+ QStringList ClearcaseFileinfoProvider::registeredEntryList() const;
+
+
+private:
+ ClearcaseManipulator ccManipulator_;
+ QString curDirPath_;
+ VCSFileInfoMap* vcsInfo_;
+ ClearcasePart* kdevVCS_;
+
+};
+
+#endif
diff -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasemanipulator.cpp kdevelop-3.2.2.patch/vcs/clearcase/clearcasemanipulator.cpp
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasemanipulator.cpp 1970-01-01 01:00:00.000000000 +0100
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasemanipulator.cpp 2005-09-12 22:46:39.000000000 +0200
@@ -0,0 +1,87 @@
+//
+// C++ Implementation: ClearcaseManipulator
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel at 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>
+
+
+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 {
+ VCSFileInfo::Unknown;
+ }
+
+
+ (*fileInfoMap)[outputList[ClearcaseManipulator::Name]] = VCSFileInfo(outputList[ClearcaseManipulator::Name], outputList[ClearcaseManipulator::Version], outputList[ClearcaseManipulator::RepositoryVersion], state);
+ }
+ }
+
+ pclose(outputFile);
+
+ return fileInfoMap;
+}
+
+
+
diff -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasemanipulator.h kdevelop-3.2.2.patch/vcs/clearcase/clearcasemanipulator.h
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasemanipulator.h 1970-01-01 01:00:00.000000000 +0100
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasemanipulator.h 2005-09-12 22:43:00.000000000 +0200
@@ -0,0 +1,49 @@
+//
+// C++ Interface: ClearcaseManipulator
+//
+// Description:
+//
+//
+// Author: KDevelop Authors <kdevelop-devel at 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 -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasepart.cpp kdevelop-3.2.2.patch/vcs/clearcase/clearcasepart.cpp
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasepart.cpp 2005-05-23 14:10:08.000000000 +0200
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasepart.cpp 2005-09-12 22:32:06.000000000 +0200
@@ -30,8 +30,13 @@
#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;
@@ -39,36 +44,44 @@ K_EXPORT_COMPONENT_FACTORY( libkdevclear
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_diff("-pred -diff")
+ 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();
-
- // check if this file belongs to a clearcase directory
- // i.e. is the file /view/<view_name/vobs/... format?
- QString s1 = popupfile.section('/', 1, 1);
- QString s2 = popupfile.section('/', 2, 2);
- QString s3 = popupfile.section('/', 3, 3);
- if(s1 == "view" && s3 == "vobs" || s1 == "vobs")
- viewname = s2;
- else
- return;
+ popupfile_ = fcontext->urls().first().path();
- QFileInfo fi(popupfile);
+ QFileInfo fi(popupfile_);
popup->insertSeparator();
KPopupMenu *sub = new KPopupMenu(popup);
@@ -86,24 +99,31 @@ void ClearcasePart::contextMenu(QPopupMe
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);
- if (fi.isDir()) {
- dir = fi.absFilePath();
- name = ".";
- } else {
- dir = fi.dirPath();
- name = fi.fileName();
- }
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
CcaseCommentDlg dlg(FALSE);
if (dlg.exec() == QDialog::Rejected)
@@ -112,9 +132,9 @@ void ClearcasePart::slotCheckin()
QDomDocument &dom = *this->projectDom();
QString message = DomUtil::readEntry(dom,"/kdevclearcase/checkin_options",default_checkin);
if(dlg.logMessage().isEmpty())
- message += "-nc ";
+ message += "-nc ";
else
- message += "-c \"" + dlg.logMessage() + "\"";
+ message += "-c \"" + dlg.logMessage() + "\"";
QString command("cd ");
command += KShellProcess::quote(dir);
@@ -132,14 +152,9 @@ void ClearcasePart::slotCheckin()
void ClearcasePart::slotCheckout()
{
QString dir, name;
- QFileInfo fi(popupfile);
- if (fi.isDir()) {
- dir = fi.absFilePath();
- name = ".";
- } else {
- dir = fi.dirPath();
- name = fi.fileName();
- }
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
CcaseCommentDlg dlg(TRUE);
if (dlg.exec() == QDialog::Rejected)
@@ -148,11 +163,11 @@ void ClearcasePart::slotCheckout()
QDomDocument &dom = *this->projectDom();
QString message = DomUtil::readEntry(dom,"/kdevclearcase/checkout_options",default_checkout);
if(!dlg.isReserved())
- message += "-unres ";
+ message += "-unres ";
if(dlg.logMessage().isEmpty())
- message += "-nc ";
+ message += "-nc ";
else
- message += "-c \"" + dlg.logMessage() + "\"";
+ message += "-c \"" + dlg.logMessage() + "\"";
QString command("cd ");
command += KShellProcess::quote(dir);
@@ -163,20 +178,17 @@ void ClearcasePart::slotCheckout()
if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
}
void ClearcasePart::slotUncheckout()
{
QString dir, name;
- QFileInfo fi(popupfile);
- if (fi.isDir()) {
- dir = fi.absFilePath();
- name = ".";
- } else {
- dir = fi.dirPath();
- name = fi.fileName();
- }
+ QFileInfo fi(popupfile_);
+ dir = fi.dirPath();
+ name = fi.fileName();
QDomDocument &dom = *this->projectDom();
@@ -189,11 +201,13 @@ void ClearcasePart::slotUncheckout()
if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
}
void ClearcasePart::slotCreate()
{
- QFileInfo fi(popupfile);
+ QFileInfo fi(popupfile_);
QString dir = fi.dirPath();
QString name = fi.fileName();
@@ -216,12 +230,14 @@ void ClearcasePart::slotCreate()
if (KDevMakeFrontend *makeFrontend = extension<KDevMakeFrontend>("KDevelop/MakeFrontend"))
makeFrontend->queueCommand(dir, command);
+
+ emit finishedFetching(dir);
}
void ClearcasePart::slotRemove()
{
- QFileInfo fi(popupfile);
+ QFileInfo fi(popupfile_);
QString dir = fi.dirPath();
QString name = fi.fileName();
@@ -241,12 +257,35 @@ void ClearcasePart::slotRemove()
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);
+ QFileInfo fi(popupfile_);
QString dir = fi.dirPath();
QString name = fi.fileName();
QStringList args;
@@ -261,6 +300,7 @@ void ClearcasePart::slotDiff()
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 );
@@ -268,6 +308,7 @@ void ClearcasePart::slotDiff()
this, SLOT(slotDiffFinished( const QString&, const QString& )) );
}
+
void ClearcasePart::slotDiffFinished( const QString& diff, const QString& err )
{
if ( diff.isNull() && err.isNull() ) {
@@ -296,4 +337,27 @@ void ClearcasePart::slotDiffFinished( co
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 -rupN kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasepart.h kdevelop-3.2.2.patch/vcs/clearcase/clearcasepart.h
--- kdevelop-3.2.2.ORIG/vcs/clearcase/clearcasepart.h 2005-05-23 14:10:08.000000000 +0200
+++ kdevelop-3.2.2.patch/vcs/clearcase/clearcasepart.h 2005-09-12 22:42:02.000000000 +0200
@@ -29,13 +29,14 @@ public:
const QString default_uncheckout;
const QString default_create;
const QString default_remove;
+ const QString default_lshistory;
+ const QString default_lscheckout;
const QString default_diff;
-// const QString default_log;
-
+
virtual void createNewProject(const QString& dir) {}
virtual bool fetchFromRepository() { return true; }
- virtual KDevVCSFileInfoProvider *fileInfoProvider() const { return 0; }
- virtual bool isValidDirectory(const QString &dirPath) const { return true; }
+ virtual KDevVCSFileInfoProvider *fileInfoProvider() const { return fileInfoProvider_; }
+ virtual bool isValidDirectory(const QString &dirPath) const;
private slots:
void contextMenu(QPopupMenu *popup, const Context *context);
@@ -46,14 +47,19 @@ private slots:
void slotCreate();
void slotRemove();
-// void slotLog();
-
void slotDiff();
void slotDiffFinished( const QString& diff, const QString& err );
+ void slotListHistory();
+ void slotListCheckouts();
+
private:
- QString popupfile;
+
+ bool isValidCCDirectory_;
+ QString popupfile_;
QString viewname;
+
+ KDevVCSFileInfoProvider *fileInfoProvider_;
};
#endif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20050914/6a6a2184/attachment.sig>
More information about the KDevelop-devel
mailing list