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

collapseGroup.py (3262B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\info\collapseGroup.py
      2 import eveicon
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      5 from carbonui.primitives.sprite import Sprite
      6 from carbonui.primitives.fill import Fill
      7 from carbonui import Align, uiconst, TextColor
      8 from carbonui.text.styles import TextBody
      9 from carbonui.control.buttonIcon import ButtonIcon
     10 from eveui import fade
     11 
     12 class CollapseGroup(ContainerAutoSize):
     13     default_icon = None
     14     default_label = ''
     15     default_align = Align.TOTOP
     16     icon = None
     17     text = None
     18     header_color = None
     19 
     20     def ApplyAttributes(self, attributes):
     21         super(CollapseGroup, self).ApplyAttributes(attributes)
     22         self.icon = attributes.Get('icon', self.default_icon)
     23         self.text = attributes.Get('text', self.default_label)
     24         self._construct_layout()
     25 
     26     def _construct_layout(self):
     27         self._construct_header()
     28         self._construct_main_cont()
     29 
     30     def _construct_header(self):
     31         self.headerCont = Container(name='headerCont', parent=self, state=uiconst.UI_NORMAL, align=Align.TOTOP, height=32)
     32         self.headerBG = Fill(bgParent=self.headerCont, opacity=0.05)
     33         self.headerCont.OnClick = self._on_click
     34         self.headerCont.OnMouseEnter = self._on_mouse_enter
     35         self.headerCont.OnMouseExit = self._on_mouse_exit
     36         if self.icon:
     37             self.iconCont = Container(name='iconCont', parent=self.headerCont, align=Align.TOLEFT, width=24, state=uiconst.UI_DISABLED)
     38             self.icon = Sprite(name='icon', parent=self.iconCont, align=Align.CENTERRIGHT, texturePath=self.icon, color=TextColor.SECONDARY, width=16, height=16, state=uiconst.UI_DISABLED)
     39         self.expanderCont = Container(name='expanderCont', parent=self.headerCont, align=Align.TORIGHT, width=32, state=uiconst.UI_PICKCHILDREN)
     40         self.expanderIcon = ButtonIcon(name='expander', parent=self.expanderCont, align=Align.CENTER, texturePath=eveicon.chevron_up, iconSize=18, func=self._on_click)
     41         self._construct_label()
     42 
     43     def _construct_main_cont(self):
     44         self.mainCont = ContainerAutoSize(name='mainCont', parent=self, align=Align.TOTOP, state=uiconst.UI_PICKCHILDREN, padTop=2)
     45 
     46     def _construct_label(self):
     47         self.labelCont = ContainerAutoSize(name='labelCont', parent=self.headerCont, align=Align.TOALL, state=uiconst.UI_DISABLED, clipChildren=True, padTop=6)
     48         self.label = TextBody(name='label', parent=self.labelCont, align=Align.TOLEFT, text=self.text, padLeft=8, color=TextColor.NORMAL, state=uiconst.UI_DISABLED, bold=True, autoFadeSides=16)
     49 
     50     def SetCollapsed(self, collapsed):
     51         if collapsed:
     52             self.mainCont.Hide()
     53             self.expanderIcon.SetTexturePath(eveicon.chevron_down)
     54         else:
     55             self.mainCont.Show()
     56             self.expanderIcon.SetTexturePath(eveicon.chevron_up)
     57 
     58     def Toggle(self):
     59         self.SetCollapsed(self.mainCont.display)
     60 
     61     def _on_click(self, *args):
     62         self.Toggle()
     63 
     64     def _on_mouse_enter(self, *args):
     65         fade(self.headerBG, end_value=0.1)
     66 
     67     def _on_mouse_exit(self, *args):
     68         fade(self.headerBG, end_value=0.05)