Bringing EDMC plugin development out of the dark ages. 😜
The library has several components.
- A Demo plugin
- A unit testing tool that mocks EDMC
- A library of display objects
- A library of useful utility classes and functions
- Some handy github workflows
Created as a platform to test and exercise the library functionality it also acts as a simple plugin template and displays a journal event list and a lightweight status mode/pips/alert-badge summary.
A unit and regression testing tool for EDMC that mocks EDMC functionality enabling pytest, python debugger, and pycov test coverage analyses.
You can use pytest without it to run individual functions but complex sequences and interactions with EDMC (journal events, dashboard events, config options etc.) are much harder to test. Also interacting with external tools may make irrevocable changes.
This harness provides a mocked up EDMC environment so you can run realistic scenarios including replaying journal and dashboard events, reading and writing HTTP requests, etc. starting from a known, repeatable state and without making irrevocable changes.
- Mock journal event replay
- Mock dashboard event replay
- Mock state handling
- Mock EDMC config
- Mock ED logging
- Mock outfitting
- Mock i10n translation
- Mock CAPI event handling
- Mock EDMC Overlay
- Mock HotKeys
- Mock (or live) HTTPS requests
These fall into two main groups. The th library contains are objects that self-register with EDMC to match the current theme including use of the EDMC Windows Default theme. When the theme is changed they automatically change with it. There are variants of standard ttk/tk objects and more advanced objects that are useful to plugins. The second group are modified versions of additional (non-standard) tk objects.
Advanced objects:
Collapsible– An object that enables collapsed/exapanded views and handles switching between them. It also supports plugin reordering.ScrollableFrame– A frame that automatically displays or hides a scrollbar depending on whether the content exceeds its configured configured maximum height.RichLabel,RichTextandRichScrolledText– versions of Label, Text and ScrolledText objects capable of natively displaying Markdown or HTML content.Tooltip– a mouseover tooltip objectPlaceholder– An Entry object that can display a placeholder valueAutocompleter– An Entry object derived fromPlaceholderthat will display a dropdown list of autocomplete options returned from a callback.
Standard objects: Frame, LabelFrame, Label, Entry, Text, Button, Radiobutton, ComboBox, Listbox, Checkbutton, Scale, Spinbox
Larger objects typically used in popup windows rather than the EDMC main frame.
- Richtext tk objects (standalone version of the
RichLabel,RichTextandRichScrolledText) - Enhanced Treeview
- Scrollable notebook
A Library of utilities for EDMC plugins. Some utilities are drop-in ready to go, some may require some configuration, and others may need adapting to your plugin. They have comments or README's describing their functionality.
- Debug
- Plugin updater
- Notifications capability
- Overlay handler
- Miscellaneous functions (Date utilities, Cross-platform clipboard copy, Nested object retrieval, Singleton decorator)
GitHub workflow scripts for EDMC plugins.
Removes development artifacts and creates a release .zip asset, puts it through VirusTotal, and adds the result to the release notes.
Runs flake8 and pytest when code is pushed to the main branch or a PR is created for the main branch.



