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

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)