zoom_container.py (3407B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\theatersOfWar\campaigns\zoom_container.py 2 import carbonui.const as uiconst 3 from carbonui import Align, TextColor 4 from carbonui.primitives.container import Container 5 from carbonui.primitives.layoutGrid import LayoutGrid 6 from carbonui.primitives.line import Line 7 from carbonui.primitives.sprite import Sprite 8 from carbonui.primitives.transform import Transform 9 from carbonui.text.styles import TextBody 10 from carbonui.uianimations import animations 11 from jobboard.client.features.campaigns.qa_tools import get_qa_menu_for_campaign_zoom_container 12 13 class ZoomContainerInfo(object): 14 15 def __init__(self, content_id, content_name, content_texturePath, content_background_path, content_definition_name, hint = None): 16 self.content_id = content_id 17 self.content_name = content_name 18 self.content_texturePath = content_texturePath 19 self.content_background_path = content_background_path 20 self.content_definition_name = content_definition_name 21 self.hint = hint 22 23 24 class ZoomContainer(Container): 25 default_clipChildren = True 26 default_state = uiconst.UI_NORMAL 27 icon_size = 20 28 grid_cell_padding = 8 29 30 def ApplyAttributes(self, attributes): 31 self._zoom_container_info = attributes.zoom_container_info 32 self.callback = attributes.callback 33 super(ZoomContainer, self).ApplyAttributes(attributes) 34 self.title_grid = LayoutGrid(parent=self, columns=3, align=Align.CENTERBOTTOM, top=8, cellSpacing=(self.grid_cell_padding, 0)) 35 self.bg_cont = Transform(parent=self, align=Align.TOALL, scalingCenter=(0.5, 0.5)) 36 self.title_grid.Hide() 37 self.bg_sprite = Sprite(parent=self.bg_cont, texturePath=self._zoom_container_info.content_texturePath, pos=(0, 38 0, 39 self.width, 40 self.height), align=Align.CENTER, state=uiconst.UI_DISABLED) 41 self.load_container(self._zoom_container_info) 42 43 def load_container(self, container_info): 44 self._zoom_container_info = container_info 45 self.title_grid.Flush() 46 sprite = Sprite(parent=self.title_grid, texturePath=self._zoom_container_info.content_texturePath, pos=(0, 47 0, 48 self.icon_size, 49 self.icon_size)) 50 line = Line(parent=self.title_grid, align=Align.TOLEFT, width=3, opacity=TextColor.NORMAL[3]) 51 text_max_width = self.width - sprite.width - 2 * self.grid_cell_padding - line.width - 16 52 label = TextBody(parent=self.title_grid, text=self._zoom_container_info.content_name, align=Align.CENTERLEFT) 53 if label.width > text_max_width: 54 label.width = text_max_width 55 self.bg_sprite.texturePath = self._zoom_container_info.content_background_path 56 57 def OnMouseEnter(self, *args): 58 animations.MorphVector2(self.bg_cont, 'scale', self.bg_cont.scale, (1.1, 1.1), duration=0.25) 59 self.title_grid.Show() 60 61 def OnMouseExit(self, *args): 62 animations.MorphVector2(self.bg_cont, 'scale', self.bg_cont.scale, (1.0, 1.0), duration=0.25) 63 self.title_grid.Hide() 64 65 def OnClick(self, *args): 66 self.callback(self._zoom_container_info.content_id) 67 68 def GetHint(self): 69 return self._zoom_container_info.hint 70 71 def GetMenu(self, *args): 72 return get_qa_menu_for_campaign_zoom_container(self._zoom_container_info)