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

statisticsPanel.py (2763B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\login\charcreation\empireTechnologyViews\statisticsPanel.py
      2 import carbonui.const as uiconst
      3 from carbonui.control.editPlainText import LINESPLIT
      4 from carbonui.primitives.container import Container
      5 from carbonui.primitives.gradientSprite import GradientSprite
      6 from eve.client.script.ui.control.eveLabel import EveLabelMedium
      7 from carbonui.fontconst import EVE_MEDIUM_FONTSIZE
      8 from eve.client.script.ui.util.uix import GetTextHeight, GetTextWidth
      9 STATISTICS_TEXT_BOX_MARGIN = 10
     10 STATISTICS_GRADIENT_COLOR = (0.0, 0.0, 0.0)
     11 STATISTICS_GRADIENT_OPACITY = 1.0
     12 
     13 def FormatStatisticsText(statisticsText):
     14     formattedLines = LINESPLIT.sub('\n', statisticsText).splitlines(True)
     15     return ''.join(formattedLines)
     16 
     17 
     18 def AddStatisticsLineToContainer(line, container):
     19     if line != '\n':
     20         line = line.rstrip()
     21     statisticsTextContainer = Container(name='statisticsTextContainer', parent=container, align=uiconst.TOTOP, width=GetTextWidth(line, fontsize=EVE_MEDIUM_FONTSIZE), height=GetTextHeight(line, maxLines=1, fontsize=EVE_MEDIUM_FONTSIZE))
     22     EveLabelMedium(name='statisticsLabel', parent=statisticsTextContainer, align=uiconst.CENTERRIGHT, text=line)
     23 
     24 
     25 class StatisticsPanel(Container):
     26 
     27     def ApplyAttributes(self, attributes):
     28         Container.ApplyAttributes(self, attributes)
     29         unFormattedStatisticsText = attributes.Get('statisticsText', '')
     30         self.statisticsText = FormatStatisticsText(unFormattedStatisticsText)
     31         statisticsTextHeight = GetTextHeight(strng=self.statisticsText, fontsize=EVE_MEDIUM_FONTSIZE)
     32         statisticsWrapper = Container(name='statisticsWrapper', parent=self, align=uiconst.TOTOP, width=self.width, height=statisticsTextHeight + 2 * STATISTICS_TEXT_BOX_MARGIN)
     33         self.statisticsTextBox = Container(name='statisticsTextBox', parent=statisticsWrapper, align=uiconst.TORIGHT, width=self.width, height=statisticsTextHeight + 2 * STATISTICS_TEXT_BOX_MARGIN)
     34         GradientSprite(name='statisticsGradient', bgParent=self.statisticsTextBox, rgbData=((0, STATISTICS_GRADIENT_COLOR),), alphaData=[(0.0, 0.0),
     35          (0.2, 0.1),
     36          (0.7, 0.6),
     37          (1.0, 0.8)], opacity=STATISTICS_GRADIENT_OPACITY)
     38         self.LoadStatisticsText()
     39 
     40     def IterLines(self):
     41         return self.statisticsText.splitlines(True)
     42 
     43     def LoadStatisticsText(self):
     44         statisticsTextContainer = Container(parent=self.statisticsTextBox, align=uiconst.CENTER, width=self.statisticsTextBox.width - 2 * STATISTICS_TEXT_BOX_MARGIN, height=self.statisticsTextBox.height - 2 * STATISTICS_TEXT_BOX_MARGIN)
     45         for line in self.IterLines():
     46             AddStatisticsLineToContainer(line, statisticsTextContainer)