1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-14 16:27:13 +03:00

Merge branch 'releases' into stable

This commit is contained in:
Athanasius 2020-08-26 22:49:28 +01:00
commit 2a09874554
9 changed files with 129 additions and 54 deletions

View File

@ -1,6 +1,22 @@
This is the master changelog for Elite Dangerous Market Connector. Entries are in reverse chronological order (latest first).
---
Release 4.0.6
===
* Correct the three System Provider plugins to *not* show the *next* system
in a plotted route instead of the current system.
Release 4.0.5
===
* Built using Python 3.7.9.
* Fix EDSM plugin so the System provider actually updates the URLs for
jumps to new systems.
In general this cleans up the code for all three System and Station Providers;
EDDB, EDSM, Inara.
Release 4.0.4
===

View File

@ -949,9 +949,26 @@ if __name__ == "__main__":
def messagebox_not_py3():
plugins_not_py3_last = config.getint('plugins_not_py3_last') or 0
if (plugins_not_py3_last + 86400) < int(time()) and len(plug.PLUGINS_not_py3):
# Yes, this is horribly hacky so as to be sure we match the key
# that we told Translators to use.
popup_text = "One or more of your enabled plugins do not yet have support for Python 3.x. Please see the " \
"list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an " \
"updated version available, else alert the developer that they need to update the code for " \
"Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on " \
"the end of the name."
popup_text = popup_text.replace('\n', '\\n')
popup_text = popup_text.replace('\r', '\\r')
# Now the string should match, so try translation
popup_text = _(popup_text)
# And substitute in the other words.
popup_text = popup_text.format(PLUGINS=_('Plugins'), FILE=_('File'), SETTINGS=_('Settings'), DISABLED='.disabled')
# And now we do need these to be actual \r\n
popup_text = popup_text.replace('\\n', '\n')
popup_text = popup_text.replace('\\r', '\r')
tk.messagebox.showinfo(
_('EDMC: Plugins Without Python 3.x Support'),
_("One or more of your enabled plugins do not yet have support for Python 3.x. Please see the list on the '{PLUGINS}' tab of '{FILE}' > '{SETTINGS}'. You should check if there is an updated version available, else alert the developer that they need to update the code for Python 3.x.\r\n\r\nYou can disable a plugin by renaming its folder to have '{DISABLED}' on the end of the name.".format(PLUGINS=_('Plugins'), FILE=_('File'), SETTINGS=_('Settings'), DISABLED='.disabled'))
popup_text
)
config.set('plugins_not_py3_last', int(time()))

View File

@ -490,6 +490,9 @@
/* Update button in main window. [EDMarketConnector.py] */
"Update" = "Actualizar";
/* Option to use alternate URL method on shipyard links [prefs.py] */
"Use alternate URL method" = "Usar método URL alternativo.";
/* Status dialog subtitle - CR value of ship. [stats.py] */
"Value" = "Valor";

View File

@ -13,7 +13,7 @@ appcmdname = 'EDMC'
# appversion **MUST** follow Semantic Versioning rules:
# <https://semver.org/#semantic-versioning-specification-semver>
# Major.Minor.Patch(-prerelease)(+buildmetadata)
appversion = '4.0.4' #-rc1+a872b5f'
appversion = '4.0.6' #-rc1+a872b5f'
# For some things we want appversion without (possible) +build metadata
appversion_nobuild = str(semantic_version.Version(appversion).truncate('prerelease'))
copyright = u'© 2015-2019 Jonathan Harris, 2020 EDCD'

View File

