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