Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 3287
c3d784c057b3
parent 3283
2079b76a738b
child 3302
e92f0dd51979
equal deleted inserted replaced
3284:8f7d97997243 3287:c3d784c057b3
78 if mode in ("log", "incoming", "outgoing"): 78 if mode in ("log", "incoming", "outgoing"):
79 self.commandMode = mode 79 self.commandMode = mode
80 self.initialCommandMode = mode 80 self.initialCommandMode = mode
81 else: 81 else:
82 self.commandMode = "log" 82 self.commandMode = "log"
83 self.bundle = "" 83 self.initialCommandMode = "log"
84 self.__hgClient = vcs.getClient() 84 self.__hgClient = vcs.getClient()
85
86 self.__bundle = ""
87 self.__filename = ""
88 self.__isFile = False
85 89
86 self.__initData() 90 self.__initData()
87 91
88 self.__allBranchesFilter = self.tr("All") 92 self.__allBranchesFilter = self.tr("All")
89 93
90 self.fromDate.setDisplayFormat("yyyy-MM-dd") 94 self.fromDate.setDisplayFormat("yyyy-MM-dd")
91 self.toDate.setDisplayFormat("yyyy-MM-dd") 95 self.toDate.setDisplayFormat("yyyy-MM-dd")
92 self.fromDate.setDate(QDate.currentDate()) 96 self.__resetUI()
93 self.toDate.setDate(QDate.currentDate())
94 self.fieldCombo.setCurrentIndex(self.fieldCombo.findText(
95 self.tr("Message")))
96 self.limitSpinBox.setValue(self.vcs.getPlugin().getPreferences(
97 "LogLimit"))
98 self.stopCheckBox.setChecked(self.vcs.getPlugin().getPreferences(
99 "StopLogOnCopy"))
100
101 if mode in ("incoming", "outgoing"):
102 self.nextButton.setEnabled(False)
103 self.limitSpinBox.setEnabled(False)
104 97
105 self.__messageRole = Qt.UserRole 98 self.__messageRole = Qt.UserRole
106 self.__changesRole = Qt.UserRole + 1 99 self.__changesRole = Qt.UserRole + 1
107 self.__edgesRole = Qt.UserRole + 2 100 self.__edgesRole = Qt.UserRole + 2
108 self.__parentsRole = Qt.UserRole + 3 101 self.__parentsRole = Qt.UserRole + 3
235 "StopLogOnCopy")) 228 "StopLogOnCopy"))
236 229
237 if self.initialCommandMode in ("incoming", "outgoing"): 230 if self.initialCommandMode in ("incoming", "outgoing"):
238 self.nextButton.setEnabled(False) 231 self.nextButton.setEnabled(False)
239 self.limitSpinBox.setEnabled(False) 232 self.limitSpinBox.setEnabled(False)
233 else:
234 self.nextButton.setEnabled(True)
235 self.limitSpinBox.setEnabled(True)
240 236
241 self.logTree.clear() 237 self.logTree.clear()
242 238
243 self.commandMode = self.initialCommandMode 239 self.commandMode = self.initialCommandMode
244
245 240
246 def __resizeColumnsLog(self): 241 def __resizeColumnsLog(self):
247 """ 242 """
248 Private method to resize the log tree columns. 243 Private method to resize the log tree columns.
249 """ 244 """
443 438
444 if int(rev) > 0: 439 if int(rev) > 0:
445 args = [] 440 args = []
446 args.append("parents") 441 args.append("parents")
447 if self.commandMode == "incoming": 442 if self.commandMode == "incoming":
448 if self.bundle: 443 if self.__bundle:
449 args.append("--repository") 444 args.append("--repository")
450 args.append(self.bundle) 445 args.append(self.__bundle)
451 elif self.vcs.bundleFile and \ 446 elif self.vcs.bundleFile and \
452 os.path.exists(self.vcs.bundleFile): 447 os.path.exists(self.vcs.bundleFile):
453 args.append("--repository") 448 args.append("--repository")
454 args.append(self.vcs.bundleFile) 449 args.append(self.vcs.bundleFile)
455 args.append("--template") 450 args.append("--template")
456 args.append("{rev}\n") 451 args.append("{rev}\n")
457 args.append("-r") 452 args.append("-r")
458 args.append(rev) 453 args.append(rev)
459 if not self.projectMode: 454 if not self.projectMode:
460 args.append(self.filename) 455 args.append(self.__filename)
461 456
462 output = "" 457 output = ""
463 if self.__hgClient: 458 if self.__hgClient:
464 output, errMsg = self.__hgClient.runcommand(args) 459 output, errMsg = self.__hgClient.runcommand(args)
465 else: 460 else:
736 else: 731 else:
737 args.append(os.path.join(os.path.dirname(__file__), 732 args.append(os.path.join(os.path.dirname(__file__),
738 "styles", 733 "styles",
739 "logBrowser.style")) 734 "logBrowser.style"))
740 if self.commandMode == "incoming": 735 if self.commandMode == "incoming":
741 if self.bundle: 736 if self.__bundle:
742 args.append(self.bundle) 737 args.append(self.__bundle)
743 elif not self.vcs.hasSubrepositories(): 738 elif not self.vcs.hasSubrepositories():
744 project = e5App().getObject("Project") 739 project = e5App().getObject("Project")
745 self.vcs.bundleFile = os.path.join( 740 self.vcs.bundleFile = os.path.join(
746 project.getProjectManagementDir(), "hg-bundle.hg") 741 project.getProjectManagementDir(), "hg-bundle.hg")
747 if os.path.exists(self.vcs.bundleFile): 742 if os.path.exists(self.vcs.bundleFile):
750 preargs.append("--quiet") 745 preargs.append("--quiet")
751 preargs.append('--bundle') 746 preargs.append('--bundle')
752 preargs.append(self.vcs.bundleFile) 747 preargs.append(self.vcs.bundleFile)
753 args.append(self.vcs.bundleFile) 748 args.append(self.vcs.bundleFile)
754 if not self.projectMode: 749 if not self.projectMode:
755 args.append(self.filename) 750 args.append(self.__filename)
756 751
757 if self.__hgClient: 752 if self.__hgClient:
758 self.inputGroup.setEnabled(False) 753 self.inputGroup.setEnabled(False)
759 self.inputGroup.hide() 754 self.inputGroup.hide()
760 755
765 if err: 760 if err:
766 self.__showError(err) 761 self.__showError(err)
767 elif self.commandMode != "incoming" or \ 762 elif self.commandMode != "incoming" or \
768 (self.vcs.bundleFile and 763 (self.vcs.bundleFile and
769 os.path.exists(self.vcs.bundleFile)) or \ 764 os.path.exists(self.vcs.bundleFile)) or \
770 self.bundle: 765 self.__bundle:
771 out, err = self.__hgClient.runcommand(args) 766 out, err = self.__hgClient.runcommand(args)
772 self.buf = out.splitlines(True) 767 self.buf = out.splitlines(True)
773 if err: 768 if err:
774 self.__showError(err) 769 self.__showError(err)
775 self.__processBuffer() 770 self.__processBuffer()
789 procStarted = process.waitForStarted(5000) 784 procStarted = process.waitForStarted(5000)
790 if procStarted: 785 if procStarted:
791 process.waitForFinished(30000) 786 process.waitForFinished(30000)
792 787
793 if self.vcs.bundleFile and os.path.exists(self.vcs.bundleFile) or \ 788 if self.vcs.bundleFile and os.path.exists(self.vcs.bundleFile) or \
794 self.bundle: 789 self.__bundle:
795 self.process.start('hg', args) 790 self.process.start('hg', args)
796 procStarted = self.process.waitForStarted(5000) 791 procStarted = self.process.waitForStarted(5000)
797 if not procStarted: 792 if not procStarted:
798 self.inputGroup.setEnabled(False) 793 self.inputGroup.setEnabled(False)
799 self.inputGroup.hide() 794 self.inputGroup.hide()
814 @param fn filename to show the log for (string) 809 @param fn filename to show the log for (string)
815 @keyparam bundle name of a bundle file (string) 810 @keyparam bundle name of a bundle file (string)
816 @keyparam isFile flag indicating log for a file is to be shown 811 @keyparam isFile flag indicating log for a file is to be shown
817 (boolean) 812 (boolean)
818 """ 813 """
819 self.bundle = bundle 814 self.__bundle = bundle
815 self.__isFile = isFile
820 816
821 self.sbsCheckBox.setEnabled(isFile) 817 self.sbsCheckBox.setEnabled(isFile)
822 self.sbsCheckBox.setVisible(isFile) 818 self.sbsCheckBox.setVisible(isFile)
823 819
824 self.errorGroup.hide() 820 self.errorGroup.hide()
825 QApplication.processEvents() 821 QApplication.processEvents()
826 822
827 self.__initData() 823 self.__initData()
828 824
829 self.filename = fn 825 self.__filename = fn
830 self.dname, self.fname = self.vcs.splitPath(fn) 826 self.dname, self.fname = self.vcs.splitPath(fn)
831 827
832 # find the root of the repo 828 # find the root of the repo
833 self.repodir = self.dname 829 self.repodir = self.dname
834 while not os.path.isdir(os.path.join(self.repodir, self.vcs.adminDir)): 830 while not os.path.isdir(os.path.join(self.repodir, self.vcs.adminDir)):
1064 1060
1065 @param rev1 first revision number (integer) 1061 @param rev1 first revision number (integer)
1066 @param rev2 second revision number (integer) 1062 @param rev2 second revision number (integer)
1067 """ 1063 """
1068 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): 1064 if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked():
1069 self.vcs.hgSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) 1065 self.vcs.hgSbsDiff(self.__filename,
1066 revisions=(str(rev1), str(rev2)))
1070 else: 1067 else:
1071 if self.diff is None: 1068 if self.diff is None:
1072 from .HgDiffDialog import HgDiffDialog 1069 from .HgDiffDialog import HgDiffDialog
1073 self.diff = HgDiffDialog(self.vcs) 1070 self.diff = HgDiffDialog(self.vcs)
1074 self.diff.show() 1071 self.diff.show()
1075 self.diff.raise_() 1072 self.diff.raise_()
1076 self.diff.start(self.filename, [rev1, rev2], self.bundle) 1073 self.diff.start(self.__filename, [rev1, rev2], self.__bundle)
1077 1074
1078 def on_buttonBox_clicked(self, button): 1075 def on_buttonBox_clicked(self, button):
1079 """ 1076 """
1080 Private slot called by a button of the button box clicked. 1077 Private slot called by a button of the button box clicked.
1081 1078
1385 1382
1386 self.inputGroup.setEnabled(True) 1383 self.inputGroup.setEnabled(True)
1387 self.inputGroup.show() 1384 self.inputGroup.show()
1388 self.refreshButton.setEnabled(False) 1385 self.refreshButton.setEnabled(False)
1389 1386
1390 self.__initData() 1387 if self.initialCommandMode in ("incoming", "outgoing"):
1388 self.nextButton.setEnabled(False)
1389 self.limitSpinBox.setEnabled(False)
1390 else:
1391 self.nextButton.setEnabled(True)
1392 self.limitSpinBox.setEnabled(True)
1391 1393
1392 self.commandMode = self.initialCommandMode 1394 self.commandMode = self.initialCommandMode
1393 self.start(self.filename) 1395 self.start(self.__filename, isFile=self.__isFile)
1394 1396
1395 def on_passwordCheckBox_toggled(self, isOn): 1397 def on_passwordCheckBox_toggled(self, isOn):
1396 """ 1398 """
1397 Private slot to handle the password checkbox toggled. 1399 Private slot to handle the password checkbox toggled.
1398 1400

eric ide

mercurial