@ -32,7 +32,7 @@ You will need several pieces of software installed, or the files from their
"Windows Software Development Kit - Windows 10.0.18362.1" in
"Apps & Features", *not* "Windows SDK AddOn".
1. [Python](https://python.org): 32-bit version of Python 3.7 for Windows.
[v3.7.7](https://www.python.org/downloads/release/python-377/) is the most
[v3.7.9](https://www.python.org/downloads/release/python-379/) is the most
recently tested version. You need the `Windows x86 executable installer`
file, for the 32-bit version.
1. [py2exe](https://github.com/albertosottile/py2exe):

View File

@ -168,11 +168,26 @@
<!-- Windows -->
<item>
<title>Release 4.0.4</title>
<title>Release 4.0.6</title>
<description>
<![CDATA[
<style>body { font-family:"Segoe UI","Tahoma"; font-size: 75%; } h2 { font-family:"Segoe UI","Tahoma"; font-size: 105%; }</style>
<h2>Release 4.0.6</h2>
<ul>
<li>Correct the three System Provider plugins to <em>not</em> show the <em>next</em> system
in a plotted route instead of the current system.</li>
</ul>
<h2>Release 4.0.5</h2>
<ul>
<li>Built using Python 3.7.9.</li>
<li>Fix EDSM plugin so the System provider actually updates the URLs for
jumps to new systems.</li>
</ul>
<p>In general this cleans up the code for all three System and Station Providers;
EDDB, EDSM, Inara.</p>
<h2>Release 4.0.4</h2>
<ul>
<li>
@ -603,11 +618,11 @@ If any of your plugins are listed in that section then they will need updating,
]]>
</description>
<enclosure
url="https://github.com/EDCD/EDMarketConnector/releases/download/Release/4.0.4/EDMarketConnector_win_4.0.4.msi"
url="https://github.com/EDCD/EDMarketConnector/releases/download/Release/4.0.6/EDMarketConnector_win_4.0.6.msi"
sparkle:os="windows"
sparkle:installerArguments="/passive LAUNCH=yes"
sparkle:version="4.0.4"
length="11419648"
sparkle:version="4.0.6"
length="11317248"
type="application/octet-stream"
/>
</item>

View File

@ -46,16 +46,17 @@ this.station_marketid = None
def system_url(system_name: str) -> str:
if this.system_address:
return requests.utils.requote_uri(f'https://eddb.io/system/ed-address/{this.system_address}')
elif system_name:
if system_name:
return requests.utils.requote_uri(f'https://eddb.io/system/name/{system_name}')
else:
return ''
return ''
def station_url(system_name: str, station_name: str) -> str:
if this.station_marketid:
return requests.utils.requote_uri(f'https://eddb.io/station/market-id/{this.station_marketid}')
else:
return system_url('')
return system_url(system_name)
def plugin_start3(plugin_dir):
return 'eddb'
@ -70,17 +71,17 @@ def plugin_app(parent):
this.station_link.configure(popup_copy = lambda x: x != STATION_UNDOCKED)
def prefs_changed(cmdr, is_beta):
# Override standard URL functions
if config.get('system_provider') == 'eddb':
this.system_link['url'] = system_url(this.system)
if config.get('station_provider') == 'eddb':
this.station_link['url'] = station_url(this.system, this.station)
# Do *NOT* set 'url' here, as it's set to a function that will call
# through correctly. We don't want a static string.
pass
def journal_entry(cmdr, is_beta, system, station, entry, state):
# Always update, even if we're not the *current* system or station provider.
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# Always update our system address even if we're not currently the provider for system or station, but dont update
# on events that contain "future" data, such as FSDTarget
if entry['event'] in ('Location', 'Docked', 'CarrierJump', 'FSDJump'):
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# We need pop == 0 to set the value so as to clear 'x' in systems with
# no stations.
@ -98,13 +99,15 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
# Only actually change URLs if we are current provider.
if config.get('system_provider') == 'eddb':
this.system_link['text'] = this.system
this.system_link['url'] = system_url(this.system) # Override standard URL function
# 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':
this.station_link['text'] = this.station or (this.system_population and this.system_population > 0 and STATION_UNDOCKED or '')
this.station_link['url'] = station_url(this.system, this.station) # Override standard URL function
# 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.station_link.update_idletasks()
@ -119,7 +122,8 @@ def cmdr_data(data, is_beta):
# Override standard URL functions
if config.get('system_provider') == 'eddb':
this.system_link['text'] = this.system
this.system_link['url'] = system_url(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 data['commander']['docked']:
@ -129,6 +133,7 @@ def cmdr_data(data, is_beta):
else:
this.station_link['text'] = ''
this.station_link['url'] = station_url(this.system, this.station)
# 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.station_link.update_idletasks()

View File

@ -14,8 +14,6 @@
import json
import requests
import sys
import time
import urllib.request, urllib.error, urllib.parse
from queue import Queue
from threading import Thread
@ -59,14 +57,26 @@ STATION_UNDOCKED: str = '×' # "Station" name to display when not docked = U+00
# Main window clicks
def system_url(system_name):
return 'https://www.edsm.net/en/system?systemName=%s' % urllib.parse.quote(system_name)
if this.system_address:
return requests.utils.requote_uri(f'https://www.edsm.net/en/system?systemID64={this.system_address}')
if system_name:
return requests.utils.requote_uri(f'https://www.edsm.net/en/system?systemName={system_name}')
return ''
def station_url(system_name, station_name):
if station_name:
return 'https://www.edsm.net/en/system?systemName=%s&stationName=%s' % (urllib.parse.quote(system_name), urllib.parse.quote(station_name))
else:
return 'https://www.edsm.net/en/system?systemName=%s&stationName=ALL' % urllib.parse.quote(system_name)
if system_name and station_name:
return requests.utils.requote_uri(f'https://www.edsm.net/en/system?systemName={system_name}&stationName={station_name}')
# monitor state might think these are gone, but we don't yet
if this.system and this.station:
return requests.utils.requote_uri(f'https://www.edsm.net/en/system?systemName={this.system}&stationName={this.station}')
if system_name:
return requests.utils.requote_uri(f'https://www.edsm.net/en/system?systemName={system_name}&stationName=ALL')
return ''
def plugin_start3(plugin_dir):
# Can't be earlier since can only call PhotoImage after window is created
@ -207,9 +217,11 @@ def credentials(cmdr):
def journal_entry(cmdr, is_beta, system, station, entry, state):
# Always update, even if we're not the *current* system or station provider.
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# Always update our system address even if we're not currently the provider for system or station, but dont update
# on events that contain "future" data, such as FSDTarget
if entry['event'] in ('Location', 'Docked', 'CarrierJump', 'FSDJump'):
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# We need pop == 0 to set the value so as to clear 'x' in systems with
# no stations.
@ -294,9 +306,10 @@ def cmdr_data(data, is_beta):
this.station = this.station or data['commander']['docked'] and data['lastStarport']['name']
# TODO: Fire off the EDSM API call to trigger the callback for the icons
if config.get('station_provider') == 'EDSM':
if config.get('system_provider') == 'EDSM':
this.system_link['text'] = this.system
this.system_link['url'] = system_url(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 data['commander']['docked']:
@ -306,7 +319,8 @@ def cmdr_data(data, is_beta):
else:
this.station_link['text'] = ''
this.station_link['url'] = station_url(this.system, this.station)
# 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.station_link.update_idletasks()

View File

@ -73,15 +73,20 @@ def system_url(system_name):
elif system_name:
return requests.utils.requote_uri(f'https://inara.cz/galaxy-starsystem/?search={system_name}')
return this.system
return ''
def station_url(system_name, station_name):
if system_name and station_name:
return requests.utils.requote_uri(f'https://inara.cz/galaxy-station/?search={system_name}%20[{station_name}]')
# monitor state might think these are gone, but we don't yet
if this.system and this.station:
return requests.utils.requote_uri(f'https://inara.cz/galaxy-station/?search={this.system}%20[{this.station}]')
if system_name:
if station_name:
return requests.utils.requote_uri(f'https://inara.cz/galaxy-station/?search={system_name}%20[{station_name}]')
return system_url(system_name)
return this.station or this.system
return ''
def plugin_start3(plugin_dir):
@ -155,12 +160,6 @@ def prefs_changed(cmdr, is_beta):
changed = config.getint('inara_out') != this.log.get()
config.set('inara_out', this.log.get())
# Override standard URL functions
if config.get('system_provider') == 'Inara':
this.system_link['url'] = system_url(this.system)
if config.get('station_provider') == 'Inara':
this.station_link['url'] = station_url(this.system, this.station)
if cmdr and not is_beta:
this.cmdr = cmdr
this.FID = None
@ -232,9 +231,11 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
elif entry['event'] in ['ShipyardNew', 'ShipyardSwap'] or (entry['event'] == 'Location' and entry['Docked']):
this.suppress_docked = True
# Always update, even if we're not the *current* system or station provider.
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# Always update our system address even if we're not currently the provider for system or station, but dont update
# on events that contain "future" data, such as FSDTarget
if entry['event'] in ('Location', 'Docked', 'CarrierJump', 'FSDJump'):
this.system_address = entry.get('SystemAddress') or this.system_address
this.system = entry.get('StarSystem') or this.system
# We need pop == 0 to set the value so as to clear 'x' in systems with
# no stations.
@ -752,12 +753,14 @@ def journal_entry(cmdr, is_beta, system, station, entry, state):
# Only actually change URLs if we are current provider.
if config.get('system_provider') == 'Inara':
this.system_link['text'] = this.system
this.system_link['url'] = system_url(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':
this.station_link['text'] = this.station or (this.system_population and this.system_population > 0 and STATION_UNDOCKED or '')
this.station_link['url'] = station_url(this.system, this.station)
# 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.station_link.update_idletasks()
def cmdr_data(data, is_beta):
@ -773,7 +776,8 @@ def cmdr_data(data, is_beta):
# Override standard URL functions
if config.get('system_provider') == 'Inara':
this.system_link['text'] = this.system
this.system_link['url'] = system_url(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 data['commander']['docked']:
@ -783,7 +787,8 @@ def cmdr_data(data, is_beta):
else:
this.station_link['text'] = ''
this.station_link['url'] = station_url(this.system, this.station)
# 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.station_link.update_idletasks()
if config.getint('inara_out') and not is_beta and not this.multicrew and credentials(this.cmdr):