Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py

changeset 3009
bf5ae5d7477d
parent 2962
d6c9d1ca2da4
child 3020
542e97d4ecb3
child 3057
10516539f238
equal deleted inserted replaced
3008:7848489bcb92 3009:bf5ae5d7477d
10 import os 10 import os
11 11
12 import pysvn 12 import pysvn
13 13
14 from PyQt4.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot 14 from PyQt4.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot
15 from PyQt4.QtGui import QCursor, QHeaderView, QDialog, QApplication, QDialogButtonBox, \ 15 from PyQt4.QtGui import QCursor, QHeaderView, QDialog, QApplication, \
16 QTreeWidgetItem 16 QDialogButtonBox, QTreeWidgetItem
17 17
18 from E5Gui import E5MessageBox 18 from E5Gui import E5MessageBox
19 19
20 from .SvnUtilities import formatTime, dateFromTime_t 20 from .SvnUtilities import formatTime, dateFromTime_t
21 from .SvnDialogMixin import SvnDialogMixin 21 from .SvnDialogMixin import SvnDialogMixin
56 56
57 self.fromDate.setDisplayFormat("yyyy-MM-dd") 57 self.fromDate.setDisplayFormat("yyyy-MM-dd")
58 self.toDate.setDisplayFormat("yyyy-MM-dd") 58 self.toDate.setDisplayFormat("yyyy-MM-dd")
59 self.fromDate.setDate(QDate.currentDate()) 59 self.fromDate.setDate(QDate.currentDate())
60 self.toDate.setDate(QDate.currentDate()) 60 self.toDate.setDate(QDate.currentDate())
61 self.fieldCombo.setCurrentIndex(self.fieldCombo.findText(self.trUtf8("Message"))) 61 self.fieldCombo.setCurrentIndex(
62 self.limitSpinBox.setValue(self.vcs.getPlugin().getPreferences("LogLimit")) 62 self.fieldCombo.findText(self.trUtf8("Message")))
63 self.stopCheckBox.setChecked(self.vcs.getPlugin().getPreferences("StopLogOnCopy")) 63 self.limitSpinBox.setValue(
64 self.vcs.getPlugin().getPreferences("LogLimit"))
65 self.stopCheckBox.setChecked(
66 self.vcs.getPlugin().getPreferences("StopLogOnCopy"))
64 67
65 self.__messageRole = Qt.UserRole 68 self.__messageRole = Qt.UserRole
66 self.__changesRole = Qt.UserRole + 1 69 self.__changesRole = Qt.UserRole + 1
67 70
68 self.flags = { 71 self.flags = {
163 else: 166 else:
164 copyPath = changedPath["copyfrom_path"] 167 copyPath = changedPath["copyfrom_path"]
165 if changedPath["copyfrom_revision"] is None: 168 if changedPath["copyfrom_revision"] is None:
166 copyRev = "" 169 copyRev = ""
167 else: 170 else:
168 copyRev = "{0:7d}".format(changedPath["copyfrom_revision"].number) 171 copyRev = "{0:7d}".format(
172 changedPath["copyfrom_revision"].number)
169 change = { 173 change = {
170 "action": changedPath["action"], 174 "action": changedPath["action"],
171 "path": changedPath["path"], 175 "path": changedPath["path"],
172 "copyfrom_path": copyPath, 176 "copyfrom_path": copyPath,
173 "copyfrom_revision": copyRev, 177 "copyfrom_revision": copyRev,
217 limit = self.limitSpinBox.value() 221 limit = self.limitSpinBox.value()
218 if startRev is None: 222 if startRev is None:
219 start = pysvn.Revision(pysvn.opt_revision_kind.head) 223 start = pysvn.Revision(pysvn.opt_revision_kind.head)
220 else: 224 else:
221 try: 225 try:
222 start = pysvn.Revision(pysvn.opt_revision_kind.number, int(startRev)) 226 start = pysvn.Revision(pysvn.opt_revision_kind.number,
227 int(startRev))
223 except TypeError: 228 except TypeError:
224 start = pysvn.Revision(pysvn.opt_revision_kind.head) 229 start = pysvn.Revision(pysvn.opt_revision_kind.head)
225 230
226 locker = QMutexLocker(self.vcs.vcsExecutionMutex) 231 locker = QMutexLocker(self.vcs.vcsExecutionMutex)
227 cwd = os.getcwd() 232 cwd = os.getcwd()
253 258
254 for log in logs: 259 for log in logs:
255 self.__generateLogItem(log["author"], log["date"], 260 self.__generateLogItem(log["author"], log["date"],
256 log["message"], log["revision"], log['changed_paths']) 261 log["message"], log["revision"], log['changed_paths'])
257 dt = dateFromTime_t(log["date"]) 262 dt = dateFromTime_t(log["date"])
258 if not self.__maxDate.isValid() and not self.__minDate.isValid(): 263 if not self.__maxDate.isValid() and \
264 not self.__minDate.isValid():
259 self.__maxDate = dt 265 self.__maxDate = dt
260 self.__minDate = dt 266 self.__minDate = dt
261 else: 267 else:
262 if self.__maxDate < dt: 268 if self.__maxDate < dt:
263 self.__maxDate = dt 269 self.__maxDate = dt
319 @param rev1 first revision number (integer) 325 @param rev1 first revision number (integer)
320 @param rev2 second revision number (integer) 326 @param rev2 second revision number (integer)
321 @param peg_rev revision number to use as a reference (integer) 327 @param peg_rev revision number to use as a reference (integer)
322 """ 328 """
323 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): 329 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked():
324 self.vcs.svnSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) 330 self.vcs.svnSbsDiff(self.filename,
331 revisions=(str(rev1), str(rev2)))
325 else: 332 else:
326 if self.diff is None: 333 if self.diff is None:
327 from .SvnDiffDialog import SvnDiffDialog 334 from .SvnDiffDialog import SvnDiffDialog
328 self.diff = SvnDiffDialog(self.vcs) 335 self.diff = SvnDiffDialog(self.vcs)
329 self.diff.show() 336 self.diff.show()
361 change["copyfrom_path"], change["copyfrom_revision"]) 368 change["copyfrom_path"], change["copyfrom_revision"])
362 self.__resizeColumnsFiles() 369 self.__resizeColumnsFiles()
363 self.__resortFiles() 370 self.__resortFiles()
364 371
365 self.diffPreviousButton.setEnabled( 372 self.diffPreviousButton.setEnabled(
366 current != self.logTree.topLevelItem(self.logTree.topLevelItemCount() - 1)) 373 current != self.logTree.topLevelItem(
374 self.logTree.topLevelItemCount() - 1))
367 375
368 @pyqtSlot() 376 @pyqtSlot()
369 def on_logTree_itemSelectionChanged(self): 377 def on_logTree_itemSelectionChanged(self):
370 """ 378 """
371 Private slot called, when the selection has changed. 379 Private slot called, when the selection has changed.
372 """ 380 """
373 self.diffRevisionsButton.setEnabled(len(self.logTree.selectedItems()) == 2) 381 self.diffRevisionsButton.setEnabled(
382 len(self.logTree.selectedItems()) == 2)
374 383
375 @pyqtSlot() 384 @pyqtSlot()
376 def on_nextButton_clicked(self): 385 def on_nextButton_clicked(self):
377 """ 386 """
378 Private slot to handle the Next button. 387 Private slot to handle the Next button.
395 if itm is None: 404 if itm is None:
396 self.diffPreviousButton.setEnabled(False) 405 self.diffPreviousButton.setEnabled(False)
397 return 406 return
398 rev2 = int(itm.text(0)) 407 rev2 = int(itm.text(0))
399 408
400 itm = self.logTree.topLevelItem(self.logTree.indexOfTopLevelItem(itm) + 1) 409 itm = self.logTree.topLevelItem(
410 self.logTree.indexOfTopLevelItem(itm) + 1)
401 if itm is None: 411 if itm is None:
402 self.diffPreviousButton.setEnabled(False) 412 self.diffPreviousButton.setEnabled(False)
403 return 413 return
404 rev1 = int(itm.text(0)) 414 rev1 = int(itm.text(0))
405 415
485 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 495 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
486 elif txt == self.trUtf8("Revision"): 496 elif txt == self.trUtf8("Revision"):
487 fieldIndex = 0 497 fieldIndex = 0
488 txt = self.rxEdit.text() 498 txt = self.rxEdit.text()
489 if txt.startswith("^"): 499 if txt.startswith("^"):
490 searchRx = QRegExp("^\s*{0}".format(txt[1:]), Qt.CaseInsensitive) 500 searchRx = QRegExp(
501 "^\s*{0}".format(txt[1:]), Qt.CaseInsensitive)
491 else: 502 else:
492 searchRx = QRegExp(txt, Qt.CaseInsensitive) 503 searchRx = QRegExp(txt, Qt.CaseInsensitive)
493 else: 504 else:
494 fieldIndex = 3 505 fieldIndex = 3
495 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 506 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)

eric ide

mercurial