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 |