/* * Copyright (C) 1999-2002 Bernd Gehrmann * bernd@mail.berlios.de * Copyright (c) 2002-2005 Christian Loose * * 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 #include #include #include #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 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