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

expanded_card_overlay.py (4152B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\achievement_system\client\ui\window\card\expanded_card_overlay.py
      2 import threadutils
      3 from achievement_system.client.ui.controller.achievement_entry import AchievementEntryController
      4 from achievement_system.client.ui.window.card.expanded_card import ExpandedAchievementCard
      5 from achievement_system.client.ui.window.const import TRANSITION_DURATION
      6 from carbonui import Align, uiconst
      7 from carbonui.control.scrollContainer import ScrollContainer
      8 from carbonui.primitives.container import Container
      9 from carbonui.primitives.fill import Fill
     10 from carbonui.uianimations import animations
     11 from eve.client.script.ui import eveColor
     12 from eve.client.script.ui.control.eveLoadingWheel import LoadingWheel
     13 SCROLL_PADDING = 16
     14 
     15 class AchievementCardOverlay(Container):
     16     default_state = uiconst.UI_NORMAL
     17     default_opacity = 0.0
     18 
     19     def __init__(self, controller, *args, **kwargs):
     20         super(AchievementCardOverlay, self).__init__(*args, **kwargs)
     21         self.controller = controller
     22         self.scroll_container = None
     23         self.expanded_card = None
     24         self.expanded_list = None
     25         self.construct_layout()
     26         self.update()
     27         self.connect_signals()
     28 
     29     def Close(self):
     30         try:
     31             self.disconnect_signals()
     32         finally:
     33             super(AchievementCardOverlay, self).Close()
     34 
     35     def connect_signals(self):
     36         if self.expanded_card and not self.expanded_card.destroyed:
     37             self.expanded_card.on_update_complete.connect(self.on_expanded_card_update_complete)
     38             self.expanded_card.on_size_changed.connect(self.on_expanded_card_size_changed)
     39         if self.scroll_container and not self.scroll_container.destroyed:
     40             self.scroll_container.onSizeChangeSignal.connect(self.on_scroll_container_size_changed)
     41 
     42     def disconnect_signals(self):
     43         if self.expanded_card and not self.expanded_card.destroyed:
     44             self.expanded_card.on_update_complete.disconnect(self.on_expanded_card_update_complete)
     45             self.expanded_card.on_size_changed.disconnect(self.on_expanded_card_size_changed)
     46         if self.scroll_container and not self.scroll_container.destroyed:
     47             self.scroll_container.onSizeChangeSignal.disconnect(self.on_scroll_container_size_changed)
     48 
     49     def construct_layout(self):
     50         self.loading_wheel = LoadingWheel(name='loading_wheel', parent=self, align=Align.CENTER)
     51         self.scroll_container = ScrollContainer(name='scroll_container', parent=self, align=Align.HORIZONTALLY_CENTERED, width=self.scroll_container_width, opacity=0.0)
     52         self.scroll_container.OnClick = self.OnClick
     53         self.card_container = Container(name='card_container', parent=self.scroll_container, align=Align.CENTER, state=uiconst.UI_NORMAL, width=self.scroll_container_width - SCROLL_PADDING)
     54         self.card_container.OnClick = self.OnClick
     55         self.expanded_card = ExpandedAchievementCard(name='expanded_card', parent=self.card_container, align=Align.TOPLEFT, controller=self.controller)
     56         Fill(parent=self, color=eveColor.BLACK, opacity=0.85)
     57 
     58     @property
     59     def scroll_container_width(self):
     60         return ExpandedAchievementCard.default_width + SCROLL_PADDING
     61 
     62     @threadutils.highlander_threaded
     63     def update(self):
     64         animations.FadeIn(self, duration=TRANSITION_DURATION)
     65 
     66     def on_expanded_card_update_complete(self):
     67         animations.FadeOut(self.loading_wheel, duration=TRANSITION_DURATION)
     68         animations.FadeIn(self.scroll_container, duration=TRANSITION_DURATION)
     69 
     70     def on_expanded_card_size_changed(self, width, height):
     71         self.card_container.height = height
     72 
     73     def on_scroll_container_size_changed(self, width, height):
     74         self.scroll_container.onSizeChangeSignal.disconnect(self.on_scroll_container_size_changed)
     75         self.scroll_container.ScrollToVertical(0.0)
     76 
     77     def OnClick(self, *args):
     78         self.state = uiconst.UI_DISABLED
     79         animations.FadeOut(self, duration=TRANSITION_DURATION, callback=self.on_fade_out_complete)
     80 
     81     def on_fade_out_complete(self, *args):
     82         self.Close()