Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py

changeset 3315
bd1a25ead18d
parent 3302
e92f0dd51979
child 3326
b4868bd56338
equal deleted inserted replaced
3314:be841c05a7f3 3315:bd1a25ead18d
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))

eric ide

mercurial