tabsPanel.py (13276B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\overviewSettings\tabsPanel.py 2 import operator 3 import eveicon 4 from bannedwords.client.bannedwords import check_words_allowed 5 from carbonui.control.buttonIcon import ButtonIcon 6 from carbonui.control.combo import Combo 7 from carbonui.control.comboEntryData import ComboEntryData 8 from carbonui.control.scrollContainer import ScrollContainer 9 from carbonui.control.singlelineedits.singleLineEditText import SingleLineEditText 10 from carbonui.primitives.container import Container 11 from carbonui import uiconst 12 from carbonui.primitives.layoutGrid import LayoutGrid 13 from eve.client.script.ui.control.eveLabel import EveLabelMedium 14 from eve.client.script.ui.inflight.overview import overviewUtil 15 from eve.client.script.ui.inflight.overviewSettings.overviewColorPicker import OverviewColorPickerCont 16 from eveexceptions import UserError 17 from localization import GetByLabel, util 18 from overviewPresets import overviewSettingsConst 19 from overviewPresets.overviewSettingsConst import BRACKET_FILTER_SHOWALL, MAX_TAB_NUM 20 21 class TabsPanel(Container): 22 default_name = 'tabsPanel' 23 default_state = uiconst.UI_HIDDEN 24 __notifyevents__ = ['OnOverviewPresetSaved'] 25 26 def ApplyAttributes(self, attributes): 27 Container.ApplyAttributes(self, attributes) 28 self.overviewPresetSvc = sm.GetService('overviewPresetSvc') 29 self.AddTabForOverviewProfile() 30 sm.RegisterNotify(self) 31 32 def AddTabForOverviewProfile(self): 33 scrollCont = ScrollContainer(name='scrollCont', parent=self, align=uiconst.TOALL, pos=(4, 0, 4, 4)) 34 numColumns = 5 35 parentGrid = LayoutGrid(name='overviewTabsLayoutGrid', parent=scrollCont, columns=numColumns, state=uiconst.UI_PICKCHILDREN, align=uiconst.TOPLEFT, left=10, top=0, cellSpacing=(15, 8)) 36 overviewOptions = self.GetFilterOptions() 37 bracketOptions = self.GetBracketFilterOptions() 38 Container(parent=parentGrid, pos=(0, 0, 0, 0)) 39 numColToSkip = 1 40 for i in xrange(parentGrid.columns - numColToSkip): 41 container = Container(pos=(0, 0, 115, 0), name='spacer', align=uiconst.TOPLEFT) 42 parentGrid.AddCell(cellObject=container) 43 44 parentGrid.FillRow() 45 Container(parent=parentGrid) 46 EveLabelMedium(parent=parentGrid, text=GetByLabel('UI/Overview/TabName'), state=uiconst.UI_DISABLED, color=(1, 1, 1, 0.75), width=120) 47 EveLabelMedium(parent=parentGrid, text=GetByLabel('UI/Overview/Filter'), state=uiconst.UI_DISABLED, color=(1, 1, 1, 0.75), width=120) 48 EveLabelMedium(parent=parentGrid, text=GetByLabel('UI/Overview/BracketFilter'), state=uiconst.UI_DISABLED, color=(1, 1, 1, 0.75), width=120) 49 parentGrid.FillRow() 50 self.tabedit = {} 51 self.comboTabOverview = {} 52 self.comboTabBracket = {} 53 self.tabColorPickers = {} 54 tabsettings = self.overviewPresetSvc.GetSettingsByTabID() 55 for i in range(MAX_TAB_NUM): 56 comboTabBracketVal, comboTabOverviewVal, newOverviewOptions, tabeditVal, colorVal = self.GetTabInfoForCombos(i, overviewOptions, tabsettings) 57 colorPicker = OverviewColorPickerCont(callback=self.SetColorForTab, currentColor=colorVal) 58 colorPicker.tabNum = i 59 self.tabColorPickers[i] = colorPicker 60 parentGrid.AddCell(cellObject=colorPicker, cellSpacing=(0, 0)) 61 tabedit = SingleLineEditText(name='edit' + str(i), align=uiconst.TOPLEFT, pos=(0, 0, 120, 0), setvalue=tabeditVal, OnFocusLost=self.ChangeTabText, OnReturn=self.OnTabEditReturn, sendSelfAsArgument=True, maxLength=overviewSettingsConst.MAX_TAB_NAME_LENGTH) 62 tabedit.originalValue = tabeditVal 63 parentGrid.AddCell(cellObject=tabedit) 64 self.tabedit[i] = tabedit 65 filterCombo = Combo(label='', options=newOverviewOptions or overviewOptions, name='filterCombo', align=uiconst.TOPLEFT, width=120, callback=self.OnProfileInTabChanged, hint=GetByLabel('UI/Overview/ChooseOverviewPreset')) 66 if not comboTabOverviewVal: 67 comboTabOverviewVal = self.overviewPresetSvc.GetDefaultPreset() 68 filterCombo.SelectItemByValue(comboTabOverviewVal) 69 self.comboTabOverview[i] = filterCombo 70 parentGrid.AddCell(cellObject=filterCombo) 71 bracketFilterCombo = Combo(label='', options=bracketOptions, name='bracketFilterCombo', width=120, align=uiconst.TOPLEFT, callback=self.OnProfileInTabChanged, hint=GetByLabel('UI/Overview/ChooseBracketPreset')) 72 if comboTabBracketVal: 73 bracketFilterCombo.SelectItemByValue(comboTabBracketVal or BRACKET_FILTER_SHOWALL) 74 self.comboTabBracket[i] = bracketFilterCombo 75 parentGrid.AddCell(cellObject=bracketFilterCombo) 76 removeBtn = ButtonIcon(align=uiconst.CENTERLEFT, width=24, height=24, iconSize=16, texturePath=eveicon.close, func=lambda tabID = i: self.overviewPresetSvc.DeleteTab(tabID=tabID), hint=GetByLabel('UI/Overview/DeleteTab')) 77 parentGrid.AddCell(cellObject=removeBtn) 78 79 return scrollCont 80 81 def GetFilterOptions(self): 82 return overviewUtil.GetFilterComboOptions() 83 84 def GetBracketFilterOptions(self): 85 bracketOptions = overviewUtil.GetFilterComboOptions() 86 bracketOptions.insert(0, ComboEntryData(GetByLabel('UI/Overview/ShowAllBrackets'), BRACKET_FILTER_SHOWALL)) 87 return bracketOptions 88 89 def UpdateOverviewTab(self, *args): 90 tabSettings = {} 91 for key in self.tabedit.keys(): 92 editContainer = self.tabedit.get(key, None) 93 comboTabBracketContainer = self.comboTabBracket.get(key, None) 94 comboTabOverviewContainer = self.comboTabOverview.get(key, None) 95 colorPicker = self.tabColorPickers.get(key, None) 96 if not (editContainer and comboTabOverviewContainer and comboTabBracketContainer): 97 continue 98 tabColor = None 99 if colorPicker: 100 tabColor = colorPicker.currentColor 101 tabName = editContainer.text 102 if not tabName: 103 continue 104 presetName = comboTabOverviewContainer.selectedValue 105 bracketPresetName = comboTabBracketContainer.selectedValue 106 if self.overviewPresetSvc.GetTabSettings(key): 107 self.overviewPresetSvc.UpdateTab(key, tabName, presetName, bracketPresetName, tabColor) 108 else: 109 wndInstID = self.overviewPresetSvc.GetDefaultWindowInstanceID() 110 self.overviewPresetSvc.AddTab(tabName, presetName, bracketPresetName, wndInstID, tabColor) 111 112 def OnProfileInTabChanged(self, *args): 113 self.UpdateOverviewTab() 114 115 def ChangeTabText(self, editField): 116 self.CheckEditFieldBannedWord(editField) 117 currentValue = editField.GetValue() 118 if currentValue != editField.originalValue: 119 self.UpdateOverviewTab() 120 121 def OnTabEditReturn(self, edit): 122 self.CheckEditFieldBannedWord(edit) 123 return self.UpdateOverviewTab() 124 125 def SetColorForTab(self, *args): 126 self.UpdateOverviewTab() 127 128 def CheckEditFieldBannedWord(self, editField): 129 try: 130 check_words_allowed(editField.GetValue()) 131 except UserError: 132 editField.SetValue('') 133 raise 134 135 def RefreshOverviewTab(self): 136 tabSettings = self.overviewPresetSvc.GetSettingsByTabID() 137 for key, editContainer in self.tabedit.iteritems(): 138 tSetting = tabSettings.get(key, {}) 139 if tSetting is None: 140 continue 141 filterCombo = self.comboTabOverview.get(key, None) 142 bracketFilterCombo = self.comboTabBracket.get(key, None) 143 tabColorPicker = self.tabColorPickers.get(key, None) 144 editField = self.tabedit.get(key, None) 145 if None in (filterCombo, bracketFilterCombo, editField): 146 continue 147 overviewSetting = tSetting.get('overview', None) 148 bracketSetting = tSetting.get('bracket', None) 149 tabName = tSetting.get('name', '') 150 tabColor = tSetting.get('color', None) 151 overviewOptions = self.GetFilterOptions() 152 newOverviewOptions = None 153 if self.overviewPresetSvc.IsUnsavedPreset(overviewSetting): 154 currBracket, currOverview, newOverviewOptions, tabName, colorVal = self.GetTabInfoForCombos(key, overviewOptions, tabSettings) 155 filterCombo.LoadOptions(newOverviewOptions or overviewOptions) 156 if not overviewSetting: 157 overviewSetting = self.overviewPresetSvc.GetDefaultPreset() 158 filterCombo.SelectItemByValue(overviewSetting) 159 if bracketSetting: 160 bracketFilterCombo.SelectItemByValue(bracketSetting or BRACKET_FILTER_SHOWALL) 161 editField.SetText(tabName) 162 editField.originalValue = tabName 163 if tabColorPicker: 164 tabColorPicker.SetCurrentFill(tabColor) 165 166 def GetBracketAndOverviewOptions(self, includeEmpty = True): 167 overviewOptions = [] 168 bracketOptions = [] 169 if includeEmpty: 170 bracketOptions = [[GetByLabel('UI/Overview/ShowAllBrackets'), None]] 171 presets = self.overviewPresetSvc.GetAllPresets() 172 bothOptions = [] 173 defaults = [] 174 for label in presets.keys(): 175 if self.overviewPresetSvc.IsUnsavedPreset(label): 176 continue 177 elif label == 'ccp_notsaved': 178 bothOptions.append((' ', [GetByLabel('UI/Overview/NotSaved'), label])) 179 else: 180 overviewName = self.overviewPresetSvc.GetDefaultOverviewDisplayName(label) 181 optionID = label.lower() 182 if overviewName is None: 183 bothOptions.append((optionID, [label, label])) 184 185 for name in sm.GetService('overviewPresetSvc').GetDefaultOverviewPresetNames(): 186 presetName = sm.GetService('overviewPresetSvc').GetPresetDisplayName(name) 187 if presetName is not None: 188 defaults.append([presetName, name]) 189 190 bothOptions = [ x[1] for x in util.Sort(bothOptions, key=operator.itemgetter(0)) ] 191 overviewOptions += bothOptions 192 overviewOptions += defaults 193 bracketOptions += bothOptions 194 bracketOptions += defaults 195 return (bracketOptions, overviewOptions) 196 197 def GetTabInfoForCombos(self, i, overviewOptions, tabsettings): 198 tabeditVal = '' 199 presetName = None 200 comboTabBracketVal = None 201 newOverviewOptions = None 202 colorVal = None 203 if i in tabsettings: 204 tabeditVal = tabsettings[i].get('name', None) 205 comboTabBracketVal = tabsettings[i].get('bracket', None) or None 206 presetName = tabsettings[i].get('overview', None) 207 colorVal = tabsettings[i].get('color', None) 208 return (comboTabBracketVal, 209 presetName, 210 newOverviewOptions, 211 tabeditVal, 212 colorVal) 213 214 def OnOverviewPresetSaved(self): 215 overviewOptions = self.GetFilterOptions() 216 bracketOptions = self.GetBracketFilterOptions() 217 tabsettings = self.overviewPresetSvc.GetSettingsByTabID() 218 for i in range(MAX_TAB_NUM): 219 comboTabOverviewVal = None 220 comboTabBracketVal = None 221 editFieldText = None 222 if i in tabsettings: 223 comboTabOverviewVal = tabsettings[i].get('overview', None) 224 comboTabBracketVal = tabsettings[i].get('bracket', None) 225 editFieldText = tabsettings[i].get('name', None) 226 self.comboTabOverview[i].LoadOptions(overviewOptions, comboTabOverviewVal) 227 self.comboTabBracket[i].LoadOptions(bracketOptions, comboTabBracketVal) 228 if editFieldText: 229 self.tabedit[i].SetText(editFieldText) 230 self.tabedit[i].originalValue = editFieldText 231 232 def _GetFilterOptions(self): 233 overviewOptions = [] 234 bracketOptions = [(' ', [GetByLabel('UI/Overview/ShowAllBrackets'), None])] 235 presets = self.overviewPresetSvc.GetAllPresets() 236 for label in presets.keys(): 237 if label == 'ccp_notsaved': 238 overviewOptions.append((' ', [GetByLabel('UI/Overview/NotSaved'), label])) 239 bracketOptions.append((' ', [GetByLabel('UI/Overview/NotSaved'), label])) 240 else: 241 presetName = self.overviewPresetSvc.GetDefaultOverviewDisplayName(label) 242 optionID = label.lower() 243 if 'DefaultPreset_' in label: 244 optionID = presetName 245 if presetName is not None: 246 overviewOptions.append((optionID, [presetName, label])) 247 bracketOptions.append((optionID, [presetName, label])) 248 else: 249 overviewOptions.append((optionID, [label, label])) 250 bracketOptions.append((optionID, [label, label])) 251 252 overviewOptions = [ x[1] for x in util.Sort(overviewOptions, key=lambda x: x[0]) ] 253 bracketOptions = [ x[1] for x in util.Sort(bracketOptions, key=lambda x: x[0]) ] 254 return (bracketOptions, overviewOptions)