110 |
110 |
111 def __resortLog(self): |
111 def __resortLog(self): |
112 """ |
112 """ |
113 Private method to resort the log tree. |
113 Private method to resort the log tree. |
114 """ |
114 """ |
115 self.logTree.sortItems(self.logTree.sortColumn(), |
115 self.logTree.sortItems( |
|
116 self.logTree.sortColumn(), |
116 self.logTree.header().sortIndicatorOrder()) |
117 self.logTree.header().sortIndicatorOrder()) |
117 |
118 |
118 def __resizeColumnsFiles(self): |
119 def __resizeColumnsFiles(self): |
119 """ |
120 """ |
120 Private method to resize the changed files tree columns. |
121 Private method to resize the changed files tree columns. |
125 def __resortFiles(self): |
126 def __resortFiles(self): |
126 """ |
127 """ |
127 Private method to resort the changed files tree. |
128 Private method to resort the changed files tree. |
128 """ |
129 """ |
129 sortColumn = self.filesTree.sortColumn() |
130 sortColumn = self.filesTree.sortColumn() |
130 self.filesTree.sortItems(1, |
131 self.filesTree.sortItems( |
131 self.filesTree.header().sortIndicatorOrder()) |
132 1, self.filesTree.header().sortIndicatorOrder()) |
132 self.filesTree.sortItems(sortColumn, |
133 self.filesTree.sortItems( |
133 self.filesTree.header().sortIndicatorOrder()) |
134 sortColumn, self.filesTree.header().sortIndicatorOrder()) |
134 |
135 |
135 def __generateLogItem(self, author, date, message, revision, changedPaths): |
136 def __generateLogItem(self, author, date, message, revision, changedPaths): |
136 """ |
137 """ |
137 Private method to generate a log tree entry. |
138 Private method to generate a log tree entry. |
138 |
139 |
198 @param path path of the file in the repository (string) |
199 @param path path of the file in the repository (string) |
199 @param copyFrom path the file was copied from (None, string) |
200 @param copyFrom path the file was copied from (None, string) |
200 @param copyRev revision the file was copied from (None, string) |
201 @param copyRev revision the file was copied from (None, string) |
201 @return reference to the generated item (QTreeWidgetItem) |
202 @return reference to the generated item (QTreeWidgetItem) |
202 """ |
203 """ |
203 itm = QTreeWidgetItem(self.filesTree, |
204 itm = QTreeWidgetItem( |
|
205 self.filesTree, |
204 [self.flags[action], path, copyFrom, copyRev] |
206 [self.flags[action], path, copyFrom, copyRev] |
205 ) |
207 ) |
206 |
208 |
207 itm.setTextAlignment(3, Qt.AlignRight) |
209 itm.setTextAlignment(3, Qt.AlignRight) |
208 |
210 |
242 if fetched == 0: |
244 if fetched == 0: |
243 revstart = start |
245 revstart = start |
244 else: |
246 else: |
245 revstart = pysvn.Revision( |
247 revstart = pysvn.Revision( |
246 pysvn.opt_revision_kind.number, nextRev) |
248 pysvn.opt_revision_kind.number, nextRev) |
247 allLogs = self.client.log(self.fname, |
249 allLogs = self.client.log( |
248 revision_start=revstart, |
250 self.fname, revision_start=revstart, |
249 discover_changed_paths=True, |
251 discover_changed_paths=True, limit=flimit + 1, |
250 limit=flimit + 1, |
252 strict_node_history=self.stopCheckBox.isChecked()) |
251 strict_node_history=self.stopCheckBox.isChecked()) |
|
252 if len(allLogs) <= flimit or self._clientCancelCallback(): |
253 if len(allLogs) <= flimit or self._clientCancelCallback(): |
253 logs.extend(allLogs) |
254 logs.extend(allLogs) |
254 break |
255 break |
255 else: |
256 else: |
256 logs.extend(allLogs[:-1]) |
257 logs.extend(allLogs[:-1]) |
257 nextRev = allLogs[-1]["revision"].number |
258 nextRev = allLogs[-1]["revision"].number |
258 fetched += fetchLimit |
259 fetched += fetchLimit |
259 locker.unlock() |
260 locker.unlock() |
260 |
261 |
261 for log in logs: |
262 for log in logs: |
262 self.__generateLogItem(log["author"], log["date"], |
263 self.__generateLogItem( |
263 log["message"], log["revision"], log['changed_paths']) |
264 log["author"], log["date"], log["message"], |
|
265 log["revision"], log['changed_paths']) |
264 dt = dateFromTime_t(log["date"]) |
266 dt = dateFromTime_t(log["date"]) |
265 if not self.__maxDate.isValid() and \ |
267 if not self.__maxDate.isValid() and \ |
266 not self.__minDate.isValid(): |
268 not self.__minDate.isValid(): |
267 self.__maxDate = dt |
269 self.__maxDate = dt |
268 self.__minDate = dt |
270 self.__minDate = dt |
364 |
366 |
365 self.filesTree.clear() |
367 self.filesTree.clear() |
366 changes = current.data(0, self.__changesRole) |
368 changes = current.data(0, self.__changesRole) |
367 if len(changes) > 0: |
369 if len(changes) > 0: |
368 for change in changes: |
370 for change in changes: |
369 self.__generateFileItem(change["action"], change["path"], |
371 self.__generateFileItem( |
|
372 change["action"], change["path"], |
370 change["copyfrom_path"], change["copyfrom_revision"]) |
373 change["copyfrom_path"], change["copyfrom_revision"]) |
371 self.__resizeColumnsFiles() |
374 self.__resizeColumnsFiles() |
372 self.__resortFiles() |
375 self.__resortFiles() |
373 |
376 |
374 self.diffPreviousButton.setEnabled( |
377 self.diffPreviousButton.setEnabled( |
442 """ |
445 """ |
443 Private slot to show an error message. |
446 Private slot to show an error message. |
444 |
447 |
445 @param msg error message to show (string) |
448 @param msg error message to show (string) |
446 """ |
449 """ |
447 E5MessageBox.critical(self, |
450 E5MessageBox.critical( |
|
451 self, |
448 self.trUtf8("Subversion Error"), |
452 self.trUtf8("Subversion Error"), |
449 msg) |
453 msg) |
450 |
454 |
451 @pyqtSlot(QDate) |
455 @pyqtSlot(QDate) |
452 def on_fromDate_dateChanged(self, date): |
456 def on_fromDate_dateChanged(self, date): |