8 """ |
8 """ |
9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt4.QtCore import SIGNAL |
12 from PyQt4.QtCore import SIGNAL |
13 from PyQt4.QtGui import QMenu |
13 from PyQt4.QtGui import QMenu, QDialog |
|
14 |
|
15 from Project.ProjectBrowserModel import ProjectBrowserFileItem |
14 |
16 |
15 from VCS.ProjectBrowserHelper import VcsProjectBrowserHelper |
17 from VCS.ProjectBrowserHelper import VcsProjectBrowserHelper |
16 |
18 |
|
19 from UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
17 import UI.PixmapCache |
20 import UI.PixmapCache |
18 |
21 |
19 class HgProjectBrowserHelper(VcsProjectBrowserHelper): |
22 class HgProjectBrowserHelper(VcsProjectBrowserHelper): |
20 """ |
23 """ |
21 Class implementing the VCS project browser helper for Mercurial. |
24 Class implementing the VCS project browser helper for Mercurial. |
201 self.vcsAddMenuActions.append(act) |
204 self.vcsAddMenuActions.append(act) |
202 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
205 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
203 self.trUtf8('Remove from repository (and disk)'), |
206 self.trUtf8('Remove from repository (and disk)'), |
204 self._VCSRemove) |
207 self._VCSRemove) |
205 self.vcsMenuActions.append(act) |
208 self.vcsMenuActions.append(act) |
|
209 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
|
210 self.trUtf8('Remove from repository only'), |
|
211 self.__HgForget) |
|
212 self.vcsMenuActions.append(act) |
206 menu.addSeparator() |
213 menu.addSeparator() |
207 act = menu.addAction(self.trUtf8('Copy in repository'), self.__HgCopy) |
214 act = menu.addAction(self.trUtf8('Copy in repository'), self.__HgCopy) |
208 self.vcsMenuActions.append(act) |
215 self.vcsMenuActions.append(act) |
209 act = menu.addAction(self.trUtf8('Move in repository'), self.__HgMove) |
216 act = menu.addAction(self.trUtf8('Move in repository'), self.__HgMove) |
210 self.vcsMenuActions.append(act) |
217 self.vcsMenuActions.append(act) |
285 self.vcsAddMultiMenuActions.append(act) |
292 self.vcsAddMultiMenuActions.append(act) |
286 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
293 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
287 self.trUtf8('Remove from repository (and disk)'), |
294 self.trUtf8('Remove from repository (and disk)'), |
288 self._VCSRemove) |
295 self._VCSRemove) |
289 self.vcsMultiMenuActions.append(act) |
296 self.vcsMultiMenuActions.append(act) |
290 self.vcsRemoveMultiMenuItem = act |
297 act = menu.addAction(UI.PixmapCache.getIcon("vcsRemove.png"), |
|
298 self.trUtf8('Remove from repository only'), |
|
299 self.__HgForget) |
|
300 self.vcsMultiMenuActions.append(act) |
291 menu.addSeparator() |
301 menu.addSeparator() |
292 act = menu.addAction(UI.PixmapCache.getIcon("vcsStatus.png"), |
302 act = menu.addAction(UI.PixmapCache.getIcon("vcsStatus.png"), |
293 self.trUtf8('Show status'), self._VCSStatus) |
303 self.trUtf8('Show status'), self._VCSStatus) |
294 self.vcsMultiMenuActions.append(act) |
304 self.vcsMultiMenuActions.append(act) |
295 menu.addSeparator() |
305 menu.addSeparator() |
590 try: |
600 try: |
591 names.append(itm.fileName()) |
601 names.append(itm.fileName()) |
592 except AttributeError: |
602 except AttributeError: |
593 names.append(itm.dirName()) |
603 names.append(itm.dirName()) |
594 self.vcs.hgResolve(names) |
604 self.vcs.hgResolve(names) |
|
605 |
|
606 def __HgForget(self): |
|
607 """ |
|
608 Private slot called by the context menu to remove the selected file from the |
|
609 Mercurial repository leaving a copy in the project directory. |
|
610 """ |
|
611 if self.isTranslationsBrowser: |
|
612 items = self.browser.getSelectedItems([ProjectBrowserFileItem]) |
|
613 names = [itm.fileName() for itm in items] |
|
614 |
|
615 dlg = DeleteFilesConfirmationDialog(self.parent(), |
|
616 self.trUtf8("Remove from repository only"), |
|
617 self.trUtf8("Do you really want to remove these translation files from" |
|
618 " the repository?"), |
|
619 names) |
|
620 else: |
|
621 items = self.browser.getSelectedItems() |
|
622 names = [itm.fileName() for itm in items] |
|
623 files = [name.replace(self.browser.project.ppath + os.sep, '') \ |
|
624 for name in names] |
|
625 |
|
626 dlg = DeleteFilesConfirmationDialog(self.parent(), |
|
627 self.trUtf8("Remove from repository only"), |
|
628 self.trUtf8("Do you really want to remove these files" |
|
629 " from the repository?"), |
|
630 files) |
|
631 |
|
632 if dlg.exec_() == QDialog.Accepted: |
|
633 self.vcs.hgForget(names) |