Commit Graph

1891 Commits

Author SHA1 Message Date
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
Campbell Barton
3ef073ed1d Cleanup: use variable to access extensions private directory 2024-06-24 11:02:46 +10:00
Campbell Barton
b1287ad6d4 Cleanup: remove unused extensions.repo_add_from_drop operator 2024-06-23 22:47:06 +10:00
Campbell Barton
7298ed6c83 Extensions: don't lock the UI when syncing before handling a dropped URL
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.
2024-06-23 22:40:57 +10:00
Campbell Barton
485a4dbf0f Extensions: order "System" repositories last
The default "System" repository which was ordered before "User Default",
order system repositories last as these are a special case many users
won't touch.
2024-06-23 14:43:31 +10:00
Campbell Barton
84b1c50dc9 Extension: improve server-generate help text 2024-06-23 13:33:02 +10:00
Campbell Barton
c78adfc698 Extensions: use str.casefold for case insensitive search
`str.casefold` is intended for case insensitive string matching and
finds more matches with some unicode characters.
2024-06-23 12:57:08 +10:00
Campbell Barton
6019aa304b Extensions: Improve "server-generate" site, group by type, include links 2024-06-23 12:50:35 +10:00
Campbell Barton
cf73897690 Extensions: add HTML generation to the "server-generate" command
- 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.
2024-06-22 23:48:00 +10:00
Campbell Barton
fc3e0507cc Extensions: development functionality to mark all & clear marks
- 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.
2024-06-22 23:03:52 +10:00
Campbell Barton
1ba06956e7 Extensions: support platform & version from URL parameters
Improve errors when dropping incompatible extensions, where previously
the extension would report as being unknown.
2024-06-22 19:13:45 +10:00
Campbell Barton
91d5a639dc Extensions: prevent install/upgrade while sync is in progress
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.
2024-06-21 16:51:57 +10:00
Campbell Barton
72af4d0977 Cleanup: use a set to store enabled add-on module names
Was using a dictionary when the value was never used.
2024-06-21 16:03:11 +10:00
Campbell Barton
78a5ade1be Extensions: remove disabled UI logic 2024-06-21 15:42:11 +10:00
Campbell Barton
c312f20627 Extensions: add an extension menu for each extension
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>
2024-06-21 15:41:45 +10:00
Campbell Barton
91ba2e10ba Extensions: avoid duplicate "." for legacy add-on descriptions 2024-06-21 12:48:33 +10:00
Campbell Barton
38e25d7838 UI: tweaks to extension & addon items
- 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>
2024-06-21 11:34:10 +10:00
Campbell Barton
72ef03d5a1 Extensions: split add-ons & extensions into separate preferences
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.
2024-06-21 10:42:53 +10:00
Brecht Van Lommel
5a2053a8b6 Fix: Missing description for Copy Global Transform add-on 2024-06-20 14:25:04 +02:00
Campbell Barton
1eda5bca68 Fix error with all local extensions showing as orphan
Also correct wording in install-file help text.
2024-06-20 21:56:31 +10:00
Campbell Barton
801e47f42a Extensions: support "Install from Disk" for remote repositories
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.
2024-06-20 17:10:01 +10:00
Campbell Barton
e2522e5f03 Extensions: support displaying "Orphan" extensions
Extensions in remote repositories that have no remote entries (orphans)
are now listed in the UI and the "list" sub-command.

