materialGroupDashedCircle.py (4155B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\views\materialGroupDashedCircle.py 2 import blue 3 from carbon.client.script.environment.AudioUtil import PlaySound 4 from carbon.common.script.sys.serviceConst import ROLE_GML 5 import carbonui.const as uiconst 6 from carbonui.control.contextMenu.menuEntryData import MenuEntryData 7 from eve.client.script.ui.shared.industry import industryUIConst 8 from eve.client.script.ui.shared.industry.views.dashedCircle import DashedCircle 9 from eve.client.script.ui.shared.industry.views.industryTooltips import MaterialGroupTooltipPanel 10 from localization import GetByLabel 11 from menu.menuLabel import MenuLabel 12 from shipfitting.multiBuyUtil import BuyMultipleTypesWithQty 13 14 class MaterialGroupDashedCircle(DashedCircle): 15 16 def ApplyAttributes(self, attributes): 17 DashedCircle.ApplyAttributes(self, attributes) 18 self.materialsByGroupID = attributes.materialsByGroupID 19 self.jobData = attributes.jobData 20 21 def UpdateMaterialsByGroup(self, materialsByGroupID): 22 self.materialsByGroupID = materialsByGroupID 23 24 def LoadTooltipPanel(self, tooltipPanel, *args): 25 self.tooltipPanel = MaterialGroupTooltipPanel(materialsByGroupID=self.materialsByGroupID, tooltipPanel=tooltipPanel, jobData=self.jobData) 26 27 def GetMenu(self): 28 menu = [] 29 menu.append(MenuEntryData(text=MenuLabel('UI/Market/MarketQuote/BuyAll'), func=self.BuyAllMaterial, internalName='BuyAllMaterial')) 30 menu.append(MenuEntryData(text=MenuLabel('UI/Industry/BuyMissingMaterials'), func=self.BuyMultipleTypesMissing, internalName='BuyMultipleTypesMissing')) 31 menu.append(MenuEntryData(text=MenuLabel('UI/Industry/CopyMaterialInformation'), func=self.CopyToClipboard, internalName='CopyToClipboard')) 32 if session.role & ROLE_GML == ROLE_GML: 33 menu += [None] 34 menu.append(MenuEntryData(text='GM: Give me these materials', func=self.DoCreateMaterials)) 35 return menu 36 37 def BuyAllMaterial(self, *args): 38 return self.BuyMaterial(qtyAttr='quantity') 39 40 def BuyMultipleTypesMissing(self, *args): 41 return self.BuyMaterial(qtyAttr='missing') 42 43 def BuyMaterial(self, qtyAttr = 'quantity'): 44 buyDict = self._GetMaterialDict(qtyAttr) 45 BuyMultipleTypesWithQty(buyDict) 46 47 def _GetMaterialDict(self, qtyAttr): 48 buyDict = {} 49 for materialGroupID, materials in self.materialsByGroupID: 50 for material in materials: 51 if material.typeID is None: 52 continue 53 qty = getattr(material, qtyAttr) 54 if qty: 55 buyDict[material.typeID] = qty 56 57 return buyDict 58 59 def CopyToClipboard(self): 60 dataList = [self.AddRow(self.jobData.blueprint.GetName(), self.jobData.blueprint.typeID), ''] 61 for materialGroupID, materials in self.materialsByGroupID: 62 groupName = GetByLabel(industryUIConst.LABEL_BY_INDUSTRYGROUP[materialGroupID]) 63 dataList.append(self.AddRow('%s' % groupName)) 64 dataList.append(self.AddRow('Item', 'Required', 'Available', 'Est. Unit price', 'typeID')) 65 for material in materials: 66 if material.typeID is None: 67 dataList.append(self.AddRow('No item selected')) 68 else: 69 dataList.append(self.AddRow(material.GetName(), material.quantity, material.available, material.GetEstimatedUnitPrice(), material.typeID)) 70 71 dataList.append('') 72 73 data = '\n'.join(dataList) 74 blue.clipboard.SetClipboardData(data) 75 76 def DoCreateMaterials(self): 77 materialDict = self._GetMaterialDict(qtyAttr='quantity') 78 items = [ (typeID, qty) for typeID, qty in materialDict.iteritems() ] 79 sm.GetService('info').DoCreateMaterials(commands=items, qty=1) 80 81 def AddRow(self, col1 = '', col2 = '', col3 = '', col4 = '', col5 = ''): 82 return '%s\t%s\t%s\t%s\t%s' % (col1, 83 col2, 84 col3, 85 col4, 86 col5) 87 88 def OnMouseEnter(self, *args): 89 PlaySound(uiconst.SOUND_BUTTON_HOVER)