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