activitySelectionButtons.py (4487B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\industry\activitySelectionButtons.py 2 from carbonui.primitives.container import Container 3 from carbonui.util.color import Color 4 from eve.client.script.ui.control.toggleButtonGroupButton import ToggleButtonGroupButtonIcon 5 from eve.client.script.ui.shared.industry import industryUIConst 6 from eve.client.script.ui.control.toggleButtonGroup import ToggleButtonGroup 7 from eve.client.script.ui.shared.industry.views.errorFrame import ErrorFrame 8 import localization 9 import carbonui.const as uiconst 10 import industry 11 12 class ActivitySelectionButtons(Container): 13 default_name = 'ActivityTabs' 14 default_height = 32 15 16 def ApplyAttributes(self, attributes): 17 Container.ApplyAttributes(self, attributes) 18 self.callback = attributes.callback 19 self.jobData = None 20 self.btnGroup = None 21 self.ReconstructButtons() 22 23 def ReconstructButtons(self): 24 if self.btnGroup: 25 self.btnGroup.Close() 26 self.btnGroup = ToggleButtonGroup(name='myToggleBtnGroup', parent=self, align=uiconst.TOTOP, callback=self.OnActivitySelected) 27 for activityID in industry.ACTIVITIES: 28 isDisabled = not self._EnabledActivity(activityID) 29 color = industryUIConst.GetActivityColor(activityID) 30 color = Color(*color).SetBrightness(0.5).GetRGBA() 31 btn = self.btnGroup.AddButton(activityID, iconPath=industryUIConst.ACTIVITY_ICONS_LARGE[activityID], iconSize=26, colorSelected=color, isDisabled=isDisabled, btnClass=ActivityToggleButtonGroupButton, activityID=activityID) 32 btn.uniqueUiName = industryUIConst.ACTIVITY_HELP_POINTERS.get(activityID, None) 33 34 def _EnabledActivity(self, activityID): 35 if self.jobData is None: 36 return False 37 if self.jobData.blueprint is None: 38 return False 39 if activityID not in self.jobData.blueprint.activities: 40 return False 41 return True 42 43 def OnNewJobData(self, jobData): 44 oldJobData = self.jobData 45 self.jobData = jobData 46 if jobData: 47 jobData.on_updated.connect(self.OnJobDataUpdated) 48 blueprint = oldJobData.blueprint if oldJobData else None 49 if jobData and jobData.blueprint.IsSameBlueprint(blueprint): 50 self.UpdateSelectedBtn() 51 return 52 self.ReconstructButtons() 53 self.UpdateState() 54 55 def OnJobDataUpdated(self, jobData): 56 self.UpdateState() 57 58 def UpdateState(self): 59 if self.jobData and self.jobData.IsInstalled(): 60 self.btnGroup.Disable() 61 self.btnGroup.opacity = 0.5 62 else: 63 self.btnGroup.Enable() 64 self.btnGroup.opacity = 1.0 65 if not self.jobData: 66 return 67 self.UpdateSelectedBtn() 68 for btn in self.btnGroup.buttons: 69 activityID = btn.btnID 70 if self.jobData.facility and activityID not in self.jobData.facility.activities: 71 btn.ShowErrorFrame() 72 else: 73 btn.HideErrorFrame() 74 75 def UpdateSelectedBtn(self): 76 if self.btnGroup and self._EnabledActivity(self.jobData.activityID): 77 self.btnGroup.SetSelectedByID(self.jobData.activityID, animate=False) 78 79 def OnActivitySelected(self, activityID, *args): 80 self.callback(self.jobData.blueprint, activityID) 81 82 83 class ActivityToggleButtonGroupButton(ToggleButtonGroupButtonIcon): 84 85 def ApplyAttributes(self, attributes): 86 super(ActivityToggleButtonGroupButton, self).ApplyAttributes(attributes) 87 self.activityID = attributes.activityID 88 color = Color(*self.colorSelected).SetBrightness(0.75).GetRGBA() 89 self.errorFrame = ErrorFrame(bgParent=self, state=uiconst.UI_HIDDEN, color=color, padding=(2, 2, 2, 2), idx=0) 90 91 def ShowErrorFrame(self): 92 if not self.isDisabled: 93 self.errorFrame.Show() 94 95 def HideErrorFrame(self): 96 self.errorFrame.Hide() 97 98 def GetHint(self, *args): 99 hint = '<b>%s</b><br>%s' % (localization.GetByLabel(industryUIConst.ACTIVITY_NAMES[self.activityID]), localization.GetByLabel(industryUIConst.ACTIVITY_HINTS[self.activityID])) 100 if self.errorFrame.display: 101 colorHex = Color.RGBtoHex(*industryUIConst.COLOR_NOTREADY) 102 hint += '<br><b><color=%s>%s</color></b>' % (colorHex, localization.GetByLabel('UI/Industry/ActivityNotSupported')) 103 return hint