Required for installing into remote repositories from disk (see #122302)

Details:

- Consistent ordering (local, remote) arguments.
- Use zip(..., strict=True) when sequences are expected to be aligned.
2024-06-20 15:16:05 +10:00
Campbell Barton
da3461f8eb Fix #123241: Wrong dialog shown when dropping an unsupported package
Dropping an extension URL for an incompatible package displayed the
"Unknown Repository" dialog.

Resolve by detecting the case of an unknown package being dropped from
a known repository. Noting the package may not be compatible.
2024-06-19 20:47:55 +10:00
Campbell Barton
6eb2b5f47b Fix local extension errors being shown as remote errors
Also fix error with non extension add-on display by removing
an exception for extensions which is no longer needed.
2024-06-19 15:58:45 +10:00
Nathan Vegdahl
295df94478 Anim: add "legacy behavior" option to Limit Rotation constraint
This adds a "Legacy Behavior" option to the Limit Rotation constraint that makes
it behave how Limit Rotation constraints did prior to
ed2408400d. Newly created constraints have this
option disabled, but versioning code enables the option on constraints from
older files to ensure that the behavior of e.g. existing rigs is not altered.

This is one part of a two-part fix for #123105. The other part is in PR
extensions/rigify#4.

Pull Request: https://projects.blender.org/blender/blender/pulls/123361
2024-06-18 18:29:25 +02:00
Campbell Barton
1ed6449c82 Extensions: better error message when already installed
Change the main error messages that happens when we drag and drop an
extension URL.

Ref !123242

Co-authored-by: Dalai Felinto <dalai@blender.org>
2024-06-18 19:49:36 +10:00
Campbell Barton
09be28794a Fix references to undefined modules/variables, remove unused import 2024-06-18 19:21:15 +10:00
Campbell Barton
f98e422e63 Extensions: support build --split-platforms, generated manifest data
- Add an option to build a separate package for each platform, this is
  useful to produce smaller packages when large wheels are included.

- Add a reserved field: "[build.generated]" to the manifest when
  splitting by platform which overrides the root-level platform
  when it exists.
2024-06-18 16:29:57 +10:00
Bastien Montagne
b143cc1885 I18N: Remove 'edit translation' features from the Blender UI.
This feature was not maintained for a long time already, and would have
required a lot of work to make it sensible and usable after 'recent'
changes (like the move to weblate translation platform).

For details see also
https://devtalk.blender.org/t/ui-translation-tools-remove-edit-translation-feature-from-blender-ui-in-4-2lts-release/34947
2024-06-17 12:17:55 +02:00
Jeroen Bakker
52d72d9fbb Fix #122847: Show Transparent Render Pass
EEVEE has a transparent render pass that renders materials where
the render mode is set to blended. This was introduced when EEVEE-Next
was still in development, but was never fully backported.

This PR adds the missing pieces.

Pull Request: https://projects.blender.org/blender/blender/pulls/123298
2024-06-17 09:35:03 +02:00
Miguel Pozo
a11d3c6c01 EEVEE: Add Ray Visibility > Camera support
FIx #122980.

Pull Request: https://projects.blender.org/blender/blender/pulls/123248
2024-06-15 08:54:20 +02:00
Damien Picard
4719ce5d56 I18n: Allow translation of extension tags and permissions
The new extension system introduces tags, similar to categories from
legacy add-ons, and permissions. A hardcoded list is supported for
each, available in the docs:
- https://docs.blender.org/manual/en/dev/advanced/extensions/tags.html
- https://developer.blender.org/docs/features/extensions/schema/

This change allows extraction of these new metadata to the translation
files.

In order to disambiguate the new messages, tags use the new "Script"
translation context. Permissions are lower case, so there is a low
risk of collision, and they use the default context.

While the tags are defined per-platform, with extensions.blender.org
being the only one available currently, they are extracted as a single
list.

Pull Request: https://projects.blender.org/blender/blender/pulls/123150
2024-06-14 16:35:54 +02:00
Campbell Barton
5b30ded989 Extensions: support enabling a repository with drag & drop
When dropping an extension onto a repository which is disabled,
show a popup that optionally enables the disabled repository.

Part of #120665.
2024-06-15 00:22:36 +10:00
Campbell Barton
a25c386c4a Extensions: remove add-on local preferences
This was only being used for a single debugging option,
additional developer reports are now used when enabling
the extensions debugging option (under experimental).
2024-06-14 15:32:07 +10:00