Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 3190
a9a94491c4fd
parent 3185
d4fa462547bc
child 3242
a7e006073658
equal deleted inserted replaced
3189:9a21c547de5f 3190:a9a94491c4fd
55 """ 55 """
56 super().__init__(parent) 56 super().__init__(parent)
57 self.setupUi(self) 57 self.setupUi(self)
58 58
59 if mode == "log": 59 if mode == "log":
60 self.setWindowTitle(self.trUtf8("Mercurial Log")) 60 self.setWindowTitle(self.tr("Mercurial Log"))
61 elif mode == "incoming": 61 elif mode == "incoming":
62 self.setWindowTitle(self.trUtf8("Mercurial Log (Incoming)")) 62 self.setWindowTitle(self.tr("Mercurial Log (Incoming)"))
63 elif mode == "outgoing": 63 elif mode == "outgoing":
64 self.setWindowTitle(self.trUtf8("Mercurial Log (Outgoing)")) 64 self.setWindowTitle(self.tr("Mercurial Log (Outgoing)"))
65 65
66 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) 66 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
67 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) 67 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
68 68
69 self.filesTree.headerItem().setText(self.filesTree.columnCount(), "") 69 self.filesTree.headerItem().setText(self.filesTree.columnCount(), "")
70 self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder) 70 self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder)
71 71
72 self.refreshButton = self.buttonBox.addButton( 72 self.refreshButton = self.buttonBox.addButton(
73 self.trUtf8("&Refresh"), QDialogButtonBox.ActionRole) 73 self.tr("&Refresh"), QDialogButtonBox.ActionRole)
74 self.refreshButton.setToolTip( 74 self.refreshButton.setToolTip(
75 self.trUtf8("Press to refresh the list of changesets")) 75 self.tr("Press to refresh the list of changesets"))
76 self.refreshButton.setEnabled(False) 76 self.refreshButton.setEnabled(False)
77 77
78 self.sbsCheckBox.setEnabled(isFile) 78 self.sbsCheckBox.setEnabled(isFile)
79 self.sbsCheckBox.setVisible(isFile) 79 self.sbsCheckBox.setVisible(isFile)
80 80
87 self.bundle = bundle 87 self.bundle = bundle
88 self.__hgClient = vcs.getClient() 88 self.__hgClient = vcs.getClient()
89 89
90 self.__initData() 90 self.__initData()
91 91
92 self.__allBranchesFilter = self.trUtf8("All") 92 self.__allBranchesFilter = self.tr("All")
93 93
94 self.fromDate.setDisplayFormat("yyyy-MM-dd") 94 self.fromDate.setDisplayFormat("yyyy-MM-dd")
95 self.toDate.setDisplayFormat("yyyy-MM-dd") 95 self.toDate.setDisplayFormat("yyyy-MM-dd")
96 self.fromDate.setDate(QDate.currentDate()) 96 self.fromDate.setDate(QDate.currentDate())
97 self.toDate.setDate(QDate.currentDate()) 97 self.toDate.setDate(QDate.currentDate())
98 self.fieldCombo.setCurrentIndex(self.fieldCombo.findText( 98 self.fieldCombo.setCurrentIndex(self.fieldCombo.findText(
99 self.trUtf8("Message"))) 99 self.tr("Message")))
100 self.limitSpinBox.setValue(self.vcs.getPlugin().getPreferences( 100 self.limitSpinBox.setValue(self.vcs.getPlugin().getPreferences(
101 "LogLimit")) 101 "LogLimit"))
102 self.stopCheckBox.setChecked(self.vcs.getPlugin().getPreferences( 102 self.stopCheckBox.setChecked(self.vcs.getPlugin().getPreferences(
103 "StopLogOnCopy")) 103 "StopLogOnCopy"))
104 104
118 self.process.finished.connect(self.__procFinished) 118 self.process.finished.connect(self.__procFinished)
119 self.process.readyReadStandardOutput.connect(self.__readStdout) 119 self.process.readyReadStandardOutput.connect(self.__readStdout)
120 self.process.readyReadStandardError.connect(self.__readStderr) 120 self.process.readyReadStandardError.connect(self.__readStderr)
121 121
122 self.flags = { 122 self.flags = {
123 'A': self.trUtf8('Added'), 123 'A': self.tr('Added'),
124 'D': self.trUtf8('Deleted'), 124 'D': self.tr('Deleted'),
125 'M': self.trUtf8('Modified'), 125 'M': self.tr('Modified'),
126 } 126 }
127 127
128 self.__dotRadius = 8 128 self.__dotRadius = 8
129 self.__rowHeight = 20 129 self.__rowHeight = 20
130 130
131 self.logTree.setIconSize( 131 self.logTree.setIconSize(
132 QSize(100 * self.__rowHeight, self.__rowHeight)) 132 QSize(100 * self.__rowHeight, self.__rowHeight))
133 if self.vcs.version >= (1, 8): 133 if self.vcs.version >= (1, 8):
134 self.logTree.headerItem().setText( 134 self.logTree.headerItem().setText(
135 self.logTree.columnCount(), self.trUtf8("Bookmarks")) 135 self.logTree.columnCount(), self.tr("Bookmarks"))
136 if self.vcs.version < (2, 1): 136 if self.vcs.version < (2, 1):
137 self.logTree.setColumnHidden(self.PhaseColumn, True) 137 self.logTree.setColumnHidden(self.PhaseColumn, True)
138 138
139 self.__actionsMenu = QMenu() 139 self.__actionsMenu = QMenu()
140 if self.vcs.version >= (2, 0): 140 if self.vcs.version >= (2, 0):
141 self.__graftAct = self.__actionsMenu.addAction( 141 self.__graftAct = self.__actionsMenu.addAction(
142 self.trUtf8("Copy Changesets"), self.__graftActTriggered) 142 self.tr("Copy Changesets"), self.__graftActTriggered)
143 self.__graftAct.setToolTip(self.trUtf8( 143 self.__graftAct.setToolTip(self.tr(
144 "Copy the selected changesets to the current branch")) 144 "Copy the selected changesets to the current branch"))
145 else: 145 else:
146 self.__graftAct = None 146 self.__graftAct = None
147 if self.vcs.version >= (2, 1): 147 if self.vcs.version >= (2, 1):
148 self.__phaseAct = self.__actionsMenu.addAction( 148 self.__phaseAct = self.__actionsMenu.addAction(
149 self.trUtf8("Change Phase"), self.__phaseActTriggered) 149 self.tr("Change Phase"), self.__phaseActTriggered)
150 self.__phaseAct.setToolTip(self.trUtf8( 150 self.__phaseAct.setToolTip(self.tr(
151 "Change the phase of the selected revisions")) 151 "Change the phase of the selected revisions"))
152 self.__phaseAct.setWhatsThis(self.trUtf8( 152 self.__phaseAct.setWhatsThis(self.tr(
153 """<b>Change Phase</b>\n<p>This changes the phase of the""" 153 """<b>Change Phase</b>\n<p>This changes the phase of the"""
154 """ selected revisions. The selected revisions have to have""" 154 """ selected revisions. The selected revisions have to have"""
155 """ the same current phase.</p>""")) 155 """ the same current phase.</p>"""))
156 else: 156 else:
157 self.__phaseAct = None 157 self.__phaseAct = None
158 self.__tagAct = self.__actionsMenu.addAction( 158 self.__tagAct = self.__actionsMenu.addAction(
159 self.trUtf8("Tag"), self.__tagActTriggered) 159 self.tr("Tag"), self.__tagActTriggered)
160 self.__tagAct.setToolTip(self.trUtf8("Tag the selected revision")) 160 self.__tagAct.setToolTip(self.tr("Tag the selected revision"))
161 self.actionsButton.setIcon( 161 self.actionsButton.setIcon(
162 UI.PixmapCache.getIcon("actionsToolButton.png")) 162 UI.PixmapCache.getIcon("actionsToolButton.png"))
163 self.actionsButton.setMenu(self.__actionsMenu) 163 self.actionsButton.setMenu(self.__actionsMenu)
164 164
165 def __initData(self): 165 def __initData(self):
435 str(process.readAllStandardOutput(), 435 str(process.readAllStandardOutput(),
436 Preferences.getSystem("IOEncoding"), 436 Preferences.getSystem("IOEncoding"),
437 'replace') 437 'replace')
438 else: 438 else:
439 if not finished: 439 if not finished:
440 errMsg = self.trUtf8( 440 errMsg = self.tr(
441 "The hg process did not finish within 30s.") 441 "The hg process did not finish within 30s.")
442 else: 442 else:
443 errMsg = self.trUtf8("Could not start the hg executable.") 443 errMsg = self.tr("Could not start the hg executable.")
444 444
445 if errMsg: 445 if errMsg:
446 E5MessageBox.critical( 446 E5MessageBox.critical(
447 self, 447 self,
448 self.trUtf8("Mercurial Error"), 448 self.tr("Mercurial Error"),
449 errMsg) 449 errMsg)
450 450
451 if output: 451 if output:
452 parents = [int(p) for p in output.strip().splitlines()] 452 parents = [int(p) for p in output.strip().splitlines()]
453 453
478 str(process.readAllStandardOutput(), 478 str(process.readAllStandardOutput(),
479 Preferences.getSystem("IOEncoding"), 479 Preferences.getSystem("IOEncoding"),
480 'replace') 480 'replace')
481 else: 481 else:
482 if not finished: 482 if not finished:
483 errMsg = self.trUtf8( 483 errMsg = self.tr(
484 "The hg process did not finish within 30s.") 484 "The hg process did not finish within 30s.")
485 else: 485 else:
486 errMsg = self.trUtf8("Could not start the hg executable.") 486 errMsg = self.tr("Could not start the hg executable.")
487 487
488 if errMsg: 488 if errMsg:
489 E5MessageBox.critical( 489 E5MessageBox.critical(
490 self, 490 self,
491 self.trUtf8("Mercurial Error"), 491 self.tr("Mercurial Error"),
492 errMsg) 492 errMsg)
493 493
494 if output: 494 if output:
495 outputList = output.strip().split(None, 1) 495 outputList = output.strip().split(None, 1)
496 if len(outputList) == 2: 496 if len(outputList) == 2:
525 str(process.readAllStandardOutput(), 525 str(process.readAllStandardOutput(),
526 Preferences.getSystem("IOEncoding"), 526 Preferences.getSystem("IOEncoding"),
527 'replace') 527 'replace')
528 else: 528 else:
529 if not finished: 529 if not finished:
530 errMsg = self.trUtf8( 530 errMsg = self.tr(
531 "The hg process did not finish within 30s.") 531 "The hg process did not finish within 30s.")
532 else: 532 else:
533 errMsg = self.trUtf8("Could not start the hg executable.") 533 errMsg = self.tr("Could not start the hg executable.")
534 534
535 if errMsg: 535 if errMsg:
536 E5MessageBox.critical( 536 E5MessageBox.critical(
537 self, 537 self,
538 self.trUtf8("Mercurial Error"), 538 self.tr("Mercurial Error"),
539 errMsg) 539 errMsg)
540 540
541 if output: 541 if output:
542 for line in output.splitlines(): 542 for line in output.splitlines():
543 if line.strip().endswith("(closed)"): 543 if line.strip().endswith("(closed)"):
729 if not procStarted: 729 if not procStarted:
730 self.inputGroup.setEnabled(False) 730 self.inputGroup.setEnabled(False)
731 self.inputGroup.hide() 731 self.inputGroup.hide()
732 E5MessageBox.critical( 732 E5MessageBox.critical(
733 self, 733 self,
734 self.trUtf8('Process Generation Error'), 734 self.tr('Process Generation Error'),
735 self.trUtf8( 735 self.tr(
736 'The process {0} could not be started. ' 736 'The process {0} could not be started. '
737 'Ensure, that it is in the search path.' 737 'Ensure, that it is in the search path.'
738 ).format('hg')) 738 ).format('hg'))
739 739
740 def start(self, fn): 740 def start(self, fn):
1253 to_ = self.toDate.date().addDays(1).toString("yyyy-MM-dd") 1253 to_ = self.toDate.date().addDays(1).toString("yyyy-MM-dd")
1254 branch = self.branchCombo.currentText() 1254 branch = self.branchCombo.currentText()
1255 closedBranch = branch + '--' 1255 closedBranch = branch + '--'
1256 1256
1257 txt = self.fieldCombo.currentText() 1257 txt = self.fieldCombo.currentText()
1258 if txt == self.trUtf8("Author"): 1258 if txt == self.tr("Author"):
1259 fieldIndex = self.AuthorColumn 1259 fieldIndex = self.AuthorColumn
1260 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive) 1260 searchRx = QRegExp(self.rxEdit.text(), Qt.CaseInsensitive)
1261 elif txt == self.trUtf8("Revision"): 1261 elif txt == self.tr("Revision"):
1262 fieldIndex = self.RevisionColumn 1262 fieldIndex = self.RevisionColumn
1263 txt = self.rxEdit.text() 1263 txt = self.rxEdit.text()
1264 if txt.startswith("^"): 1264 if txt.startswith("^"):
1265 searchRx = QRegExp("^\s*{0}".format(txt[1:]), 1265 searchRx = QRegExp("^\s*{0}".format(txt[1:]),
1266 Qt.CaseInsensitive) 1266 Qt.CaseInsensitive)
1412 if revs: 1412 if revs:
1413 shouldReopen = self.vcs.hgGraft(self.repodir, revs) 1413 shouldReopen = self.vcs.hgGraft(self.repodir, revs)
1414 if shouldReopen: 1414 if shouldReopen:
1415 res = E5MessageBox.yesNo( 1415 res = E5MessageBox.yesNo(
1416 None, 1416 None,
1417 self.trUtf8("Copy Changesets"), 1417 self.tr("Copy Changesets"),
1418 self.trUtf8( 1418 self.tr(
1419 """The project should be reread. Do this now?"""), 1419 """The project should be reread. Do this now?"""),
1420 yesDefault=True) 1420 yesDefault=True)
1421 if res: 1421 if res:
1422 e5App().getObject("Project").reopenProject() 1422 e5App().getObject("Project").reopenProject()
1423 else: 1423 else:

eric ide

mercurial