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

menuData.py (3901B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\carbonui\control\contextMenu\menuData.py
      2 from carbonui.control.contextMenu.menuEntryData import MenuEntryData, MenuEntryDataCheckbox, MenuEntryDataRadioButton, MenuEntryDataCaption, MenuEntryDataLabel, MenuEntryDataSlider
      3 
      4 class BaseMenuData(object):
      5 
      6     def __init__(self, iconSize = 16):
      7         self.iconSize = iconSize
      8 
      9     def GetEntries(self):
     10         raise NotImplementedError
     11 
     12     def GetIconSize(self):
     13         if self.HasIcons():
     14             return self.iconSize
     15         return 0
     16 
     17     def HasIcons(self):
     18         return any((e.HasIcon() or e.HasGroupIcon() for e in self.GetEntries() if e is not None))
     19 
     20     def __add__(self, other):
     21         from carbonui.control.contextMenu.menuDataFactory import CreateMenuDataFromRawTuples, CreateMenuDataWithEntries
     22         if isinstance(other, MenuData):
     23             entryList = other.entrylist
     24         elif isinstance(other, (tuple, list)):
     25             menuData = CreateMenuDataFromRawTuples(other)
     26             entryList = menuData.entrylist if menuData else []
     27         else:
     28             raise ValueError('Cannot add types %s and %s' % (type(self), type(other)))
     29         return CreateMenuDataWithEntries(self.GetEntries() + entryList, iconSize=self.iconSize)
     30 
     31     def __len__(self):
     32         return len(self.GetEntries())
     33 
     34     def __iter__(self):
     35         return iter(self.GetEntries())
     36 
     37 
     38 class MenuData(BaseMenuData):
     39 
     40     def __init__(self, entryList = None, iconSize = 16):
     41         super(MenuData, self).__init__(iconSize)
     42         self.entrylist = entryList or []
     43 
     44     def AppendMenuEntryData(self, menuEntryData):
     45         self.entrylist.append(menuEntryData)
     46 
     47     def AddEntry(self, text, func = None, subMenuData = None, texturePath = None, hint = None, menuGroupID = None, menuEntryViewClass = None, internalName = '', **kwargs):
     48         menuEntryData = MenuEntryData(text, func=func, subMenuData=subMenuData, texturePath=texturePath, hint=hint, menuGroupID=menuGroupID, menuEntryViewClass=menuEntryViewClass, internalName=internalName, **kwargs)
     49         self.AppendMenuEntryData(menuEntryData)
     50         return menuEntryData
     51 
     52     def AddCaption(self, text, hint = None, internalName = ''):
     53         menuEntryData = MenuEntryDataCaption(text=text, hint=hint, internalName=internalName)
     54         self.AppendMenuEntryData(menuEntryData)
     55         return menuEntryData
     56 
     57     def AddLabel(self, text, hint = None, internalName = ''):
     58         menuEntryData = MenuEntryDataLabel(text=text, hint=hint, internalName=internalName)
     59         self.AppendMenuEntryData(menuEntryData)
     60         return menuEntryData
     61 
     62     def AddCheckbox(self, text, setting, **kwargs):
     63         menuEntryData = MenuEntryDataCheckbox(text=text, setting=setting, **kwargs)
     64         self.AppendMenuEntryData(menuEntryData)
     65         return menuEntryData
     66 
     67     def AddRadioButton(self, text, value, setting, **kwargs):
     68         menuEntryData = MenuEntryDataRadioButton(text=text, value=value, setting=setting, **kwargs)
     69         self.AppendMenuEntryData(menuEntryData)
     70         return menuEntryData
     71 
     72     def AddSlider(self, text, setting, isInteger = False, **kwargs):
     73         if 'min_label' not in kwargs:
     74             kwargs['min_label'] = str(setting.min_value)
     75         if 'max_label' not in kwargs:
     76             kwargs['max_label'] = str(setting.max_value)
     77         menuEntryData = MenuEntryDataSlider(text=text, setting=setting, isInteger=isInteger, **kwargs)
     78         self.AppendMenuEntryData(menuEntryData)
     79         return menuEntryData
     80 
     81     def AddSeparator(self):
     82         self.entrylist.append(None)
     83 
     84     def GetEntries(self):
     85         return self.entrylist
     86 
     87     def HasEntries(self):
     88         return bool(self.entrylist)
     89 
     90     def append(self, entry):
     91         self.extend(entries=[entry])
     92 
     93     def extend(self, entries):
     94         combined_menu = self + entries
     95         self.entrylist = combined_menu.GetEntries()