1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-08 05:20:03 +03:00

Updated all source to use new config methods

# Conflicts:
#	monitor.py
This commit is contained in:
Athanasius 2021-04-01 11:57:17 +01:00
parent a9c705c0cf
commit 25852997c5
20 changed files with 116 additions and 130 deletions

View File

@ -189,7 +189,7 @@ sys.path: {sys.path}'''
# Get state from latest Journal file
logger.debug('Getting state from latest journal file')
try:
logdir = config.get('journaldir') or config.default_journal_dir
logdir = config.get_str('journaldir', str(config.default_journal_dir))
logger.debug(f'logdir = "{logdir}"')
logfiles = sorted((x for x in os.listdir(logdir) if JOURNAL_RE.search(x)),
key=lambda x: x.split('.')[1:])
@ -215,7 +215,7 @@ sys.path: {sys.path}'''
# Get data from Companion API
if args.p:
logger.debug(f'Attempting to use commander "{args.p}"')
cmdrs = config.get('cmdrs') or []
cmdrs = config.get_list('cmdrs', [])
if args.p in cmdrs:
idx = cmdrs.index(args.p)
@ -231,7 +231,7 @@ sys.path: {sys.path}'''
else:
logger.debug(f'Attempting to use commander "{monitor.cmdr}" from Journal File')
cmdrs = config.get('cmdrs') or []
cmdrs = config.get_list('cmdrs', [])
if monitor.cmdr not in cmdrs:
raise companion.CredentialsError()

View File

@ -473,7 +473,7 @@ def get_main_logger() -> 'LoggerMixin':
# Singleton
loglevel = config.get('loglevel')
loglevel = config.get_str('loglevel')
if not loglevel:
loglevel = logging.INFO

View File

@ -20,7 +20,7 @@ bracketmap = {
def export(data, kind=COMMODITY_DEFAULT, filename=None):
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime') or int(time.time())
if not filename:
filename = '{system}.{starport}.{time}.{kind}'.format(
@ -29,7 +29,7 @@ def export(data, kind=COMMODITY_DEFAULT, filename=None):
time=time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime)),
kind='csv'
)
filename = join(config.get('outdir'), filename)
filename = join(config.get_str('outdir'), filename)
if kind == COMMODITY_CSV:
sep = ';' # BUG: for fixing later after cleanup

View File

@ -40,7 +40,6 @@ else:
UserDict = collections.UserDict # type: ignore # Otherwise simply use the actual class
# Define custom type for the dicts that hold CAPI data
# CAPIData = NewType('CAPIData', Dict)
@ -286,13 +285,13 @@ class Auth(object):
logger.debug(f'Trying for "{self.cmdr}"')
self.verifier = None
cmdrs = cast(List[str], config.get('cmdrs'))
cmdrs = cast(List[str], config.get_list('cmdrs', []))
logger.debug(f'Cmdrs: {cmdrs}')
idx = cmdrs.index(self.cmdr)
logger.debug(f'idx = {idx}')
tokens = config.get('fdev_apikeys') or []
tokens = cast('List[str]', config.get_list('fdev_apikeys', []))
tokens = tokens + [''] * (len(cmdrs) - len(tokens))
if tokens[idx]:
logger.debug('We have a refresh token for that idx')
@ -376,9 +375,9 @@ class Auth(object):
data = r.json()
if r.status_code == requests.codes.ok:
logger.info(f'Frontier CAPI Auth: New token for \"{self.cmdr}\"')
cmdrs = cast(List[str], config.get('cmdrs'))
cmdrs = cast(List[str], config.get_list('cmdrs', []))
idx = cmdrs.index(self.cmdr)
tokens = config.get('fdev_apikeys') or []
tokens = cast(List[str], config.get_list('fdev_apikeys', []))
tokens = tokens + [''] * (len(cmdrs) - len(tokens))
tokens[idx] = data.get('refresh_token', '')
config.set('fdev_apikeys', tokens)
@ -405,9 +404,9 @@ class Auth(object):
def invalidate(cmdr: str) -> None:
"""Invalidate Refresh Token for specified Commander."""
logger.info(f'Frontier CAPI Auth: Invalidated token for "{cmdr}"')
cmdrs = cast(List[str], config.get('cmdrs'))
cmdrs = cast(List[str], config.get_list('cmdrs', []))
idx = cmdrs.index(cmdr)
tokens = cast(List[str], config.get('fdev_apikeys') or [])
tokens = cast(List[str], config.get_list('fdev_apikeys', []))
tokens = tokens + [''] * (len(cmdrs) - len(tokens))
tokens[idx] = ''
config.set('fdev_apikeys', tokens)

View File

@ -41,7 +41,7 @@ class Dashboard(FileSystemEventHandler):
self.root = root
self.session_start = started
logdir = config.get('journaldir') or config.default_journal_dir
logdir = config.get_str('journaldir', str(config.default_journal_dir))
if not logdir or not isdir(logdir):
logger.info(f"No logdir, or it isn't a directory: {logdir=}")
self.stop()

View File

@ -26,7 +26,7 @@ class ClickCounter:
def __init__(self) -> None:
# Be sure to use names that wont collide in our config variables
self.click_count: Optional[tk.StringVar] = tk.StringVar(value=str(config.getint('click_counter_count')))
self.click_count: Optional[tk.StringVar] = tk.StringVar(value=str(config.get_int('click_counter_count')))
logger.info("ClickCounter instantiated")
def on_load(self) -> str:

View File

@ -74,7 +74,7 @@ def export(data, filename=None):
return ret + ' '
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime') or int(time.time())
loadout = defaultdict(list)
mass = 0.0
@ -199,14 +199,14 @@ def export(data, filename=None):
# Look for last ship of this type
ship = companion.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
regexp = re.compile(re.escape(ship) + r'\.\d{4}-\d\d-\d\dT\d\d\.\d\d\.\d\d\.txt')
oldfiles = sorted([x for x in os.listdir(config.get('outdir')) if regexp.match(x)])
oldfiles = sorted([x for x in os.listdir(config.get_str('outdir')) if regexp.match(x)])
if oldfiles:
with open(join(config.get('outdir'), oldfiles[-1]), 'rU') as h:
with open(join(config.get_str('outdir'), oldfiles[-1]), 'rU') as h:
if h.read() == string:
return # same as last time - don't write
# Write
filename = join(config.get('outdir'), '{}.{}.txt'.format(
filename = join(config.get_str('outdir'), '{}.{}.txt'.format(
ship, time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime)))
)

View File

@ -113,7 +113,7 @@ if platform == 'darwin':
def _handler(self, event):
# use event.charactersIgnoringModifiers to handle composing characters like Alt-e
if (event.modifierFlags() & HotkeyMgr.MODIFIERMASK) == self.modifiers and ord(event.charactersIgnoringModifiers()[0]) == self.keycode:
if config.getint('hotkey_always'):
if config.get_int('hotkey_always'):
self.activated = True
else: # Only trigger if game client is front process
front = NSWorkspace.sharedWorkspace().frontmostApplication()
@ -347,7 +347,7 @@ elif platform == 'win32':
logger.debug('WM_HOTKEY')
if (
config.getint('hotkey_always')
config.get_int('hotkey_always')
or WindowTitle(GetForegroundWindow()).startswith('Elite - Dangerous')
):
logger.debug('Sending event <<Invoke>>')

View File

@ -22,15 +22,15 @@ def export(data, filename=None):
# Look for last ship of this type
ship = companion.ship_file_name(data['ship'].get('shipName'), data['ship']['name'])
regexp = re.compile(re.escape(ship) + '\.\d\d\d\d\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
oldfiles = sorted([x for x in os.listdir(config.get('outdir')) if regexp.match(x)])
oldfiles = sorted([x for x in os.listdir(config.get_str('outdir')) if regexp.match(x)])
if oldfiles:
with open(join(config.get('outdir'), oldfiles[-1]), 'rU') as h:
with open(join(config.get_str('outdir'), oldfiles[-1]), 'rU') as h:
if h.read() == string:
return # same as last time - don't write
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime') or int(time.time())
# Write
filename = join(config.get('outdir'), '%s.%s.txt' % (ship, time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
filename = join(config.get_str('outdir'), '%s.%s.txt' % (ship, time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
with open(filename, 'wt') as h:
h.write(string)

View File

@ -129,7 +129,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
"""Start journal monitoring."""
logger.debug('Begin...')
self.root = root
journal_dir = config.get('journaldir') or config.default_journal_dir
journal_dir = config.get_str('journaldir', str(config.default_journal_dir))
if journal_dir is None:
logger.debug('journal_dir was None, setting ""')
@ -169,7 +169,7 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
# File system events are unreliable/non-existent over network drives on Linux.
# We can't easily tell whether a path points to a network drive, so assume
# any non-standard logdir might be on a network drive and poll instead.
polling = bool(config.get('journaldir')) and platform != 'win32'
polling = bool(config.get_str('journaldir')) and platform != 'win32'
if not polling and not self.observer:
logger.debug('Not polling, no observer, starting an observer...')
self.observer = Observer()
@ -1023,29 +1023,15 @@ class EDLogs(FileSystemEventHandler): # type: ignore # See below
ship = ship_file_name(self.state['ShipName'], self.state['ShipType'])
regexp = re.compile(re.escape(ship) + r'\.\d{4}\-\d\d\-\d\dT\d\d\.\d\d\.\d\d\.txt')
oldfiles = sorted((x for x in listdir(config.get('outdir')) if regexp.match(x))) # type: ignore
oldfiles = sorted((x for x in listdir(config.get_str('outdir')) if regexp.match(x))) # type: ignore
if oldfiles:
try:
with open(join(config.get('outdir'), oldfiles[-1]), 'rU', encoding='utf-8') as h: # type: ignore
if h.read() == string:
return # same as last time - don't write
except UnicodeError:
logger.exception("UnicodeError reading old ship loadout with utf-8 encoding, trying without...")
try:
with open(join(config.get('outdir'), oldfiles[-1]), 'rU') as h: # type: ignore
if h.read() == string:
return # same as last time - don't write
except OSError:
logger.exception("OSError reading old ship loadout default encoding.")
except OSError:
logger.exception("OSError reading old ship loadout with default encoding")
with open(join(config.get_str('outdir'), oldfiles[-1]), 'rU') as h: # type: ignore
if h.read() == string:
return # same as last time - don't write
# Write
filename = join( # type: ignore
config.get('outdir'), '{}.{}.txt'.format(ship, strftime('%Y-%m-%dT%H.%M.%S', localtime(time())))
config.get_str('outdir'), '{}.{}.txt'.format(ship, strftime('%Y-%m-%dT%H.%M.%S', localtime(time())))
)
try:

View File

@ -509,7 +509,7 @@ def lookup(module, ship_map, entitled=False):
def export(data, filename):
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime') or int(time.time())
assert data['lastSystem'].get('name')
assert data['lastStarport'].get('name')

View File

@ -8,7 +8,7 @@ import io
# Migrate settings from <= 3.01
from config import config
if not config.get('shipyard_provider') and config.getint('shipyard'):
if not config.get_str('shipyard_provider') and config.get_int('shipyard'):
config.set('shipyard_provider', 'Coriolis')
config.delete('shipyard')

View File

@ -104,14 +104,14 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
this.station_marketid = None
# Only actually change URLs if we are current provider.
if config.get('system_provider') == 'eddb':
if config.get_str('system_provider') == 'eddb':
this.system_link['text'] = this.system
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
this.system_link.update_idletasks()
# But only actually change the URL if we are current station provider.
if config.get('station_provider') == 'eddb':
if config.get_str('station_provider') == 'eddb':
text = this.station
if not text:
if this.system_population is not None and this.system_population > 0:
@ -139,13 +139,13 @@ def cmdr_data(data: CAPIData, is_beta):
this.station = data['lastStarport']['name']
# Override standard URL functions
if config.get('system_provider') == 'eddb':
if config.get_str('system_provider') == 'eddb':
this.system_link['text'] = this.system
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
this.system_link.update_idletasks()
if config.get('station_provider') == 'eddb':
if config.get_str('station_provider') == 'eddb':
if data['commander']['docked']:
this.station_link['text'] = this.station

View File

@ -305,7 +305,7 @@ Msg:\n{msg}'''
data['lastStarport'].get('economies', {}),
data['lastStarport']['modules'],
data['lastStarport']['ships']
)
)
to_search: Iterator[Mapping[str, Any]] = filter(
lambda m: self.MODULE_RE.search(m['name']) and m.get('sku') in (None, HORIZ_SKU) and
@ -348,7 +348,7 @@ Msg:\n{msg}'''
data['lastStarport'].get('economies', {}),
data['lastStarport']['modules'],
ships
)
)
shipyard: List[Mapping[str, Any]] = sorted(
itertools.chain(
@ -495,7 +495,7 @@ Msg:\n{msg}'''
if (
entry['event'] == 'Docked' or (entry['event'] == 'Location' and entry['Docked']) or not
(config.getint('output') & config.OUT_SYS_DELAY)
(config.get_int('output') & config.OUT_SYS_DELAY)
):
self.parent.after(self.REPLAYPERIOD, self.sendreplay) # Try to send this and previous entries
@ -531,11 +531,11 @@ def plugin_prefs(parent, cmdr: str, is_beta: bool) -> Frame:
PADX = 10 # noqa: N806
BUTTONX = 12 # noqa: N806 # indent Checkbuttons and Radiobuttons
if prefsVersion.shouldSetDefaults('0.0.0.0', not bool(config.getint('output'))):
if prefsVersion.shouldSetDefaults('0.0.0.0', not bool(config.get_int('output'))):
output: int = (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN) # default settings
else:
output: int = config.getint('output')
output = config.get_int('output')
eddnframe = nb.Frame(parent)
@ -587,7 +587,7 @@ def prefsvarchanged(event=None) -> None:
def prefs_changed(cmdr: str, is_beta: bool) -> None:
config.set(
'output',
(config.getint('output') & (config.OUT_MKT_TD | config.OUT_MKT_CSV | config.OUT_SHIP | config.OUT_MKT_MANUAL)) +
(config.get_int('output') & (config.OUT_MKT_TD | config.OUT_MKT_CSV | config.OUT_SHIP | config.OUT_MKT_MANUAL)) +
(this.eddn_station.get() and config.OUT_MKT_EDDN) +
(this.eddn_system.get() and config.OUT_SYS_EDDN) +
(this.eddn_delay.get() and config.OUT_SYS_DELAY)
@ -645,7 +645,7 @@ def journal_entry( # noqa: C901
this.planet = None
# Send interesting events to EDDN, but not when on a crew
if (config.getint('output') & config.OUT_SYS_EDDN and not state['Captain'] and
if (config.get_int('output') & config.OUT_SYS_EDDN and not state['Captain'] and
(entry['event'] in ('Location', 'FSDJump', 'Docked', 'Scan', 'SAASignalsFound', 'CarrierJump')) and
('StarPos' in entry or this.coordinates)):
@ -719,7 +719,7 @@ def journal_entry( # noqa: C901
logger.debug('Failed in export_journal_entry', exc_info=e)
return str(e)
elif (config.getint('output') & config.OUT_MKT_EDDN and not state['Captain'] and
elif (config.get_int('output') & config.OUT_MKT_EDDN and not state['Captain'] and
entry['event'] in ('Market', 'Outfitting', 'Shipyard')):
# Market.json, Outfitting.json or Shipyard.json to process
@ -728,7 +728,7 @@ def journal_entry( # noqa: C901
this.commodities = this.outfitting = this.shipyard = None
this.marketId = entry['MarketID']
path = pathlib.Path(str(config.get('journaldir') or config.default_journal_dir)) / f'{entry["event"]}.json'
path = pathlib.Path(str(config.get_str('journaldir') or config.default_journal_dir)) / f'{entry["event"]}.json'
with path.open('rb') as f:
entry = json.load(f)
if entry['event'] == 'Market':
@ -750,7 +750,7 @@ def journal_entry( # noqa: C901
def cmdr_data(data: CAPIData, is_beta: bool) -> Optional[str]:
if data['commander'].get('docked') and config.getint('output') & config.OUT_MKT_EDDN:
if data['commander'].get('docked') and config.get_int('output') & config.OUT_MKT_EDDN:
try:
if this.marketId != data['lastStarport']['id']:
this.commodities = this.outfitting = this.shipyard = None

View File

@ -15,7 +15,7 @@ import sys
import tkinter as tk
from queue import Queue
from threading import Thread
from typing import TYPE_CHECKING, Any, List, Mapping, MutableMapping, Optional, Tuple
from typing import TYPE_CHECKING, Any, List, Mapping, MutableMapping, Optional, Tuple, cast
import requests
@ -124,20 +124,20 @@ def plugin_start3(plugin_dir: str) -> str:
this._IMG_ERROR = tk.PhotoImage(data=IMG_ERR_B64) # BBC Mode 5 '?'
# Migrate old settings
if not config.get('edsm_cmdrs'):
if isinstance(config.get('cmdrs'), list) and config.get('edsm_usernames') and config.get('edsm_apikeys'):
if not config.get_list('edsm_cmdrs'):
if isinstance(config.get_list('cmdrs'), list) and config.get_list('edsm_usernames') and config.get_list('edsm_apikeys'):
# Migrate <= 2.34 settings
config.set('edsm_cmdrs', config.get('cmdrs'))
config.set('edsm_cmdrs', config.get_list('cmdrs'))
elif config.get('edsm_cmdrname'):
elif config.get_list('edsm_cmdrname'):
# Migrate <= 2.25 settings. edsm_cmdrs is unknown at this time
config.set('edsm_usernames', [config.get('edsm_cmdrname') or ''])
config.set('edsm_apikeys', [config.get('edsm_apikey') or ''])
config.set('edsm_usernames', [config.get_str('edsm_cmdrname') or ''])
config.set('edsm_apikeys', [config.get_str('edsm_apikey') or ''])
config.delete('edsm_cmdrname')
config.delete('edsm_apikey')
if config.getint('output') & 256:
if config.get_int('output') & 256:
# Migrate <= 2.34 setting
config.set('edsm_out', 1)
@ -189,7 +189,7 @@ def plugin_prefs(parent: tk.Tk, cmdr: str, is_beta: bool) -> tk.Frame:
underline=True
).grid(columnspan=2, padx=PADX, sticky=tk.W) # Don't translate
this.log = tk.IntVar(value=config.getint('edsm_out') and 1)
this.log = tk.IntVar(value=config.get_int('edsm_out') and 1)
this.log_button = nb.Checkbutton(
frame, text=_('Send flight log and Cmdr status to EDSM'), variable=this.log, command=prefsvarchanged
)
@ -289,9 +289,10 @@ def prefs_changed(cmdr: str, is_beta: bool) -> None:
if cmdr and not is_beta:
# TODO: remove this when config is rewritten.
cmdrs: List[str] = list(config.get('edsm_cmdrs') or [])
usernames: List[str] = list(config.get('edsm_usernames') or [])
apikeys: List[str] = list(config.get('edsm_apikeys') or [])
cmdrs: List[str] = config.get_list('edsm_cmdrs', [])
usernames: List[str] = config.get_list('edsm_usernames', [])
apikeys: List[str] = config.get_list('edsm_apikeys', [])
if cmdr in cmdrs:
idx = cmdrs.index(cmdr)
usernames.extend([''] * (1 + idx - len(usernames)))
@ -319,15 +320,15 @@ def credentials(cmdr: str) -> Optional[Tuple[str, str]]:
if not cmdr:
return None
cmdrs = config.get('edsm_cmdrs')
cmdrs = config.get_list('edsm_cmdrs')
if not cmdrs:
# Migrate from <= 2.25
cmdrs = [cmdr]
config.set('edsm_cmdrs', cmdrs)
if cmdr in cmdrs and config.get('edsm_usernames') and config.get('edsm_apikeys'):
if cmdr in cmdrs and config.get_list('edsm_usernames') and config.get_list('edsm_apikeys'):
idx = cmdrs.index(cmdr)
return (config.get('edsm_usernames')[idx], config.get('edsm_apikeys')[idx])
return (config.get_list('edsm_usernames')[idx], config.get_list('edsm_apikeys')[idx])
else:
return None
@ -364,7 +365,7 @@ entry: {entry!r}'''
this.station = None
this.station_marketid = None
if config.get('station_provider') == 'EDSM':
if config.get_str('station_provider') == 'EDSM':
to_set = this.station
if not this.station:
if this.system_population and this.system_population > 0:
@ -410,7 +411,7 @@ entry: {entry!r}'''
# Send interesting events to EDSM
if (
config.getint('edsm_out') and not is_beta and not this.multicrew and credentials(cmdr) and
config.get_int('edsm_out') and not is_beta and not this.multicrew and credentials(cmdr) and
entry['event'] not in this.discardedEvents
):
# Introduce transient states into the event
@ -460,13 +461,13 @@ def cmdr_data(data: CAPIData, is_beta: bool) -> None:
# TODO: Fire off the EDSM API call to trigger the callback for the icons
if config.get('system_provider') == 'EDSM':
if config.get_str('system_provider') == 'EDSM':
this.system_link['text'] = this.system
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
this.system_link.update_idletasks()
if config.get('station_provider') == 'EDSM':
if config.get_str('station_provider') == 'EDSM':
if data['commander']['docked']:
this.station_link['text'] = this.station

View File

@ -209,7 +209,7 @@ def plugin_prefs(parent: tk.Tk, cmdr: str, is_beta: bool) -> tk.Frame:
frame, text='Inara', background=nb.Label().cget('background'), url='https://inara.cz/', underline=True
).grid(columnspan=2, padx=PADX, sticky=tk.W) # Don't translate
this.log = tk.IntVar(value=config.getint('inara_out') and 1)
this.log = tk.IntVar(value=config.get_int('inara_out') and 1)
this.log_button = nb.Checkbutton(
frame, text=_('Send flight log and Cmdr status to Inara'), variable=this.log, command=prefsvarchanged
)
@ -271,14 +271,14 @@ def prefsvarchanged():
def prefs_changed(cmdr: str, is_beta: bool) -> None:
"""Preferences window closed hook."""
changed = config.getint('inara_out') != this.log.get()
changed = config.get_int('inara_out') != this.log.get()
config.set('inara_out', this.log.get())
if cmdr and not is_beta:
this.cmdr = cmdr
this.FID = None
cmdrs = config.get('inara_cmdrs') or []
apikeys = config.get('inara_apikeys') or []
cmdrs = config.get_list('inara_cmdrs', [])
apikeys = config.get_list('inara_apikeys', [])
if cmdr in cmdrs:
idx = cmdrs.index(cmdr)
apikeys.extend([''] * (1 + idx - len(apikeys)))
@ -309,9 +309,9 @@ def credentials(cmdr: str) -> Optional[str]:
if not cmdr:
return None
cmdrs = config.get('inara_cmdrs') or []
if cmdr in cmdrs and config.get('inara_apikeys'):
return config.get('inara_apikeys')[cmdrs.index(cmdr)]
cmdrs = config.get_list('inara_cmdrs', [])
if cmdr in cmdrs and config.get_list('inara_apikeys'):
return config.get_list('inara_apikeys')[cmdrs.index(cmdr)]
else:
return None
@ -377,7 +377,7 @@ def journal_entry(
this.station = None
this.station_marketid = None
if config.getint('inara_out') and not is_beta and not this.multicrew and credentials(cmdr):
if config.get_int('inara_out') and not is_beta and not this.multicrew and credentials(cmdr):
current_creds = Credentials(this.cmdr, this.FID, str(credentials(this.cmdr)))
try:
# Dump starting state to Inara
@ -1018,13 +1018,13 @@ def journal_entry(
this.newuser = False
# Only actually change URLs if we are current provider.
if config.get('system_provider') == 'Inara':
if config.get_str('system_provider') == 'Inara':
this.system_link['text'] = this.system
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
this.system_link.update_idletasks()
if config.get('station_provider') == 'Inara':
if config.get_str('station_provider') == 'Inara':
to_set: str = cast(str, this.station)
if not to_set:
if this.system_population is not None and this.system_population > 0:
@ -1053,13 +1053,13 @@ def cmdr_data(data: CAPIData, is_beta):
this.station = data['lastStarport']['name']
# Override standard URL functions
if config.get('system_provider') == 'Inara':
if config.get_str('system_provider') == 'Inara':
this.system_link['text'] = this.system
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
this.system_link.update_idletasks()
if config.get('station_provider') == 'Inara':
if config.get_str('station_provider') == 'Inara':
if data['commander']['docked']:
this.station_link['text'] = this.station
@ -1073,7 +1073,7 @@ def cmdr_data(data: CAPIData, is_beta):
# through correctly. We don't want a static string.
this.station_link.update_idletasks()
if config.getint('inara_out') and not is_beta and not this.multicrew and credentials(this.cmdr):
if config.get_int('inara_out') and not is_beta and not this.multicrew and credentials(this.cmdr):
if not (CREDIT_RATIO > this.lastcredits / data['commander']['credits'] > 1/CREDIT_RATIO):
new_this.filter_events(
Credentials(this.cmdr, this.FID, str(credentials(this.cmdr))),

View File

@ -85,7 +85,7 @@ class PrefsVersion:
"""
# config.get('PrefsVersion') is the version preferences we last saved for
pv = config.getint('PrefsVersion')
pv = config.get_int('PrefsVersion')
# If no PrefsVersion yet exists then return oldTest
if not pv:
return oldTest
@ -326,11 +326,11 @@ class PreferencesDialog(tk.Toplevel):
output_frame = nb.Frame(root_notebook)
output_frame.columnconfigure(0, weight=1)
if prefsVersion.shouldSetDefaults('0.0.0.0', not bool(config.getint('output'))):
if prefsVersion.shouldSetDefaults('0.0.0.0', not bool(config.get_int('output'))):
output = config.OUT_SHIP # default settings
else:
output = config.getint('output')
output = config.get_int('output')
row = AutoInc(start=1)
@ -376,7 +376,7 @@ class PreferencesDialog(tk.Toplevel):
self.out_auto_button.grid(columnspan=2, padx=self.BUTTONX, pady=(5, 0), sticky=tk.W, row=row.get())
self.outdir = tk.StringVar()
self.outdir.set(str(config.get('outdir')))
self.outdir.set(str(config.get_str('outdir')))
self.outdir_label = nb.Label(output_frame, text=_('File location')+':') # Section heading in settings
# Type ignored due to incorrect type annotation. a 2 tuple does padding for each side
self.outdir_label.grid(padx=self.PADX, pady=(5, 0), sticky=tk.W, row=row.get()) # type: ignore
@ -407,7 +407,7 @@ class PreferencesDialog(tk.Toplevel):
row = AutoInc(start=1)
self.logdir = tk.StringVar()
self.logdir.set(str(config.get('journaldir') or config.default_journal_dir or ''))
self.logdir.set(str(config.get_str('journaldir') or config.default_journal_dir or ''))
self.logdir_entry = nb.Entry(config_frame, takefocus=False)
# Location of the new Journal file in E:D 2.2
@ -431,7 +431,7 @@ class PreferencesDialog(tk.Toplevel):
config_frame,
text=_('Default'),
command=self.logdir_reset,
state=tk.NORMAL if config.get('journaldir') else tk.DISABLED
state=tk.NORMAL if config.get_str('journaldir') else tk.DISABLED
).grid(column=2, pady=self.PADY, sticky=tk.EW, row=row.get())
if platform in ('darwin', 'win32'):
@ -439,10 +439,10 @@ class PreferencesDialog(tk.Toplevel):
columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get()
)
self.hotkey_code = config.getint('hotkey_code')
self.hotkey_mods = config.getint('hotkey_mods')
self.hotkey_only = tk.IntVar(value=not config.getint('hotkey_always'))
self.hotkey_play = tk.IntVar(value=not config.getint('hotkey_mute'))
self.hotkey_code = config.get_int('hotkey_code')
self.hotkey_mods = config.get_int('hotkey_mods')
self.hotkey_only = tk.IntVar(value=not config.get_int('hotkey_always'))
self.hotkey_play = tk.IntVar(value=not config.get_int('hotkey_mute'))
nb.Label(
config_frame,
text=_('Keyboard shortcut') if # Hotkey/Shortcut settings prompt on OSX
@ -509,7 +509,7 @@ class PreferencesDialog(tk.Toplevel):
ttk.Separator(config_frame, orient=tk.HORIZONTAL).grid(
columnspan=4, padx=self.PADX, pady=self.PADY*4, sticky=tk.EW, row=row.get()
)
self.disable_autoappupdatecheckingame = tk.IntVar(value=config.getint('disable_autoappupdatecheckingame'))
self.disable_autoappupdatecheckingame = tk.IntVar(value=config.get_int('disable_autoappupdatecheckingame'))
self.disable_autoappupdatecheckingame_btn = nb.Checkbutton(
config_frame,
text=_('Disable Automatic Application Updates Check when in-game'),
@ -531,8 +531,8 @@ class PreferencesDialog(tk.Toplevel):
with row as cur_row:
self.shipyard_provider = tk.StringVar(
value=str(
config.get('shipyard_provider') in plug.provides('shipyard_url')
and config.get('shipyard_provider') or 'EDSY')
config.get_str('shipyard_provider') in plug.provides('shipyard_url')
and config.get_str('shipyard_provider', 'EDSY'))
)
# Setting to decide which ship outfitting website to link to - either E:D Shipyard or Coriolis
nb.Label(config_frame, text=_('Shipyard')).grid(padx=self.PADX, pady=2*self.PADY, sticky=tk.W, row=cur_row)
@ -543,7 +543,7 @@ class PreferencesDialog(tk.Toplevel):
self.shipyard_button.configure(width=15)
self.shipyard_button.grid(column=1, sticky=tk.W, row=cur_row)
# Option for alternate URL opening
self.alt_shipyard_open = tk.IntVar(value=config.getint('use_alt_shipyard_open'))
self.alt_shipyard_open = tk.IntVar(value=config.get_int('use_alt_shipyard_open'))
self.alt_shipyard_open_btn = nb.Checkbutton(
config_frame,
text=_('Use alternate URL method'),
@ -554,7 +554,7 @@ class PreferencesDialog(tk.Toplevel):
self.alt_shipyard_open_btn.grid(column=2, sticky=tk.W, row=cur_row)
with row as cur_row:
system_provider = config.get('system_provider')
system_provider = config.get_str('system_provider')
self.system_provider = tk.StringVar(
value=str(system_provider if system_provider in plug.provides('system_url') else 'EDSM')
)
@ -571,7 +571,7 @@ class PreferencesDialog(tk.Toplevel):
self.system_button.grid(column=1, sticky=tk.W, row=cur_row)
with row as cur_row:
station_provider = config.get('station_provider')
station_provider = config.get_str('station_provider')
self.station_provider = tk.StringVar(
value=str(station_provider if station_provider in plug.provides('station_url') else 'eddb')
)
@ -599,7 +599,7 @@ class PreferencesDialog(tk.Toplevel):
text=_('Log Level')
).grid(padx=self.PADX, pady=2*self.PADY, sticky=tk.W, row=cur_row)
current_loglevel = config.get('loglevel')
current_loglevel = config.get_str('loglevel')
if not current_loglevel:
current_loglevel = logging.getLevelName(logging.INFO)
@ -628,10 +628,10 @@ class PreferencesDialog(tk.Toplevel):
def __setup_appearance_tab(self, notebook: Notebook) -> None:
self.languages = Translations.available_names()
# Appearance theme and language setting
self.lang = tk.StringVar(value=self.languages.get(config.get('language'), _('Default')))
self.always_ontop = tk.BooleanVar(value=bool(config.getint('always_ontop')))
self.theme = tk.IntVar(value=config.getint('theme'))
self.theme_colors = [config.get('dark_text'), config.get('dark_highlight')]
self.lang = tk.StringVar(value=self.languages.get(config.get_str('language'), _('Default')))
self.always_ontop = tk.BooleanVar(value=bool(config.get_int('always_ontop')))
self.theme = tk.IntVar(value=config.get_int('theme'))
self.theme_colors = [config.get_str('dark_text'), config.get_str('dark_highlight')]
self.theme_prompts = [
_('Normal text'), # Dark theme color setting
_('Highlighted text'), # Dark theme color setting
@ -715,7 +715,7 @@ class PreferencesDialog(tk.Toplevel):
)
self.ui_scale = tk.IntVar()
self.ui_scale.set(config.getint('ui_scale'))
self.ui_scale.set(config.get_int('ui_scale'))
self.uiscale_bar = tk.Scale(
appearance_frame,
variable=self.ui_scale, # TODO: intvar, but annotated as DoubleVar
@ -897,7 +897,7 @@ class PreferencesDialog(tk.Toplevel):
def browsecallback(hwnd, uMsg, lParam, lpData):
# set initial folder
if uMsg == BFFM_INITIALIZED and lpData:
ctypes.windll.user32.SendMessageW(hwnd, BFFM_SETSELECTION, 1, lpData);
ctypes.windll.user32.SendMessageW(hwnd, BFFM_SETSELECTION, 1, lpData)
return 0
browseInfo = BROWSEINFO()
@ -1084,7 +1084,7 @@ class PreferencesDialog(tk.Toplevel):
(self.out_csv.get() and config.OUT_MKT_CSV) +
(config.OUT_MKT_MANUAL if not self.out_auto.get() else 0) +
(self.out_ship.get() and config.OUT_SHIP) +
(config.getint('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))
(config.get_int('output') & (config.OUT_MKT_EDDN | config.OUT_SYS_EDDN | config.OUT_SYS_DELAY))
)
config.set(
@ -1113,7 +1113,7 @@ class PreferencesDialog(tk.Toplevel):
lang_codes = {v: k for k, v in self.languages.items()} # Codes by name
config.set('language', lang_codes.get(self.lang.get()) or '') # or '' used here due to Default being None above
Translations.install(config.get('language') or None) # type: ignore # This sets self in weird ways.
Translations.install(config.get_str('language') or None) # type: ignore # This sets self in weird ways.
config.set('ui_scale', self.ui_scale.get())
config.set('always_ontop', self.always_ontop.get())
@ -1136,7 +1136,7 @@ class PreferencesDialog(tk.Toplevel):
self.after_cancel(self.cmdrchanged_alarm)
self.cmdrchanged_alarm = None
self.parent.wm_attributes('-topmost', 1 if config.getint('always_ontop') else 0)
self.parent.wm_attributes('-topmost', 1 if config.get_int('always_ontop') else 0)
self.destroy()
if platform == 'darwin':

View File

@ -8,7 +8,7 @@ from config import config
def export(data, filename):
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime', int(time.time()))
assert data['lastSystem'].get('name')
assert data['lastStarport'].get('name')

4
td.py
View File

@ -22,9 +22,9 @@ stockbracketmap = { 0: '-',
def export(data):
querytime = config.getint('querytime') or int(time.time())
querytime = config.get_int('querytime', int(time.time()))
filename = join(config.get('outdir'), '%s.%s.%s.prices' % (data['lastSystem']['name'].strip(), data['lastStarport']['name'].strip(), time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
filename = join(config.get_str('outdir'), '%s.%s.%s.prices' % (data['lastSystem']['name'].strip(), data['lastStarport']['name'].strip(), time.strftime('%Y-%m-%dT%H.%M.%S', time.localtime(querytime))))
timestamp = time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(data['timestamp'], '%Y-%m-%dT%H:%M:%SZ'))

View File

@ -207,21 +207,21 @@ class _Theme(object):
style.theme_use('clam')
# Default dark theme colors
if not config.get('dark_text'):
if not config.get_str('dark_text'):
config.set('dark_text', '#ff8000') # "Tangerine" in OSX color picker
if not config.get('dark_highlight'):
if not config.get_str('dark_highlight'):
config.set('dark_highlight', 'white')
if theme:
# Dark
(r, g, b) = root.winfo_rgb(config.get('dark_text'))
(r, g, b) = root.winfo_rgb(config.get_str('dark_text'))
self.current = {
'background' : 'grey4', # OSX inactive dark titlebar color
'foreground' : config.get('dark_text'),
'activebackground' : config.get('dark_text'),
'foreground' : config.get_str('dark_text'),
'activebackground' : config.get_str('dark_text'),
'activeforeground' : 'grey4',
'disabledforeground' : '#%02x%02x%02x' % (int(r/384), int(g/384), int(b/384)),
'highlight' : config.get('dark_highlight'),
'highlight' : config.get_str('dark_highlight'),
# Font only supports Latin 1 / Supplement / Extended, and a few General Punctuation and Mathematical Operators
'font' : (theme > 1 and not 0x250 < ord(_('Cmdr')[0]) < 0x3000 and
tkFont.Font(family='Euro Caps', size=10, weight=tkFont.NORMAL) or
@ -309,7 +309,7 @@ class _Theme(object):
# Apply configured theme
def apply(self, root):
theme = config.getint('theme')
theme = config.get_int('theme')
self._colors(root, theme)
# Apply colors