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

columnsPanel.py (4810B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\inflight\overviewSettings\columnsPanel.py
      2 from carbonui.primitives.container import Container
      3 from carbonui import uiconst
      4 from carbonui.button.group import ButtonGroup
      5 import overviewPresets.overviewSettingsConst as osConst
      6 from eve.client.script.ui.control.entries.util import GetFromClass
      7 from eve.client.script.ui.control.eveLabel import EveLabelMedium, EveLabelLarge
      8 from eve.client.script.ui.control.eveScroll import Scroll
      9 from eve.client.script.ui.inflight.overview import overviewConst, overviewColumns
     10 from eve.client.script.ui.inflight.overviewSettings.overviewSettingEntries import GetLastEntryToAdd, ColumnEntry
     11 from eve.client.script.ui.inflight.overviewSettings.panelUtils import OnContentDragEnter, OnContentDragExit
     12 from eve.common.lib import appConst as const
     13 from localization import GetByLabel
     14 from utillib import KeyVal
     15 
     16 class ColumnsPanel(Container):
     17     default_name = 'columnsPanel'
     18     default_state = uiconst.UI_HIDDEN
     19 
     20     def ApplyAttributes(self, attributes):
     21         Container.ApplyAttributes(self, attributes)
     22         self.tabID = attributes.get('tabID', None)
     23         self.cachedScrollPos = 0.0
     24         self.presetSvc = sm.GetService('overviewPresetSvc')
     25         EveLabelLarge(text=GetByLabel('UI/Overview/HintToggleDisplayStateAndOrder'), parent=self, align=uiconst.TOTOP, state=uiconst.UI_DISABLED, padding=(8, 4, 0, 8))
     26         colbtns = ButtonGroup(parent=self, idx=0)
     27         colbtns.AddButton(GetByLabel('UI/Overview/ResetColumns'), self.ResetColumns)
     28         self.scroll = Scroll(name='columnsScroll', parent=self, padding=const.defaultPadding)
     29         self.scroll.multiSelect = 0
     30         self.scroll.sr.content.OnDropData = self.MoveStuff
     31         self.scroll.sr.content.OnDragEnter = lambda *args: OnContentDragEnter(self.scroll, *args)
     32         self.scroll.sr.content.OnDragExit = lambda *args: OnContentDragExit(self.scroll, *args)
     33 
     34     def ResetColumns(self, *args):
     35         self.presetSvc.ResetTabVisibleColumnIDs(self.tabID)
     36         self.presetSvc.ResetTabColumnOrder(self.tabID)
     37         self.LoadColumns()
     38         sm.GetService('stateSvc').NotifyOnStateSetupChange('column reset')
     39 
     40     def LoadColumns(self, selected = None, loadFromTop = False):
     41         userSet = overviewColumns.GetColumns(self.tabID)
     42         userSetOrder = overviewColumns.GetColumnOrder(self.tabID)
     43         missingColumns = [ col for col in overviewConst.ALL_COLUMNS if col not in userSetOrder ]
     44         userSetOrder += missingColumns
     45         i = 0
     46         scrolllist = []
     47         for columnID in userSetOrder:
     48             data = KeyVal()
     49             data.label = overviewColumns.GetColumnLabel(columnID)
     50             data.checked = columnID in userSet
     51             data.cfgname = osConst.CONFIG_COLUMNS
     52             data.retval = columnID
     53             data.canDrag = True
     54             data.isSelected = selected == i
     55             data.OnChange = self.CheckBoxChange
     56             scrolllist.append(GetFromClass(ColumnEntry, data=data))
     57             i += 1
     58 
     59         scrolllist += GetLastEntryToAdd(scrolllist)
     60         scrollTo = 0.0 if loadFromTop else self.cachedScrollPos
     61         self.scroll.Load(contentList=scrolllist, scrollTo=scrollTo)
     62 
     63     def CheckBoxChange(self, checkbox, node):
     64         checked = checkbox.checked
     65         columnID = node.retval
     66         current = overviewColumns.GetColumns(self.tabID)[:]
     67         while columnID in current:
     68             current.remove(columnID)
     69 
     70         if checked:
     71             current.append(columnID)
     72         self.presetSvc.SetTabVisibleColumnIDs(self.tabID, current)
     73         self.DoFullOverviewReload()
     74 
     75     def DoFullOverviewReload(self):
     76         sm.ScatterEvent('OnFullOverviewReload')
     77 
     78     def MoveStuff(self, dragObj, entries, idx = -1, *args):
     79         self.MoveColumn(idx)
     80 
     81     def MoveColumn(self, idx = None, *args):
     82         self.cachedScrollPos = self.scroll.GetScrollProportion()
     83         selected = self.scroll.GetSelected()
     84         if selected:
     85             selected = selected[0]
     86             if idx is not None:
     87                 if idx != selected.idx:
     88                     if selected.idx < idx:
     89                         newIdx = idx - 1
     90                     else:
     91                         newIdx = idx
     92                 else:
     93                     return
     94             else:
     95                 newIdx = max(0, selected.idx - 1)
     96             column = selected.retval
     97             current = overviewColumns.GetColumnOrder(self.tabID)[:]
     98             while column in current:
     99                 current.remove(column)
    100 
    101             if newIdx == -1:
    102                 newIdx = len(current)
    103             current.insert(newIdx, column)
    104             self.presetSvc.SetTabColumnOrder(self.tabID, current)
    105             self.LoadColumns(newIdx)
    106             self.DoFullOverviewReload()