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

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