Mercurial > hg > easyhg
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); |