annotate mainwindow.h @ 363:f89e50d748ed feature_93

Enable Push button whenever the repo is non-empty, even when there is no remote location -- ask for remote location when it is pressed. Also change "Change Remote..." to "Set Remote..." to be consistent with this new usage
author Chris Cannam
date Thu, 17 Mar 2011 17:48:18 +0000
parents 73fb5ef55744
children
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"
jtkorhonen@0 26
Chris@50 27 #include <QMainWindow>
Chris@50 28 #include <QListWidget>
Chris@90 29 #include <QFileSystemWatcher>
Chris@50 30
jtkorhonen@0 31 QT_BEGIN_NAMESPACE
jtkorhonen@0 32 class QAction;
jtkorhonen@0 33 class QMenu;
Chris@238 34 class QTimer;
jtkorhonen@0 35 QT_END_NAMESPACE
jtkorhonen@0 36
Chris@287 37 class WorkStatusWidget;
Chris@287 38
jtkorhonen@0 39 class MainWindow : public QMainWindow
jtkorhonen@0 40 {
jtkorhonen@0 41 Q_OBJECT
jtkorhonen@0 42
jtkorhonen@0 43 public:
Chris@172 44 MainWindow(QString myDirPath);
jtkorhonen@0 45
jtkorhonen@0 46 protected:
jtkorhonen@0 47 void closeEvent(QCloseEvent *event);
jtkorhonen@0 48
jtkorhonen@0 49 public slots:
Chris@145 50 void open(QString local);
Chris@120 51 void hgRefresh();
Chris@238 52 void commandStarting(HgAction);
Chris@142 53 void commandCompleted(HgAction action, QString stdOut);
Chris@142 54 void commandFailed(HgAction action, QString stdErr);
Chris@95 55 void enableDisableActions();
jtkorhonen@0 56
jtkorhonen@0 57 private slots:
jtkorhonen@0 58 void about();
Chris@64 59 void settings();
Chris@69 60 void open();
Chris@359 61 void recentMenuActivated();
Chris@182 62 void changeRemoteRepo();
Chris@363 63 void changeRemoteRepo(bool initial);
Chris@64 64 void startupDialog();
Chris@94 65 void clearSelections();
Chris@199 66 void showAllChanged(bool);
Chris@64 67
Chris@175 68 void hgTest();
Chris@200 69 void hgTestExtension();
Chris@120 70 void hgQueryPaths();
Chris@120 71 void hgStat();
jtkorhonen@0 72 void hgRemove();
jtkorhonen@0 73 void hgAdd();
jtkorhonen@0 74 void hgCommit();
Chris@168 75 void hgShowSummary();
Chris@289 76 void hgShowSummaryFor(Changeset *);
jtkorhonen@0 77 void hgFolderDiff();
Chris@148 78 void hgDiffToCurrent(QString);
Chris@148 79 void hgDiffToParent(QString, QString);
jtkorhonen@0 80 void hgUpdate();
jtkorhonen@0 81 void hgRevert();
jtkorhonen@0 82 void hgMerge();
Chris@326 83 void hgRedoMerge();
jtkorhonen@0 84 void hgCloneFromRemote();
jtkorhonen@0 85 void hgInit();
jtkorhonen@0 86 void hgIncoming();
jtkorhonen@0 87 void hgPush();
jtkorhonen@0 88 void hgPull();
Chris@148 89 void hgUpdateToRev(QString);
Chris@148 90 void hgMergeFrom(QString);
jtkorhonen@0 91 void hgResolveList();
Chris@164 92 void hgTag(QString);
Chris@311 93 void hgNewBranch();
Chris@311 94 void hgNoBranch();
jtkorhonen@11 95 void hgServe();
jtkorhonen@34 96 void hgIgnore();
jtkorhonen@0 97
Chris@326 98 void hgAnnotateFiles(QStringList);
Chris@326 99 void hgDiffFiles(QStringList);
Chris@326 100 void hgCommitFiles(QStringList);
Chris@326 101 void hgRevertFiles(QStringList);
Chris@361 102 void hgRenameFiles(QStringList);
Chris@361 103 void hgCopyFiles(QStringList);
Chris@326 104 void hgAddFiles(QStringList);
Chris@326 105 void hgRemoveFiles(QStringList);
Chris@326 106 void hgRedoFileMerges(QStringList);
Chris@326 107 void hgMarkFilesResolved(QStringList);
Chris@326 108 void hgIgnoreFiles(QStringList);
Chris@326 109 void hgUnIgnoreFiles(QStringList);
Chris@326 110
Chris@90 111 void fsDirectoryChanged(QString);
Chris@90 112 void fsFileChanged(QString);
Chris@238 113 void checkFilesystem();
Chris@238 114 void actuallyRestoreFileSystemWatcher();
Chris@90 115
jtkorhonen@0 116 private:
Chris@109 117 void hgQueryBranch();
Chris@109 118 void hgQueryHeads();
Chris@109 119 void hgQueryParents();
jtkorhonen@0 120 void hgLog();
Chris@150 121 void hgLogIncremental(QStringList prune);
Chris@359 122
Chris@359 123 void updateRecentMenu();
jtkorhonen@0 124 void createActions();
jtkorhonen@0 125 void connectActions();
Chris@141 126 void connectTabsSignals();
jtkorhonen@0 127 void createMenus();
jtkorhonen@0 128 void createToolBars();
Chris@230 129 void updateToolBarStyle();
jtkorhonen@0 130 void createStatusBar();
jtkorhonen@0 131 void readSettings();
jtkorhonen@0 132 void splitChangeSets(QStringList *list, QString hgLogOutput);
Chris@174 133 void reportNewRemoteHeads(QString);
Chris@353 134 void reportAuthFailed(QString);
Chris@284 135 void writeSettings();
Chris@95 136
Chris@182 137 QStringList listAllUpIpV4Addresses();
jtkorhonen@34 138 QString filterTag(QString tag);
jtkorhonen@0 139
Chris@64 140 QString getUserInfo() const;
Chris@64 141
Chris@79 142 bool openLocal(QString);
Chris@79 143 bool openRemote(QString, QString);
Chris@79 144 bool openInit(QString);
Chris@79 145
Chris@79 146 bool complainAboutFilePath(QString);
Chris@79 147 bool complainAboutUnknownFolder(QString);
Chris@84 148 bool complainAboutInitInRepo(QString);
Chris@84 149 bool complainAboutInitFile(QString);
Chris@84 150 bool complainAboutCloneToExisting(QString);
Chris@84 151 bool complainAboutCloneToFile(QString);
Chris@237 152 QString complainAboutCloneToExistingFolder(QString local, QString remote); // returns new location, or empty string for cancel
Chris@84 153
Chris@248 154 bool askAboutUnknownFolder(QString);
Chris@79 155 bool askToInitExisting(QString);
Chris@79 156 bool askToInitNew(QString);
Chris@79 157 bool askToOpenParentRepo(QString, QString);
Chris@84 158 bool askToOpenInsteadOfInit(QString);
Chris@79 159
Chris@120 160 void showIncoming(QString);
Chris@120 161 void showPullResult(QString);
Chris@120 162 void showPushResult(QString);
Chris@125 163 int extractChangeCount(QString);
Chris@275 164 QString format1(QString);
Chris@125 165 QString format3(QString, QString, QString);
Chris@120 166
Chris@120 167 void clearState();
Chris@120 168
Chris@90 169 void updateFileSystemWatcher();
Chris@238 170 void suspendFileSystemWatcher();
Chris@238 171 void restoreFileSystemWatcher();
Chris@90 172
Chris@287 173 void updateWorkFolderAndRepoNames();
Chris@287 174
Chris@287 175 WorkStatusWidget *m_workStatus;
Chris@284 176 HgTabWidget *m_hgTabs;
Chris@64 177
Chris@284 178 QString m_remoteRepoPath;
Chris@284 179 QString m_workFolderPath;
Chris@284 180 QString m_currentBranch;
Chris@284 181 Changesets m_currentHeads;
Chris@284 182 Changesets m_currentParents;
Chris@284 183 int m_commitsSincePush;
Chris@284 184 bool m_stateUnknown;
Chris@284 185 bool m_hgIsOK;
Chris@284 186 bool m_needNewLog;
Chris@284 187
Chris@284 188 bool m_firstStart;
Chris@284 189
Chris@284 190 bool m_showAllFiles;
Chris@199 191
jtkorhonen@0 192 //Actions enabled flags
Chris@284 193 bool m_remoteRepoActionsEnabled;
Chris@284 194 bool m_localRepoActionsEnabled;
jtkorhonen@0 195
Chris@172 196 QString m_myDirPath;
Chris@172 197
Chris@284 198 // File menu actions
Chris@284 199 QAction *m_openAct;
Chris@284 200 QAction *m_changeRemoteRepoAct;
Chris@284 201 QAction *m_settingsAct;
Chris@284 202 QAction *m_exitAct;
jtkorhonen@0 203
Chris@284 204 // Repo actions
Chris@284 205 QAction *m_hgIncomingAct;
Chris@284 206 QAction *m_hgPushAct;
Chris@284 207 QAction *m_hgPullAct;
Chris@284 208 QAction *m_hgRefreshAct;
Chris@284 209 QAction *m_hgFolderDiffAct;
Chris@284 210 QAction *m_hgChgSetDiffAct;
Chris@284 211 QAction *m_hgRevertAct;
Chris@284 212 QAction *m_hgAddAct;
Chris@284 213 QAction *m_hgRemoveAct;
Chris@284 214 QAction *m_hgUpdateAct;
Chris@284 215 QAction *m_hgCommitAct;
Chris@284 216 QAction *m_hgMergeAct;
Chris@284 217 QAction *m_hgUpdateToRevAct;
Chris@284 218 QAction *m_hgAnnotateAct;
Chris@284 219 QAction *m_hgIgnoreAct;
Chris@284 220 QAction *m_hgServeAct;
jtkorhonen@0 221
Chris@284 222 // Menus
Chris@284 223 QMenu *m_fileMenu;
Chris@359 224 QMenu *m_recentMenu;
Chris@284 225 QMenu *m_advancedMenu;
Chris@284 226 QMenu *m_helpMenu;
jtkorhonen@0 227
Chris@284 228 // Help menu actions
Chris@284 229 QAction *m_aboutAct;
jtkorhonen@0 230
Chris@284 231 QToolBar *m_fileToolBar;
Chris@284 232 QToolBar *m_repoToolBar;
Chris@284 233 QToolBar *m_workFolderToolBar;
jtkorhonen@0 234
Chris@284 235 HgRunner *m_runner;
jtkorhonen@0 236
Chris@284 237 bool m_shouldHgStat;
Chris@163 238
Chris@239 239 QString getDiffBinaryName();
Chris@239 240 QString getMergeBinaryName();
Chris@239 241 QString getEditorBinaryName();
Chris@112 242
Chris@284 243 QFileSystemWatcher *m_fsWatcher;
Chris@238 244 QTimer *m_fsWatcherGeneralTimer;
Chris@238 245 QTimer *m_fsWatcherRestoreTimer;
Chris@241 246 bool m_fsWatcherSuspended;
Chris@90 247
Chris@284 248 QString m_lastStatOutput;
Chris@284 249 QStringList m_lastRevertedFiles;
Chris@163 250
Chris@284 251 bool m_justMerged;
Chris@284 252 QString m_mergeTargetRevision;
Chris@284 253 QString m_mergeCommitComment;
jtkorhonen@0 254 };
jtkorhonen@0 255
jtkorhonen@0 256 #endif