1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-22 03:40:46 +03:00

2444 Commits

Author SHA1 Message Date
Athanasius
0530eecc52 Fully set up logging early, and use it in no_other_instance() checks 2021-01-19 12:21:07 +00:00
Athanasius
7ed90aee83 Comment EnumWindows()/enumwindowsproc() to document function. 2021-01-19 11:54:17 +00:00
Athanasius
f86f1ac188 imports tweaks to pass isort 2021-01-18 22:27:53 +00:00
Athanasius
d2490673f4 Add some noqa: C901 & remove old SIGTERM -> stack trace
* We're not going to refactor those 'complex' sections any time soon, so
  clean up flake8 output for now.
* No-one still uses "send SIGTERM to see a stack trace".
2021-01-18 22:25:11 +00:00
Athanasius
2be09a5db1 Add back the "restore/foreground the existing window" code 2021-01-18 22:20:01 +00:00
Athanasius
35a476f209 Comments added, some noqa and split a line 2021-01-18 22:18:54 +00:00
Athanasius
1714219c17 Split enumwindowsproc() conditional into multiple lines 2021-01-18 21:54:45 +00:00
Athanasius
bf7e21a94f protocol.py: Reinstate 'from config import appname' 2021-01-18 21:42:04 +00:00
Athanasius
a75f5b9130 Move sys.stdout redirect to top.
* In `develop` config import will set up logging, so let's head that off
  at the pass and put the redirect right at the top.
* Also moved the EDMCLogging import to right after the config import's
  new position, to emulate `develop` behaviour.
* We *append* on the initial open of the redirect log file.  Then once
  we're sure we're the only process we truncate this.
2021-01-18 21:40:18 +00:00
Athanasius
820d481ca9 Restore old "another window with this handle?" code for edmc://auth
The edmc://auth catch/forward code relies on the old "is there another
window with this handle already?" check, so need to reinstate that code
*after* the lock check in order to forward the message.
2021-01-18 21:28:07 +00:00
Athanasius
377eef9c2b config import needs to be up top for now & misc
* The end of the win32/else conditional was identical, so only do that
  write to the successfully locked file in one place.

* No need to go out of `__main__` only to go straight back in.
2021-01-18 21:15:52 +00:00
Athanasius
397eda8d3e Catch only 'ImportError' for fcntl & 'Exception' for fcntl.flock() 2021-01-18 21:09:12 +00:00
Athanasius
bf2a10f88b Catch only 'Exception' off mvscrt.locking()
* It *should* only be a PermissionError, although the docs actually say
  the 'higher' OSError.  This way we will always catch whatever it is.
* The print uses {e!r} so as to make it explicit what the type of the
  exception is.
2021-01-18 21:09:12 +00:00
Athanasius
dbba1d24c7 Minor cleanups: Correct filename for lockfile, ...
* The variable is journal_dir_lockfile not lockfile.
* Typehint on journal_dir (likely not needed in `develop` as config.py
  is cleaned up there).
* Tweak the per-platform prints
2021-01-18 21:09:11 +00:00
Athanasius
0263dc628b Added some fcntl-based locking code for !win32
* If fcntl can't be imported it will just let things slide.
2021-01-18 21:09:11 +00:00
Athanasius
5c09ef78f8 Add comment as to why the file open is done at top level 2021-01-18 21:09:11 +00:00
Athanasius
ab281bca5a Implement msvcrt.locking() under win32
NB: The locked file *must* be opened at top level in order for the file
handle to not get cleaned up, which also removes the locks.
2021-01-18 21:09:11 +00:00
Athanasius
937a38f0b5 Remove extraneous enforce_single_instance() code & add opening of journal lock file 2021-01-18 21:09:10 +00:00
Athanasius
4689666b13 Strip out old win32 only window handle checking code. 2021-01-18 21:08:15 +00:00
Athanasius
61275b73a1
Merge pull request #851 from EDCD/enhancement/848-suppress-dupe-process-popup
Add --suppress-dupe-process-popup and move enforce_single_instance() call after
2021-01-18 21:05:34 +00:00
Athanasius
7e0c141547 This version of protocol.py doesn't yet need EDMCLogging 2021-01-18 14:53:44 +00:00
Athanasius
c67b1b76f7 Move argsparse code to top & do rename enforce_single_instance() -> no_other_instance_running()
1. We need the args available at the top.
2. In `develop` we'd renamed `enforce_single_instance()` to
   `no_other_instance_running()` so that it's obvious it's a function
   returning a boolean, rather than the function that does the
   enforcement.
2021-01-18 14:48:17 +00:00
Athanasius
c3663d8be8 Move the 'duplicate' constants into a new constants.py
1. So now they're only defined in one place.
2. config.py does an import of them, and `from config import ...` then
   chains through, so no need to update other users.
