- Fixes#2088 and #2089.
- Adds usage of ``row=`` for ``.grid()`` for all config entries in included plugins.
- Changes all config pages to start at row 0.
- Starts introducing a standard for config panel layouts.
I would have added these during a mypy cleanup, but it turns out they're both
not necessary *and* it actually prevents the EDSM Settings tab from properly
populating.
* eddn: Needs to find status text, although really there should be a helper
function for this.
* Removed commented out references to same in edsm and inara.
As we're experimenting with per-plugin frames up a level `parent.children`
would need to be `parent.parent.children`, but this way it will Just Work
without knowledge of the hierarchy.
* In theory we would always see `Fileheader` and clear `pending[]`, but let's
be extra paranoid and also clear it if there's a gameversion/build difference
between the prior event and the current one.
1. Due to the _TIMEOUT on the actual `post()` of a message it would be
possible for new entries to get queued in the meantime. These queued
entries could be 'in session' and end up going through pending and thus
sent before one of the 'new session' events is detected so as to clear
pending. The `this.gameversion/build` could have changed in the meantime,
so are no longer correct if game client changed.
2. So, pass in the current gameversion/build when a message is pushed into
the queue, and parse those back out when they're pulled out of the queue.
3. Use those versions in the message, not `this.` versions.
* Record the 'state' version of these in `this`.
* Use those when constructing the message.
* NB: Need to check if messages can be retained in the queue across client
changes. Coming up ....
* Ensure we have the discarded_events list *before* starting to consume
events. There's the *same* risk as before with EDSM just being down
and us queueing up more and more, just now it will be in the worker
queue rather than pending.
* We need to test for some events in should_send() that are in the
discard list, and thus will never be in the `entries` (pending) passwd
in, so pass in the name of the latest event as well.