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

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)