3. No need to ' # noqa E402' the killswitch/config imports now.
2021-01-18 14:43:45 +00:00
Athanasius
778668f680 Add --suppress-dupe-process-popup and move enforce_single_instance() call after 2021-01-18 14:35:46 +00:00
Athanasius
966599d82c
Merge pull request #844 from alterNERDtive/alterNERDtive-patch-1
PLUGINS.md: fix typo & example for `journal_entry`
2021-01-13 13:14:34 +00:00
alterNERDtive
589f0cf454
PLUGINS.md: fix typo & example for journal_entry 2021-01-13 14:06:27 +01:00
Athanasius
52193a9f07 Release 4.1.6: config version and changelog Release/4.1.6 2021-01-12 16:24:10 +00:00
Athanasius
6a8d950b87 Change all requirements to latest tested and use '==' on all.
Although the issue we've identified with GitHub builds isn't to do with
a python module version it's best to nail precise versions so we can be
sure it will build with the same as we've tested locally.
2021-01-11 19:28:56 +00:00
Athanasius
3d515ba919 protocol.py: Need from config import config Release/4.1.6-rc3 2021-01-11 18:20:58 +00:00
Athanasius
501f34836a update.py: Need to from config import config to access shutting_down 2021-01-11 17:48:47 +00:00
Athanasius
67e72f7477 Pre-Release 4.1.6-rc3: config version and changelog 2021-01-11 17:35:54 +00:00
Athanasius
c90392ab89 Merge branch 'release-4.1.6-rc2' into release-4.1.6-rc3 2021-01-11 17:24:42 +00:00
Athanasius
6831c45c59
Merge pull request #840 from EDCD/fix/678-check-for-shutdown-when-tk-event-generate
Avoid Tk event_generate() calls during shutdown.
2021-01-11 17:23:15 +00:00
Athanasius
247577c5f4 config: Also set Config.shutting_down to be @propety on win32 and linux 2021-01-11 17:13:31 +00:00
Athanasius
462cd25312 config: Make config.shutting_down() a property, and change 'callers' 2021-01-11 16:54:09 +00:00
Athanasius
111f445cac plugins/inara: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:45:45 +00:00
Athanasius
bca0231dfc plugins/edsm: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:45:26 +00:00
Athanasius
fb1c9fc034 update: Avoid Tk event_generate() calls during shutdown. 2021-01-11 16:44:11 +00:00
Athanasius
92d5657e21 protocol: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:43:53 +00:00
Athanasius
4bddc4c0cb prefs: Avoid Tk event_generate() calls during shutdown 2021-01-11 16:43:33 +00:00
Athanasius
571f9665b3 monitor: Avoid Tk event_generate() calls during shutdown. 2021-01-11 16:43:07 +00:00
Athanasius
6cdc1dc20c hotkey: Avoid event_generate() calls during shutdown 2021-01-11 16:41:57 +00:00
Athanasius
cb9bd30a05 dashboard: Bail early from process() if in shutdown 2021-01-11 16:41:36 +00:00
Athanasius
50f520ab66 config: Change self.in_shutdown to be mangled.
I specifically made set_shutdown() *not* take an argument and only ever
set this true so no-one else can monkey with it, so might as well mangle
it too.
2021-01-11 15:53:12 +00:00
Athanasius
5175136419 plug.py: Avoid Tk event_generate() call from show_error() if in shutdown 2021-01-11 15:49:08 +00:00
Athanasius
08f1f3e7d9 EDMarketConnector: call config.set_shutdown() in AppWindow.onexit() 2021-01-11 15:37:47 +00:00
Athanasius
f92385244c config: Add class member and methods for signalling/checking shutdown status 2021-01-11 15:37:17 +00:00
Athanasius
decb889242 Pre-Release 4.1.6-rc2 version and changelog Release/4.1.6-rc2 2021-01-08 15:51:27 +00:00
Athanasius
e51bde44ef Shutdown: re-order the top level calls
1. The updater is in a thread/DLL and we don't want that firing part way
  through shutdown, so it gets asked to stop first.
2. Then plugins, so they're out of the way and we won't have already
  stopped something they might rely on.
3. Hotkey after that to head off the user triggering something via them.
4. Now stop the programmatic input from Journal files (including
   Status.json).
5. Frontier auth handling.
6. And then anything else.
2021-01-08 15:44:06 +00:00
Ash Holland
590cd608d3 Fix logging from mangled methods where class name starts with "_"
Python's name-mangling rules are quite complex. Previously, EDMC was
incorrectly mangling names where the class name starts with one or more
underscores; if the class name starts with any underscores, they should
be removed before prepending to the identifier being mangled. If the
class name contains *only* underscores, no mangling should be performed.
2021-01-08 15:32:42 +00:00