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)