* Re-uses the 'About {APP}' that was defined because the MacOS version
always had an 'About' bit.
* As a side effect of wanting the copyright string in the popup this is
now defined in config.py, and setup.py has been adjusted to also take
it from there.
* The About popup includes a link to the release notes, contingent on
the git tag existing on github.
* Only one instance of the popup is allowed at once.
* There's still a 'TODO' for moving 'Check for updates' into this
popup.
Addresses issue #509
* new class `PrefsVersion` in prefs.py. A singleton `prefsSaved` (note
case) is created.
* When new preferences are added and require defaults on first run the
code should use:
`if prefsVersion.shouldSetDefaults(<prior release version>, [<optional old test>]):`
to check if defaults should be set in preferences. So if prior release
was '3.4.6.0' and you've added a new preference with defaults you should
call this with '3.4.6.0' as the first argument.
The <optional old test> is really only for historical purposes, as a
fallback in case no 'PrefsVersion' has yet been set in the user's
Registry/settings file.
* Any code that adds such a new preference **MUST** make changes to the
`versions` dictionary in the PrefsVersion class.
1. Add the predicted next version to the dictionary, with number one
higher than 'current'
2. Set 'current' equal to that new value.
Obviously if other post-last-release code has already done this then you
don't need to.
Failure to update the versions dictionary in this manner will lead to an
Exception being raised, and the code the preferences are for failing
(i.e. EDDN means no EDDN tab on Settings).
Closes#407
* Outlines everything a new contributor should know.
* There's one 'XXX' to-check items with regards to Windows Installer,
and if it does think A.B.C.1 should be installed in place of A.B.C.0.
Closes#533
* No more Mac releases.
* Cite Windows 10 "Apps & Features" as place to go for uninstall.
* Add Marginal to Acknowledgements.
* Add ", 2020 EDCD" to Copyright.
Change Output and EDDN options to only get set to defaults if key 'PrefsDidSave' is not present and true. This gets a value of 0x1 saved any time preferences are applied.
The issue was that if you had sufficient options set such that the saved 'output' value was 0x0 then that would evaluate to false and cause the defaults to get set.
Fixes#407
I've also re-done the release actions/order to actually push the
release-A.B.C.D branch up to github, along with the rel-A.B.C.D tag on
its HEAD. This way the final release step is a merge of release-A.B.C.D
into releases, which could even be done directly on github.
* .msi filename now uses full A.B.C.D version
* Git tag is assumed to be rel-A.B.C.D
Switched the entire appcast.write() formatting to using named tags, no
need to remember positions now.
Addresses part of #523
This is based on the latest appcast edmarketconnector.xml contents.
It looks like Marginal was in the habit of clearing it out when major
version bumped.
Going to need something to retrieve all the prior release notes from
github, starting with rel-100.
* Confirmed requirements,txt contents work, NB: Need to have already
installed py2exe as pip won't find a valid version.
* Document using requirements.txt, now that it's up to date.
* So that isn't part of the py2exe section now.
* Removed modules we don't seem to use any more.
* Went through *all* the imports (including 'from X import Y') and
checked every module was one of: builtin, stock in win32 python
3.7.7 or a known dependency of another we do list.
* As we still have the sqlite3.dll hack in setup.py I've only
specified: +py2exe>=0.9.3.2
* certifi==2019.9.11 to work around py2exe issues the current latest
* keyring==19.2.0 to work around py2exe issues the current latest
This still needs testing to see if it's enough to setup an
only-just-installed Python-32 of 3.7.7
Where it was in EDMarketConnector.py caused issues because then the
main thread was blocking on the popup when other threads expected it to
be running:
---------------------------------------------------------------------
Exception in thread Journal worker:
Traceback (most recent call last):
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Athan\Documents\Devel\EDMarketConnector-python3\monitor.py", line 273, in worker
self.root.event_generate('<<JournalEvent>>', when="tail")
File "C:\Users\Athan\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1673, in event_generate
self.tk.call(args)
RuntimeError: main thread is not in main loop
---------------------------------------------------------------------
However *now* it pops up before the main UI is running properly at all,
so the EDMC window is likely out of position, and won't be
painted/themed yet.
This is deemed acceptable for a 'once a day at most' popup.
The popup title now has 'EDMC: ' at the start to be sure users know
what it's talking about.
It also has some brief advice about how to disable a plugin.
To allow users to sort out their plugins before EDMC itself moves to
Python 3.x warn them if any of their enabled, non-stock, plugins do not
have a plugin_start3() method.
* If any are found without support there's a popup triggered at the
end of AppWindow initialisation.
* Then the user can check Settings > Plugins to see a list of the
plugins without Python 3.x support.