annotate hgtabwidget.cpp @ 200:8c8c04bdf0fa

* Separate out the hg test action into two tests, one for plain hg and one with the extension (so can report separately)
author Chris Cannam
date Tue, 04 Jan 2011 12:42:28 +0000
parents f16fe0db11f3
children d256cc418fa3
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@57 6 Based on HgExplorer by Jari Korhonen
Chris@57 7 Copyright (c) 2010 Jari Korhonen
Chris@57 8 Copyright (c) 2010 Chris Cannam
Chris@57 9 Copyright (c) 2010 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
Chris@96 18 #include "hgtabwidget.h"
jtkorhonen@0 19 #include "common.h"
Chris@88 20 #include "filestatuswidget.h"
Chris@116 21 #include "historywidget.h"
Chris@44 22
Chris@50 23 #include <QClipboard>
Chris@50 24 #include <QContextMenuEvent>
Chris@50 25 #include <QApplication>
Chris@50 26
Chris@44 27 #include <iostream>
jtkorhonen@0 28
Chris@96 29 HgTabWidget::HgTabWidget(QWidget *parent,
Chris@95 30 QString remoteRepo,
Chris@95 31 QString workFolderPath) :
Chris@117 32 QTabWidget(parent)
jtkorhonen@0 33 {
Chris@91 34 // Work page
Chris@116 35 m_fileStatusWidget = new FileStatusWidget;
Chris@116 36 m_fileStatusWidget->setLocalPath(workFolderPath);
Chris@116 37 m_fileStatusWidget->setRemoteURL(remoteRepo);
Chris@116 38 connect(m_fileStatusWidget, SIGNAL(selectionChanged()),
Chris@95 39 this, SIGNAL(selectionChanged()));
Chris@199 40 connect(m_fileStatusWidget, SIGNAL(showAllChanged(bool)),
Chris@199 41 this, SIGNAL(showAllChanged(bool)));
Chris@116 42 addTab(m_fileStatusWidget, tr("My work"));
Chris@88 43
Chris@43 44 // History graph page
Chris@116 45 m_historyWidget = new HistoryWidget;
Chris@116 46 addTab(m_historyWidget, tr("History"));
Chris@141 47
Chris@141 48 connect(m_historyWidget, SIGNAL(commit()),
Chris@141 49 this, SIGNAL(commit()));
Chris@141 50
Chris@141 51 connect(m_historyWidget, SIGNAL(revert()),
Chris@141 52 this, SIGNAL(revert()));
Chris@141 53
Chris@168 54 connect(m_historyWidget, SIGNAL(showSummary()),
Chris@168 55 this, SIGNAL(showSummary()));
Chris@168 56
Chris@141 57 connect(m_historyWidget, SIGNAL(diffWorkingFolder()),
Chris@141 58 this, SIGNAL(diffWorkingFolder()));
Chris@141 59
Chris@153 60 connect(m_historyWidget, SIGNAL(showWork()),
Chris@153 61 this, SLOT(showWorkTab()));
Chris@153 62
Chris@141 63 connect(m_historyWidget, SIGNAL(updateTo(QString)),
Chris@141 64 this, SIGNAL(updateTo(QString)));
Chris@141 65
Chris@141 66 connect(m_historyWidget, SIGNAL(diffToCurrent(QString)),
Chris@141 67 this, SIGNAL(diffToCurrent(QString)));
Chris@141 68
Chris@148 69 connect(m_historyWidget, SIGNAL(diffToParent(QString, QString)),
Chris@148 70 this, SIGNAL(diffToParent(QString, QString)));
Chris@141 71
Chris@141 72 connect(m_historyWidget, SIGNAL(mergeFrom(QString)),
Chris@141 73 this, SIGNAL(mergeFrom(QString)));
Chris@141 74
Chris@141 75 connect(m_historyWidget, SIGNAL(tag(QString)),
Chris@141 76 this, SIGNAL(tag(QString)));
jtkorhonen@32 77 }
jtkorhonen@32 78
Chris@96 79 void HgTabWidget::clearSelections()
Chris@94 80 {
Chris@116 81 m_fileStatusWidget->clearSelections();
Chris@94 82 }
Chris@94 83
Chris@153 84 void HgTabWidget::setCurrent(QStringList ids, QString branch)
Chris@128 85 {
Chris@172 86 bool showUncommitted = haveChangesToCommit();
Chris@163 87 m_historyWidget->setCurrent(ids, branch, showUncommitted);
Chris@129 88 }
Chris@129 89
Chris@154 90 void HgTabWidget::updateHistory()
Chris@154 91 {
Chris@154 92 m_historyWidget->update();
Chris@154 93 }
Chris@154 94
Chris@163 95 bool HgTabWidget::canDiff() const
Chris@163 96 {
Chris@163 97 if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false;
Chris@163 98 return m_fileStatusWidget->haveChangesToCommit() ||
Chris@163 99 !m_fileStatusWidget->getAllUnresolvedFiles().empty();
Chris@163 100 }
Chris@163 101
Chris@96 102 bool HgTabWidget::canCommit() const
Chris@90 103 {
Chris@116 104 if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false;
Chris@163 105 return m_fileStatusWidget->haveChangesToCommit() &&
Chris@163 106 m_fileStatusWidget->getAllUnresolvedFiles().empty();
Chris@90 107 }
jtkorhonen@0 108
Chris@109 109 bool HgTabWidget::canRevert() const
Chris@109 110 {
Chris@163 111 if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false;
Chris@116 112 return m_fileStatusWidget->haveChangesToCommit() ||
Chris@163 113 !m_fileStatusWidget->getAllUnresolvedFiles().empty();
Chris@109 114 }
Chris@109 115
Chris@96 116 bool HgTabWidget::canAdd() const
Chris@95 117 {
Chris@116 118 if (m_fileStatusWidget->getSelectedAddableFiles().empty()) return false;
Chris@116 119 if (!m_fileStatusWidget->getSelectedCommittableFiles().empty()) return false;
Chris@116 120 if (!m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false;
Chris@95 121 return true;
Chris@95 122 }
Chris@95 123
Chris@96 124 bool HgTabWidget::canRemove() const
Chris@95 125 {
Chris@116 126 if (m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false;
Chris@116 127 if (!m_fileStatusWidget->getSelectedAddableFiles().empty()) return false;
Chris@95 128 return true;
Chris@95 129 }
Chris@95 130
Chris@163 131 bool HgTabWidget::canResolve() const
Chris@95 132 {
Chris@163 133 return !m_fileStatusWidget->getSelectedUnresolvedFiles().empty();
Chris@95 134 }
Chris@95 135
Chris@172 136 bool HgTabWidget::haveChangesToCommit() const
Chris@172 137 {
Chris@172 138 return m_fileStatusWidget->haveChangesToCommit();
Chris@172 139 }
Chris@172 140
Chris@96 141 QStringList HgTabWidget::getAllSelectedFiles() const
Chris@95 142 {
Chris@116 143 return m_fileStatusWidget->getAllSelectedFiles();
Chris@95 144 }
Chris@95 145
Chris@109 146 QStringList HgTabWidget::getAllCommittableFiles() const
Chris@109 147 {
Chris@116 148 return m_fileStatusWidget->getAllCommittableFiles();
Chris@109 149 }
Chris@109 150
Chris@96 151 QStringList HgTabWidget::getSelectedCommittableFiles() const
Chris@95 152 {
Chris@116 153 return m_fileStatusWidget->getSelectedCommittableFiles();
Chris@95 154 }
Chris@95 155
Chris@109 156 QStringList HgTabWidget::getAllRevertableFiles() const
Chris@109 157 {
Chris@116 158 return m_fileStatusWidget->getAllRevertableFiles();
Chris@109 159 }
Chris@109 160
Chris@109 161 QStringList HgTabWidget::getSelectedRevertableFiles() const
Chris@109 162 {
Chris@116 163 return m_fileStatusWidget->getSelectedRevertableFiles();
Chris@109 164 }
Chris@109 165
Chris@96 166 QStringList HgTabWidget::getSelectedAddableFiles() const
Chris@95 167 {
Chris@116 168 return m_fileStatusWidget->getSelectedAddableFiles();
Chris@95 169 }
Chris@95 170
Chris@109 171 QStringList HgTabWidget::getAllRemovableFiles() const
Chris@109 172 {
Chris@116 173 return m_fileStatusWidget->getAllRemovableFiles();
Chris@109 174 }
Chris@109 175
Chris@96 176 QStringList HgTabWidget::getSelectedRemovableFiles() const
Chris@95 177 {
Chris@116 178 return m_fileStatusWidget->getSelectedRemovableFiles();
Chris@95 179 }
Chris@95 180
Chris@163 181 QStringList HgTabWidget::getAllUnresolvedFiles() const
Chris@163 182 {
Chris@163 183 return m_fileStatusWidget->getAllUnresolvedFiles();
Chris@163 184 }
Chris@163 185
Chris@163 186 QStringList HgTabWidget::getSelectedUnresolvedFiles() const
Chris@163 187 {
Chris@163 188 return m_fileStatusWidget->getSelectedUnresolvedFiles();
Chris@163 189 }
Chris@163 190
Chris@96 191 void HgTabWidget::updateWorkFolderFileList(QString fileList)
jtkorhonen@0 192 {
Chris@116 193 m_fileStates.parseStates(fileList);
Chris@116 194 m_fileStatusWidget->setFileStates(m_fileStates);
jtkorhonen@0 195 }
jtkorhonen@0 196
Chris@120 197 void HgTabWidget::setNewLog(QString hgLogList)
jtkorhonen@0 198 {
Chris@120 199 m_historyWidget->parseNewLog(hgLogList);
Chris@134 200 if (m_historyWidget->haveNewItems()) {
Chris@153 201 showHistoryTab();
Chris@134 202 }
Chris@120 203 }
Chris@120 204
Chris@120 205 void HgTabWidget::addIncrementalLog(QString hgLogList)
Chris@120 206 {
Chris@120 207 m_historyWidget->parseIncrementalLog(hgLogList);
Chris@134 208 if (m_historyWidget->haveNewItems()) {
Chris@153 209 showHistoryTab();
Chris@134 210 }
jtkorhonen@0 211 }
jtkorhonen@0 212
Chris@96 213 void HgTabWidget::setWorkFolderAndRepoNames(QString workFolderPath, QString remoteRepoPath)
jtkorhonen@0 214 {
Chris@116 215 m_fileStatusWidget->setLocalPath(workFolderPath);
Chris@116 216 m_fileStatusWidget->setRemoteURL(remoteRepoPath);
jtkorhonen@0 217 }
Chris@106 218
Chris@115 219 void HgTabWidget::setState(QString state)
Chris@106 220 {
Chris@116 221 m_fileStatusWidget->setState(state);
Chris@106 222 }
Chris@153 223
Chris@153 224 void HgTabWidget::showWorkTab()
Chris@153 225 {
Chris@153 226 setCurrentWidget(m_fileStatusWidget);
Chris@153 227 }
Chris@153 228
Chris@153 229 void HgTabWidget::showHistoryTab()
Chris@153 230 {
Chris@153 231 setCurrentWidget(m_historyWidget);
Chris@153 232 }
Chris@153 233