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

text.py (5064B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\control\entries\text.py
      2 import blue
      3 from carbon.common.script.util import commonutils
      4 from carbonui import uiconst
      5 from carbonui.control.scrollentries import SE_BaseClassCore
      6 from carbonui.util.stringManip import GetAsUnicode
      7 from eve.client.script.ui.control.eveIcon import Icon
      8 from eve.client.script.ui.control.eveLabel import EveLabelMedium
      9 from eve.client.script.ui.control.infoIcon import InfoIcon
     10 from eve.client.script.ui.util import uix
     11 from eve.client.script.ui.util.linkUtil import IsLink
     12 from eveservices.menu import GetMenuService
     13 from menu import MenuLabel
     14 
     15 class Text(SE_BaseClassCore):
     16     __guid__ = 'listentry.Text'
     17     __params__ = ['text']
     18     default_showHilite = False
     19 
     20     def Startup(self, *args):
     21         self.sr.text = self.sr.label = self._ConstructLabel()
     22         self.sr.infoicon = InfoIcon(left=2, parent=self, idx=0, align=uiconst.CENTERRIGHT)
     23         self.sr.infoicon.OnClick = self.ShowInfo
     24         self.sr.icon = Icon(parent=self, pos=(1, 2, 24, 24), align=uiconst.TOPLEFT, idx=0, ignoreSize=True)
     25 
     26     def _ConstructLabel(self):
     27         return EveLabelMedium(text='', parent=self, left=8, state=uiconst.UI_DISABLED, maxLines=1, align=uiconst.CENTERLEFT)
     28 
     29     def Load(self, node):
     30         self.sr.node = node
     31         data = node
     32         if node.tabs:
     33             self.sr.text.tabs = node.tabs
     34         if node.tabMargin:
     35             self.sr.text.SetTabMargin(node.tabMargin)
     36         self.sr.text.text = unicode(data.text)
     37         self.typeID = data.Get('typeID', None)
     38         self.itemID = data.Get('itemID', None)
     39         self.isStation = data.Get('isStation', 0)
     40         if node.Get('hint', None):
     41             self.hint = node.hint
     42         if self.typeID or self.isStation and self.itemID:
     43             self.sr.infoicon.state = uiconst.UI_NORMAL
     44         else:
     45             self.sr.infoicon.state = uiconst.UI_HIDDEN
     46         gid = node.Get('iconID', None)
     47         iid = node.Get('icon', None)
     48         if gid or iid:
     49             if gid:
     50                 self.sr.icon.LoadIcon(node.iconID, ignoreSize=True)
     51             elif iid:
     52                 self.sr.icon.LoadIcon(node.icon, ignoreSize=True)
     53             iconsize = node.Get('iconsize', 24)
     54             self.sr.icon.SetSize(iconsize, iconsize)
     55             self.sr.icon.state = uiconst.UI_NORMAL
     56             self.sr.text.left = self.height + 4
     57         else:
     58             self.sr.icon.state = uiconst.UI_HIDDEN
     59             self.sr.text.left = 8
     60         if IsLink(self.sr.text.text):
     61             self.sr.text.state = uiconst.UI_NORMAL
     62         else:
     63             self.sr.text.state = uiconst.UI_DISABLED
     64 
     65     def OnClick(self, *args):
     66         OnClick = self.sr.node.Get('OnClick', None)
     67         if OnClick:
     68             if callable(OnClick):
     69                 OnClick()
     70             else:
     71                 OnClick[0](*OnClick[1:])
     72 
     73     def OnDblClick(self, *args):
     74         if self.sr.node.Get('OnDblClick', None):
     75             self.sr.node.OnDblClick(self)
     76         elif self.sr.node.Get('canOpen', None):
     77             uix.TextBox(self.sr.node.canOpen, GetAsUnicode(self.sr.node.text).replace('<t>', '<br>').replace('\r', ''), preformatted=1)
     78 
     79     def ShowInfo(self, *args):
     80         if self.sr.node.Get('isStation', 0) and self.itemID:
     81             stationinfo = sm.GetService('ui').GetStationStaticInfo(self.itemID)
     82             sm.GetService('info').ShowInfo(stationinfo.stationTypeID, self.itemID)
     83             return
     84         if self.sr.node.Get('typeID', None):
     85             sm.GetService('info').ShowInfo(self.sr.node.typeID, self.sr.node.Get('itemID', None))
     86 
     87     def GetHeight(self, *args):
     88         node, width = args
     89         iconsize = node.Get('iconsize', 24)
     90         node.height = max(uix.GetTextHeight(node.text, maxLines=1) + 6, iconsize)
     91         return node.height
     92 
     93     def CopyText(self):
     94         text = GetAsUnicode(self.sr.node.text)
     95         blue.pyos.SetClipboardData(commonutils.StripTags(text.replace('<t>', ' ')))
     96 
     97     def GetMenu(self):
     98         m = []
     99         if self.sr.node.GetMenu:
    100             m = self.sr.node.GetMenu()
    101         typeID = self.sr.node.Get('typeID', None)
    102         abstractinfo = self.sr.node.Get('abstractinfo', None)
    103         if self.sr.node.Get('isStation', 0) and self.itemID or typeID is not None:
    104             try:
    105                 if self.itemID and typeID is not None:
    106                     m += GetMenuService().GetMenuFromItemIDTypeID(self.itemID, typeID, abstractInfo=abstractinfo)
    107                 else:
    108                     hasShowInfo = False
    109                     for item in m:
    110                         if item is not None and item[0][0] == 'UI/Commands/ShowInfo':
    111                             hasShowInfo = True
    112                             break
    113 
    114                     if not hasShowInfo:
    115                         m += [(MenuLabel('UI/Commands/ShowInfo'), self.ShowInfo), None]
    116             except:
    117                 pass
    118 
    119         return m + [(MenuLabel('UI/Common/Copy'), self.CopyText)]
    120 
    121     @classmethod
    122     def GetCopyData(cls, node):
    123         return node.text