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

genericMiniMap.py (3916B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\ledger\genericMiniMap.py
      2 from carbonui.graphs.minimap import MapSlider, MiniMap
      3 from eve.client.script.ui.control.eveLabel import Label
      4 from carbonui.fontconst import EVE_SMALL_FONTSIZE
      5 from eve.client.script.ui.shared.fitting.fittingUtil import EatSignalChangingErrors
      6 from eve.client.script.ui.shared.ledger.ledgerUtil import GetMinDayTimeStamp, GetMaxDayTimeStamp
      7 from signals.signalUtil import ChangeSignalConnect
      8 import carbonui.const as uiconst
      9 RESIZE_COLOR = (0.8, 0.8, 1.0, 0.05)
     10 RESIZE_AREA = 10
     11 
     12 class MinimapSliderForStandaloneMinimap(MapSlider):
     13     default_clipChildren = False
     14     default_state = uiconst.UI_NORMAL
     15     resizeColor = (0.8, 0.8, 1.0, 0.1)
     16     resizeHandleColor = resizeColor[:3] + (0.5,)
     17     minimumExtraSpace = 10
     18     default_hoverColor = (1.0, 1.0, 1.0, 0.5)
     19     showHandle = True
     20 
     21     def ApplyAttributes(self, attributes):
     22         self.sliderController = attributes.sliderController
     23         self.sliderLabelRight = None
     24         MapSlider.ApplyAttributes(self, attributes)
     25         self.sliderLabel.align = uiconst.TOPLEFT
     26         self.sliderLabel.SetRGBA(1.0, 1.0, 1.0, 0.75)
     27         self.InitSliderLabelIfNeeded()
     28 
     29     def InitSliderLabelIfNeeded(self):
     30         if not self.sliderLabelRight or self.sliderLabelRight.destroyed:
     31             self.sliderLabelRight = Label(name='sliderLabelRight', parent=self.centerContainer, align=uiconst.BOTTOMRIGHT, fontsize=EVE_SMALL_FONTSIZE)
     32             self.sliderLabelRight.SetRGBA(1.0, 1.0, 1.0, 0.75)
     33 
     34     def MakeConnections(self):
     35         self.ChangeSignalConnection()
     36 
     37     def _AxisChanged(self, *args):
     38         self._ResizeSlider()
     39 
     40     def _ResizeSlider(self, *args):
     41         self.InitSliderLabelIfNeeded()
     42         parentWidth, parentHeight = self.parent.GetAbsoluteSize()
     43         start, end = self.sliderController.GetStartAndEndPoint()
     44         slierWidth = parentWidth * (end - start)
     45         sliderPos = parentWidth * start
     46         self.left = sliderPos
     47         self.width = slierWidth
     48         visibleRange0, visibleRange1 = self.sliderController.GetVisibleRange()
     49         visibleRange0 = GetMinDayTimeStamp(visibleRange0)
     50         visibleRange1 = GetMaxDayTimeStamp(visibleRange1)
     51         self.sliderLabel.text = self.sliderController.GetRangeForTimestamp(visibleRange0)
     52         self.sliderLabelRight.text = self.sliderController.GetRangeForTimestamp(visibleRange1)
     53 
     54     def _GetVisibleRange(self):
     55         parentWidth, parentHeight = self.parent.GetAbsoluteSize()
     56         dataRangeStart, dataRangeEnd = self.sliderController.GetDataRange()
     57         start = float(self.left) / parentWidth
     58         end = float(self.width) / parentWidth + start
     59         dataRange = dataRangeEnd - dataRangeStart
     60         visibleRange0 = start * dataRange + dataRangeStart
     61         visibleRange1 = end * dataRange + dataRangeStart
     62         return (long(visibleRange0), long(visibleRange1))
     63 
     64     def _UpdateAxis(self):
     65         self.sliderController.SetVisibleRange(self._GetVisibleRange())
     66 
     67     def ChangeSignalConnection(self, connect = True):
     68         signalAndCallback = [(self.sliderController.on_change, self._AxisChanged)]
     69         ChangeSignalConnect(signalAndCallback, connect)
     70 
     71     def Close(self):
     72         with EatSignalChangingErrors(errorMsg='MinimapSliderForStandaloneMinimap'):
     73             self.ChangeSignalConnection(connect=False)
     74         MapSlider.Close(self)
     75 
     76 
     77 class GenericMiniMap(MiniMap):
     78 
     79     def CreateSlider(self, attributes):
     80         self.sliderController = attributes.sliderController
     81         size = self.GetAbsoluteSize()
     82         self.slider = MinimapSliderForStandaloneMinimap(parent=self, axis=None, sliderController=self.sliderController, height=size[1], width=1, left=0, top=0)
     83 
     84     def OnDblClick(self, *args):
     85         dataRange = self.sliderController.GetDataRange()
     86         self.sliderController.SetVisibleRange(dataRange)