70 self.revertButton.setVisible(False) |
70 self.revertButton.setVisible(False) |
71 self.forgetButton.setVisible(False) |
71 self.forgetButton.setVisible(False) |
72 self.restoreButton.setVisible(False) |
72 self.restoreButton.setVisible(False) |
73 |
73 |
74 self.menuactions = [] |
74 self.menuactions = [] |
|
75 self.lfActions = [] |
75 self.menu = QMenu() |
76 self.menu = QMenu() |
76 if not mq: |
77 if not mq: |
77 self.menuactions.append(self.menu.addAction( |
78 self.menuactions.append(self.menu.addAction( |
78 self.tr("Commit changes to repository..."), self.__commit)) |
79 self.tr("Commit changes to repository..."), self.__commit)) |
79 self.menuactions.append(self.menu.addAction( |
80 self.menuactions.append(self.menu.addAction( |
82 self.tr("Deselect all from commit"), |
83 self.tr("Deselect all from commit"), |
83 self.__commitDeselectAll)) |
84 self.__commitDeselectAll)) |
84 self.menu.addSeparator() |
85 self.menu.addSeparator() |
85 self.menuactions.append(self.menu.addAction( |
86 self.menuactions.append(self.menu.addAction( |
86 self.tr("Add to repository"), self.__add)) |
87 self.tr("Add to repository"), self.__add)) |
|
88 if self.vcs.version >= (2, 0): |
|
89 self.lfActions.append(self.menu.addAction( |
|
90 self.tr("Add as Large File"), |
|
91 lambda: self.__lfAdd("large"))) |
|
92 self.lfActions.append(self.menu.addAction( |
|
93 self.tr("Add as Normal File"), |
|
94 lambda: self.__lfAdd("normal"))) |
87 self.menuactions.append(self.menu.addAction( |
95 self.menuactions.append(self.menu.addAction( |
88 self.tr("Show differences"), self.__diff)) |
96 self.tr("Show differences"), self.__diff)) |
89 self.menuactions.append(self.menu.addAction( |
97 self.menuactions.append(self.menu.addAction( |
90 self.tr("Show differences side-by-side"), self.__sbsDiff)) |
98 self.tr("Show differences side-by-side"), self.__sbsDiff)) |
91 self.menuactions.append(self.menu.addAction( |
99 self.menuactions.append(self.menu.addAction( |
96 self.tr("Restore missing"), self.__restoreMissing)) |
104 self.tr("Restore missing"), self.__restoreMissing)) |
97 self.menu.addSeparator() |
105 self.menu.addSeparator() |
98 self.menuactions.append(self.menu.addAction( |
106 self.menuactions.append(self.menu.addAction( |
99 self.tr("Adjust column sizes"), self.__resizeColumns)) |
107 self.tr("Adjust column sizes"), self.__resizeColumns)) |
100 for act in self.menuactions: |
108 for act in self.menuactions: |
|
109 act.setEnabled(False) |
|
110 for act in self.lfActions: |
101 act.setEnabled(False) |
111 act.setEnabled(False) |
102 |
112 |
103 self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) |
113 self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) |
104 self.statusList.customContextMenuRequested.connect( |
114 self.statusList.customContextMenuRequested.connect( |
105 self.__showContextMenu) |
115 self.__showContextMenu) |
|
116 |
|
117 if not mq and self.vcs.version >= (2, 0): |
|
118 self.__addButtonMenu = QMenu() |
|
119 self.__addButtonMenu.addAction(self.tr("Add"), self.__add) |
|
120 self.__addButtonMenu.addAction(self.tr("Add as Large File"), |
|
121 lambda: self.__lfAdd("large")) |
|
122 self.__addButtonMenu.addAction(self.tr("Add as Normal File"), |
|
123 lambda: self.__lfAdd("normal")) |
|
124 self.addButton.setMenu(self.__addButtonMenu) |
106 |
125 |
107 self.modifiedIndicators = [ |
126 self.modifiedIndicators = [ |
108 self.tr('added'), |
127 self.tr('added'), |
109 self.tr('modified'), |
128 self.tr('modified'), |
110 self.tr('removed'), |
129 self.tr('removed'), |
197 self.errorGroup.hide() |
216 self.errorGroup.hide() |
198 self.intercept = False |
217 self.intercept = False |
199 self.args = fn |
218 self.args = fn |
200 |
219 |
201 for act in self.menuactions: |
220 for act in self.menuactions: |
|
221 act.setEnabled(False) |
|
222 for act in self.lfActions: |
202 act.setEnabled(False) |
223 act.setEnabled(False) |
203 |
224 |
204 self.addButton.setEnabled(False) |
225 self.addButton.setEnabled(False) |
205 self.commitButton.setEnabled(False) |
226 self.commitButton.setEnabled(False) |
206 self.diffButton.setEnabled(False) |
227 self.diffButton.setEnabled(False) |
571 """ |
592 """ |
572 Protected slot to show the context menu of the status list. |
593 Protected slot to show the context menu of the status list. |
573 |
594 |
574 @param coord the position of the mouse pointer (QPoint) |
595 @param coord the position of the mouse pointer (QPoint) |
575 """ |
596 """ |
|
597 # TODO: set status of menu entries according to their conditions |
|
598 if self.vcs.isExtensionActive("largefiles"): |
|
599 enable = len(self.__getUnversionedItems()) > 0 |
|
600 for act in self.lfActions: |
|
601 act.setEnabled(enable) |
576 self.menu.popup(self.mapToGlobal(coord)) |
602 self.menu.popup(self.mapToGlobal(coord)) |
577 |
603 |
578 def __commit(self): |
604 def __commit(self): |
579 """ |
605 """ |
580 Private slot to handle the Commit context menu entry. |
606 Private slot to handle the Commit context menu entry. |
638 project = e5App().getObject("Project") |
664 project = e5App().getObject("Project") |
639 for name in names: |
665 for name in names: |
640 project.getModel().updateVCSStatus(name) |
666 project.getModel().updateVCSStatus(name) |
641 self.vcs.checkVCSStatus() |
667 self.vcs.checkVCSStatus() |
642 |
668 |
|
669 def __lfAdd(self, mode): |
|
670 """ |
|
671 Private slot to add a file to the repository. |
|
672 |
|
673 @param mode add mode (string one of 'normal' or 'large') |
|
674 """ |
|
675 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
|
676 for itm in self.__getUnversionedItems()] |
|
677 if not names: |
|
678 E5MessageBox.information( |
|
679 self, |
|
680 self.tr("Add"), |
|
681 self.tr("""There are no unversioned entries""" |
|
682 """ available/selected.""")) |
|
683 return |
|
684 |
|
685 self.vcs.getExtensionObject("largefiles").hgAdd( |
|
686 names, mode) |
|
687 self.on_refreshButton_clicked() |
|
688 |
|
689 project = e5App().getObject("Project") |
|
690 for name in names: |
|
691 project.getModel().updateVCSStatus(name) |
|
692 self.vcs.checkVCSStatus() |
|
693 |
643 def __forget(self): |
694 def __forget(self): |
644 """ |
695 """ |
645 Private slot to handle the Remove context menu entry. |
696 Private slot to handle the Remove context menu entry. |
646 """ |
697 """ |
647 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |
698 names = [os.path.join(self.dname, itm.text(self.__pathColumn)) |