link.py (1454B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\careerPortal\link\link.py 2 import uuid 3 import evelink.client 4 SCHEME_CAREER_PROGRAM_NODE = 'careerProgramNode' 5 6 def register_link_handlers(registry): 7 registry.register(SCHEME_CAREER_PROGRAM_NODE, handle_node_link, hint='UI/CareerPortal/NodeLinkHint') 8 9 10 def handle_node_link(url): 11 careerID, activityID, goalID = parse_node_url(url) 12 from eve.client.script.ui.shared.careerPortal.careerPortalWnd import CareerPortalDockablePanel 13 wnd = CareerPortalDockablePanel.GetIfOpen() 14 if wnd and not wnd.destroyed: 15 wnd.Maximize() 16 else: 17 wnd = CareerPortalDockablePanel.Open() 18 if wnd: 19 wnd.navigate_to_node(careerID, activityID, goalID) 20 21 22 def parse_node_url(url): 23 _, careerID, activityID, goalID = url.split(':') 24 try: 25 careerID = int(careerID) 26 except ValueError: 27 careerID = None 28 29 try: 30 activityID = int(activityID) 31 except ValueError: 32 activityID = None 33 34 try: 35 goalID = uuid.UUID(goalID) 36 except ValueError: 37 goalID = None 38 39 return (careerID, activityID, goalID) 40 41 42 def format_node_url(careerID, activityID, goalID): 43 return u'{}:{}:{}:{}'.format(SCHEME_CAREER_PROGRAM_NODE, careerID, activityID, goalID) 44 45 46 def node_link(careerID, activityID, goalID, name): 47 return evelink.Link(url=format_node_url(careerID, activityID, goalID), text=name)