Tue, 10 Sep 2019 19:30:07 +0200
Removed obsolete "from __future__ import ..." statements.
# -*- coding: utf-8 -*- # Copyright (c) 2014 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the largefiles extension project browser helper. """ from PyQt5.QtWidgets import QMenu from ..HgExtensionProjectBrowserHelper import HgExtensionProjectBrowserHelper import UI.PixmapCache class LargefilesProjectBrowserHelper(HgExtensionProjectBrowserHelper): """ Class implementing the largefiles extension project browser helper. """ def __init__(self, vcsObject, browserObject, projectObject): """ Constructor @param vcsObject reference to the vcs object @param browserObject reference to the project browser object @param projectObject reference to the project object """ super(LargefilesProjectBrowserHelper, self).__init__( vcsObject, browserObject, projectObject) def initMenus(self): """ Public method to generate the extension menus. Note: Derived class must implement this method. @return dictionary of populated menu (dict of QMenu). The dict must have the keys 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' and 'dirMultiMenu'. """ self.__menus = {} self.__addSingleActs = [] self.__addMultiActs = [] menu = QMenu(self.menuTitle()) menu.setTearOffEnabled(True) act = menu.addAction( UI.PixmapCache.getIcon("vcsAdd.png"), self.tr('Add as Large File'), lambda: self.__hgAddLargefiles("large")) self.__addSingleActs.append(act) act = menu.addAction( UI.PixmapCache.getIcon("vcsAdd.png"), self.tr('Add as Normal File'), lambda: self.__hgAddLargefiles("normal")) self.__addSingleActs.append(act) self.__menus['mainMenu'] = menu menu = QMenu(self.menuTitle()) menu.setTearOffEnabled(True) act = menu.addAction( UI.PixmapCache.getIcon("vcsAdd.png"), self.tr('Add as Large Files'), lambda: self.__hgAddLargefiles("large")) self.__addMultiActs.append(act) act = menu.addAction( UI.PixmapCache.getIcon("vcsAdd.png"), self.tr('Add as Normal Files'), lambda: self.__hgAddLargefiles("normal")) self.__addMultiActs.append(act) self.__menus['multiMenu'] = menu return self.__menus def menuTitle(self): """ Public method to get the menu title. Note: Derived class must implement this method. @return title of the menu (string) """ return self.tr("Large Files") def showExtensionMenu(self, key, controlled): """ Public method to prepare the extension menu for display. @param key menu key (string, one of 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' or 'dirMultiMenu') @param controlled flag indicating to prepare the menu for a version controlled entry or a non-version controlled entry (boolean) """ if key == "mainMenu": for act in self.__addSingleActs: act.setEnabled(not controlled) elif key == "multiMenu": for act in self.__addMultiActs: act.setEnabled(not controlled) def __hgAddLargefiles(self, mode): """ Private slot to add the selected files as large files. @param mode add mode (string one of 'normal' or 'large') """ names = [] for itm in self.browser.getSelectedItems(): try: name = itm.fileName() except AttributeError: continue names.append(name) if names: if len(names) == 1: self.vcs.getExtensionObject("largefiles").hgAdd(names[0], mode) else: self.vcs.getExtensionObject("largefiles").hgAdd(names, mode) for fn in names: self._updateVCSStatus(fn)