uniqueNameChains.py (14330B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\uihighlighting\uniqueNameChains.py 2 from __future__ import print_function 3 import logging 4 import neocom2.btnIDs as btnIDs 5 import uihighlighting.uniqueNameConst as pConst 6 from skills.skillplan.skillPlanService import GetSkillPlanSvc 7 import eve.client.script.ui.shared.mapView.categories.const as mapFilterConst 8 logger = logging.getLogger(__name__) 9 fittingBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.FITTING_ID) 10 contractsBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.CONTRACTS_ID) 11 charactersheetBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.CHARACTER_SHEET_ID) 12 fleetBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.FLEET_ID) 13 inventoryBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.INVENTORY_ID) 14 corpBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.CORP_ID) 15 industryBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.INDUSTRY_ID) 16 marketBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.MARKET_ID) 17 addressbookBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.ADDRESSBOOK_ID) 18 skillsBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.SKILLS_ID) 19 locationsBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.LOCATIONS_ID) 20 mapBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.MAP_BETA_ID) 21 acpBtnPointer = pConst.GetUniqueNeocomPointerName(btnIDs.AIR_CAREER_PROGRAM_ID) 22 helpWndPointer = pConst.GetUniqueNeocomPointerName(btnIDs.HELP_ID) 23 locationsPointer = pConst.GetUniqueNeocomPointerName(btnIDs.LOCATIONS_ID) 24 skinrPointer = pConst.GetUniqueNeocomPointerName(btnIDs.SHIP_SKINR) 25 walletPointer = pConst.GetUniqueNeocomPointerName(btnIDs.WALLET_ID) 26 opportunityPointer = pConst.GetUniqueNeocomPointerName(btnIDs.JOB_BOARD_ID) 27 towPointer = pConst.GetUniqueNeocomPointerName(btnIDs.THEATERS_OF_WAR_ID) 28 skillPlanPre = None 29 mapFilterPre = None 30 preByUniqueName = {pConst.UNIQUE_NAME_FITTING_EQUIPMENT: fittingBtnPointer, 31 pConst.UNIQUE_NAME_FITTING_PERSONALIZATION: fittingBtnPointer, 32 pConst.UNIQUE_NAME_FITTING_BROWSER: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 33 pConst.UNIQUE_NAME_CURRENT_FIT: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 34 pConst.UNIQUE_NAME_GROUP_WEAPONS: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 35 pConst.UNIQUE_NAME_SIMULATE_SHIP: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 36 pConst.UNIQUE_NAME_FITING_STATS: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 37 pConst.UNIQUE_NAME_FITTING_INVENTORY: pConst.UNIQUE_NAME_FITTING_EQUIPMENT, 38 pConst.UNIQUE_NAME_FITTING_SKIN_BROWSER: pConst.UNIQUE_NAME_FITTING_PERSONALIZATION, 39 pConst.UNIQUE_NAME_AVAILABLE_CONTRACTS_TAB: contractsBtnPointer, 40 pConst.UNIQUE_NAME_EXPAND_CHARSHEET: charactersheetBtnPointer, 41 pConst.UNIQUE_NAME_PROBE_SCANNER: pConst.UNIQUE_NAME_SCANNER_BTN, 42 pConst.UNIQUE_NAME_FILTER_SCAN_RESULTS: pConst.UNIQUE_NAME_PROBE_SCANNER, 43 pConst.UNIQUE_NAME_PROBE_FORMATIONS: pConst.UNIQUE_NAME_PROBE_SCANNER, 44 pConst.UNIQUE_NAME_PROBE_SIZE_MODIFIER: pConst.UNIQUE_NAME_PROBE_SCANNER, 45 pConst.UNIQUE_NAME_RECOVER_PROBES: pConst.UNIQUE_NAME_PROBE_SCANNER, 46 pConst.UNIQUE_NAME_PROBE_REFRESH: pConst.UNIQUE_NAME_SCANNER_BTN, 47 pConst.UNIQUE_NAME_DIRECTIONAL_SCANNER: pConst.UNIQUE_NAME_SCANNER_BTN, 48 pConst.UNIQUE_NAME_FLEET_FINDER_TAB: fleetBtnPointer, 49 pConst.UNIQUE_NAME_FLEET_HISTORY_TAB: fleetBtnPointer, 50 pConst.UNIQUE_NAME_FLEET_SETTINGS: fleetBtnPointer, 51 pConst.UNIQUE_NAME_FLEET_MY_FLEET_TAB: fleetBtnPointer, 52 pConst.UNIQUE_NAME_FLEET_ACTIVE_RECLONERS_TAB: fleetBtnPointer, 53 pConst.UNIQUE_NAME_FLEET_SHOW_BROADCASTS: fleetBtnPointer, 54 pConst.UNIQUE_NAME_FLEET_FINDER_SETTINGS: pConst.UNIQUE_NAME_FLEET_FINDER_TAB, 55 pConst.UNIQUE_NAME_FLEET_HISTORY_FILTER: pConst.UNIQUE_NAME_FLEET_HISTORY_TAB, 56 pConst.UNIQUE_NAME_BROADCAST_ARMOR: pConst.UNIQUE_NAME_FLEET_SHOW_BROADCASTS, 57 pConst.UNIQUE_NAME_BROADCAST_SHIELD: pConst.UNIQUE_NAME_FLEET_SHOW_BROADCASTS, 58 pConst.UNIQUE_NAME_FLEET_BROADCAST_ICONS: pConst.UNIQUE_NAME_FLEET_SHOW_BROADCASTS, 59 pConst.UNIQUE_NAME_INVENTORY_VIEW: inventoryBtnPointer, 60 pConst.UNIQUE_NAME_INVENTORY_STACK_ALL: inventoryBtnPointer, 61 pConst.UNIQUE_NAME_CORP_CORPORATION_TAB: corpBtnPointer, 62 pConst.UNIQUE_NAME_CORP_ADMIN_TAB: corpBtnPointer, 63 pConst.UNIQUE_NAME_CORP_ALLIANCES_TAB: corpBtnPointer, 64 pConst.UNIQUE_NAME_CORP_HOME_TAB: pConst.UNIQUE_NAME_CORP_CORPORATION_TAB, 65 pConst.UNIQUE_NAME_CORP_ASSETS_TAB: pConst.UNIQUE_NAME_CORP_ADMIN_TAB, 66 pConst.UNIQUE_NAME_INDUSTRY_COPY_BTN: industryBtnPointer, 67 pConst.UNIQUE_NAME_INDUSTRY_FACILITIES_TAB: industryBtnPointer, 68 pConst.UNIQUE_NAME_INDUSTRY_INVENTION_BTN: industryBtnPointer, 69 pConst.UNIQUE_NAME_INDUSTRY_JOBS_TAB: industryBtnPointer, 70 pConst.UNIQUE_NAME_INDUSTRY_MANUF_BTN: industryBtnPointer, 71 pConst.UNIQUE_NAME_INDUSTRY_ME_BTN: industryBtnPointer, 72 pConst.UNIQUE_NAME_INDUSTRY_TE_BTN: industryBtnPointer, 73 pConst.UNIQUE_NAME_INDUSTRY_BP_BTN: industryBtnPointer, 74 pConst.UNIQUE_NAME_INDUSTRY_RESEARCH_TAB: industryBtnPointer, 75 pConst.UNIQUE_NAME_MARKET_BROWSE_SETTINGS: marketBtnPointer, 76 pConst.UNIQUE_NAME_MARKET_DETAILS: marketBtnPointer, 77 pConst.UNIQUE_NAME_SKILLQUEUE: skillsBtnPointer, 78 pConst.UNIQUE_NAME_APPLY_SP_BTN: skillsBtnPointer, 79 pConst.UNIQUE_NAME_START_TRAINING_BTN: skillsBtnPointer, 80 pConst.UNIQUE_NAME_SKILL_PLANS_TAB: skillsBtnPointer, 81 pConst.UNIQUE_NAME_SKILL_PLANS_CERTIFIED_TAB: pConst.UNIQUE_NAME_SKILL_PLANS_TAB, 82 pConst.UNIQUE_NAME_SKILL_PLANS_PERSONAL_TAB: pConst.UNIQUE_NAME_SKILL_PLANS_TAB, 83 pConst.UNIQUE_NAME_SKILL_PLANS_CORP_TAB: pConst.UNIQUE_NAME_SKILL_PLANS_TAB, 84 pConst.UNIQUE_NAME_ROUTE_SHORTER: pConst.UNIQUE_NAME_AUTOPILOT_SETTINGS, 85 pConst.UNIQUE_NAME_ROUTE_SAFER: pConst.UNIQUE_NAME_AUTOPILOT_SETTINGS, 86 pConst.UNIQUE_NAME_ROUTE_INCLUDE_JUMP_GATES: pConst.UNIQUE_NAME_AUTOPILOT_SETTINGS, 87 pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB: pConst.UNIQUE_NAME_EXPAND_CHARSHEET, 88 pConst.UNIQUE_NAME_PILOT_SERVICES_TAB: pConst.UNIQUE_NAME_EXPAND_CHARSHEET, 89 pConst.UNIQUE_NAME_CHARSHEET_INTERACTION_TAB: pConst.UNIQUE_NAME_EXPAND_CHARSHEET, 90 pConst.UNIQUE_NAME_PERSONALIZATION_TAB: pConst.UNIQUE_NAME_EXPAND_CHARSHEET, 91 pConst.UNIQUE_NAME_SKINS_TAB: pConst.UNIQUE_NAME_PERSONALIZATION_TAB, 92 pConst.UNIQUE_NAME_EMBLEMS_TAB: pConst.UNIQUE_NAME_PERSONALIZATION_TAB, 93 pConst.UNIQUE_NAME_FITTING_MODULES: pConst.UNIQUE_NAME_FITTING_BROWSER, 94 pConst.UNIQUE_NAME_FITTING_CHARGES: pConst.UNIQUE_NAME_FITTING_BROWSER, 95 pConst.UNIQUE_NAME_FITS_IN_FITTING_WND: pConst.UNIQUE_NAME_FITTING_BROWSER, 96 pConst.UNIQUE_NAME_FITTING_CAP: pConst.UNIQUE_NAME_FITING_STATS, 97 pConst.UNIQUE_NAME_FITTING_DEFENSE: pConst.UNIQUE_NAME_FITING_STATS, 98 pConst.UNIQUE_NAME_FITTING_DRONES: pConst.UNIQUE_NAME_FITING_STATS, 99 pConst.UNIQUE_NAME_FITTING_NAVIGATION: pConst.UNIQUE_NAME_FITING_STATS, 100 pConst.UNIQUE_NAME_FITTING_OFFENSE: pConst.UNIQUE_NAME_FITING_STATS, 101 pConst.UNIQUE_NAME_FITTING_TARGETING: pConst.UNIQUE_NAME_FITING_STATS, 102 pConst.UNIQUE_NAME_SHOW_BUY_ALL_BTN: pConst.UNIQUE_NAME_FITING_STATS, 103 pConst.UNIQUE_NAME_AUGMENTATIONS_TAB: pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB, 104 pConst.UNIQUE_NAME_JUMP_CLONES_TAB: pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB, 105 pConst.UNIQUE_NAME_CHARSHEET_HOME_TAB: pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB, 106 pConst.UNIQUE_NAME_EXPERT_SYSTEMS_TAB: pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB, 107 pConst.UNIQUE_NAME_DECORATIONS: pConst.UNIQUE_NAME_CHARSHEET_CHARACTER_TAB, 108 pConst.UNIQUE_NAME_TITLES: pConst.UNIQUE_NAME_DECORATIONS, 109 pConst.UNIQUE_NAME_COMMUNITY_FIT_FILTER: pConst.UNIQUE_NAME_FITS_IN_FITTING_WND, 110 pConst.UNIQUE_NAME_CORP_FIT_FILTER: pConst.UNIQUE_NAME_FITS_IN_FITTING_WND, 111 pConst.UNIQUE_NAME_ALLIANCE_FIT_FILTER: pConst.UNIQUE_NAME_FITS_IN_FITTING_WND, 112 pConst.UNIQUE_NAME_SHOW_CONTRACT_OPTIONS: pConst.UNIQUE_NAME_AVAILABLE_CONTRACTS_TAB, 113 pConst.UNIQUE_NAME_CONTRACT_AVAILABILITY_SETTINGS: pConst.UNIQUE_NAME_SHOW_CONTRACT_OPTIONS, 114 pConst.UNIQUE_NAME_MY_APPLICATIONS: pConst.UNIQUE_NAME_CORP_CORPORATION_TAB, 115 pConst.UNIQUE_NAME_CORP_BULLETIN_TAB: pConst.UNIQUE_NAME_CORP_CORPORATION_TAB, 116 pConst.UNIQUE_NAME_CORP_PROJECTS: pConst.UNIQUE_NAME_CORP_CORPORATION_TAB, 117 pConst.UNIQUE_NAME_FIND_NEW_CORP: pConst.UNIQUE_NAME_CORP_CORPORATION_TAB, 118 pConst.UNIQUE_NAME_CHAR_STANDINGS_TAB: pConst.UNIQUE_NAME_CHARSHEET_INTERACTION_TAB, 119 pConst.UNIQUE_NAME_SECURITY_STATUS_TAB: pConst.UNIQUE_NAME_CHARSHEET_INTERACTION_TAB, 120 pConst.UNIQUE_NAME_COMBAT_LOG_TAB: pConst.UNIQUE_NAME_CHARSHEET_INTERACTION_TAB, 121 pConst.UNIQUE_NAME_SHOW_KILL_RIGHTS_TAB: pConst.UNIQUE_NAME_CHARSHEET_INTERACTION_TAB, 122 pConst.UNIQUE_NAME_SHOW_KILLS_LOSSES: pConst.UNIQUE_NAME_COMBAT_LOG_TAB, 123 pConst.UNIQUE_NAME_MARKET_DATA: pConst.UNIQUE_NAME_MARKET_DETAILS, 124 pConst.UNIQUE_NAME_MARKET_FIND_IN_BROWSER: pConst.UNIQUE_NAME_MARKET_DETAILS, 125 pConst.UNIQUE_NAME_MARKET_PRICE_HISTORY: pConst.UNIQUE_NAME_MARKET_DETAILS, 126 pConst.UNIQUE_NAME_MARKET_SELLER_LIST: pConst.UNIQUE_NAME_MARKET_DATA, 127 pConst.UNIQUE_NAME_MARKET_BUYER_LIST: pConst.UNIQUE_NAME_MARKET_DATA, 128 pConst.UNIQUE_NAME_MARKET_BUYERS_JUMP_COL: pConst.UNIQUE_NAME_MARKET_BUYER_LIST, 129 pConst.UNIQUE_NAME_MARKET_BUYERS_QTY_COL: pConst.UNIQUE_NAME_MARKET_BUYER_LIST, 130 pConst.UNIQUE_NAME_MARKET_BUYERS_PRICE_COL: pConst.UNIQUE_NAME_MARKET_BUYER_LIST, 131 pConst.UNIQUE_NAME_MARKET_SELLERS_JUMP_COL: pConst.UNIQUE_NAME_MARKET_SELLER_LIST, 132 pConst.UNIQUE_NAME_MARKET_SELLERS_QTY_COL: pConst.UNIQUE_NAME_MARKET_SELLER_LIST, 133 pConst.UNIQUE_NAME_MARKET_SELLERS_PRICE_COL: pConst.UNIQUE_NAME_MARKET_SELLER_LIST, 134 pConst.UNIQUE_NAME_CREATE_CHANNEL_BTN: pConst.UNIQUE_NAME_CHANNEL_WND, 135 pConst.UNIQUE_NAME_SENSOR_OVERLAY_SETTING: pConst.UNIQUE_NAME_HUD_SETTINGS, 136 pConst.UNIQUE_NAME_SENSOR_OVERLAY: pConst.UNIQUE_NAME_SENSOR_OVERLAY_SETTING, 137 pConst.UNIQUE_NAME_REPROCESS_BUTTON: pConst.GetUniqueStationServiceName('reprocessingPlant'), 138 pConst.UNIQUE_NAME_MAP_COLOR_SETTINGS: mapBtnPointer, 139 pConst.UNIQUE_NAME_MAP_TOGGLE_2D: mapBtnPointer, 140 pConst.UNIQUE_NAME_MAP_FOCUS_CURRENT: mapBtnPointer, 141 pConst.UNIQUE_NAME_MAP_FOCUS_HOME: mapBtnPointer, 142 pConst.UNIQUE_NAME_MAP_LAYOUT: mapBtnPointer, 143 pConst.UNIQUE_NAME_MAP_DATA_VIEW_TOGGLE: pConst.UNIQUE_NAME_MAP_TOGGLE_2D, 144 pConst.UNIQUE_NAME_ACP_CLAIM_ALL_BUTTON: pConst.UNIQUE_NAME_ACP_REWARDS_CONTAINER, 145 pConst.UNIQUE_NAME_ACP_REWARDS_CONTAINER: acpBtnPointer, 146 pConst.UNIQUE_NAME_HELP_CENTER_BTN: helpWndPointer, 147 pConst.UNIQUE_NAME_BOOKMARKS_TAB: locationsPointer, 148 pConst.UNIQUE_NAME_SKINR_COLLECTION: skinrPointer, 149 pConst.UNIQUE_NAME_SKINR_PARAGON_HUB: skinrPointer, 150 pConst.UNIQUE_NAME_SKINR_STUDIO: skinrPointer, 151 pConst.UNIQUE_NAME_CORP_CHAT_SETTINGS: pConst.UNIQUE_NAME_CORP_CHAT, 152 pConst.UNIQUE_NAME_CORP_CHAT_RELOAD_MOTD: pConst.UNIQUE_NAME_CORP_CHAT_SETTINGS, 153 pConst.UNIQUE_NAME_FLEET_CHAT_SETTINGS: pConst.UNIQUE_NAME_FLEET_CHAT, 154 pConst.UNIQUE_NAME_FLEET_CHAT_RELOAD_MOTD: pConst.UNIQUE_NAME_FLEET_CHAT_SETTINGS, 155 pConst.UNIQUE_NAME_MY_WALLET_TAB: walletPointer, 156 pConst.UNIQUE_NAME_WALLET_MARKET_TRANSACTIONS: pConst.UNIQUE_NAME_MY_WALLET_TAB, 157 pConst.UNIQUE_NAME_WALLET_TRANSACTIONS_TAB: pConst.UNIQUE_NAME_MY_WALLET_TAB, 158 pConst.UNIQUE_NAME_OPPORTUNITY_BROWSER: opportunityPointer, 159 pConst.UNIQUE_NAME_ACTIVE_OPPORTUNITIES: opportunityPointer, 160 pConst.UNIQUE_NAME_OPPORTUNITY_REWARDS: opportunityPointer, 161 pConst.UNIQUE_NAME_OPPORTUNITY_FILTERS: opportunityPointer, 162 pConst.UNIQUE_NAME_TOW_CAMPAIGNS: towPointer, 163 pConst.UNIQUE_NAME_TOW_ENLISTMENT: towPointer, 164 pConst.UNIQUE_NAME_TOW_FW: towPointer, 165 pConst.UNIQUE_NAME_TOW_INSURGENCIES: towPointer} 166 167 def FindChainForUniqueName(uniqueName): 168 global skillPlanPre 169 global mapFilterPre 170 chain = [uniqueName] 171 currentName = uniqueName 172 if skillPlanPre is None: 173 skillPlanPre = GetSkillPlanPre() 174 preByUniqueName.update(skillPlanPre) 175 if mapFilterPre is None: 176 mapFilterPre = GetMapFiltersPre() 177 preByUniqueName.update(mapFilterPre) 178 while currentName: 179 currentName = preByUniqueName.get(currentName, None) 180 if currentName in chain: 181 logger.error('Circular chain, currentName = %s, chain = %s' % (currentName, chain)) 182 return [uniqueName] 183 if currentName: 184 chain.append(currentName) 185 186 return chain 187 188 189 def GetSkillPlanPre(): 190 allCertified = GetSkillPlanSvc().GetAllCertified() 191 ret = {} 192 for skillPlan in allCertified.itervalues(): 193 careerName = None 194 factionName = None 195 planName = None 196 showBtnName = None 197 trainBtnName = None 198 if skillPlan.careerPathID: 199 careerName = pConst.GetUniqueSkillPlanCareerName(skillPlan.careerPathID) 200 if skillPlan.factionID and skillPlan.careerPathID: 201 factionName = pConst.GetUniqueSkillPlanFactionName(skillPlan.careerPathID, skillPlan.factionID) 202 planFullID = skillPlan.GetID() 203 if planFullID: 204 planID = planFullID.int 205 planName = pConst.GetUniqueSkillPlanName(planID) 206 showBtnName = pConst.GetUniqueSkillPlanBtn(planID, 0) 207 trainBtnName = pConst.GetUniqueSkillPlanBtn(planID, 1) 208 if careerName: 209 ret[careerName] = pConst.UNIQUE_NAME_SKILL_PLANS_CERTIFIED_TAB 210 if careerName and factionName: 211 ret[factionName] = careerName 212 elif careerName and planName: 213 ret[planName] = careerName 214 if factionName and planName: 215 ret[planName] = factionName 216 if planName and showBtnName: 217 ret[showBtnName] = planName 218 if planName and trainBtnName: 219 ret[trainBtnName] = planName 220 221 return ret 222 223 224 def _DebugPrintAllChains(): 225 chains = [] 226 for eachName in preByUniqueName.iterkeys(): 227 c = FindChainForUniqueName(eachName) 228 c = [ x.replace(pConst.UNIQUE_UI_PREFIX, '') for x in c ] 229 chains.append(c) 230 231 chains.sort(key=lambda x: len(x)) 232 for eachChain in chains: 233 print(' - ', eachChain) 234 235 236 def _DebugPrintChain(uniqueName): 237 c = FindChainForUniqueName(uniqueName) 238 c = [ x.replace(pConst.UNIQUE_UI_PREFIX, '') for x in c ] 239 print(c) 240 241 242 def GetMapFiltersPre(): 243 ret = {} 244 groups = mapFilterConst.GROUP_CONTENT + mapFilterConst.GROUP_STATISTICS 245 for groupID in groups: 246 ret[pConst.GetUniqueMapGroupBtn(groupID)] = mapBtnPointer 247 248 for category_id, filterFunc in mapFilterConst.CATEGORY_FILTERS.iteritems(): 249 for f in filterFunc(): 250 ret[pConst.GetUniqueMapFilter(f)] = pConst.GetUniqueMapGroupBtn(category_id) 251 252 return ret