comparison hgtabwidget.cpp @ 326:6e1fdda1dff2 filelist_right_button_menu

Implement right-button menu functions for file lists; convert the toolbar-button functions (apart from Add and Remove) to modal only on working copy state rather than selection state
author Chris Cannam
date Fri, 11 Mar 2011 15:33:16 +0000
parents 4811eb34e819
children f166f70c64f9
comparison
equal deleted inserted replaced
325:5fa5c908ca00 326:6e1fdda1dff2
28 28
29 HgTabWidget::HgTabWidget(QWidget *parent, 29 HgTabWidget::HgTabWidget(QWidget *parent,
30 QString workFolderPath) : 30 QString workFolderPath) :
31 QTabWidget(parent) 31 QTabWidget(parent)
32 { 32 {
33 // Work page 33 // Work tab
34 m_fileStatusWidget = new FileStatusWidget; 34 m_fileStatusWidget = new FileStatusWidget;
35 m_fileStatusWidget->setLocalPath(workFolderPath); 35 m_fileStatusWidget->setLocalPath(workFolderPath);
36
36 connect(m_fileStatusWidget, SIGNAL(selectionChanged()), 37 connect(m_fileStatusWidget, SIGNAL(selectionChanged()),
37 this, SIGNAL(selectionChanged())); 38 this, SIGNAL(selectionChanged()));
39
38 connect(m_fileStatusWidget, SIGNAL(showAllChanged(bool)), 40 connect(m_fileStatusWidget, SIGNAL(showAllChanged(bool)),
39 this, SIGNAL(showAllChanged(bool))); 41 this, SIGNAL(showAllChanged(bool)));
42
43 connect(m_fileStatusWidget, SIGNAL(annotateFiles(QStringList)),
44 this, SIGNAL(annotateFiles(QStringList)));
45
46 connect(m_fileStatusWidget, SIGNAL(diffFiles(QStringList)),
47 this, SIGNAL(diffFiles(QStringList)));
48
49 connect(m_fileStatusWidget, SIGNAL(commitFiles(QStringList)),
50 this, SIGNAL(commitFiles(QStringList)));
51
52 connect(m_fileStatusWidget, SIGNAL(revertFiles(QStringList)),
53 this, SIGNAL(revertFiles(QStringList)));
54
55 connect(m_fileStatusWidget, SIGNAL(addFiles(QStringList)),
56 this, SIGNAL(addFiles(QStringList)));
57
58 connect(m_fileStatusWidget, SIGNAL(removeFiles(QStringList)),
59 this, SIGNAL(removeFiles(QStringList)));
60
61 connect(m_fileStatusWidget, SIGNAL(redoFileMerges(QStringList)),
62 this, SIGNAL(redoFileMerges(QStringList)));
63
64 connect(m_fileStatusWidget, SIGNAL(markFilesResolved(QStringList)),
65 this, SIGNAL(markFilesResolved(QStringList)));
66
67 connect(m_fileStatusWidget, SIGNAL(ignoreFiles(QStringList)),
68 this, SIGNAL(ignoreFiles(QStringList)));
69
70 connect(m_fileStatusWidget, SIGNAL(unIgnoreFiles(QStringList)),
71 this, SIGNAL(unIgnoreFiles(QStringList)));
72
40 addTab(m_fileStatusWidget, tr("My work")); 73 addTab(m_fileStatusWidget, tr("My work"));
41 74
42 // History graph page 75 // History graph tab
43 m_historyWidget = new HistoryWidget; 76 m_historyWidget = new HistoryWidget;
44 addTab(m_historyWidget, tr("History")); 77 addTab(m_historyWidget, tr("History"));
45 78
46 connect(m_historyWidget, SIGNAL(commit()), 79 connect(m_historyWidget, SIGNAL(commit()),
47 this, SIGNAL(commit())); 80 this, SIGNAL(commit()));
114 147
115 bool HgTabWidget::canCommit() const 148 bool HgTabWidget::canCommit() const
116 { 149 {
117 if (!m_fileStatusWidget->haveChangesToCommit()) return false; 150 if (!m_fileStatusWidget->haveChangesToCommit()) return false;
118 if (!m_fileStatusWidget->getAllUnresolvedFiles().empty()) return false; 151 if (!m_fileStatusWidget->getAllUnresolvedFiles().empty()) return false;
119 152 return true;
120 QStringList addable = m_fileStatusWidget->getSelectedAddableFiles();
121 if (addable.empty()) return true;
122
123 QStringList committable = m_fileStatusWidget->getSelectedCommittableFiles();
124
125 // "Removed" files are both committable and addable; don't return
126 // a false negative if the selection only contains these
127 if (committable == addable) return true;
128 return false;
129 } 153 }
130 154
131 bool HgTabWidget::canRevert() const 155 bool HgTabWidget::canRevert() const
132 { 156 {
133 // Not the same as canCommit() -- we can revert (and diff) 157 // Not the same as canCommit() -- we can revert (and diff)
134 // unresolved files, but we can't commit them 158 // unresolved files, but we can't commit them
135 if (!m_fileStatusWidget->haveChangesToCommit() && 159 if (!m_fileStatusWidget->haveChangesToCommit() &&
136 m_fileStatusWidget->getAllUnresolvedFiles().empty()) return false; 160 m_fileStatusWidget->getAllUnresolvedFiles().empty()) return false;
137 161 return true;
138 // The rest of this logic is as in canCommit though
139
140 QStringList addable = m_fileStatusWidget->getSelectedAddableFiles();
141 if (addable.empty()) return true;
142
143 QStringList committable = m_fileStatusWidget->getSelectedCommittableFiles();
144 if (committable == addable) return true;
145 return false;
146 } 162 }
147 163
148 bool HgTabWidget::canAdd() const 164 bool HgTabWidget::canAdd() const
149 { 165 {
150 QStringList addable = m_fileStatusWidget->getSelectedAddableFiles(); 166 QStringList addable = m_fileStatusWidget->getSelectedAddableFiles();
151 if (addable.empty()) return false; 167 if (addable.empty()) return false;
152 168
153 QStringList removable = m_fileStatusWidget->getSelectedRemovableFiles(); 169 QStringList removable = m_fileStatusWidget->getSelectedRemovableFiles();
154 if (!removable.empty()) return false; 170 if (!removable.empty()) return false;
155 171
156 QStringList committable = m_fileStatusWidget->getSelectedCommittableFiles(); 172 return true;
157
158 // "Removed" files are both committable and addable; don't return
159 // a false negative if the selection only contains these
160 if (committable == addable || committable.empty()) return true;
161 return false;
162 } 173 }
163 174
164 bool HgTabWidget::canRemove() const 175 bool HgTabWidget::canRemove() const
165 { 176 {
166 if (m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false; 177 if (m_fileStatusWidget->getSelectedRemovableFiles().empty()) return false;
168 return true; 179 return true;
169 } 180 }
170 181
171 bool HgTabWidget::canResolve() const 182 bool HgTabWidget::canResolve() const
172 { 183 {
173 return !m_fileStatusWidget->getSelectedUnresolvedFiles().empty(); 184 return !m_fileStatusWidget->getAllUnresolvedFiles().empty();
174 } 185 }
175 186
176 bool HgTabWidget::haveChangesToCommit() const 187 bool HgTabWidget::haveChangesToCommit() const
177 { 188 {
178 return m_fileStatusWidget->haveChangesToCommit(); 189 return m_fileStatusWidget->haveChangesToCommit();
179 } 190 }
180 191
181 QStringList HgTabWidget::getAllSelectedFiles() const
182 {
183 return m_fileStatusWidget->getAllSelectedFiles();
184 }
185
186 QStringList HgTabWidget::getAllCommittableFiles() const 192 QStringList HgTabWidget::getAllCommittableFiles() const
187 { 193 {
188 return m_fileStatusWidget->getAllCommittableFiles(); 194 return m_fileStatusWidget->getAllCommittableFiles();
189 } 195 }
190 196
191 QStringList HgTabWidget::getSelectedCommittableFiles() const
192 {
193 return m_fileStatusWidget->getSelectedCommittableFiles();
194 }
195
196 QStringList HgTabWidget::getAllRevertableFiles() const 197 QStringList HgTabWidget::getAllRevertableFiles() const
197 { 198 {
198 return m_fileStatusWidget->getAllRevertableFiles(); 199 return m_fileStatusWidget->getAllRevertableFiles();
199 } 200 }
200 201
201 QStringList HgTabWidget::getSelectedRevertableFiles() const
202 {
203 return m_fileStatusWidget->getSelectedRevertableFiles();
204 }
205
206 QStringList HgTabWidget::getSelectedAddableFiles() const 202 QStringList HgTabWidget::getSelectedAddableFiles() const
207 { 203 {
208 return m_fileStatusWidget->getSelectedAddableFiles(); 204 return m_fileStatusWidget->getSelectedAddableFiles();
209 } 205 }
210 206
211 QStringList HgTabWidget::getAllRemovableFiles() const
212 {
213 return m_fileStatusWidget->getAllRemovableFiles();
214 }
215
216 QStringList HgTabWidget::getSelectedRemovableFiles() const 207 QStringList HgTabWidget::getSelectedRemovableFiles() const
217 { 208 {
218 return m_fileStatusWidget->getSelectedRemovableFiles(); 209 return m_fileStatusWidget->getSelectedRemovableFiles();
219 } 210 }
220 211
221 QStringList HgTabWidget::getAllUnresolvedFiles() const 212 QStringList HgTabWidget::getAllUnresolvedFiles() const
222 { 213 {
223 return m_fileStatusWidget->getAllUnresolvedFiles(); 214 return m_fileStatusWidget->getAllUnresolvedFiles();
224 }
225
226 QStringList HgTabWidget::getSelectedUnresolvedFiles() const
227 {
228 return m_fileStatusWidget->getSelectedUnresolvedFiles();
229 } 215 }
230 216
231 void HgTabWidget::updateWorkFolderFileList(QString fileList) 217 void HgTabWidget::updateWorkFolderFileList(QString fileList)
232 { 218 {
233 m_fileStates.parseStates(fileList); 219 m_fileStates.parseStates(fileList);