annotate src/mainwindow.h @ 537:a4e699d32a9a

gah! hg 2.1 changes push and pull so as to return failure codes on success, if there was nothing to push or pull
author Chris Cannam
date Fri, 10 Feb 2012 13:08:07 +0000
parents a17c06f773cd
children fc2df97920e8
rev   line source
Chris@57 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@57 2
Chris@57 3 /*
Chris@57 4 EasyMercurial
Chris@57 5
Chris@98 6 Based on hgExplorer by Jari Korhonen
Chris@57 7 Copyright (c) 2010 Jari Korhonen
Chris@244 8 Copyright (c) 2011 Chris Cannam
Chris@244 9 Copyright (c) 2011 Queen Mary, University of London
Chris@57 10
Chris@57 11 This program is free software; you can redistribute it and/or
Chris@57 12 modify it under the terms of the GNU General Public License as
Chris@57 13 published by the Free Software Foundation; either version 2 of the
Chris@57 14 License, or (at your option) any later version. See the file
Chris@57 15 COPYING included with this distribution for more information.
Chris@57 16 */
jtkorhonen@0 17
jtkorhonen@0 18 #ifndef MAINWINDOW_H
jtkorhonen@0 19 #define MAINWINDOW_H
jtkorhonen@0 20
Chris@96 21 #include "hgtabwidget.h"
jtkorhonen@0 22 #include "hgrunner.h"
jtkorhonen@0 23 #include "common.h"
Chris@106 24 #include "changeset.h"
Chris@109 25 #include "hgaction.h"
Chris@472 26 #include "settingsdialog.h"
jtkorhonen@0 27
Chris@50 28 #include <QMainWindow>
Chris@50 29 #include <QListWidget>
Chris@90 30 #include <QFileSystemWatcher>
Chris@50 31
jtkorhonen@0 32 QT_BEGIN_NAMESPACE
jtkorhonen@0 33 class QAction;
jtkorhonen@0 34 class QMenu;
Chris@238 35 class QTimer;
jtkorhonen@0 36 QT_END_NAMESPACE
jtkorhonen@0 37
Chris@287 38 class WorkStatusWidget;
Chris@287 39
jtkorhonen@0 40 class MainWindow : public QMainWindow
jtkorhonen@0 41 {
jtkorhonen@0 42 Q_OBJECT
jtkorhonen@0 43
jtkorhonen@0 44 public:
Chris@172 45 MainWindow(QString myDirPath);
jtkorhonen@0 46
jtkorhonen@0 47 protected:
jtkorhonen@0 48 void closeEvent(QCloseEvent *event);
jtkorhonen@0 49
jtkorhonen@0 50 public slots:
Chris@145 51 void open(QString local);
Chris@120 52 void hgRefresh();
Chris@238 53 void commandStarting(HgAction);
Chris@142 54 void commandCompleted(HgAction action, QString stdOut);
Chris@537 55 void commandFailed(HgAction action, QString stdErr, QString stdOut);
Chris@95 56 void enableDisableActions();
jtkorhonen@0 57
jtkorhonen@0 58 private slots:
jtkorhonen@0 59 void about();
Chris@494 60 void help();
Chris@64 61 void settings();
Chris@472 62 void settings(SettingsDialog::Tab);
Chris@69 63 void open();
Chris@359 64 void recentMenuActivated();
Chris@182 65 void changeRemoteRepo();
Chris@363 66 void changeRemoteRepo(bool initial);
Chris@64 67 void startupDialog();
Chris@94 68 void clearSelections();
Chris@484 69 void showAllChanged();
Chris@64 70
Chris@175 71 void hgTest();
Chris@200 72 void hgTestExtension();
Chris@120 73 void hgQueryPaths();
Chris@120 74 void hgStat();
jtkorhonen@0 75 void hgRemove();
jtkorhonen@0 76 void hgAdd();
jtkorhonen@0 77 void hgCommit();
Chris@168 78 void hgShowSummary();
Chris@289 79 void hgShowSummaryFor(Changeset *);
jtkorhonen@0 80 void hgFolderDiff();
Chris@148 81 void hgDiffToCurrent(QString);
Chris@148 82 void hgDiffToParent(QString, QString);
jtkorhonen@0 83 void hgUpdate();
jtkorhonen@0 84 void hgRevert();
jtkorhonen@0 85 void hgMerge();
Chris@326 86 void hgRedoMerge();
jtkorhonen@0 87 void hgCloneFromRemote();
jtkorhonen@0 88 void hgInit();
jtkorhonen@0 89 void hgIncoming();
jtkorhonen@0 90 void hgPush();
jtkorhonen@0 91 void hgPull();
Chris@148 92 void hgUpdateToRev(QString);
Chris@148 93 void hgMergeFrom(QString);
jtkorhonen@0 94 void hgResolveList();
Chris@164 95 void hgTag(QString);
Chris@311 96 void hgNewBranch();
Chris@311 97 void hgNoBranch();
Chris@514 98 void hgCloseBranch();
jtkorhonen@11 99 void hgServe();
Chris@425 100 void hgIgnore();
Chris@413 101 void hgEditIgnore();
jtkorhonen@0 102
Chris@326 103 void hgAnnotateFiles(QStringList);
Chris@326 104 void hgDiffFiles(QStringList);
Chris@326 105 void hgCommitFiles(QStringList);
Chris@326 106 void hgRevertFiles(QStringList);
Chris@361 107 void hgRenameFiles(QStringList);
Chris@361 108 void hgCopyFiles(QStringList);
Chris@326 109 void hgAddFiles(QStringList);
Chris@326 110 void hgRemoveFiles(QStringList);
Chris@326 111 void hgRedoFileMerges(QStringList);
Chris@326 112 void hgMarkFilesResolved(QStringList);
Chris@326 113 void hgIgnoreFiles(QStringList);
Chris@326 114 void hgUnIgnoreFiles(QStringList);
Chris@326 115
Chris@90 116 void fsDirectoryChanged(QString);
Chris@90 117 void fsFileChanged(QString);
Chris@238 118 void checkFilesystem();
Chris@238 119 void actuallyRestoreFileSystemWatcher();
Chris@90 120
Chris@491 121 void newerVersionAvailable(QString);
Chris@491 122
jtkorhonen@0 123 private:
Chris@109 124 void hgQueryBranch();
Chris@506 125 void hgQueryHeadsActive();
Chris@109 126 void hgQueryHeads();
Chris@109 127 void hgQueryParents();
jtkorhonen@0 128 void hgLog();
Chris@150 129 void hgLogIncremental(QStringList prune);
Chris@359 130
Chris@417 131 void initHgIgnore();
Chris@417 132
Chris@359 133 void updateRecentMenu();
jtkorhonen@0 134 void createActions();
jtkorhonen@0 135 void connectActions();
Chris@141 136 void connectTabsSignals();
jtkorhonen@0 137 void createMenus();
jtkorhonen@0 138 void createToolBars();
Chris@230 139 void updateToolBarStyle();
jtkorhonen@0 140 void createStatusBar();
jtkorhonen@0 141 void readSettings();
jtkorhonen@0 142 void splitChangeSets(QStringList *list, QString hgLogOutput);
Chris@174 143 void reportNewRemoteHeads(QString);
Chris@353 144 void reportAuthFailed(QString);
Chris@284 145 void writeSettings();
Chris@95 146
Chris@182 147 QStringList listAllUpIpV4Addresses();
jtkorhonen@34 148 QString filterTag(QString tag);
jtkorhonen@0 149
Chris@64 150 QString getUserInfo() const;
Chris@64 151
Chris@79 152 bool openLocal(QString);
Chris@79 153 bool openRemote(QString, QString);
Chris@79 154 bool openInit(QString);
Chris@79 155
Chris@79 156 bool complainAboutFilePath(QString);
Chris@79 157 bool complainAboutUnknownFolder(QString);
Chris@84 158 bool complainAboutInitInRepo(QString);
Chris@84 159 bool complainAboutInitFile(QString);
Chris@84 160 bool complainAboutCloneToExisting(QString);
Chris@84 161 bool complainAboutCloneToFile(QString);
Chris@237 162 QString complainAboutCloneToExistingFolder(QString local, QString remote); // returns new location, or empty string for cancel
Chris@84 163
Chris@248 164 bool askAboutUnknownFolder(QString);
Chris@79 165 bool askToInitExisting(QString);
Chris@79 166 bool askToInitNew(QString);
Chris@79 167 bool askToOpenParentRepo(QString, QString);
Chris@84 168 bool askToOpenInsteadOfInit(QString);
Chris@79 169
Chris@120 170 void showIncoming(QString);
Chris@120 171 void showPullResult(QString);
Chris@120 172 void showPushResult(QString);
Chris@125 173 int extractChangeCount(QString);
Chris@275 174 QString format1(QString);
Chris@125 175 QString format3(QString, QString, QString);
Chris@120 176
Chris@120 177 void clearState();
Chris@120 178
Chris@90 179 void updateFileSystemWatcher();
Chris@238 180 void suspendFileSystemWatcher();
Chris@238 181 void restoreFileSystemWatcher();
Chris@90 182
Chris@506 183 void updateClosedHeads();
Chris@506 184
Chris@287 185 void updateWorkFolderAndRepoNames();
Chris@287 186
Chris@287 187 WorkStatusWidget *m_workStatus;
Chris@284 188 HgTabWidget *m_hgTabs;
Chris@64 189
Chris@284 190 QString m_remoteRepoPath;
Chris@284 191 QString m_workFolderPath;
Chris@284 192 QString m_currentBranch;
Chris@284 193 Changesets m_currentHeads;
Chris@506 194 Changesets m_activeHeads;
Chris@506 195 QSet<QString> m_closedHeadIds;
Chris@284 196 Changesets m_currentParents;
Chris@284 197 int m_commitsSincePush;
Chris@284 198 bool m_stateUnknown;
Chris@284 199 bool m_hgIsOK;
Chris@284 200 bool m_needNewLog;
Chris@284 201
Chris@284 202 bool m_firstStart;
Chris@284 203
Chris@284 204 bool m_showAllFiles;
Chris@199 205
jtkorhonen@0 206 //Actions enabled flags
Chris@284 207 bool m_remoteRepoActionsEnabled;
Chris@284 208 bool m_localRepoActionsEnabled;
jtkorhonen@0 209
Chris@172 210 QString m_myDirPath;
Chris@172 211
Chris@284 212 // File menu actions
Chris@284 213 QAction *m_openAct;
Chris@284 214 QAction *m_changeRemoteRepoAct;
Chris@284 215 QAction *m_settingsAct;
Chris@284 216 QAction *m_exitAct;
jtkorhonen@0 217
Chris@284 218 // Repo actions
Chris@284 219 QAction *m_hgIncomingAct;
Chris@284 220 QAction *m_hgPushAct;
Chris@284 221 QAction *m_hgPullAct;
Chris@284 222 QAction *m_hgRefreshAct;
Chris@284 223 QAction *m_hgFolderDiffAct;
Chris@284 224 QAction *m_hgChgSetDiffAct;
Chris@284 225 QAction *m_hgRevertAct;
Chris@284 226 QAction *m_hgAddAct;
Chris@284 227 QAction *m_hgRemoveAct;
Chris@413 228 QAction *m_hgIgnoreAct;
Chris@284 229 QAction *m_hgUpdateAct;
Chris@284 230 QAction *m_hgCommitAct;
Chris@284 231 QAction *m_hgMergeAct;
Chris@284 232 QAction *m_hgUpdateToRevAct;
Chris@284 233 QAction *m_hgAnnotateAct;
Chris@413 234 QAction *m_hgEditIgnoreAct;
Chris@284 235 QAction *m_hgServeAct;
jtkorhonen@0 236
Chris@284 237 // Menus
Chris@284 238 QMenu *m_fileMenu;
Chris@359 239 QMenu *m_recentMenu;
Chris@284 240 QMenu *m_helpMenu;
jtkorhonen@0 241
Chris@284 242 // Help menu actions
Chris@284 243 QAction *m_aboutAct;
Chris@494 244 QAction *m_helpAct;
jtkorhonen@0 245
Chris@284 246 QToolBar *m_fileToolBar;
Chris@284 247 QToolBar *m_repoToolBar;
Chris@284 248 QToolBar *m_workFolderToolBar;
jtkorhonen@0 249
Chris@494 250 QDialog *m_helpDialog;
Chris@494 251
Chris@284 252 HgRunner *m_runner;
jtkorhonen@0 253
Chris@284 254 bool m_shouldHgStat;
Chris@163 255
Chris@239 256 QString getDiffBinaryName();
Chris@239 257 QString getMergeBinaryName();
Chris@239 258 QString getEditorBinaryName();
Chris@112 259
Chris@284 260 QFileSystemWatcher *m_fsWatcher;
Chris@238 261 QTimer *m_fsWatcherGeneralTimer;
Chris@238 262 QTimer *m_fsWatcherRestoreTimer;
Chris@241 263 bool m_fsWatcherSuspended;
Chris@90 264
Chris@284 265 QString m_lastStatOutput;
Chris@284 266 QStringList m_lastRevertedFiles;
Chris@163 267
Chris@284 268 bool m_justMerged;
Chris@284 269 QString m_mergeTargetRevision;
Chris@284 270 QString m_mergeCommitComment;
jtkorhonen@0 271 };
jtkorhonen@0 272
jtkorhonen@0 273 #endif