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

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