Chris@57: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@57: Chris@57: /* Chris@57: EasyMercurial Chris@57: Chris@98: Based on hgExplorer by Jari Korhonen Chris@57: Copyright (c) 2010 Jari Korhonen Chris@244: Copyright (c) 2011 Chris Cannam Chris@244: Copyright (c) 2011 Queen Mary, University of London Chris@57: Chris@57: This program is free software; you can redistribute it and/or Chris@57: modify it under the terms of the GNU General Public License as Chris@57: published by the Free Software Foundation; either version 2 of the Chris@57: License, or (at your option) any later version. See the file Chris@57: COPYING included with this distribution for more information. Chris@57: */ jtkorhonen@0: jtkorhonen@0: #ifndef MAINWINDOW_H jtkorhonen@0: #define MAINWINDOW_H jtkorhonen@0: Chris@96: #include "hgtabwidget.h" jtkorhonen@0: #include "hgrunner.h" jtkorhonen@0: #include "common.h" Chris@106: #include "changeset.h" Chris@109: #include "hgaction.h" jtkorhonen@0: Chris@50: #include Chris@50: #include Chris@90: #include Chris@50: jtkorhonen@0: QT_BEGIN_NAMESPACE jtkorhonen@0: class QAction; jtkorhonen@0: class QMenu; Chris@238: class QTimer; jtkorhonen@0: QT_END_NAMESPACE jtkorhonen@0: Chris@287: class WorkStatusWidget; Chris@287: jtkorhonen@0: class MainWindow : public QMainWindow jtkorhonen@0: { jtkorhonen@0: Q_OBJECT jtkorhonen@0: jtkorhonen@0: public: Chris@172: MainWindow(QString myDirPath); jtkorhonen@0: jtkorhonen@0: protected: jtkorhonen@0: void closeEvent(QCloseEvent *event); jtkorhonen@0: jtkorhonen@0: public slots: Chris@145: void open(QString local); Chris@120: void hgRefresh(); Chris@238: void commandStarting(HgAction); Chris@142: void commandCompleted(HgAction action, QString stdOut); Chris@142: void commandFailed(HgAction action, QString stdErr); Chris@95: void enableDisableActions(); jtkorhonen@0: jtkorhonen@0: private slots: jtkorhonen@0: void about(); Chris@64: void settings(); Chris@69: void open(); Chris@182: void changeRemoteRepo(); Chris@64: void startupDialog(); Chris@94: void clearSelections(); Chris@199: void showAllChanged(bool); Chris@64: Chris@175: void hgTest(); Chris@200: void hgTestExtension(); Chris@120: void hgQueryPaths(); Chris@120: void hgStat(); jtkorhonen@0: void hgRemove(); jtkorhonen@0: void hgAdd(); jtkorhonen@0: void hgCommit(); Chris@168: void hgShowSummary(); Chris@289: void hgShowSummaryFor(Changeset *); jtkorhonen@0: void hgFolderDiff(); Chris@148: void hgDiffToCurrent(QString); Chris@148: void hgDiffToParent(QString, QString); jtkorhonen@0: void hgUpdate(); jtkorhonen@0: void hgRevert(); jtkorhonen@0: void hgMerge(); Chris@326: void hgRedoMerge(); jtkorhonen@0: void hgCloneFromRemote(); jtkorhonen@0: void hgInit(); jtkorhonen@0: void hgIncoming(); jtkorhonen@0: void hgPush(); jtkorhonen@0: void hgPull(); Chris@148: void hgUpdateToRev(QString); Chris@148: void hgMergeFrom(QString); jtkorhonen@0: void hgResolveList(); Chris@164: void hgTag(QString); Chris@311: void hgNewBranch(); Chris@311: void hgNoBranch(); jtkorhonen@11: void hgServe(); jtkorhonen@34: void hgIgnore(); jtkorhonen@0: Chris@326: void hgAnnotateFiles(QStringList); Chris@326: void hgDiffFiles(QStringList); Chris@326: void hgCommitFiles(QStringList); Chris@326: void hgRevertFiles(QStringList); Chris@361: void hgRenameFiles(QStringList); Chris@361: void hgCopyFiles(QStringList); Chris@326: void hgAddFiles(QStringList); Chris@326: void hgRemoveFiles(QStringList); Chris@326: void hgRedoFileMerges(QStringList); Chris@326: void hgMarkFilesResolved(QStringList); Chris@326: void hgIgnoreFiles(QStringList); Chris@326: void hgUnIgnoreFiles(QStringList); Chris@326: Chris@90: void fsDirectoryChanged(QString); Chris@90: void fsFileChanged(QString); Chris@238: void checkFilesystem(); Chris@238: void actuallyRestoreFileSystemWatcher(); Chris@90: jtkorhonen@0: private: Chris@109: void hgQueryBranch(); Chris@109: void hgQueryHeads(); Chris@109: void hgQueryParents(); jtkorhonen@0: void hgLog(); Chris@150: void hgLogIncremental(QStringList prune); jtkorhonen@0: void createActions(); jtkorhonen@0: void connectActions(); Chris@141: void connectTabsSignals(); jtkorhonen@0: void createMenus(); jtkorhonen@0: void createToolBars(); Chris@230: void updateToolBarStyle(); jtkorhonen@0: void createStatusBar(); jtkorhonen@0: void readSettings(); jtkorhonen@0: void splitChangeSets(QStringList *list, QString hgLogOutput); Chris@174: void reportNewRemoteHeads(QString); Chris@353: void reportAuthFailed(QString); Chris@284: void writeSettings(); Chris@95: Chris@182: QStringList listAllUpIpV4Addresses(); jtkorhonen@34: QString filterTag(QString tag); jtkorhonen@0: Chris@64: QString getUserInfo() const; Chris@64: Chris@79: bool openLocal(QString); Chris@79: bool openRemote(QString, QString); Chris@79: bool openInit(QString); Chris@79: Chris@79: bool complainAboutFilePath(QString); Chris@79: bool complainAboutUnknownFolder(QString); Chris@84: bool complainAboutInitInRepo(QString); Chris@84: bool complainAboutInitFile(QString); Chris@84: bool complainAboutCloneToExisting(QString); Chris@84: bool complainAboutCloneToFile(QString); Chris@237: QString complainAboutCloneToExistingFolder(QString local, QString remote); // returns new location, or empty string for cancel Chris@84: Chris@248: bool askAboutUnknownFolder(QString); Chris@79: bool askToInitExisting(QString); Chris@79: bool askToInitNew(QString); Chris@79: bool askToOpenParentRepo(QString, QString); Chris@84: bool askToOpenInsteadOfInit(QString); Chris@79: Chris@120: void showIncoming(QString); Chris@120: void showPullResult(QString); Chris@120: void showPushResult(QString); Chris@125: int extractChangeCount(QString); Chris@275: QString format1(QString); Chris@125: QString format3(QString, QString, QString); Chris@120: Chris@120: void clearState(); Chris@120: Chris@90: void updateFileSystemWatcher(); Chris@238: void suspendFileSystemWatcher(); Chris@238: void restoreFileSystemWatcher(); Chris@90: Chris@287: void updateWorkFolderAndRepoNames(); Chris@287: Chris@287: WorkStatusWidget *m_workStatus; Chris@284: HgTabWidget *m_hgTabs; Chris@64: Chris@284: QString m_remoteRepoPath; Chris@284: QString m_workFolderPath; Chris@284: QString m_currentBranch; Chris@284: Changesets m_currentHeads; Chris@284: Changesets m_currentParents; Chris@284: int m_commitsSincePush; Chris@284: bool m_stateUnknown; Chris@284: bool m_hgIsOK; Chris@284: bool m_needNewLog; Chris@284: Chris@284: bool m_firstStart; Chris@284: Chris@284: bool m_showAllFiles; Chris@199: jtkorhonen@0: //Actions enabled flags Chris@284: bool m_remoteRepoActionsEnabled; Chris@284: bool m_localRepoActionsEnabled; jtkorhonen@0: Chris@172: QString m_myDirPath; Chris@172: Chris@284: // File menu actions Chris@284: QAction *m_openAct; Chris@284: QAction *m_changeRemoteRepoAct; Chris@284: QAction *m_settingsAct; Chris@284: QAction *m_exitAct; jtkorhonen@0: Chris@284: // Repo actions Chris@284: QAction *m_hgIncomingAct; Chris@284: QAction *m_hgPushAct; Chris@284: QAction *m_hgPullAct; Chris@284: QAction *m_hgRefreshAct; Chris@284: QAction *m_hgFolderDiffAct; Chris@284: QAction *m_hgChgSetDiffAct; Chris@284: QAction *m_hgRevertAct; Chris@284: QAction *m_hgAddAct; Chris@284: QAction *m_hgRemoveAct; Chris@284: QAction *m_hgUpdateAct; Chris@284: QAction *m_hgCommitAct; Chris@284: QAction *m_hgMergeAct; Chris@284: QAction *m_hgUpdateToRevAct; Chris@284: QAction *m_hgAnnotateAct; Chris@284: QAction *m_hgIgnoreAct; Chris@284: QAction *m_hgServeAct; jtkorhonen@0: Chris@284: // Menus Chris@284: QMenu *m_fileMenu; Chris@284: QMenu *m_advancedMenu; Chris@284: QMenu *m_helpMenu; jtkorhonen@0: Chris@284: // Help menu actions Chris@284: QAction *m_aboutAct; jtkorhonen@0: Chris@284: QToolBar *m_fileToolBar; Chris@284: QToolBar *m_repoToolBar; Chris@284: QToolBar *m_workFolderToolBar; jtkorhonen@0: Chris@284: HgRunner *m_runner; jtkorhonen@0: Chris@284: bool m_shouldHgStat; Chris@163: Chris@239: QString getDiffBinaryName(); Chris@239: QString getMergeBinaryName(); Chris@239: QString getEditorBinaryName(); Chris@112: Chris@284: QFileSystemWatcher *m_fsWatcher; Chris@238: QTimer *m_fsWatcherGeneralTimer; Chris@238: QTimer *m_fsWatcherRestoreTimer; Chris@241: bool m_fsWatcherSuspended; Chris@90: Chris@284: QString m_lastStatOutput; Chris@284: QStringList m_lastRevertedFiles; Chris@163: Chris@284: bool m_justMerged; Chris@284: QString m_mergeTargetRevision; Chris@284: QString m_mergeCommitComment; jtkorhonen@0: }; jtkorhonen@0: jtkorhonen@0: #endif