transferItem.py (5478B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\dropbox\transferItem.py 2 import evetypes 3 import trinity 4 from carbon.common.script.util.format import FmtAmt 5 from carbonui import const as uiconst 6 from carbonui.primitives.container import Container 7 from carbonui.primitives.sprite import Sprite 8 from carbonui.uiconst import CENTER 9 from carbonui.uicore import uicore 10 from carbonui.control.buttonIcon import ButtonIcon 11 from eve.client.script.ui.control.eveIcon import Icon 12 from eve.client.script.ui.control.eveLabel import Label 13 from eve.client.script.ui.shared.tooltip.item import InventoryItemTooltip 14 from eve.client.script.ui.structure.dropbox.const import ICON_SIZE 15 from eve.client.script.ui.util import uix 16 from localization import GetByLabel 17 from utillib import KeyVal 18 19 class TransferItem(Container): 20 default_width = 64 21 default_height = 64 22 default_align = uiconst.TOALL 23 default_state = uiconst.UI_NORMAL 24 25 def ApplyAttributes(self, attributes): 26 Container.ApplyAttributes(self, attributes) 27 self.isSelected = False 28 self.dropboxController = attributes.dropboxController 29 self.item = attributes.item 30 self.itemID = self.item.itemID 31 self.typeID = self.item.typeID 32 self.quantity = self.item.quantity 33 self.stacksize = self.item.stacksize 34 self.isSingleton = self.item.singleton 35 self.isRemovable = attributes.isRemovable 36 isBlueprint = evetypes.GetCategoryID(self.typeID) == const.categoryBlueprint 37 isCopy = isBlueprint and self.isSingleton == const.singletonBlueprintCopy 38 self.BuildIcons() 39 self.AddEntryHiliteAndBg() 40 self.BuildQtyUI() 41 self.icon.LoadIconByTypeID(typeID=self.typeID, ignoreSize=True, isCopy=isCopy) 42 self._SetQtyText() 43 self.getTypeAttribute = sm.GetService('clientDogmaStaticSvc').GetTypeAttribute 44 self.onMouseEnter = None 45 self.onMouseExit = None 46 47 def BuildIcons(self): 48 self.spriteCont = Container(name='spriteCont', parent=self, align=CENTER, width=ICON_SIZE, height=ICON_SIZE, state=uiconst.UI_PICKCHILDREN) 49 self.icon = Icon(name='type_%s' % self.typeID, parent=self.spriteCont, pos=(0, 50 0, 51 ICON_SIZE, 52 ICON_SIZE), align=CENTER, state=uiconst.UI_DISABLED, saturation=1.0, effectOpacity=0.0, spriteEffect=trinity.TR2_SFX_SOFTLIGHT) 53 self.hint = self.typeID 54 self.techIcon = Sprite(name='techIcon', parent=self.spriteCont, pos=(0, 0, 16, 16), idx=0, saturation=1.0, effectOpacity=0.0, spriteEffect=trinity.TR2_SFX_SOFTLIGHT) 55 uix.GetTechLevelIcon(self.techIcon, 0, self.typeID) 56 self.removeIcon = ButtonIcon(name='removeIcon', parent=self.spriteCont, pos=(2, 2, 12, 12), idx=0, texturePath='res:/ui/texture/icons/73_16_45.png', align=uiconst.TOPRIGHT, iconSize=12) 57 self.removeIcon.OnMouseExit = self.OnButtonIconMouseExit 58 if not self.isRemovable: 59 self.removeIcon.display = False 60 61 def OnButtonIconMouseExit(self): 62 self.OnMouseExit() 63 ButtonIcon.OnMouseExit(self.removeIcon) 64 65 def AddEntryHiliteAndBg(self): 66 self.entryHilite = Sprite(name='hilite', align=uiconst.TOALL, parent=self.spriteCont, texturePath='res:/UI/Texture/classes/InvItem/bgHover.png', blendMode=trinity.TR2_SBM_ADD, opacity=0.0, idx=0, state=uiconst.UI_DISABLED) 67 self.entryHilite.hint = evetypes.GetName(self.typeID) 68 bgSprite = Sprite(bgParent=self.spriteCont, name='background', texturePath='res:/UI/Texture/classes/InvItem/bgNormal.png') 69 70 def BuildQtyUI(self): 71 self.quantityParent = Container(parent=self, idx=0, name='qtyCont', pos=(3, 38, 32, 11), align=uiconst.TOPRIGHT, bgColor=(0, 0, 0, 0.95), state=uiconst.UI_DISABLED) 72 self.quantityParent.display = False 73 self.qtyLabel = Label(parent=self.quantityParent, left=2, maxLines=1, fontsize=9) 74 75 def _SetQtyText(self): 76 if self.isSingleton: 77 self.quantityParent.display = False 78 return 79 if self.stacksize: 80 numberOfItems = self.stacksize 81 else: 82 numberOfItems = self.quantity 83 self.qtyLabel.text = FmtAmt(numberOfItems, 'ss') 84 if numberOfItems: 85 self.quantityParent.display = True 86 else: 87 self.quantityParent.display = False 88 89 def ShowHilited(self): 90 uicore.animations.FadeIn(self.entryHilite, duration=0.2) 91 92 def ShowNotHilited(self): 93 uicore.animations.FadeOut(self.entryHilite, duration=0.2) 94 95 def OnMouseEnter(self, *args): 96 self.ShowHilited() 97 if uicore.uilib.leftbtn: 98 return 99 100 def OnMouseExit(self, *args): 101 if uicore.uilib.mouseOver != self and not uicore.uilib.mouseOver.IsUnder(self): 102 self.ShowNotHilited() 103 104 def GetDragData(self): 105 return [KeyVal(itemID=self.itemID, __guid__='xtriui.TypeIcon', typeID=self.typeID, isReprocessingItem=True)] 106 107 def GetMenu(self): 108 m = sm.GetService('menu').InvItemMenu(self.item) 109 m.append(None) 110 m.append((GetByLabel('UI/Generic/RemoveItem'), self.dropboxController.RemoveItems, ([self.itemID],))) 111 return m 112 113 def LoadTooltipPanel(self, tooltipPanel, *args): 114 item = self.dropboxController.GetItem(self.itemID) 115 InventoryItemTooltip(tooltipPanel=tooltipPanel, item=item) 116 117 def Close(self): 118 self.dropboxController = None 119 Container.Close(self)