You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/cervisia/cervisiapart.h

217 lines
5.6 KiB

/*
* Copyright (C) 1999-2002 Bernd Gehrmann
* bernd@mail.berlios.de
* Copyright (c) 2002-2005 Christian Loose <christian.loose@kdemail.net>
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef CERVISIAPART_H
#define CERVISIAPART_H
#include <tdeparts/part.h>
#include <tdeparts/browserextension.h>
#include <tdeparts/genericfactory.h>
#include <tdeparts/statusbarextension.h>
#include "addremovedlg.h"
#include "commitdlg.h"
#include "checkoutdlg.h"
#include "watchdlg.h"
#include "tagdlg.h"
namespace Cervisia { class EditWithMenu; }
class TQLabel;
class TQListViewItem;
class TQSplitter;
class TQTimer;
class UpdateView;
class ProtocolView;
class TDEAboutData;
class TDEListView;
class TDERecentFilesAction;
class CvsService_stub;
class CervisiaBrowserExtension;
/**
* An embeddable Cervisia viewer.
*/
class CervisiaPart : public KParts::ReadOnlyPart
{
TQ_OBJECT
public:
CervisiaPart( TQWidget *parentWidget, const char *widgetName,
TQObject *parent, const char *name=0, const TQStringList& args = TQStringList());
virtual ~CervisiaPart();
/**
* Get the config object for the part's instance.
*/
static TDEConfig *config();
TQString sandBox() const { return sandbox; }
static TDEAboutData* createAboutData();
public slots:
// unused because we overwrite the default behaviour of openURL()
virtual bool openFile() { return true; }
virtual bool openURL( const KURL & );
void openFile(TQString filename);
void openFiles(const TQStringList &filenames);
void popupRequested(TDEListView*, TQListViewItem*, const TQPoint&);
void updateActions();
void aboutCervisia();
void slotOpen();
void slotResolve();
void slotStatus();
void slotUpdate();
void slotChangeLog();
void slotCommit();
void slotAdd();
void slotAddBinary();
void slotRemove();
void slotFileProperties();
void slotRevert();
void slotBrowseLog();
// void slotBrowseMultiLog();
void slotAnnotate();
void slotDiffBase();
void slotDiffHead();
void slotLastChange();
void slotHistory();
void slotCreateRepository();
void slotCheckout();
void slotImport();
void slotRepositories();
void slotCreateTag();
void slotDeleteTag();
void slotUpdateToTag();
void slotUpdateToHead();
void slotMerge();
void slotAddWatch();
void slotRemoveWatch();
void slotShowWatchers();
void slotEdit();
void slotUnedit();
void slotShowEditors();
void slotLock();
void slotUnlock();
void slotMakePatch();
void slotCreateDirs();
void slotPruneDirs();
void slotHideFiles();
void slotHideUpToDate();
void slotHideRemoved();
void slotHideNotInCVS();
void slotHideEmptyDirectories();
void slotFoldTree();
void slotUnfoldTree();
void slotUnfoldFolder();
void slotUpdateRecursive();
void slotCommitRecursive();
void slotDoCVSEdit();
void slotConfigure();
void slotHelp();
void slotCVSInfo();
protected slots:
void slotJobFinished();
private slots:
// called by menu action "Open Sandbox..."
void slotOpenSandbox();
void slotSetupStatusBar();
protected:
virtual void guiActivateEvent(KParts::GUIActivateEvent* event);
private:
enum JobType { Unknown, Commit };
void setupActions();
void readSettings();
void writeSettings();
bool openSandbox(const TQString &dirname);
void updateSandbox(const TQString &extraopt = TQString());
void addOrRemove(AddRemoveDialog::ActionType action);
void addOrRemoveWatch(WatchDialog::ActionType action);
void createOrDeleteTag(Cervisia::TagDialog::ActionType action);
void showJobStart(const TQString &command);
void showDiff(const TQString& revision);
void setFilter();
UpdateView *update;
ProtocolView *protocol;
bool hasRunningJob;
TQSplitter *splitter;
TQString sandbox;
TQString repository;
TQString changelogstr;
TQStringList recentCommits;
bool opt_hideFiles, opt_hideUpToDate, opt_hideRemoved, opt_hideNotInCVS, opt_hideEmptyDirectories;
bool opt_createDirs, opt_pruneDirs;
bool opt_updateRecursive, opt_commitRecursive, opt_doCVSEdit;
//for the Open Recent directories
TDERecentFilesAction *recent;
CvsService_stub* cvsService;
KParts::StatusBarExtension* m_statusBar;
CervisiaBrowserExtension* m_browserExt;
TQLabel* filterLabel;
int m_editWithId;
Cervisia::EditWithMenu* m_currentEditMenu;
JobType m_jobType;
};
typedef KParts::GenericFactory<CervisiaPart> CervisiaFactory;
/**
* A mysterious class, needed to make Konqueror intrgration work.
*/
class CervisiaBrowserExtension : public KParts::BrowserExtension
{
TQ_OBJECT
public:
CervisiaBrowserExtension( CervisiaPart * );
~CervisiaBrowserExtension();
void setPropertiesActionEnabled(bool enabled);
public slots:
void properties();
};
#endif // CERVISIAPART_H