Commit Graph

255 Commits

Author SHA1 Message Date
Julien Duroure
38237fe414 glTF exporter: Avoid crash with skinned lattices
We don't export lattices, so don't try to get skin data from it
2024-06-29 09:22:26 +02:00
Julien Duroure
77a382ba2f glTF exporter: call hook for each action, including the active one 2024-06-29 09:16:02 +02:00
Campbell Barton
acfa60c1ae Cleanup: rename misleading function name, quiet mypy warning 2024-06-28 23:03:17 +10:00
Sybren A. Stüvel
4bff6ba655 Remove Rigify from extensions_map_from_legacy_addons.py
Rigify is now a core add-on, and no longer an extension.

Ref: !123833
2024-06-28 11:42:48 +02:00
Sybren A. Stüvel
246b317bd4 Add-on: Rigify, move meta-rigs into a 'Rigify Meta-Rigs' sub-menu
Instead of having the Rigify meta-rigs directly in the 'Add → Armature`
menu, move them into 'Add → Armature → Rigify Meta-Rigs`.

This also removes the " (Meta-Rig)" suffix from every individual
meta-rig menu item.

This serves multiple purposes:

- It's now clear that these meta-rigs come from Rigify.
- The built-in 'Single Bone' armature now has similar visual weight as
  the 'Rigify Meta-Rigs' menu item.
- Opens up the menu in a fairer way to other add-ons, to add their own
  entries in a similar way.

Pull Request: https://projects.blender.org/blender/blender/pulls/123833
2024-06-28 11:38:31 +02:00
Sybren A. Stüvel
d1e7346c63 Add-ons: Rigify, reformat code
Run `make format` to reformat the Rigify code. It now adheres to the
global Blender code style standard, rather than having its own style.

Most of the changes are simply adding spaces around operators, newlines
below docstrings, and changing some indentation.

Note that this does not reformat any stored-as-multiline-strings code
blocks.

No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/123833
2024-06-28 11:38:31 +02:00
Sybren A. Stüvel
09e431c511 Rigify: mark as support=OFFICIAL
Now that Rigify is part of the core add-ons, it should be marked as
officially supported.

