The extensions UI was aligning all buttons then adding a separator.
Simplify the layout by removing align which removes the need for an
explicit separator.
It was too easy to click on Install by mistake, while trying to click on
the "⌄" menu. This is particulary problematic since we enable add-ons by
default.
Co-authored by: Pablo Vazquez, based on (informal) report by Campbell Barton.
Add utility class to check extension visibility to remove
incomplete logic that was duplicated into operator code.
Also minor refactoring to reduce the number of arguments passed
to internal function.s
Disambiguate
- "Thickness": use "Material" for EEVEE's thickness material setting.
- "Generated": use "Texture" for texture coordinates, "Image" for
image source, keep default context for animation keyframe types.
Translate
- Split "Online access required to (check for|install) updates..."
into 2x2 messages individually translatable.
- "Geometry" input in bake node.
- "New" for the Palette ID: extract it as part of the
BLT_I18N_MSGID_MULTI_CTXT for "New".
Some issues reported by Gabriel Gazzán and Satoshi Yamasaki.
Pull Request: https://projects.blender.org/blender/blender/pulls/123404
This changes the sorting for the installed extensions.
- Update.
- Enable.
- A-Z.
Don't use A-Z for "Available" extensions to prevent name manipulation
to bring an extension up on the ranks.
Match the design of !123728, rewritten to support sorting across
multiple repositories and update tags which weren't handled in the PR.
Details:
- Remove the "Filter" popover & the option "Updates Available"
since updates are now shown first.
- Add an iterator to for visible extensions to de-duplicate logic which
was copied for code that scanned for tags.
- Split out logic for drawing an extension into it's own function.
- Tags are now calculated based on visible extensions limited by search.
Provide a convenient way to access a writable directory for extensions.
This will typically be accessed via:
bpy.utils.extension_path_user(__package__, create=True)
This API is provided as some extensions on extensions.blender.org
are writing into the extensions own directory which is error prone:
- The extensions own directory is removed when upgrading.
- Users may not have write access to the extensions directory,
especially with "System" repositories which may be on shared network
drives for example.
These directories are only removed when:
- Uninstalling the extension.
- Removing the repository and its files.
Functionality from [0] to skip-saving remote repositories was only
applied when dropping extensions. Now this is done when installing
from the file selector too.
[0]: 9b7f2c9976
This changes the sorting for the installed extensions.
* Update
* Enable
* A-Z
We don't use A-Z for the Available one to prevent name manipulation to
bring an extension up on the ranks.
Pull Request: https://projects.blender.org/blender/blender/pulls/123728
Override the website in the manifest with the website from the remote
repository data if it's available.
While this can be made to work it requires some awkward logic since it's
assumed an extensions meta-data is provided by the manifest with is
not the case when we start overriding it with values from elsewhere.
Resolves#123706.
Each section (if not empty) now shows a panel header.
Now there is no need to include "installed/disabled" text next to each
extension. This also removes the need for most of the filtering options.
See design task #123660.
Scanning local repositories was printing an error when the local
directory of other repositories didn't exist.
Caused by the logic that ensures wheel's are updated which needs to
check meta-data for all repositories after an update.
Resolve by optionally skipping errors for missing directories.
Since changing RNA values now trigger synchronizing with remote
repositories (which can be slow), it was possible to accumulate
notification requests to the same repository which would re-download
the remote data on each button press.
Skip notifications which have been superseded by newer requests.
When changing the URL or access token, re-synchronize remote data
automatically.
This changes automatic synchronization to use a background task that
runs based on a timer instead of a modal operator since the operator
is more intrusive and not so well suited to running based on changes
to RNA.
Calling os.path.samefile on a repository directory that didn't exist
was raising an exception. Resolve by comparing the directories as
strings, see code comments for details.
- Suppress the warning entirely when the "first time" message
requesting online access is shown as it adds unnecessary noise.
- Otherwise, when offline, show a message suggesting to allow online
access or disable the repository.
The sync with remote repositories would lock-up the interface with no
way to cancel. This could be a problem especially on slow connections.
The operator dialog is now shows the state of syncing which can
be canceled by pressing Escape or clicking away from the dialog.
- Optionally generate a simple HTML page (using --html).
- Links include repository, blender_versnon_* & platform information,
so the information can be used by blender when links are dropped
into Blender.
- Support using a template as the default HTML is primitive.
- Disable enabling on install when installing marked.
This simplifies installing many packages from a repository which can
be useful for testing.
- Fix an error installing marked when a local-only package was marked.
When syncing in the background the UI could refresh immediately
before clicking making it possible for the user to install the wrong
extension. Since install also enables the extension, it meant it was
too easy to accidentally run untrusted code.
Disable install/upgrade while sync runs.
Also tweak text alignment and use round brackets for "(disabled)"
extensions.
Use a per-extension menu so extra functionality can be accessed from
one place.
- The install/upgrade button remains top-level.
- "Uninstall" and "Visit Website" have been moved into the menu.
- Theme extensions can be set from the menu.
- Installed add-on extensions have a "View Details" menu item
to switch to the add-ons view (useful to access preferences).
Based on design by Pablo & Dalai.
Co-authored-by: Pablo Vazquez <pablo@blender.org>
Co-authored-by: Dalai Felinto <dalai@blender.org>
- Use line separator over box instead of separate boxes.
- Format web-links with a label, then the button instead
of positioning the buttons side-by-side.
Changes by Brecht with minor edits (see !123420).
Co-authored-by: Brecht Van Lommel <brecht@blender.org>
Add back the "Add-ons" preferences, removing add-on logic from
extensions.
- Add support for filtering add-ons by tags
(separate from extension tags).
- Tags now respect the "Only Enabled" option.
- Remove the ability to enable/disable add-ons from extensions.
- Remove add-on preferences from extensions.
- Remove "Legacy" & "Core" prefix from add-on names.
- Remove "Show Legacy Add-ons" filtering option.
Implements design task #122735.
Details:
- Add-on names and descriptions are no longer translated,
since it's impractical to translate text which is mostly
maintained outside of Blender.
- Extensions names have a `[disabled]` suffix when disabled so it's
possible to identify installed but disabled extensions.
- The add-on "type" is shown in the details,
so it's possible to tell the difference between an extension,
a core add-on & a legacy user add-on.
- Icons are also used to differentiate the add-on type.
- User add-on's must be uninstalled from the add-ons section
(matching 4.1 behavior).
- Simplify logic for filtering tags, move into a function.
When installing from disk, include remote repositories in the list.
- Works with drag & drop from file system.
- This is the only way to "downgrade" an extensions.