Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2911
ce77f0b1ee67
parent 3009
bf5ae5d7477d
child 3058
0a02c433f52d
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
12 import os 12 import os
13 13
14 import pysvn 14 import pysvn
15 15
16 from PyQt4.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot 16 from PyQt4.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot
17 from PyQt4.QtGui import QCursor, QHeaderView, QDialog, QApplication, QDialogButtonBox, \ 17 from PyQt4.QtGui import QCursor, QHeaderView, QDialog, QApplication, \
18 QTreeWidgetItem 18 QDialogButtonBox, QTreeWidgetItem
19 19
20 from E5Gui import E5MessageBox 20 from E5Gui import E5MessageBox
21 21
22 from .SvnUtilities import formatTime, dateFromTime_t 22 from .SvnUtilities import formatTime, dateFromTime_t
23 from .SvnDialogMixin import SvnDialogMixin 23 from .SvnDialogMixin import SvnDialogMixin
58 58
59 self.fromDate.setDisplayFormat("yyyy-MM-dd") 59 self.fromDate.setDisplayFormat("yyyy-MM-dd")
60 self.toDate.setDisplayFormat("yyyy-MM-dd") 60 self.toDate.setDisplayFormat("yyyy-MM-dd")
61 self.fromDate.setDate(QDate.currentDate()) 61 self.fromDate.setDate(QDate.currentDate())
62 self.toDate.setDate(QDate.currentDate()) 62 self.toDate.setDate(QDate.currentDate())
63 self.fieldCombo.setCurrentIndex(self.fieldCombo.findText(self.trUtf8("Message"))) 63 self.fieldCombo.setCurrentIndex(
64 self.limitSpinBox.setValue(self.vcs.getPlugin().getPreferences("LogLimit")) 64 self.fieldCombo.findText(self.trUtf8("Message")))
65 self.stopCheckBox.setChecked(self.vcs.getPlugin().getPreferences("StopLogOnCopy")) 65 self.limitSpinBox.setValue(
66 self.vcs.getPlugin().getPreferences("LogLimit"))
67 self.stopCheckBox.setChecked(
68 self.vcs.getPlugin().getPreferences("StopLogOnCopy"))
66 69
67 self.__messageRole = Qt.UserRole 70 self.__messageRole = Qt.UserRole
68 self.__changesRole = Qt.UserRole + 1 71 self.__changesRole = Qt.UserRole + 1
69 72
70 self.flags = { 73 self.flags = {
165 else: 168 else:
166 copyPath = changedPath["copyfrom_path"] 169 copyPath = changedPath["copyfrom_path"]
167 if changedPath["copyfrom_revision"] is None: 170 if changedPath["copyfrom_revision"] is None:
168 copyRev = "" 171 copyRev = ""
169 else: 172 else:
170 copyRev = "{0:7d}".format(changedPath["copyfrom_revision"].number) 173 copyRev = "{0:7d}".format(
174 changedPath["copyfrom_revision"].number)
171 change = { 175 change = {
172 "action": changedPath["action"], 176 "action": changedPath["action"],
173 "path": changedPath["path"], 177 "path": changedPath["path"],
174 "copyfrom_path": copyPath, 178 "copyfrom_path": copyPath,
175 "copyfrom_revision": copyRev, 179 "copyfrom_revision": copyRev,
219 limit = self.limitSpinBox.value() 223 limit = self.limitSpinBox.value()
220 if startRev is None: 224 if startRev is None:
221 start = pysvn.Revision(pysvn.opt_revision_kind.head) 225 start = pysvn.Revision(pysvn.opt_revision_kind.head)
222 else: 226 else:
223 try: 227 try:
224 start = pysvn.Revision(pysvn.opt_revision_kind.number, int(startRev)) 228 start = pysvn.Revision(pysvn.opt_revision_kind.number,
229 int(startRev))
225 except TypeError: 230 except TypeError:
226 start = pysvn.Revision(pysvn.opt_revision_kind.head) 231 start = pysvn.Revision(pysvn.opt_revision_kind.head)
227 232
228 locker = QMutexLocker(self.vcs.vcsExecutionMutex) 233 locker = QMutexLocker(self.vcs.vcsExecutionMutex)
229 cwd = os.getcwd() 234 cwd = os.getcwd()
255 260
256 for log in logs: 261 for log in logs:
257 self.__generateLogItem(log["author"], log["date"], 262 self.__generateLogItem(log["author"], log["date"],
258 log["message"], log["revision"], log['changed_paths']) 263 log["message"], log["revision"], log['changed_paths'])
259 dt = dateFromTime_t(log["date"]) 264 dt = dateFromTime_t(log["date"])
260 if not self.__maxDate.isValid() and not self.__minDate.isValid(): 265 if not self.__maxDate.isValid() and \
266 not self.__minDate.isValid():
261 self.__maxDate = dt 267 self.__maxDate = dt
262 self.__minDate = dt 268 self.__minDate = dt
263 else: 269 else:
264 if self.__maxDate < dt: 270 if self.__maxDate < dt:
265 self.__maxDate = dt 271 self.__maxDate = dt
321 @param rev1 first revision number (integer) 327 @param rev1 first revision number (integer)
322 @param rev2 second revision number (integer) 328 @param rev2 second revision number (integer)
323 @param peg_rev revision number to use as a reference (integer) 329 @param peg_rev revision number to use as a reference (integer)
324 """ 330 """
325 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): 331 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked():
326 self.vcs.svnSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) 332 self.vcs.svnSbsDiff(self.filename,
333 revisions=(str(rev1), str(rev2)))
327 else: 334 else:
328 if self.diff is None: 335 if self.diff is None:
329 from .SvnDiffDialog import SvnDiffDialog 336 from .SvnDiffDialog import SvnDiffDialog
330 self.diff = SvnDiffDialog(self.vcs) 337 self.diff = SvnDiffDialog(self.vcs)
331 self.diff.show() 338 self.diff.show()
363 change["copyfrom_path"], change["copyfrom_revision"]) 370 change["copyfrom_path"], change["copyfrom_revision"])
364 self.__resizeColumnsFiles() 371 self.__resizeColumnsFiles()
365 self.__resortFiles() 372 self.__resortFiles()
366 373
367 self.diffPreviousButton.setEnabled( 374 self.diffPreviousButton.setEnabled(
368 current != self.logTree.topLevelItem(self.logTree.topLevelItemCount() - 1)) 375 current != self.logTree.topLevelItem(
376 self.logTree.topLevelItemCount() - 1))
369 377
370 @pyqtSlot() 378 @pyqtSlot()
371 def on_logTree_itemSelectionChanged(self): 379 def on_logTree_itemSelectionChanged(self):
372 """ 380 """
373 Private slot called, when the selection has changed. 381 Private slot called, when the selection has changed.
374 """ 382 """
375 self.diffRevisionsButton.setEnabled(len(self.logTree.selectedItems()) == 2) 383 self.diffRevisionsButton.setEnabled(
384 len(self.logTree.selectedItems()) == 2)
376 385
377 @pyqtSlot() 386 @pyqtSlot()
378 def on_nextButton_clicked(self): 387 def on_nextButton_clicked(self):
379 """ 388 """
380 Private slot to handle the Next button. 389 Private slot to handle the Next button.
397 if itm is None: 406 if itm is None:
398 self.diffPreviousButton.setEnabled(False) 407 self.diffPreviousButton.setEnabled(False)
399 return 408 return
400 rev2 = int(itm.text(0)) 409 rev2 = int(itm.text(0))
401 410
402 itm = self.logTree.topLevelItem(self.logTree.indexOfTopLevelItem(itm) + 1) 411 itm = self.logTree.topLevelItem(
412 self.logTree.indexOfTopLevelItem(itm) + 1)
403 if itm is None: 413 if itm is None:
404 self.diffPreviousButton.setEnabled(False) 414 self.diffPreviousButton.setEnabled(False)
405 return 415 return
406 rev1 = int(itm.text(0)) 416 rev1 = int(itm.text(0))
407 417
487 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 497 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
488 elif txt == self.trUtf8("Revision"): 498 elif txt == self.trUtf8("Revision"):
489 fieldIndex = 0 499 fieldIndex = 0
490 txt = self.rxEdit.text() 500 txt = self.rxEdit.text()
491 if txt.startswith("^"): 501 if txt.startswith("^"):
492 searchRx = QRegExp("^\s*{0}".format(txt[1:]), Qt.CaseInsensitive) 502 searchRx = QRegExp(
503 "^\s*{0}".format(txt[1:]), Qt.CaseInsensitive)
493 else: 504 else:
494 searchRx = QRegExp(txt, Qt.CaseInsensitive) 505 searchRx = QRegExp(txt, Qt.CaseInsensitive)
495 else: 506 else:
496 fieldIndex = 3 507 fieldIndex = 3
497 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 508 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
511 self.filesTree.clear() 522 self.filesTree.clear()
512 523
513 @pyqtSlot(bool) 524 @pyqtSlot(bool)
514 def on_stopCheckBox_clicked(self, checked): 525 def on_stopCheckBox_clicked(self, checked):
515 """ 526 """
516 Private slot called, when the stop on copy/move checkbox is clicked 527 Private slot called, when the stop on copy/move checkbox is clicked.
528
529 @param checked flag indicating the check box state (boolean)
517 """ 530 """
518 self.vcs.getPlugin().setPreferences("StopLogOnCopy", 531 self.vcs.getPlugin().setPreferences("StopLogOnCopy",
519 int(self.stopCheckBox.isChecked())) 532 int(self.stopCheckBox.isChecked()))
520 self.nextButton.setEnabled(True) 533 self.nextButton.setEnabled(True)
521 self.limitSpinBox.setEnabled(True) 534 self.limitSpinBox.setEnabled(True)

eric ide

mercurial