mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-12 23:37:14 +03:00
77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
||
#
|
||
# Station display and eddb.io lookup
|
||
#
|
||
|
||
import cPickle
|
||
import csv
|
||
import os
|
||
from os.path import join
|
||
import sys
|
||
|
||
from config import config
|
||
|
||
|
||
STATION_UNDOCKED = u'×' # "Station" name to display when not docked = U+00D7
|
||
|
||
this = sys.modules[__name__] # For holding module globals
|
||
|
||
# (system_id, is_populated) by system_name
|
||
with open(join(config.respath, 'systems.p'), 'rb') as h:
|
||
this.system_ids = cPickle.load(h)
|
||
|
||
# station_id by (system_id, station_name)
|
||
with open(join(config.respath, 'stations.p'), 'rb') as h:
|
||
this.station_ids = cPickle.load(h)
|
||
|
||
|
||
# Main window clicks
|
||
def system_url(system_name):
|
||
if system_id(system_name):
|
||
return 'https://eddb.io/system/%d' % system_id(system_name)
|
||
else:
|
||
return None
|
||
|
||
def station_url(system_name, station_name):
|
||
if station_id(system_name, station_name):
|
||
return 'https://eddb.io/station/%d' % station_id(system_name, station_name)
|
||
else:
|
||
return system_url(system_name)
|
||
|
||
# system_name -> system_id or 0
|
||
def system_id(system_name):
|
||
return this.system_ids.get(system_name, [0, False])[0]
|
||
|
||
# system_name -> is_populated
|
||
def system_populated(system_name):
|
||
return this.system_ids.get(system_name, [0, False])[1]
|
||
|
||
# (system_name, station_name) -> station_id or 0
|
||
def station_id(system_name, station_name):
|
||
return this.station_ids.get((system_id(system_name), station_name), 0)
|
||
|
||
|
||
def plugin_start():
|
||
return 'eddb'
|
||
|
||
def plugin_app(parent):
|
||
this.system_link = parent.children['system'] # system label in main window
|
||
this.station_link = parent.children['station'] # station label in main window
|
||
this.station_link.configure(popup_copy = lambda x: x != STATION_UNDOCKED)
|
||
|
||
def prefs_changed(cmdr, is_beta):
|
||
if config.get('system_provider') == 'eddb':
|
||
this.system_link['url'] = system_url(system_link['text']) # Override standard URL function
|
||
|
||
def journal_entry(cmdr, is_beta, system, station, entry, state):
|
||
if config.get('system_provider') == 'eddb':
|
||
this.system_link['url'] = system_url(system) # Override standard URL function
|
||
this.station_link['text'] = station or (system_populated(system) and STATION_UNDOCKED or '')
|
||
this.station_link.update_idletasks()
|
||
|
||
def cmdr_data(data, is_beta):
|
||
if config.get('system_provider') == 'eddb':
|
||
this.system_link['url'] = system_url(data['lastSystem']['name']) # Override standard URL function
|
||
this.station_link['text'] = data['commander']['docked'] and data['lastStarport']['name'] or (system_populated(data['lastSystem']['name']) and STATION_UNDOCKED or '')
|
||
this.station_link.update_idletasks()
|