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

skillPlanScroll.py (2428B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\skillPlan\browser\skillPlanScroll.py
      2 import localization
      3 from carbonui import uiconst
      4 from carbonui.control.scrollContainer import ScrollContainer
      5 from carbonui.primitives.container import Container
      6 from eve.client.script.ui.skillPlan.browser.skillPlanEntry import SkillPlanEntry
      7 
      8 class SkillPlanScroll(ScrollContainer):
      9     default_scrollBarPadding = 10
     10     ENTRY_HEIGHT = 134
     11     __notifyevents__ = ['OnSkillQueueChanged']
     12 
     13     def ApplyAttributes(self, attributes):
     14         super(SkillPlanScroll, self).ApplyAttributes(attributes)
     15         self.rows = []
     16         self.entries = []
     17         self.selectedID = None
     18         self.numPerRow = None
     19         self.skillPlans = None
     20         self.addUniqueName = False
     21         self.isConstructing = False
     22 
     23     def ConstructSkillPlanEntries(self, skillPlans):
     24         self.isConstructing = True
     25         self.skillPlans = skillPlans
     26         for row in self.rows:
     27             row.Close()
     28 
     29         self.rows = []
     30         self.entries = []
     31         self.numPerRow = self._GetNumPerRow()
     32         sortedSkillPlans = localization.util.Sort(skillPlans, key=lambda x: x.GetName())
     33         for i, skillPlan in enumerate(sortedSkillPlans):
     34             if not i % self.numPerRow:
     35                 row = Container(name='row_%s' % (i / self.numPerRow), parent=self, align=uiconst.TOTOP, height=self.ENTRY_HEIGHT, padBottom=20)
     36                 self.rows.append(row)
     37             entry = SkillPlanEntry(parent=row, align=uiconst.TOLEFT_PROP, width=1.0 / self.numPerRow, skillPlan=skillPlan, padRight=30 if (i + 1) % self.numPerRow else 0, addUniqueName=self.addUniqueName)
     38             self.entries.append(entry)
     39 
     40         self.isConstructing = False
     41 
     42     def _GetNumPerRow(self):
     43         w, _ = self.GetAbsoluteSize()
     44         numPerRow = w / 325
     45         return max(1, numPerRow)
     46 
     47     def IsNumPerRowCorrect(self):
     48         return self.numPerRow == self._GetNumPerRow()
     49 
     50     def _OnSizeChange_NoBlock(self, width, height):
     51         super(SkillPlanScroll, self)._OnSizeChange_NoBlock(width, height)
     52         if not self.isConstructing and self.skillPlans and not self.IsNumPerRowCorrect():
     53             self.ConstructSkillPlanEntries(self.skillPlans)
     54 
     55     def OnSkillQueueChanged(self):
     56         for entry in self.entries:
     57             entry.UpdateState()
     58 
     59     def GetNumEntries(self):
     60         return len(self.entries)