Pull Request: https://projects.blender.org/blender/blender/pulls/123833
2024-06-28 11:38:31 +02:00
Nathan Vegdahl
3ad753e9f4 Fix: make foot roll rigs work again in Blender 4.2 and later (#4)
The fix is to set local-space Limit Rotation constraints to use the
legacy behavior from pre-4.2.  The legacy behavior isn't meaningful/
useful for other spaces, so we leave those constraints alone.

This is one part of a two-part fix for blender/blender#123105.  The other part
is blender/blender#123361, which adds the Legacy Behavior option to the Limit
Rotation constraint.

Reviewed-on: https://projects.blender.org/extensions/rigify/pulls/4
Reviewed-by: Sybren A. Stüvel <sybren@blender.org>
2024-06-28 11:38:31 +02:00
Demeter Dzadik
8d4cc5d998 Remove CloudRig as a promoted feature set (#1)
CloudRig is no longer a Rigify feature set. I re-wrote it as a standalone add-on.

Reviewed-on: https://projects.blender.org/extensions/rigify/pulls/1
Reviewed-by: Alexander Gavrilov <angavrilov@noreply.localhost>
2024-06-28 11:38:31 +02:00
Alexander Gavrilov
f5ac944658 Fix: Rigify Apply Toggle Pole to Keyframes clears out IK keyframes
Fix bug where the "Apply Toggle Pole to Keyframes" operator would erase
keyframes.

This was caused by f61d27b735622b940521024554aadcfc52ea76cf. The
solution was offered by Alexander Gavrilov in
https://projects.blender.org/blender/blender-addons/issues/105301#issuecomment-1187067

Fixes blender/blender-addons#105301
2024-06-28 11:38:31 +02:00
Sybren A. Stüvel
541e3aae25 Add-ons: Move Rigify into addons_core
Move Rigify from the external add-ons repository into
`scripts/addons_core`.

This commit adds Rigify, from the latest revision in [the add-ons
repo][addons]. It contains work by the following authors:

  202 Alexander Gavrilov
   67 Campbell Barton
   58 Nathan Vegdahl
   31 Lucio Rossi
   24 Demeter Dzadik
   10 Brecht Van Lommel
    8 Dalai Felinto
    7 Bastien Montagne
    7 Sybren A. Stüvel
    5 Damien Picard
    4 meta-androcto
    3 Ines Almeida
    2 Jonathan Smith
    2 ZanQdo
    1 Aaron Carlisle
    1 Andrej730
    1 Hans Goudey
    1 Luca Bonavita
    1 Patrick Huang
    1 Sergey Sharybin
    1 Thomas Dinges

For the full history see the read-only [add-ons repository][addons].

Rigify has existed briefly as an extension on the extensions platform,
and commits were made to Rigify's extension repository (which is
different from the above-mentioned add-ons repository). That repository
will be deleted soon. Its commits that actually changed Rigify will be
committed as followups to this commit. Some commits were necessary to
turn the add-on into an extension; those will be ignored, as they're no
longer relevant.

[addons]: https://projects.blender.org/blender/blender-addons/src/rigify

Ref: !121825

Pull Request: https://projects.blender.org/blender/blender/pulls/123833
2024-06-28 11:38:31 +02:00
Dalai Felinto
84f11da63a UI: Extensions: Fix spacing between Install and Menu
This was originally introduced on c6e452d865.

A subsequent Cleanup commit (c3d18854f3) changed this further,
increasing the gap a few extra pixels.

Since no functional/visual change should ever come with a cleanup commit
I'm treating this small regression as a bug, fixed by this commit.

There was something right about c3d18854f3, and one of the align=True
is indeed not needed.
2024-06-28 11:29:49 +02:00
Campbell Barton
80f07e3f26 Cleanup: simplify the tags drawing function
Tags share logic between extensions & add-ons, simplify the method
used for both kinds of panels to share a draw function.
2024-06-28 14:18:52 +10:00
Campbell Barton
1043b273d5 Extensions: hide the extensions add-on unless debugging extensions 2024-06-28 14:08:56 +10:00
Campbell Barton
37ae9d5fc4 Fix #123827: Extension cannot be uninstalled if symlinked
In the case of user managed files we can't rely on paths to remove
being directories, they could be symbolic links as developers may point
to their own repository. While unlikely the paths to remove could
be files too.

Use a wrapper for shutil.rmtree(..) that handles symlinks & files,
use when removing paths that are expected to be directories from user
managed locations.
2024-06-28 13:40:37 +10:00
Andrej730
1553a75fed Fix regression installing an addon by drag'n'drop
Regression in [0].

Ref: !123832

[0]: fcba8b8099
2024-06-27 22:26:32 +10:00
Campbell Barton
c3d18854f3 Cleanup: avoid unnecessary separator
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.
2024-06-27 21:35:23 +10:00
Dalai Felinto
c6e452d865 UI: Extensions: Add a separator between Install and the "⌄" button
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.
2024-06-27 12:06:53 +02:00
Campbell Barton
989de85cf6 Extensions: fixed & refactor internals for extension visibility
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
2024-06-27 14:33:47 +10:00
Damien Picard
f739d4832e I18n: Extract and disambiguate a few messages
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
2024-06-26 19:25:22 +02:00
Campbell Barton
99fcbf877d Extensions: Remove "Enabled" section, use sorting instead
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.
2024-06-26 23:59:58 +10:00
Campbell Barton
96906536db Extensions: add a Python API for user editable extension directories
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.
2024-06-26 14:23:17 +10:00
Campbell Barton
fcba8b8099 Fix #123710: Remote repo re-used when installing from file selector
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
2024-06-26 00:32:00 +10:00
Campbell Barton
17951d12ed Cleanup: correct staticmethod, remove unused imports & formatting 2024-06-26 00:31:59 +10:00
Campbell Barton
69b22f73c2 Revert "UI: Extensions: Remove "Enabled" section, use sorting instead"
This reverts commit 90dc001a56.

This doesn't work with more than one repository and left in incorrect
tags calculations.
2024-06-26 00:14:20 +10:00
Dalai Felinto
36060eda49 UI: Extensions: Show the correct URL icon for extension links
Right now it only shows the HELP icon if it is a legacy add-on.

Pull Request: https://projects.blender.org/blender/blender/pulls/123730
2024-06-25 16:04:46 +02:00
Dalai Felinto
90dc001a56 UI: Extensions: Remove "Enabled" section, use sorting instead
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
2024-06-25 16:04:20 +02:00
Dalai Felinto
b1dfdca392 UI: Extensions: Fix Extension tagline not disabled when it should
The extension tagline of disabled extensions was still showing fully
enabled (white text).
2024-06-25 15:46:21 +02:00
Dalai Felinto
dd7cc11796 Extensions: Link to visit the extensions platform 2024-06-25 15:13:50 +02:00
Dalai Felinto
92a2185a4e UI: Extensions: Use placeholder for extensions and add-ons search 2024-06-25 15:13:50 +02:00
Campbell Barton
b5e0bff4ba Extensions: show the "Website" in the expanded details
This was moved to the menu from [0].

Add back to show this more prominently, resolves #123689.

[0]: c312f20627
2024-06-25 23:02:08 +10:00
Campbell Barton
2783790bf2 Extensions: use the remote repositories URL for the add-ons "Website"
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.
2024-06-25 22:45:47 +10:00
Campbell Barton
7298df864c Fix error detecting outdated extensions in the UI
The "Update" button would never be shown in the extension header.

Own error in [0] caused the local version to compare with itself.

[0]: c312f20627
2024-06-25 22:05:51 +10:00
Campbell Barton
696c997d72 Extensions: split extensions by category Enabled/Installed/Available
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.
2024-06-25 21:53:04 +10:00
Campbell Barton
00d3e19296 Extensions: defer imports to reduce overhead on startup 2024-06-25 19:13:11 +10:00
Damien Picard
fab15384a4 I18n: Node Wrangler: Use proper translation contexts in the UI
Many operator buttons in Node Wrangler used custom texts defined
elsewhere, but the translation context in this case is "Operator". It
should be using "Default" instead.

Attribute nodes in the shader editor should never be translated
because their name is user data.

Some button labels were switched to title case.

"Dodge" and "Burn" were renamed to "Color Dodge" and "Color Burn"
respectively, to match the item name from the actual node.

The "Frame Selected" operator now uses Node translation context, to
distinguish from the other operator of the same name which means
"Place selected in view".

Pull Request: https://projects.blender.org/blender/blender/pulls/123403
2024-06-25 10:36:44 +02:00
Damien Picard
dba5a393ca I18n: Node Wrangler: translate operator reports using rpt_()
Operator reports that use string formatting need explicit rpt_() tags,
otherwise translation occurs after formatting and the string is not
found in the translation files.
2024-06-25 10:36:43 +02:00
Damien Picard
db6d05537c UI: Node Wrangler: Fix message case and grammar
- Reuse menus' bl_label in UI code when identical.
- Switch labels to title case.
- Switch descriptions to sentence case.
- Do not end sentences with "." in reports.
- Replace "Can't" with "Cannot" and "Don't" with "Do Not".
2024-06-25 10:36:43 +02:00
Campbell Barton
0c580d075b Fix #123676: error printed when installing extensions from disk
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.
2024-06-25 16:35:10 +10:00
Campbell Barton
5b5e869307 Extensions: skip reading remote meta-data when accessing local meta-data
This isn't required and could cause error messages when accessing
local data before synchronizing with a remote repo, see #123676.
2024-06-25 16:31:07 +10:00
Campbell Barton
6b6341f9a7 Extensions: suppress repository access errors while synchronizing
Suppress errors so enabling extensions for the first time doesn't
show a repository access error while the data is being downloaded.
2024-06-25 15:53:31 +10:00
Campbell Barton
3834e296a3 Extensions: de-duplicate redundant synchronization requests
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.
2024-06-25 15:53:30 +10:00
Campbell Barton
4712aca2a8 Fix #123682: extension repo URL/access token changes don't re-sync
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.
2024-06-25 15:52:04 +10:00
Campbell Barton
7a0f205b89 Fix #123657: setting the theme manually breaks the Extension UI
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.
2024-06-24 21:39:35 +10:00
Campbell Barton
d8fafad704 Extensions: clarify installing multiple files is supported 2024-06-24 12:27:22 +10:00
Campbell Barton
2eaf70a4ed Extensions: adjust the error about failure to sync when offline
- 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.
2024-06-24 12:24:32 +10:00
Campbell Barton
9b7f2c9976 Extensions: don't reuse the last remote repository when dropping files
Installing a file into a remote repository is an exceptional case,
don't default to the remote repository when dropping afterwards.
2024-06-24 11:25:38 +10:00
Campbell Barton
25fc66f472 Extensions: use case insensitive sort for the repositories enum 2024-06-24 11:02:56 +10:00
Campbell Barton
ef1e538693 Extensions: prioritize the remote website over the local data
Add code-comments rationalizing use of remote/local fields.
2024-06-24 11:02:54 +10:00
Campbell Barton
efa1f5847e Extensions: don't attempt to sync after adding a repo in background mode 2024-06-24 11:02:52 +10:00