overviewTabGroup.py (11672B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\overview\overviewTabGroup.py 2 import eveicon 3 import localization 4 from carbon.common.script.util.commonutils import StripTags 5 from carbonui import TextColor 6 from carbonui.control.contextMenu.menuData import MenuData 7 from carbonui.control.contextMenu.menuEntryData import MenuEntryData 8 from eve.client.script.parklife.overview.default import categories 9 from eve.client.script.ui import menuUtil 10 from carbonui.control.tab import Tab 11 from carbonui.control.tabGroup import TabGroup 12 from eve.client.script.ui.inflight.overview import overviewSettings 13 from eve.client.script.ui.inflight.overview.overviewMenuUtil import GetColumnVisibilitySubMenu 14 from eve.client.script.ui.inflight.overview.overviewUtil import GetCustomFiltersSorted, GetDefaultFiltersByCategory 15 from eve.client.script.ui.inflight.overviewSettings.overviewSettingsWnd import OverviewSettingsWnd 16 from eve.client.script.ui.util.utilWindows import NamePopup 17 from localization import GetByLabel 18 from overviewPresets import overviewSettingsConst 19 from overviewPresets.overviewSettingsConst import SETTING_OVERVIEW_PRESET_NAME, SETTING_BRACKET_PRESET_NAME, SETTING_TAB_NAME, BRACKET_FILTER_SHOWALL 20 FILTERS_GROUPING_THRESHOLD = 10 21 22 class OverviewTab(Tab): 23 24 def ApplyAttributes(self, attributes): 25 self.presetSvc = sm.GetService('overviewPresetSvc') 26 return super(OverviewTab, self).ApplyAttributes(attributes) 27 28 def LoadTooltipPanel(self, tooltipPanel, tab): 29 tooltipPanel.LoadStandardSpacing() 30 tooltipPanel.columns = 2 31 wrapWidth = 150 32 tooltipPanel.AddLabelMedium(text=localization.GetByLabel('UI/Overview/Filter'), wrapWidth=wrapWidth) 33 tooltipPanel.AddLabelMedium(text=self._GetFilterLabel(), wrapWidth=wrapWidth, color=TextColor.HIGHLIGHT) 34 description = self._GetFilterDescription() 35 if description: 36 tooltipPanel.AddLabelMedium(text=description, wrapWidth=2 * wrapWidth, colSpan=2, color=TextColor.SECONDARY, cellPadding=(8, 0, 8, 8)) 37 if self.presetSvc.IsBracketFilterDictatingTab(self.tabID): 38 tooltipPanel.AddLabelMedium(text=localization.GetByLabel('UI/Overview/BracketFilter'), wrapWidth=wrapWidth) 39 tooltipPanel.AddLabelMedium(text=self._GetBracketFilterLabel(), wrapWidth=wrapWidth, color=TextColor.HIGHLIGHT) 40 if overviewSettings.show_debug_info.is_enabled(): 41 tooltipPanel.AddLabelMedium(text='tabID=%s' % self.tabID) 42 43 def _GetBracketFilterLabel(self): 44 tabSettings = self.presetSvc.GetTabSettings(self.tabID) 45 bracketPresetName = tabSettings.get(SETTING_BRACKET_PRESET_NAME, None) 46 if bracketPresetName: 47 bracketLabel = self.presetSvc.GetPresetDisplayName(bracketPresetName) 48 else: 49 bracketLabel = localization.GetByLabel('UI/Overview/ShowAllBrackets') 50 if overviewSettings.show_debug_info.is_enabled(): 51 bracketLabel += ' (presetName=%s)' % repr(bracketPresetName) 52 return bracketLabel 53 54 def _GetFilterLabel(self): 55 presetName = self._GetPresetName() 56 overviewLabel = self.presetSvc.GetPresetDisplayName(presetName) 57 if overviewSettings.show_debug_info.is_enabled(): 58 overviewLabel += ' (presetName=%s)' % repr(presetName) 59 return overviewLabel 60 61 def _GetPresetName(self): 62 tabSettings = self.presetSvc.GetTabSettings(self.tabID) 63 presetName = tabSettings.get(SETTING_OVERVIEW_PRESET_NAME, None) 64 return presetName 65 66 def _GetFilterDescription(self): 67 return self.presetSvc.GetDefaultOverviewDescription(self._GetPresetName()) 68 69 def GetMenu(self, *args): 70 if self.presetSvc.IsReadOnly(): 71 return [] 72 ret = [MenuEntryData(GetByLabel('UI/Overview/Filter'), subMenuData=self.GetFiltersSubMenu)] 73 if self.presetSvc.IsBracketFilterDictatingTab(self.tabID): 74 ret.append(MenuEntryData(GetByLabel('UI/Overview/BracketFilter'), subMenuData=self.GetBracketFiltersSubMenu)) 75 ret.extend([None, MenuEntryData(GetByLabel('UI/Commands/ChangeName'), self.ChangeTabName), MenuEntryData(GetByLabel('UI/Generic/Columns'), subMenuData=lambda : GetColumnVisibilitySubMenu(self.tabID))]) 76 if len(self.presetSvc.GetSettingsByTabID()) > 1: 77 ret.append(MenuEntryData(GetByLabel('UI/Overview/DeleteTab'), self.DeleteTab, menuGroupID=menuUtil.DESTRUCTIVEGROUP)) 78 ret.append(MenuEntryData(GetByLabel('UI/Overview/MoveTabTo'), subMenuData=self.GetMoveTabSubMenu())) 79 return ret 80 81 def GetMoveTabSubMenu(self): 82 menuData = MenuData() 83 menuData.AddEntry(GetByLabel('UI/Overview/NewWindow'), lambda : self.presetSvc.MoveTab(self.tabID)) 84 wndInstIDs = self.presetSvc.GetWindowInstanceIDs() 85 if wndInstIDs: 86 menuData.AddSeparator() 87 for wndInstID in wndInstIDs: 88 if wndInstID == self.presetSvc.GetWindowInstanceID(self.tabID): 89 continue 90 menuData.AddEntry(self.GetWindowName(wndInstID), lambda iid = wndInstID: self.presetSvc.MoveTab(self.tabID, iid)) 91 92 return menuData 93 94 def GetWindowName(self, windowInstanceID): 95 tabIDs = self.presetSvc.GetTabIDs(windowInstanceID) 96 name = '' 97 for i, tabID in enumerate(tabIDs): 98 if i == 3: 99 return name[:-3] + ' ...' 100 tabName = self.presetSvc.GetTabSettings(tabID).get(SETTING_TAB_NAME) 101 name += tabName + ' - ' 102 103 return name[:-3] 104 105 def GetFiltersSubMenu(self): 106 m = MenuData() 107 self._AddCustomFilterEntries(m, self._AddFilterEntry) 108 self._AddDefaultFilterEntries(m, self._AddFilterEntry) 109 m.AddSeparator() 110 m.AddEntry(GetByLabel('UI/Overview/EditCurrentFilter'), self.EditCurrentFilter, texturePath=eveicon.settings) 111 return m 112 113 def EditCurrentFilter(self): 114 presetName = self.presetSvc.GetTabPreset(self.tabID) 115 self._EditCurrentFilter(presetName) 116 117 def EditCurrentBracketFilter(self): 118 presetName = self.presetSvc.GetTabBracketPreset(self.tabID) 119 self._EditCurrentFilter(presetName) 120 121 def _EditCurrentFilter(self, presetName): 122 wnd = OverviewSettingsWnd.GetIfOpen() 123 if wnd: 124 wnd.EditPreset(presetName) 125 else: 126 OverviewSettingsWnd.Open(presetName=presetName) 127 128 def GetBracketFiltersSubMenu(self): 129 m = MenuData() 130 activePresetName = self.presetSvc.GetTabBracketPreset(self.tabID) 131 m.AddEntry(GetByLabel('UI/Overview/ShowAllBrackets'), lambda : self.__ApplyFilter(BRACKET_FILTER_SHOWALL, overviewSettingsConst.SETTING_BRACKET_PRESET_NAME), texturePath=self._GetCheckmarkTexturePath(BRACKET_FILTER_SHOWALL, activePresetName)) 132 self._AddCustomFilterEntries(m, self._AddBracketFilterEntry) 133 self._AddDefaultFilterEntries(m, self._AddBracketFilterEntry) 134 m.AddSeparator() 135 m.AddEntry(GetByLabel('UI/Overview/EditCurrentFilter'), self.EditCurrentBracketFilter, texturePath=eveicon.settings) 136 return m 137 138 def _AddCustomFilterEntries(self, m, addEntryFunc): 139 presetNames = GetCustomFiltersSorted() 140 menu = self._CheckAddAsSubgroup(m, len(presetNames), GetByLabel('UI/Overview/CustomFilters')) 141 for presetName in presetNames: 142 addEntryFunc(menu, presetName) 143 144 def _CheckAddAsSubgroup(self, menuData, numPresets, groupName): 145 if numPresets > FILTERS_GROUPING_THRESHOLD: 146 subMenuData = MenuData() 147 menuData.AddSeparator() 148 menuData.AddEntry(groupName, subMenuData=subMenuData, texturePath=eveicon.filter) 149 return subMenuData 150 else: 151 if numPresets: 152 menuData.AddCaption(groupName) 153 return menuData 154 155 def _AddDefaultFilterEntries(self, m, addEntryFunc): 156 m.AddCaption(GetByLabel('UI/Overview/DefaultFilters')) 157 presetNamesByCategoryID = GetDefaultFiltersByCategory() 158 for presetName in presetNamesByCategoryID.get(categories.CATEGORY_NONE, []): 159 addEntryFunc(m, presetName) 160 161 for categoryID, presetNames in presetNamesByCategoryID.iteritems(): 162 self._AddDefaultCategorySubMenu(m, categoryID, presetNames, addEntryFunc) 163 164 def _AddDefaultCategorySubMenu(self, menuData, categoryID, presetNames, addEntryFunc): 165 if categoryID == categories.CATEGORY_NONE: 166 return 167 m = MenuData() 168 for presetName in presetNames: 169 addEntryFunc(m, presetName) 170 171 menuData.AddEntry(categories.get_name(categoryID), subMenuData=m, texturePath=categories.get_icon(categoryID)) 172 173 def _AddFilterEntry(self, menu, presetName): 174 activePresetName = self.presetSvc.GetTabPreset(self.tabID) 175 menu.AddEntry(self.presetSvc.GetPresetDisplayName(presetName, showCategory=False), lambda p = presetName: self._ApplyFilter(p), texturePath=self._GetCheckmarkTexturePath(presetName, activePresetName), hint=self.presetSvc.GetDefaultOverviewDescription(presetName)) 176 177 def _AddBracketFilterEntry(self, menu, presetName): 178 activePresetName = self.presetSvc.GetTabBracketPreset(self.tabID) 179 menu.AddEntry(self.presetSvc.GetPresetDisplayName(presetName, showCategory=False), lambda p = presetName: self._ApplyBracketFilter(p), texturePath=self._GetCheckmarkTexturePath(presetName, activePresetName), hint=self.presetSvc.GetDefaultOverviewDescription(presetName)) 180 181 def _GetCheckmarkTexturePathIfSelected(self, presetName, settingsID): 182 if settingsID == SETTING_OVERVIEW_PRESET_NAME: 183 activePreset = self.presetSvc.GetTabPreset(self.tabID) 184 elif settingsID == SETTING_BRACKET_PRESET_NAME: 185 activePreset = self.presetSvc.GetTabBracketPreset(self.tabID) 186 return self._GetCheckmarkTexturePath(presetName, activePreset) 187 188 def _GetCheckmarkTexturePath(self, presetName, activePreset): 189 if presetName == activePreset: 190 return eveicon.checkmark 191 192 def __ApplyFilter(self, presetName, settingsID): 193 if settingsID == overviewSettingsConst.SETTING_OVERVIEW_PRESET_NAME: 194 self._ApplyFilter(presetName) 195 elif settingsID == overviewSettingsConst.SETTING_BRACKET_PRESET_NAME: 196 self._ApplyBracketFilter(presetName) 197 198 def _ApplyBracketFilter(self, presetName): 199 self.presetSvc.SetTabBracketPreset(self.tabID, presetName) 200 if self.IsSelected(): 201 self.presetSvc.LoadBracketPreset(presetName, False) 202 203 def _ApplyFilter(self, presetName): 204 self.presetSvc.SetTabPreset(self.tabID, presetName) 205 if self.IsSelected(): 206 self.presetSvc.LoadPreset(presetName, False) 207 208 def ChangeTabName(self): 209 tabName = self.presetSvc.GetTabSettings(self.tabID)[SETTING_TAB_NAME] 210 tabName = StripTags(tabName) 211 tabName = NamePopup(localization.GetByLabel('UI/Commands/ChangeName'), localization.GetByLabel('/Carbon/UI/Controls/ScrollEntries/TypeInNewName'), tabName, maxLength=30) 212 if tabName: 213 self.presetSvc.SetTabName(self.tabID, tabName) 214 215 def DeleteTab(self): 216 self.presetSvc.DeleteTab(self.tabID) 217 218 219 class OverviewTabGroup(TabGroup): 220 default_name = 'OverviewTabGroup' 221 default_tabClass = OverviewTab 222 223 def GetUIID(self, name, tabID = None): 224 tabsettings = sm.GetService('overviewPresetSvc').GetSettingsByTabID().get(tabID, {}) 225 presetName = tabsettings.get(SETTING_OVERVIEW_PRESET_NAME, None) 226 if presetName: 227 return super(OverviewTabGroup, self).GetUIID(name, presetName) 228 return super(OverviewTabGroup, self).GetUIID(name, tabID)