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

settingsCategoryCont.py (4213B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\structure\structureSettings\settingsCategoryCont.py
      2 from carbonui.control.scrollContainer import ScrollContainer
      3 from carbonui.primitives.container import Container
      4 from carbonui.primitives.containerAutoSize import ContainerAutoSize
      5 from eve.client.script.ui.control.eveLabel import EveCaptionSmall
      6 from carbonui.primitives.sprite import Sprite
      7 import carbonui.const as uiconst
      8 from eve.client.script.ui.control.themeColored import FillThemeColored
      9 from eve.client.script.ui.structure import ChangeSignalConnect
     10 from eve.client.script.ui.structure.structureSettings import AreGroupNodes
     11 from eve.client.script.ui.structure.structureSettings.settingSection import SettingSection
     12 from localization import GetByLabel
     13 import structures
     14 
     15 class SettingsCategoryCont(Container):
     16     __notifyevents__ = ['OnExternalDragInitiated', 'OnExternalDragEnded']
     17 
     18     def ApplyAttributes(self, attributes):
     19         Container.ApplyAttributes(self, attributes)
     20         self.structureProfileController = attributes.structureProfileController
     21         self.structureBrowserController = attributes.structureBrowserController
     22         self.ChangeSignalConnection(connect=True)
     23         self.categoryID = self.structureBrowserController.GetSelectedCategory()
     24         self.categoryTypeCont = CategoryTypeCont(parent=self)
     25         self.settingsParent = ScrollContainer(parent=self, name='profileParent', align=uiconst.TOALL)
     26         self.fillUnderlay = FillThemeColored(bgParent=self.settingsParent, colorType=uiconst.COLORTYPE_UIBASECONTRAST)
     27         self.settingSections = []
     28         self.LoadCurrentCategory()
     29         self.draggingNodes = False
     30         sm.RegisterNotify(self)
     31 
     32     def ChangeSignalConnection(self, connect = True):
     33         signalAndCallback = [(self.structureBrowserController.on_category_selected, self.LoadCategorySettings)]
     34         ChangeSignalConnect(signalAndCallback, connect)
     35 
     36     def SetCurrentCategoryID(self, categoryID):
     37         self.categoryID = categoryID
     38 
     39     def LoadCategorySettings(self, categoryID):
     40         self.SetCurrentCategoryID(categoryID)
     41         self.LoadCurrentCategory()
     42 
     43     def LoadCurrentCategory(self):
     44         self.categoryTypeCont.SetCategoryName(self.categoryID)
     45         settingsForCategory = structures.SETTINGS_BY_CATEGORY[self.categoryID]
     46         self.settingsParent.Flush()
     47         self.settingSections = []
     48         settingsCont = ContainerAutoSize(parent=self.settingsParent, name='settingsCont', align=uiconst.TOTOP)
     49         for settingID in settingsForCategory:
     50             s = SettingSection(parent=settingsCont, align=uiconst.TOTOP, structureProfileController=self.structureProfileController, settingID=settingID)
     51             self.settingSections.append(s)
     52 
     53     def OnExternalDragInitiated(self, dragSource, dragData):
     54         if AreGroupNodes(dragData):
     55             self.draggingNodes = True
     56             self._DragChanged(initiated=True)
     57 
     58     def OnExternalDragEnded(self, *args):
     59         if self.draggingNodes:
     60             self._DragChanged(initiated=False)
     61         self.draggingNodes = False
     62 
     63     def _DragChanged(self, initiated):
     64         for s in self.settingSections:
     65             s.DragChanged(initiated)
     66 
     67     def Close(self):
     68         self.settingSections = []
     69         self.ChangeSignalConnection(connect=False)
     70         self.structureProfileController = None
     71         self.structureBrowserController = None
     72         Container.Close(self)
     73 
     74 
     75 class CategoryTypeCont(Container):
     76     default_align = uiconst.TOTOP
     77     default_height = 32
     78 
     79     def ApplyAttributes(self, attributes):
     80         Container.ApplyAttributes(self, attributes)
     81         self.categorySprite = Sprite(parent=self, name='profileTypeSprite', align=uiconst.CENTERLEFT, pos=(0, 0, 26, 26))
     82         self.categoryNameLabel = EveCaptionSmall(name='groupName', parent=self, padLeft=32, align=uiconst.CENTERLEFT)
     83 
     84     def SetCategoryName(self, categoryID):
     85         categoryNamePath = structures.CATEGORY_LABELS[categoryID]
     86         self.categoryNameLabel.text = GetByLabel(categoryNamePath)
     87         texturePath = structures.CATEGORY_TEXTURES[categoryID]
     88         self.categorySprite.SetTexturePath(texturePath=texturePath)