This works by creating a temp file at config.app_dir and storing the
link in there, followed by directing the local browser to open the file.
HTML meta tags are then used to direct the browser to refresh to a URL
of our choosing (which is HTML escaped, just in case someone tries
something clever)
This should work everywhere, and on any browser (as the file:// format
is defined at https://tools.ietf.org/html/rfc1738 which was posted in
1994).
The URI used (`file://localhost/path`) ensures that we only ever
ask for a localhost file at our path.
The HTML format should be completely compliant with all major browsers
as well, ensuring that behaviour is consistent (assuming they support
HTML meta tags)
Doing so causes the ShipType to not be used in the UI, so you get a
'link' with just a space for the text.
Any user who purposefully sets their ship's name to a single space
can live with seeing the model name instead. Yes, I checked, the game
allows it.
* Use same state logic as Inara plugin now has.
* this.system_link for the Tk item, this.system is the system name.
* Ensure station text+link set on prefs change.
# Add a set of future TODO items.
* Use same state logic as Inara plugin now has.
* this.system_link for the Tk item, this.system is the system name.
* List some tests to pass (and later to be implemented as unittests).
* Be paranoid about URIs, quote them.
* Ensure station text+link set on prefs change.
* Track all of: this.system_address, this.system_population,
this.system_marketid
* Use this.system_address if set (only from journal) for no-dupes Inara
system URL.
* Added the "'x' if undocked and show system info" functionality from
EDDB plugin.
* This version will set target station name/link if you request docking
with it, whether that succeeds or not. Cleared not only on Undock, but
also FSDJump and SupercruiseEntry (in case you never actually docked).
* No longer bothering setting system and station URLs from Inara API
response as we have working ones anyway. So even those without Inara
API Key set get the functionality now.
* Artie added a 'by-systemaddress' system lookup, use it.
* This means we probably no longer need to update URLs in the
inara_notify_location() function.
* Add/correct links to Releasing.md.
* Pre-releases must have tags of the correct form now.
* Misc formatting changes, mostly adding a <hr/> between sections.
* Lots of re-flow formatting for correct line-wrap.
* Change version 'number' to 'string' throughout.
* Example version is now `4.0.2`.
* #Version-Strings here is now *the* definition of the format and rules
we use.
* Advise forks to use `+<myversion>` to differentiate.
* Point out the extra `edmarketconnector.xml` commit to update `length`.
* Updater.__init__() now takes 'provider' argument to specify if we use
the internal checking code, or the available external code.
* EDMC.py changed to utilise this with internal provider.
* EDMarketConnector.py changed to use internal provider if not frozen,
else the internal provider.
* Corrected the darwin/MacOS toggling of auto updates checking to actually
use the Sparkle, not WinSparkle, API call.
* Updater.check_appcast() does the internal checking:
* class EDMCVersion to hold the information.
* Returns None on any error, or if it didn't find a newer version.
* Returns an EDMCVersion object if it found a newer version.
* py2exe only supports Major.Minor.Patch(.Revision), so pass only
Major.Minor.Patch to it. 'File version' of generated EXEs will have
a `.0` appended as .Revision.
* Set 'product_version' in py2exe with the full version string. This
ends up in the EXE 'Product version' property.
* WinSparkle accidentally suppoorts semver -prerelease correctly, but
not +buildmetadata. So trim the latter off and set that as the version
for checks.