NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

menuEntryData.py (6113B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\contextMenu\menuEntryData.py
      2 import caching
      3 import signals
      4 from eve.client.script.ui import menuUtil
      5 from eve.client.script.ui.inflight import actionConst
      6 from menu import MenuLabel
      7 
      8 class BaseMenuEntryData(object):
      9     __on_enabled_changed = None
     10 
     11     def __init__(self, text = None, menuGroupID = None, hint = None, menuEntryViewClass = None, internalName = '', isEnabled = True, disabledHint = None, quantity = None, uniqueUiName = None):
     12         super(BaseMenuEntryData, self).__init__()
     13         if isinstance(text, MenuLabel):
     14             self._menuLabel = text
     15             self.text = self._menuLabel.GetText()
     16         else:
     17             self._menuLabel = None
     18             self.text = text
     19         self.menuGroupID = menuGroupID or menuUtil.GetMenuGroup(self.GetLabelPath())
     20         self.hint = hint
     21         self.menuClass = menuEntryViewClass
     22         self.internalName = internalName
     23         self._enabled = isEnabled
     24         self.disabledHint = disabledHint
     25         self.quantity = quantity
     26         self.uniqueUiName = uniqueUiName
     27 
     28     @property
     29     def on_enabled_changed(self):
     30         if self.__on_enabled_changed is None:
     31             self.__on_enabled_changed = signals.Signal('{}.on_enabled_changed'.format(self.__class__.__name__))
     32         return self.__on_enabled_changed
     33 
     34     @property
     35     def isEnabled(self):
     36         return self._enabled
     37 
     38     @isEnabled.setter
     39     def isEnabled(self, value):
     40         if self._enabled != value:
     41             self._enabled = value
     42             if self.__on_enabled_changed is not None:
     43                 self.__on_enabled_changed(self)
     44 
     45     def GetMenuLabel(self):
     46         return self._menuLabel
     47 
     48     def GetLabelPath(self):
     49         if self._menuLabel:
     50             return self._menuLabel.labelPath
     51 
     52     def GetActionID(self):
     53         return self.GetLabelPath()
     54 
     55     def GetLabelKeywords(self):
     56         if self._menuLabel:
     57             return self._menuLabel.labelKeywords
     58         return {}
     59 
     60     def GetText(self):
     61         if self._menuLabel:
     62             text = self._menuLabel.GetText()
     63         else:
     64             text = self.text
     65         if self.quantity is not None:
     66             text += ' (%s)' % self.quantity
     67         return text
     68 
     69     def GetTextDescriptive(self):
     70         return self.GetText()
     71 
     72     def IsEnabled(self):
     73         return self.isEnabled
     74 
     75     def GetDisabledHint(self):
     76         return self.disabledHint
     77 
     78     def GetPrimaryMenuGroupID(self):
     79         if isinstance(self.menuGroupID, tuple):
     80             return self.menuGroupID[0]
     81         else:
     82             return self.menuGroupID
     83 
     84     def HasIcon(self):
     85         return bool(self.GetIcon())
     86 
     87     def HasGroupIcon(self):
     88         return self.menuGroupID and self.menuGroupID in menuUtil.ICON_DATA_BY_MENUGROUPID
     89 
     90     def GetGroupIconData(self):
     91         return menuUtil.GetGroupIconData(self.menuGroupID)
     92 
     93     def GetIcon(self):
     94         if self.GetActionID() in actionConst.MENU_ICON_BLACKLIST:
     95             return None
     96         return actionConst.ICON_BY_ACTIONID.get(self.GetActionID(), None)
     97 
     98     def GetHint(self):
     99         return self.hint
    100 
    101     def HasSubMenuData(self):
    102         return False
    103 
    104     def HasFunction(self):
    105         return False
    106 
    107     def __repr__(self):
    108         return '{}(internalName={}, text={!r})'.format(self.__class__.__name__, self.internalName, self.text)
    109 
    110 
    111 class MenuEntryDataCaption(BaseMenuEntryData):
    112 
    113     def IsEnabled(self):
    114         return False
    115 
    116 
    117 class MenuEntryDataLabel(BaseMenuEntryData):
    118 
    119     def IsEnabled(self):
    120         return False
    121 
    122 
    123 class MenuEntryData(BaseMenuEntryData):
    124 
    125     def __init__(self, text, func = None, subMenuData = None, texturePath = None, menuGroupID = None, menuEntryViewClass = None, internalName = '', typeID = None, **kwargs):
    126         super(MenuEntryData, self).__init__(text=text, menuGroupID=menuGroupID, menuEntryViewClass=menuEntryViewClass, internalName=internalName, **kwargs)
    127         self.func = func
    128         self._subMenuData = subMenuData
    129         self.texturePath = texturePath
    130         self.typeID = typeID
    131 
    132     def IsSubMenuDynamic(self):
    133         return callable(self._subMenuData)
    134 
    135     def GetSubMenuData(self):
    136         if self.IsSubMenuDynamic():
    137             return self._GetSubMenuDataDynamic()
    138         if isinstance(self._subMenuData, (tuple, list)):
    139             from carbonui.control.contextMenu import menuDataFactory
    140             self._subMenuData = menuDataFactory.CreateMenuDataFromRawTuples(self._subMenuData)
    141         return self._subMenuData
    142 
    143     @caching.Memoize(minutes=1 / 120.0)
    144     def _GetSubMenuDataDynamic(self):
    145         from carbonui.control.contextMenu import menuDataFactory
    146         return menuDataFactory.CreateMenuDataFromRawTuples(self._subMenuData())
    147 
    148     def HasSubMenuData(self):
    149         if self.IsSubMenuDynamic():
    150             return True
    151         else:
    152             return bool(self._subMenuData)
    153 
    154     def GetIcon(self):
    155         if self.texturePath:
    156             return self.texturePath
    157         else:
    158             return super(MenuEntryData, self).GetIcon()
    159 
    160     def HasFunction(self):
    161         return bool(self.func)
    162 
    163     def ExecuteFunction(self):
    164         self.func()
    165 
    166 
    167 class MenuEntryDataCheckbox(BaseMenuEntryData):
    168 
    169     def __init__(self, text, setting, **kwargs):
    170         super(MenuEntryDataCheckbox, self).__init__(text=text, **kwargs)
    171         self.setting = setting
    172 
    173     def HasIcon(self):
    174         return True
    175 
    176 
    177 class MenuEntryDataRadioButton(BaseMenuEntryData):
    178 
    179     def __init__(self, text, value, setting, **kwargs):
    180         super(MenuEntryDataRadioButton, self).__init__(text=text, **kwargs)
    181         self.value = value
    182         self.setting = setting
    183 
    184     def HasIcon(self):
    185         return True
    186 
    187 
    188 class MenuEntryDataSlider(BaseMenuEntryData):
    189 
    190     def __init__(self, text, setting, min_label = None, max_label = None, isInteger = False, **kwargs):
    191         super(MenuEntryDataSlider, self).__init__(text=text, **kwargs)
    192         self.setting = setting
    193         self.min_label = min_label
    194         self.max_label = max_label
    195         self.isInteger = isInteger
    196 
    197     def HasFunction(self):
    198         return False