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

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)