This patch supports per-workspace filtering of: Panels, Menus, Keymaps & Manipulators, so a workspace can be set to only show certain add-ons.
- The tags used for filtering are arbitrary, for now the convention of matching add-on names is used.
- Each menu/panel/keymap can only have a single tag.
- Using the filter is optional (a workspace may show all enabled addons).
- Ignore changes to addon_utils.py and bpy_types.py, this just simulates addon authors using bl_ui_tag in their classes (to help test the patch).
- Eventually filtering could use a GSet (for runtime), for now don't think its needed.
To use this feature:
- In the workspace buttons enable "Show/Hide Add-Ons"
- Expand the panel and select addons to use for the current workspace.
To avoid having to patch many addons only for the purpose of testing this patch, I've added a hack that adds tags to all addons classes. This should be removed and instead addon authors must put bl_ui_tag = __package__ in their classes.