3189:9a21c547de5f | 3190:a9a94491c4fd |
---|---|
55 self.__upToDateColumn = 8 | 55 self.__upToDateColumn = 8 |
56 self.__pathColumn = 12 | 56 self.__pathColumn = 12 |
57 self.__lastColumn = self.statusList.columnCount() | 57 self.__lastColumn = self.statusList.columnCount() |
58 | 58 |
59 self.refreshButton = \ | 59 self.refreshButton = \ |
60 self.buttonBox.addButton(self.trUtf8("Refresh"), | 60 self.buttonBox.addButton(self.tr("Refresh"), |
61 QDialogButtonBox.ActionRole) | 61 QDialogButtonBox.ActionRole) |
62 self.refreshButton.setToolTip( | 62 self.refreshButton.setToolTip( |
63 self.trUtf8("Press to refresh the status display")) | 63 self.tr("Press to refresh the status display")) |
64 self.refreshButton.setEnabled(False) | 64 self.refreshButton.setEnabled(False) |
65 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) | 65 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False) |
66 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) | 66 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True) |
67 | 67 |
68 self.diff = None | 68 self.diff = None |
76 self.statusList.header().hideSection(self.__changelistColumn) | 76 self.statusList.header().hideSection(self.__changelistColumn) |
77 | 77 |
78 self.menuactions = [] | 78 self.menuactions = [] |
79 self.menu = QMenu() | 79 self.menu = QMenu() |
80 self.menuactions.append(self.menu.addAction( | 80 self.menuactions.append(self.menu.addAction( |
81 self.trUtf8("Commit changes to repository..."), self.__commit)) | 81 self.tr("Commit changes to repository..."), self.__commit)) |
82 self.menuactions.append(self.menu.addAction( | 82 self.menuactions.append(self.menu.addAction( |
83 self.trUtf8("Select all for commit"), self.__commitSelectAll)) | 83 self.tr("Select all for commit"), self.__commitSelectAll)) |
84 self.menuactions.append(self.menu.addAction( | 84 self.menuactions.append(self.menu.addAction( |
85 self.trUtf8("Deselect all from commit"), self.__commitDeselectAll)) | 85 self.tr("Deselect all from commit"), self.__commitDeselectAll)) |
86 self.menu.addSeparator() | 86 self.menu.addSeparator() |
87 self.menuactions.append(self.menu.addAction( | 87 self.menuactions.append(self.menu.addAction( |
88 self.trUtf8("Add to repository"), self.__add)) | 88 self.tr("Add to repository"), self.__add)) |
89 self.menuactions.append(self.menu.addAction( | 89 self.menuactions.append(self.menu.addAction( |
90 self.trUtf8("Show differences"), self.__diff)) | 90 self.tr("Show differences"), self.__diff)) |
91 self.menuactions.append(self.menu.addAction( | 91 self.menuactions.append(self.menu.addAction( |
92 self.trUtf8("Show differences side-by-side"), self.__sbsDiff)) | 92 self.tr("Show differences side-by-side"), self.__sbsDiff)) |
93 self.menuactions.append(self.menu.addAction( | 93 self.menuactions.append(self.menu.addAction( |
94 self.trUtf8("Revert changes"), self.__revert)) | 94 self.tr("Revert changes"), self.__revert)) |
95 self.menuactions.append(self.menu.addAction( | 95 self.menuactions.append(self.menu.addAction( |
96 self.trUtf8("Restore missing"), self.__restoreMissing)) | 96 self.tr("Restore missing"), self.__restoreMissing)) |
97 if pysvn.svn_version >= (1, 5, 0) and pysvn.version >= (1, 6, 0): | 97 if pysvn.svn_version >= (1, 5, 0) and pysvn.version >= (1, 6, 0): |
98 self.menu.addSeparator() | 98 self.menu.addSeparator() |
99 self.menuactions.append(self.menu.addAction( | 99 self.menuactions.append(self.menu.addAction( |
100 self.trUtf8("Add to Changelist"), self.__addToChangelist)) | 100 self.tr("Add to Changelist"), self.__addToChangelist)) |
101 self.menuactions.append(self.menu.addAction( | 101 self.menuactions.append(self.menu.addAction( |
102 self.trUtf8("Remove from Changelist"), | 102 self.tr("Remove from Changelist"), |
103 self.__removeFromChangelist)) | 103 self.__removeFromChangelist)) |
104 if self.vcs.version >= (1, 2, 0): | 104 if self.vcs.version >= (1, 2, 0): |
105 self.menu.addSeparator() | 105 self.menu.addSeparator() |
106 self.menuactions.append( | 106 self.menuactions.append( |
107 self.menu.addAction(self.trUtf8("Lock"), self.__lock)) | 107 self.menu.addAction(self.tr("Lock"), self.__lock)) |
108 self.menuactions.append( | 108 self.menuactions.append( |
109 self.menu.addAction(self.trUtf8("Unlock"), self.__unlock)) | 109 self.menu.addAction(self.tr("Unlock"), self.__unlock)) |
110 self.menuactions.append(self.menu.addAction( | 110 self.menuactions.append(self.menu.addAction( |
111 self.trUtf8("Break lock"), | 111 self.tr("Break lock"), |
112 self.__breakLock)) | 112 self.__breakLock)) |
113 self.menuactions.append(self.menu.addAction( | 113 self.menuactions.append(self.menu.addAction( |
114 self.trUtf8("Steal lock"), | 114 self.tr("Steal lock"), |
115 self.__stealLock)) | 115 self.__stealLock)) |
116 self.menu.addSeparator() | 116 self.menu.addSeparator() |
117 self.menuactions.append(self.menu.addAction( | 117 self.menuactions.append(self.menu.addAction( |
118 self.trUtf8("Adjust column sizes"), | 118 self.tr("Adjust column sizes"), |
119 self.__resizeColumns)) | 119 self.__resizeColumns)) |
120 for act in self.menuactions: | 120 for act in self.menuactions: |
121 act.setEnabled(False) | 121 act.setEnabled(False) |
122 | 122 |
123 self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) | 123 self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) |
124 self.statusList.customContextMenuRequested.connect( | 124 self.statusList.customContextMenuRequested.connect( |
125 self.__showContextMenu) | 125 self.__showContextMenu) |
126 | 126 |
127 self.modifiedIndicators = [ | 127 self.modifiedIndicators = [ |
128 self.trUtf8(svnStatusMap[pysvn.wc_status_kind.added]), | 128 self.tr(svnStatusMap[pysvn.wc_status_kind.added]), |
129 self.trUtf8(svnStatusMap[pysvn.wc_status_kind.deleted]), | 129 self.tr(svnStatusMap[pysvn.wc_status_kind.deleted]), |
130 self.trUtf8(svnStatusMap[pysvn.wc_status_kind.modified]) | 130 self.tr(svnStatusMap[pysvn.wc_status_kind.modified]) |
131 ] | 131 ] |
132 | 132 |
133 self.missingIndicators = [ | 133 self.missingIndicators = [ |
134 self.trUtf8(svnStatusMap[pysvn.wc_status_kind.missing]), | 134 self.tr(svnStatusMap[pysvn.wc_status_kind.missing]), |
135 ] | 135 ] |
136 | 136 |
137 self.unversionedIndicators = [ | 137 self.unversionedIndicators = [ |
138 self.trUtf8(svnStatusMap[pysvn.wc_status_kind.unversioned]), | 138 self.tr(svnStatusMap[pysvn.wc_status_kind.unversioned]), |
139 ] | 139 ] |
140 | 140 |
141 self.lockedIndicators = [ | 141 self.lockedIndicators = [ |
142 self.trUtf8('locked'), | 142 self.tr('locked'), |
143 ] | 143 ] |
144 | 144 |
145 self.stealBreakLockIndicators = [ | 145 self.stealBreakLockIndicators = [ |
146 self.trUtf8('other lock'), | 146 self.tr('other lock'), |
147 self.trUtf8('stolen lock'), | 147 self.tr('stolen lock'), |
148 self.trUtf8('broken lock'), | 148 self.tr('broken lock'), |
149 ] | 149 ] |
150 | 150 |
151 self.unlockedIndicators = [ | 151 self.unlockedIndicators = [ |
152 self.trUtf8('not locked'), | 152 self.tr('not locked'), |
153 ] | 153 ] |
154 | 154 |
155 self.lockinfo = { | 155 self.lockinfo = { |
156 ' ': self.trUtf8('not locked'), | 156 ' ': self.tr('not locked'), |
157 'L': self.trUtf8('locked'), | 157 'L': self.tr('locked'), |
158 'O': self.trUtf8('other lock'), | 158 'O': self.tr('other lock'), |
159 'S': self.trUtf8('stolen lock'), | 159 'S': self.tr('stolen lock'), |
160 'B': self.trUtf8('broken lock'), | 160 'B': self.tr('broken lock'), |
161 } | 161 } |
162 self.yesno = [ | 162 self.yesno = [ |
163 self.trUtf8('no'), | 163 self.tr('no'), |
164 self.trUtf8('yes'), | 164 self.tr('yes'), |
165 ] | 165 ] |
166 | 166 |
167 self.client = self.vcs.getClient() | 167 self.client = self.vcs.getClient() |
168 self.client.callback_cancel = \ | 168 self.client.callback_cancel = \ |
169 self._clientCancelCallback | 169 self._clientCancelCallback |
207 @param revision revision (integer) | 207 @param revision revision (integer) |
208 @param change revision of last change (integer) | 208 @param change revision of last change (integer) |
209 @param author author of the last change (string) | 209 @param author author of the last change (string) |
210 @param path path of the file or directory (string) | 210 @param path path of the file or directory (string) |
211 """ | 211 """ |
212 statusText = self.trUtf8(svnStatusMap[status]) | 212 statusText = self.tr(svnStatusMap[status]) |
213 itm = QTreeWidgetItem(self.statusList) | 213 itm = QTreeWidgetItem(self.statusList) |
214 itm.setData(0, Qt.DisplayRole, "") | 214 itm.setData(0, Qt.DisplayRole, "") |
215 itm.setData(1, Qt.DisplayRole, changelist) | 215 itm.setData(1, Qt.DisplayRole, changelist) |
216 itm.setData(2, Qt.DisplayRole, statusText) | 216 itm.setData(2, Qt.DisplayRole, statusText) |
217 itm.setData(3, Qt.DisplayRole, self.trUtf8(svnStatusMap[propStatus])) | 217 itm.setData(3, Qt.DisplayRole, self.tr(svnStatusMap[propStatus])) |
218 itm.setData(4, Qt.DisplayRole, self.yesno[locked]) | 218 itm.setData(4, Qt.DisplayRole, self.yesno[locked]) |
219 itm.setData(5, Qt.DisplayRole, self.yesno[history]) | 219 itm.setData(5, Qt.DisplayRole, self.yesno[history]) |
220 itm.setData(6, Qt.DisplayRole, self.yesno[switched]) | 220 itm.setData(6, Qt.DisplayRole, self.yesno[switched]) |
221 itm.setData(7, Qt.DisplayRole, self.lockinfo[lockinfo]) | 221 itm.setData(7, Qt.DisplayRole, self.lockinfo[lockinfo]) |
222 itm.setData(8, Qt.DisplayRole, self.yesno[uptodate]) | 222 itm.setData(8, Qt.DisplayRole, self.yesno[uptodate]) |
277 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) | 277 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) |
278 QApplication.processEvents() | 278 QApplication.processEvents() |
279 | 279 |
280 self.args = fn | 280 self.args = fn |
281 | 281 |
282 self.setWindowTitle(self.trUtf8('Subversion Status')) | 282 self.setWindowTitle(self.tr('Subversion Status')) |
283 self.activateWindow() | 283 self.activateWindow() |
284 self.raise_() | 284 self.raise_() |
285 | 285 |
286 if isinstance(fn, list): | 286 if isinstance(fn, list): |
287 self.dname, fnames = self.vcs.splitPathList(fn) | 287 self.dname, fnames = self.vcs.splitPathList(fn) |
430 self.refreshButton.setEnabled(True) | 430 self.refreshButton.setEnabled(True) |
431 self.__updateButtons() | 431 self.__updateButtons() |
432 self.__updateCommitButton() | 432 self.__updateCommitButton() |
433 | 433 |
434 self.__statusFilters.sort() | 434 self.__statusFilters.sort() |
435 self.__statusFilters.insert(0, "<{0}>".format(self.trUtf8("all"))) | 435 self.__statusFilters.insert(0, "<{0}>".format(self.tr("all"))) |
436 self.statusFilterCombo.addItems(self.__statusFilters) | 436 self.statusFilterCombo.addItems(self.__statusFilters) |
437 | 437 |
438 for act in self.menuactions: | 438 for act in self.menuactions: |
439 act.setEnabled(True) | 439 act.setEnabled(True) |
440 | 440 |
508 """ | 508 """ |
509 Private slot to react to the selection of a status filter. | 509 Private slot to react to the selection of a status filter. |
510 | 510 |
511 @param txt selected status filter (string) | 511 @param txt selected status filter (string) |
512 """ | 512 """ |
513 if txt == "<{0}>".format(self.trUtf8("all")): | 513 if txt == "<{0}>".format(self.tr("all")): |
514 for topIndex in range(self.statusList.topLevelItemCount()): | 514 for topIndex in range(self.statusList.topLevelItemCount()): |
515 topItem = self.statusList.topLevelItem(topIndex) | 515 topItem = self.statusList.topLevelItem(topIndex) |
516 topItem.setHidden(False) | 516 topItem.setHidden(False) |
517 else: | 517 else: |
518 for topIndex in range(self.statusList.topLevelItemCount()): | 518 for topIndex in range(self.statusList.topLevelItemCount()): |
598 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 598 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
599 for itm in self.__getCommitableItems()] | 599 for itm in self.__getCommitableItems()] |
600 if not names: | 600 if not names: |
601 E5MessageBox.information( | 601 E5MessageBox.information( |
602 self, | 602 self, |
603 self.trUtf8("Commit"), | 603 self.tr("Commit"), |
604 self.trUtf8("""There are no entries selected to be""" | 604 self.tr("""There are no entries selected to be""" |
605 """ committed.""")) | 605 """ committed.""")) |
606 return | 606 return |
607 | 607 |
608 if Preferences.getVCS("AutoSaveFiles"): | 608 if Preferences.getVCS("AutoSaveFiles"): |
609 vm = e5App().getObject("ViewManager") | 609 vm = e5App().getObject("ViewManager") |
610 for name in names: | 610 for name in names: |
638 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 638 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
639 for itm in self.__getUnversionedItems()] | 639 for itm in self.__getUnversionedItems()] |
640 if not names: | 640 if not names: |
641 E5MessageBox.information( | 641 E5MessageBox.information( |
642 self, | 642 self, |
643 self.trUtf8("Add"), | 643 self.tr("Add"), |
644 self.trUtf8("""There are no unversioned entries""" | 644 self.tr("""There are no unversioned entries""" |
645 """ available/selected.""")) | 645 """ available/selected.""")) |
646 return | 646 return |
647 | 647 |
648 self.vcs.vcsAdd(names) | 648 self.vcs.vcsAdd(names) |
649 self.on_refreshButton_clicked() | 649 self.on_refreshButton_clicked() |
650 | 650 |
660 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 660 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
661 for itm in self.__getModifiedItems()] | 661 for itm in self.__getModifiedItems()] |
662 if not names: | 662 if not names: |
663 E5MessageBox.information( | 663 E5MessageBox.information( |
664 self, | 664 self, |
665 self.trUtf8("Revert"), | 665 self.tr("Revert"), |
666 self.trUtf8("""There are no uncommitted changes""" | 666 self.tr("""There are no uncommitted changes""" |
667 """ available/selected.""")) | 667 """ available/selected.""")) |
668 return | 668 return |
669 | 669 |
670 self.vcs.vcsRevert(names) | 670 self.vcs.vcsRevert(names) |
671 self.raise_() | 671 self.raise_() |
672 self.activateWindow() | 672 self.activateWindow() |
684 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 684 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
685 for itm in self.__getMissingItems()] | 685 for itm in self.__getMissingItems()] |
686 if not names: | 686 if not names: |
687 E5MessageBox.information( | 687 E5MessageBox.information( |
688 self, | 688 self, |
689 self.trUtf8("Revert"), | 689 self.tr("Revert"), |
690 self.trUtf8("""There are no missing entries""" | 690 self.tr("""There are no missing entries""" |
691 """ available/selected.""")) | 691 """ available/selected.""")) |
692 return | 692 return |
693 | 693 |
694 self.vcs.vcsRevert(names) | 694 self.vcs.vcsRevert(names) |
695 self.on_refreshButton_clicked() | 695 self.on_refreshButton_clicked() |
696 self.vcs.checkVCSStatus() | 696 self.vcs.checkVCSStatus() |
702 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 702 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
703 for itm in self.__getModifiedItems()] | 703 for itm in self.__getModifiedItems()] |
704 if not names: | 704 if not names: |
705 E5MessageBox.information( | 705 E5MessageBox.information( |
706 self, | 706 self, |
707 self.trUtf8("Differences"), | 707 self.tr("Differences"), |
708 self.trUtf8("""There are no uncommitted changes""" | 708 self.tr("""There are no uncommitted changes""" |
709 """ available/selected.""")) | 709 """ available/selected.""")) |
710 return | 710 return |
711 | 711 |
712 if self.diff is None: | 712 if self.diff is None: |
713 from .SvnDiffDialog import SvnDiffDialog | 713 from .SvnDiffDialog import SvnDiffDialog |
714 self.diff = SvnDiffDialog(self.vcs) | 714 self.diff = SvnDiffDialog(self.vcs) |
723 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 723 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
724 for itm in self.__getModifiedItems()] | 724 for itm in self.__getModifiedItems()] |
725 if not names: | 725 if not names: |
726 E5MessageBox.information( | 726 E5MessageBox.information( |
727 self, | 727 self, |
728 self.trUtf8("Side-by-Side Diff"), | 728 self.tr("Side-by-Side Diff"), |
729 self.trUtf8("""There are no uncommitted changes""" | 729 self.tr("""There are no uncommitted changes""" |
730 """ available/selected.""")) | 730 """ available/selected.""")) |
731 return | 731 return |
732 elif len(names) > 1: | 732 elif len(names) > 1: |
733 E5MessageBox.information( | 733 E5MessageBox.information( |
734 self, | 734 self, |
735 self.trUtf8("Side-by-Side Diff"), | 735 self.tr("Side-by-Side Diff"), |
736 self.trUtf8("""Only one file with uncommitted changes""" | 736 self.tr("""Only one file with uncommitted changes""" |
737 """ must be selected.""")) | 737 """ must be selected.""")) |
738 return | 738 return |
739 | 739 |
740 self.vcs.svnSbsDiff(names[0]) | 740 self.vcs.svnSbsDiff(names[0]) |
741 | 741 |
742 def __lock(self): | 742 def __lock(self): |
746 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 746 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
747 for itm in self.__getLockActionItems(self.unlockedIndicators)] | 747 for itm in self.__getLockActionItems(self.unlockedIndicators)] |
748 if not names: | 748 if not names: |
749 E5MessageBox.information( | 749 E5MessageBox.information( |
750 self, | 750 self, |
751 self.trUtf8("Lock"), | 751 self.tr("Lock"), |
752 self.trUtf8("""There are no unlocked files""" | 752 self.tr("""There are no unlocked files""" |
753 """ available/selected.""")) | 753 """ available/selected.""")) |
754 return | 754 return |
755 | 755 |
756 self.vcs.svnLock(names, parent=self) | 756 self.vcs.svnLock(names, parent=self) |
757 self.on_refreshButton_clicked() | 757 self.on_refreshButton_clicked() |
758 | 758 |
763 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 763 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
764 for itm in self.__getLockActionItems(self.lockedIndicators)] | 764 for itm in self.__getLockActionItems(self.lockedIndicators)] |
765 if not names: | 765 if not names: |
766 E5MessageBox.information( | 766 E5MessageBox.information( |
767 self, | 767 self, |
768 self.trUtf8("Unlock"), | 768 self.tr("Unlock"), |
769 self.trUtf8("""There are no locked files""" | 769 self.tr("""There are no locked files""" |
770 """ available/selected.""")) | 770 """ available/selected.""")) |
771 return | 771 return |
772 | 772 |
773 self.vcs.svnUnlock(names, parent=self) | 773 self.vcs.svnUnlock(names, parent=self) |
774 self.on_refreshButton_clicked() | 774 self.on_refreshButton_clicked() |
775 | 775 |
781 for itm in self.__getLockActionItems( | 781 for itm in self.__getLockActionItems( |
782 self.stealBreakLockIndicators)] | 782 self.stealBreakLockIndicators)] |
783 if not names: | 783 if not names: |
784 E5MessageBox.information( | 784 E5MessageBox.information( |
785 self, | 785 self, |
786 self.trUtf8("Break Lock"), | 786 self.tr("Break Lock"), |
787 self.trUtf8("""There are no locked files""" | 787 self.tr("""There are no locked files""" |
788 """ available/selected.""")) | 788 """ available/selected.""")) |
789 return | 789 return |
790 | 790 |
791 self.vcs.svnUnlock(names, parent=self, breakIt=True) | 791 self.vcs.svnUnlock(names, parent=self, breakIt=True) |
792 self.on_refreshButton_clicked() | 792 self.on_refreshButton_clicked() |
793 | 793 |
799 for itm in self.__getLockActionItems( | 799 for itm in self.__getLockActionItems( |
800 self.stealBreakLockIndicators)] | 800 self.stealBreakLockIndicators)] |
801 if not names: | 801 if not names: |
802 E5MessageBox.information( | 802 E5MessageBox.information( |
803 self, | 803 self, |
804 self.trUtf8("Steal Lock"), | 804 self.tr("Steal Lock"), |
805 self.trUtf8("""There are no locked files""" | 805 self.tr("""There are no locked files""" |
806 """ available/selected.""")) | 806 """ available/selected.""")) |
807 return | 807 return |
808 | 808 |
809 self.vcs.svnLock(names, parent=self, stealIt=True) | 809 self.vcs.svnLock(names, parent=self, stealIt=True) |
810 self.on_refreshButton_clicked() | 810 self.on_refreshButton_clicked() |
811 | 811 |
816 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 816 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
817 for itm in self.__getNonChangelistItems()] | 817 for itm in self.__getNonChangelistItems()] |
818 if not names: | 818 if not names: |
819 E5MessageBox.information( | 819 E5MessageBox.information( |
820 self, | 820 self, |
821 self.trUtf8("Remove from Changelist"), | 821 self.tr("Remove from Changelist"), |
822 self.trUtf8( | 822 self.tr( |
823 """There are no files available/selected not """ | 823 """There are no files available/selected not """ |
824 """belonging to a changelist.""" | 824 """belonging to a changelist.""" |
825 ) | 825 ) |
826 ) | 826 ) |
827 return | 827 return |
835 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) | 835 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
836 for itm in self.__getChangelistItems()] | 836 for itm in self.__getChangelistItems()] |
837 if not names: | 837 if not names: |
838 E5MessageBox.information( | 838 E5MessageBox.information( |
839 self, | 839 self, |
840 self.trUtf8("Remove from Changelist"), | 840 self.tr("Remove from Changelist"), |
841 self.trUtf8( | 841 self.tr( |
842 """There are no files available/selected belonging""" | 842 """There are no files available/selected belonging""" |
843 """ to a changelist.""" | 843 """ to a changelist.""" |
844 ) | 844 ) |
845 ) | 845 ) |
846 return | 846 return |