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

attributeFields.py (7027B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\comparison\attributeFields.py
      2 import carbonui
      3 import carbonui.text.styles
      4 import dogma.const
      5 import eveicon
      6 from carbonui import TextColor, Align, uiconst, TextAlign
      7 from carbonui.control.buttonIcon import ButtonIcon
      8 from carbonui.control.dragdrop.dragdata import TypeDragData
      9 from carbonui.primitives.containerAutoSize import ContainerAutoSize
     10 from carbonui.primitives.gradientSprite import GradientSprite
     11 from carbonui.primitives.layoutGrid import LayoutGridRow
     12 from carbonui.primitives.sprite import Sprite
     13 from carbonui.uianimations import animations
     14 from carbonui.uiconst import PickState, OutputMode
     15 from eve.client.script.ui import eveColor
     16 from eve.client.script.ui.comparison import comparisonSignals
     17 from eve.client.script.ui.comparison.comparisonGridUtil import get_max_column_width
     18 from eve.client.script.ui.control.itemIcon import ItemIcon
     19 from eve.client.script.ui.control.skillTreeCont import SkillStateIcon
     20 from eve.client.script.ui.shared.cloneGrade.omegaCloneIcon import OmegaCloneIcon
     21 from eve.client.script.ui.shared.tooltip.skill import LoadSkillEntryTooltip
     22 from evelink.client.handlers.local_service.endpoints import ShowInfo
     23 from signals import Signal
     24 from skills.client.skillController import SkillController
     25 
     26 class GroupHeaderRow(LayoutGridRow):
     27     default_state = uiconst.UI_NORMAL
     28 
     29     def __init__(self, text, **kwargs):
     30         super(GroupHeaderRow, self).__init__(**kwargs)
     31         self.rows = []
     32         self.is_expanded = True
     33         self._text = text
     34         cont = ContainerAutoSize(parent=self, padding=(0, 16, 0, -8))
     35         self.icon = Sprite(parent=cont, align=Align.CENTERLEFT, pickState=PickState.OFF, texturePath=eveicon.caret_down, pos=(0, 0, 16, 16), color=TextColor.SECONDARY, outputMode=OutputMode.COLOR_AND_GLOW, glowBrightness=0.0)
     36         self.header = carbonui.text.styles.TextHeader(parent=cont, align=Align.CENTERLEFT, color=TextColor.SECONDARY, text=text, left=24)
     37 
     38     def attach_row(self, row):
     39         self.rows.append(row)
     40 
     41     def OnClick(self, *args):
     42         self.is_expanded = not self.is_expanded
     43         for row in self.rows:
     44             row.display = self.is_expanded
     45 
     46         self.icon.texturePath = eveicon.caret_down if self.is_expanded else eveicon.caret_right
     47         if self.is_expanded:
     48             self.header.text = self._text
     49         else:
     50             self.header.text = u'{} <color={}>{}</color>'.format(self._text, TextColor.SECONDARY.hex_argb, len(self.rows))
     51 
     52     def OnMouseEnter(self, *args):
     53         animations.SpColorMorphTo(self.icon, endColor=TextColor.HIGHLIGHT, duration=0.3)
     54         animations.MorphScalar(self.icon, 'glowBrightness', self.icon.glowBrightness, 1.0, duration=0.3)
     55 
     56     def OnMouseExit(self, *args):
     57         animations.SpColorMorphTo(self.icon, endColor=TextColor.SECONDARY, duration=0.3)
     58         animations.MorphScalar(self.icon, 'glowBrightness', self.icon.glowBrightness, 0.0, duration=0.3)
     59 
     60 
     61 class TextAttributeField(carbonui.text.styles.TextBody):
     62     default_color = TextColor.HIGHLIGHT
     63 
     64     def __init__(self, attribute, **kwargs):
     65         super(TextAttributeField, self).__init__(**kwargs)
     66         self.attribute = attribute
     67         if attribute:
     68             self.text = attribute.get_value_text_formatted()
     69             if attribute.is_link:
     70                 self.pickState = PickState.ON
     71         else:
     72             self.text = '-'
     73             self.rgba = TextColor.DISABLED
     74 
     75 
     76 class SkillAttributeField(ContainerAutoSize):
     77     default_align = Align.CENTERRIGHT
     78 
     79     def __init__(self, skill_type_id = None, required_level = None, **kwargs):
     80         super(SkillAttributeField, self).__init__(**kwargs)
     81         self.skill_controller = SkillController(skill_type_id)
     82         self.required_level = required_level
     83         self.icon = SkillStateIcon(parent=self, align=Align.CENTERRIGHT, pickState=PickState.OFF, skill_controller=self.skill_controller, required_level=self.required_level, pos=(0, 0, 16, 16))
     84 
     85     def GetMenu(self):
     86         return self.skill_controller.GetMenu()
     87 
     88     def GetHint(self):
     89         return self.icon.GetHint()
     90 
     91     def LoadTooltipPanel(self, tooltipPanel, *args):
     92         LoadSkillEntryTooltip(tooltipPanel, self.skill_controller.typeID, self.required_level)
     93 
     94     def OnClick(self, *args):
     95         ShowInfo(typeID=self.skill_controller.typeID)
     96 
     97 
     98 class OmegaAttributeField(OmegaCloneIcon):
     99     default_width = 24
    100     default_height = 24
    101 
    102 
    103 class TypeHeader(ContainerAutoSize):
    104     isDragObject = True
    105     default_alignMode = Align.TOPRIGHT
    106 
    107     def __init__(self, comparable_type, is_compact = False, icon_size = 32, **kw):
    108         super(TypeHeader, self).__init__(**kw)
    109         self.comparable_type = comparable_type
    110         self.is_compact = is_compact
    111         self.on_remove = Signal('on_remove')
    112         self.remove_btn = ButtonIcon(name='remove_btn', parent=self, align=Align.TOPRIGHT, pos=(icon_size + 4,
    113          (icon_size - 16) / 2,
    114          16,
    115          16), display=False, texturePath=eveicon.close, func=self.OnRemoveBtn, pickState=PickState.ON)
    116         self.icon = ItemIcon(name='icon', parent=self, align=Align.TOPRIGHT, pickState=PickState.OFF, pos=(0,
    117          0,
    118          icon_size,
    119          icon_size), typeID=comparable_type.type_id, itemID=comparable_type.item_id)
    120         carbonui.text.styles.TextBody(parent=self, align=Align.TOPRIGHT, text=self.comparable_type.get_name(), top=icon_size + 4, maxWidth=get_max_column_width(self.is_compact), maxLines=3, textAlign=TextAlign.RIGHT)
    121         self.drag_line = GradientSprite(parent=self, align=Align.TOPRIGHT, display=False, pos=(0,
    122          -8,
    123          icon_size,
    124          1), rgbData=((0.0, eveColor.WHITE[:3]),), alphaData=((0.0, 0.0),
    125          (0.3, 0.5),
    126          (0.7, 0.5),
    127          (1.0, 0.0)))
    128 
    129     def OnRemoveBtn(self, *args):
    130         comparisonSignals.on_remove(self.comparable_type)
    131 
    132     def GetMenu(self):
    133         return sm.GetService('menu').GetMenuFromItemIDTypeID(self.comparable_type.item_id, self.comparable_type.type_id)
    134 
    135     def OnClick(self, *args):
    136         sm.GetService('info').ShowInfo(self.comparable_type.type_id, self.comparable_type.item_id)
    137 
    138     def GetHint(self):
    139         return self.icon.GetHint()
    140 
    141     def OnMouseEnter(self, *args):
    142         self.remove_btn.display = True
    143         self.icon.OnMouseEnter()
    144 
    145     def OnMouseExit(self, *args):
    146         self.remove_btn.display = False
    147         self.icon.OnMouseExit()
    148 
    149     def OnDropData(self, dragSource, dragData):
    150         comparisonSignals.on_dropped_in_front_of(dragData, self.comparable_type)
    151 
    152     def _is_valid_drag_data(self, dragData):
    153         return isinstance(dragData[0], TypeDragData) or hasattr(dragData[0], 'typeID')
    154 
    155     def GetDragData(self):
    156         return [TypeDragData(typeID=self.comparable_type.type_id)]
    157 
    158     def OnDragEnter(self, dragSource, dragData):
    159         if self._is_valid_drag_data(dragData):
    160             self.drag_line.display = True
    161 
    162     def OnDragExit(self, dragSource, dragData):
    163         self.drag_line.display = False