What's Changed
In this release, we introduced a significant refactor (specifically, introduced in https://github.com/spyoungtech/FreeSimpleGUI/pull/9) of the large FreeSimpleGUI module. This is just a first step we're taking towards making FreeSimpleGUI more maintainable and approachable for contributors. There's still a lot of work to do, but this change cuts the main module size in half, making it quite a bit easier for LSPs and Intellisense to keep up with changes. Elements are now tucked neatly away into their own modules within the new `elements` subpackage.
All names are imported back into the main package, so this change should be non-breaking.
We also moved the main module back to `__init__.py` instead of the internal `FreeSimpleGUI.py` module. This avoids a bug introduced by the initial refactor by which changes to global state (which is unfortunately used extensively) may not take effect properly in some cases.
Other minor changes and deprecations:
- The globals `pil_imported` and `pil_import_attempted` are no longer used internally. Attempting to access these globals will produce a deprecation warning.
- The behavior of the methods `save_element_screenshot_to_disk` and `save_window_screenshot_to_disk` returning `None` when `PIL` cannot be imported is deprecated. In a future version, calling `save_element_screenshot_to_disk` or `save_window_screenshot_to_disk` when `PIL` cannot be imported will raise an `ImportError`.
- This also fixes a bug where calling `save_element_screenshot_to_disk` or `save_window_screenshot_to_disk` would incidentally overwrite the `Image` element class due to use of the `global` keyword in these methods and importing the name `Image` from PIL whilst marking `Image` as `global`
- The methods `timer_start`, `timer_stop`, and `timer_stop_usec` are deprecated and will be removed in a future version. (code timing is not FreeSimpleGUI's wheelhouse, and these implementations are flawed in any case). Not to be confused with the `Window` class methods of the same name, which are unchanged.
- Using functions with `CamelCase` names that have `snake_case` function name replacements is deprecated and those camel-cased function aliases may be removed in a future version. Using these names will produce a deprecation warning.
- don't use deprecated names internally by spyoungtech in https://github.com/spyoungtech/FreeSimpleGUI/pull/10
Enhancements from new contributors:
* theme_previewer changes. by RoboPickle in https://github.com/spyoungtech/FreeSimpleGUI/pull/21
* Fix Nuitka cross compilation by deajan in https://github.com/spyoungtech/FreeSimpleGUI/pull/27
New Contributors
* RoboPickle made their first contribution in https://github.com/spyoungtech/FreeSimpleGUI/pull/21
* deajan made their first contribution in https://github.com/spyoungtech/FreeSimpleGUI/pull/27
**Full Changelog**: https://github.com/spyoungtech/FreeSimpleGUI/compare/v5.1.0...v5.1.1