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

overviewMenuUtil.py (5114B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\overview\overviewMenuUtil.py
      2 import evetypes
      3 from carbonui.control.contextMenu.menuData import MenuData
      4 from carbonui.control.contextMenu.menuEntryData import MenuEntryData, MenuEntryDataRadioButton
      5 from clientsettings.setting import SessionSettingBool
      6 from carbonui.uicore import uicore
      7 from eve.client.script.parklife import bracketConst
      8 from eve.client.script.parklife.bracketSettings import bracket_display_override_setting
      9 from eve.client.script.ui.inflight.overview import overviewConst
     10 from eve.client.script.ui.inflight.overviewSettings.columnConfigurationWnd import ColumnConfigurationWindow
     11 from localization import GetByLabel
     12 from menu import MenuLabel
     13 from overviewPresets import overviewSettingsConst
     14 
     15 def GetToggleEntry(groupID):
     16     presetSvc = sm.GetService('overviewPresetSvc')
     17     tabIDs = _GetActiveOverviewTabIDs()
     18     if len(tabIDs) <= 1:
     19         if presetSvc.IsGroupIDShown(groupID):
     20             return GetRemoveGroupFromOverviewEntry(groupID)
     21         else:
     22             return GetAddGroupToOverviewEntry(groupID)
     23     else:
     24         subMenuData = [ _GetToggleSubEntry(tabID, groupID) for tabID in tabIDs ]
     25         return MenuEntryData(MenuLabel('UI/Overview/ToggleOverviewVisibilty', {'groupName': evetypes.GetGroupNameByGroup(groupID)}), subMenuData=subMenuData)
     26 
     27 
     28 def _GetToggleSubEntry(tabID, groupID):
     29     presetSvc = sm.GetService('overviewPresetSvc')
     30     presetName = presetSvc.GetTabSettings(tabID)[overviewSettingsConst.SETTING_OVERVIEW_PRESET_NAME]
     31     tabName = presetSvc.GetTabName(tabID)
     32     if presetSvc.IsGroupIDShown(groupID, presetName):
     33         label = MenuLabel('UI/Overview/RemoveGroupToTab', {'tabName': tabName})
     34         return MenuEntryData(label, lambda : sm.GetService('overviewPresetSvc').RemoveGroupIDFromPreset(groupID, presetName))
     35     else:
     36         label = MenuLabel('UI/Overview/AddGroupToTab', {'tabName': tabName})
     37         return MenuEntryData(label, lambda : sm.GetService('overviewPresetSvc').AddGroupIDToPreset(groupID, presetName))
     38 
     39 
     40 def GetAddGroupToOverviewEntry(groupID):
     41     label = MenuLabel('UI/Overview/AddGroupToOverview', {'groupName': evetypes.GetGroupNameByGroup(groupID)})
     42     return MenuEntryData(label, lambda : sm.GetService('overviewPresetSvc').AddGroupIDToPreset(groupID))
     43 
     44 
     45 def GetRemoveGroupFromOverviewEntry(groupID):
     46     label = MenuLabel('UI/Overview/RemoveGroupFromOverview', {'groupName': evetypes.GetGroupNameByGroup(groupID)})
     47     return MenuEntryData(label, lambda : sm.GetService('overviewPresetSvc').RemoveGroupIDFromPreset(groupID))
     48 
     49 
     50 def _GetEntry(groupID, label, func):
     51     presetSvc = sm.GetService('overviewPresetSvc')
     52     tabIDs = _GetActiveOverviewTabIDs()
     53     if len(tabIDs) > 1:
     54         subMenuData = MenuData()
     55         for tabID in tabIDs:
     56             presetName = presetSvc.GetTabSettings(tabID)[overviewSettingsConst.SETTING_OVERVIEW_PRESET_NAME]
     57             subMenuData.AddEntry(presetSvc.GetTabName(tabID), lambda : func(groupID, presetName))
     58 
     59         return MenuEntryData(label, subMenuData=subMenuData)
     60     return MenuEntryData(label, lambda : func(groupID))
     61 
     62 
     63 def _GetActiveOverviewTabIDs():
     64     from eve.client.script.ui.inflight.overview.overviewWindow import OverviewWindow
     65     windows = uicore.registry.GetWindowsByClass(OverviewWindow)
     66     return [ window.GetSelectedTabID() for window in windows if window.GetSelectedTabID() is not None ]
     67 
     68 
     69 def GetBracketVisibilitySubMenu():
     70     return [MenuEntryDataRadioButton(MenuLabel('UI/Overview/UseSelectedTabBracketPreset'), bracketConst.SHOW_DEFAULT, bracket_display_override_setting), MenuEntryDataRadioButton(MenuLabel('UI/Overview/ShowAll'), bracketConst.SHOW_ALL, bracket_display_override_setting), MenuEntryDataRadioButton(MenuLabel('UI/Overview/HideAll'), bracketConst.SHOW_NONE, bracket_display_override_setting)]
     71 
     72 
     73 def GetColumnVisibilitySubMenu(tabID):
     74     menuData = MenuData()
     75     presetSvc = sm.GetService('overviewPresetSvc')
     76     visibleColumnIDs = presetSvc.GetTabVisibleColumnIDs(tabID)
     77     for columnID, label in overviewConst.NAME_BY_COLUMN.iteritems():
     78         columnSetting = ColumnSetting(columnID in visibleColumnIDs, tabID, columnID)
     79         columnSetting.on_change.connect(_OnColumnCheckbox)
     80         hint = overviewConst.COLUMN_DESCRIPTIONS.get(columnID, None)
     81         if hint:
     82             hint = GetByLabel(hint)
     83         menuData.AddCheckbox(GetByLabel(label), columnSetting, hint=hint)
     84 
     85     menuData.AddSeparator()
     86     menuData.AddEntry(GetByLabel('UI/Overview/ChangeOrder'), lambda : ColumnConfigurationWindow.Open(tabID=tabID))
     87     return menuData
     88 
     89 
     90 def _OnColumnCheckbox(value, tabID, columnID):
     91     presetSvc = sm.GetService('overviewPresetSvc')
     92     return presetSvc.ToggleTabColumnVisibility(tabID, columnID)
     93 
     94 
     95 class ColumnSetting(SessionSettingBool):
     96 
     97     def __init__(self, default_value, tabID, columnID):
     98         super(ColumnSetting, self).__init__(default_value)
     99         self.tabID = tabID
    100         self.columnID = columnID
    101 
    102     def _trigger_on_change(self, value):
    103         self.on_change(value, self.tabID, self.columnID)