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()