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)