Commit Graph

132 Commits

Author SHA1 Message Date
Damien Picard
f87d4e4e40 I18n: Extract and disambiguate a few messages
Extract
- Cycles denoiser enum.
- Extensions user preferences UI.
- Node operator poll message from new node function.

Improve
- Split "(Enabled|Disabled) on startup, overriding the preference."
into two messages.

Disambiguate
- "Add" when describing the action of adding something should use the
  Operator context.
- "Dimensions", in noise textures.
- "Transform" as a noun, the matrix transform type of Geometry Nodes,
  as opposed to the verb to move things in space.
- "Parent" as a noun or verb (the parent of an object, to parent an
  object to another).

Some issues reported by Satoshi Yamasaki, deathblood, and Gabriel Gazzán.

Pull Request: https://projects.blender.org/blender/blender/pulls/122969
2024-06-13 12:15:55 +02:00
Campbell Barton
c6680ce7ca Extensions: include the version by default when building packages
Use the `{manifest_id}-{version}.zip` for the generated file
unless an explicit name is given.

Exclude all *.zip files located in the package root.
2024-06-12 22:38:32 +10:00
Campbell Barton
bda9a44785 Extensions: use "v1" version for the generated repository meta-data 2024-06-12 22:38:32 +10:00
Sergey Sharybin
2cdd9c1b2c Fix: Syntax error after recent extensions change
Caused by 4d8eea1402.
2024-06-12 12:08:59 +02:00
Campbell Barton
4d8eea1402 Extensions: convert package listings into a dictionary when loaded
Changes to the remote repository JSON format hadn't been properly
accounted for, a quick-fix was left in that converted the JSON
package listing into a dictionary as it was accessed (every redraw).

Update the behavior to perform the conversion when loading the data
from the JSON. This is also needed for multi platform & blender-version
support.
2024-06-12 16:50:08 +10:00
Campbell Barton
c99a40b286 Extensions: basic validation of remote repository data
Prevent non-compliant data in remote repositories from causing errors
in Blender's interface.

Move from a dictionary to a named-tuple which uses normalized values.
2024-06-12 15:13:04 +10:00
Campbell Barton
820fc124d4 Extensions: store repository data in a named tuple
No functional changes, adding more specific typing information helps
with further improvements.
2024-06-12 12:41:40 +10:00
Campbell Barton
cd741650d0 Fix incorrect check for the extension manifests time-stamp
The time-stamp on the directory was checked, not the manifest file.
2024-06-12 12:36:55 +10:00
Campbell Barton
43356044eb Extensions: add the ability to create a repository that doesn't exist
When dropping a URL from an unknown repository add a dialog to support
adding a new repository.
2024-06-11 22:37:29 +10:00
Campbell Barton
f7d5d6d88f Fix error canceling an extension operator before it's started 2024-06-11 22:37:29 +10:00
Campbell Barton
12ff1ffe5b Extensions: remove add-ons which don't have a built-in upgrade opton
Previously these were shown as missing add-ons, since they have been
intentionally removed, remove them as part of versioning instead
of showing them as "Missing Add-ons". This is especially important
for X3D & STL which were enabled by default which meant any user
loading 4.1 preferences would have them shown as missing add-ons.
2024-06-11 19:53:38 +10:00
Campbell Barton
b46f6a4007 Extensions: add sub-modules that weren't being reloaded 2024-06-11 16:19:21 +10:00
Campbell Barton
a24add4a66 Extensions: support read-only system repositories
Local repositories no longer convert manifest files into a JSON file
(that matched the format of the remote repositories JSON data).
Instead the data is loaded directly from the manifest files.

This is necessary to support read-only "System" repositories.

Use a class to generalize loading from both data sources to simplify the
implementation which was previously inlined.

This fixes an error where stale data from the manifests was
sometimes used because the generated JSON was considered up to date.
2024-06-11 15:59:29 +10:00
Campbell Barton
714d5515a3 Unbreak extensions test 2024-06-11 13:38:04 +10:00
Campbell Barton
c3067dd62d Extensions: group refresh actions in the menu
- Rename "Check for Updates" to "Refresh Remote"
- Rename "Refresh All" to "Refresh Local"
2024-06-10 23:14:53 +10:00
Campbell Barton
c0754209ef Extensions: suppress warnings when repository directories don't exist
Re-calculating statistics for outdated packages printed exceptions
whenever the repository directory didn't exist.
2024-06-10 22:46:20 +10:00
Campbell Barton
554b3c5bd9 Extensions: support custom-directory for system repositories
While this is reasonably obscure, not supporting this caused the UI
to be confusing and there is no strong reason not to support this.
2024-06-10 22:22:07 +10:00
Campbell Barton
26bddd6c66 Fix error adding a repository when offline
Workaround the exception although other methods of syncing that
don't call the operator are worth investigating.
2024-06-10 21:39:19 +10:00
Campbell Barton
e0612b3c03 Fix undefined variable use when an extension repo has no remote data 2024-06-10 21:26:45 +10:00
Damien Picard
de139dd7e4 UI: Fix and improve a few messages
- "Show the result of running commands in the main interface...": add
  punctuation.
- "Re-Installed" -> "Reinstalled" seems more common.
- "increase_" and "decrease_subdivision" in the Grease Pencil
  modal...: use title case instead of snake case for label.
- "Use a automatic number..." -> "an", typo.
- "... points,{} splines": missing space.
- "End Frame is larger than Start Frame": wrong order in error message.
- "Approximate the object as sphere, which diameter is equal to
  thickness the defined...": grammar.
- "Show Seconds" -> "Use Timecode": this option is not necessarily about
  seconds. Suggested by Pablo Vasquez.
- Brightness and contrast node input descriptions: add missing spaces.
- "Gamma controls the relative intensity... full white.": remove
  trailing ".".

Pull Request: https://projects.blender.org/blender/blender/pulls/122972
2024-06-10 13:26:05 +02:00
Nathan Burnham
852d658a85 PyAPI Doc: fix formatting error
Ref: !122983
2024-06-10 17:01:00 +10:00
Campbell Barton
5fda92a44f Extension: defer loading extensions JSON/TOML meta-data until needed
Repositories JSON & manifests were being loaded at startup.
Lazily load this data to prevent unnecessary overhead.
2024-06-10 00:24:00 +10:00
Campbell Barton
ff5909e441 Extensions: restore the "Refresh" operator
The old add-ons UI had a "Refresh" operator that would re-scan
the file-system and show any changes.

Add an equivalent operator that works for both extensions and legacy
add-ons and add it to the extension menu.

This is useful for a few situations:

- Refresh based on changes to "System" repositories which are read-only
  from Blender and intended to be manipulated outside of Blender.
- Anyone managing their own "User" repository.
- For developers to create extensions, where re-starting to see changes
  to meta-data is inconvenient.
- Troubleshooting problems parsing extension meta-data as problems are
  reported to the operator.
2024-06-09 20:20:27 +10:00
Campbell Barton
b0232b4e0e Cleanup: various warnings from pylint for extensions & addons 2024-06-08 23:33:45 +10:00
Campbell Barton
5f06d3aa17 Extensions: consider system repositories read-only
The following operations have been removed for system repositories:

- Installing from disk.
- Uninstall extensions.
- Delete files (when removing the repository).

Also change the operator to remove a repository so the option to
remove files is now a boolean instead of an enum. While a dynamic
enum can be made to work, this option is logically a boolean.
2024-06-08 23:04:17 +10:00
Campbell Barton
09ae9377f1 Extensions: reduce the timer frequency to avoid too much overhead
Since these actions are no longer blocking, 100 times a second could
add unnecessary overhead (although updates are only shown when changes
are detected). Nevertheless, reduce the frequency to 10 times a second.
2024-06-08 13:32:26 +10:00
Campbell Barton
4547f4106a Extensions: use the operators cancel callback shutdown processes
When installing extensions, the user could exit Blender which wasn't
being handled properly - the processes would be left running and raise
a broken pipe error (on Linux).

Resolve this by canceling the processes, matching the behavior of when
escape is pressed.

This means exiting Blender while installing/updating wont leave the
repositories in an unknown state.
2024-06-08 13:32:25 +10:00
Campbell Barton
4718d68349 Extensions: expose extensions debug option in release builds
These are useful for more verbose output and expose useful utilities
for development.
2024-06-08 13:32:24 +10:00
Campbell Barton
451141a77a Extensions: make install/upgrade non-blocking
Run extension commands as a non-blocking operator.
2024-06-08 00:44:44 +10:00
Campbell Barton
c0f39e7b40 Extensions: correct 3D coat mapping 2024-06-07 21:44:14 +10:00
Campbell Barton
059dc93cde Extensions: support refreshing local repositories when offline
Since [0] there was no way to refresh local repositories,
with the poll messages suggesting to restart Blender to see updates
which isn't practical for developers.

The ability to refresh was prevented when "Online Access" was disabled,
meaning a developer couldn't easily develop their own add-ons unless
they were online.

[0]: 651621da0d
2024-06-07 17:36:59 +10:00
Campbell Barton
3dd8c826b5 Extensions: correct the descriptions for active repository actions 2024-06-07 16:52:51 +10:00
Campbell Barton
dc0e559cbb Extensions: remove intermediate operators for upgrade and sync
The buttons to upgrade or sync extensions called extension
operators via bpy.app.handlers, requiring awkward glue-code
which didn't show error reports in to the user.

Remove these operators and call the upgrade & sync operators directly.
2024-06-07 16:33:03 +10:00
Campbell Barton
9c60fe88fa Cleanup: de-duplicate check/update poll function 2024-06-07 15:11:54 +10:00
Campbell Barton
239f032186 Fix #122857: error validating older permissions list 2024-06-07 12:49:16 +10:00
Campbell Barton
98bb157ad9 License headers: add SPDX header
Also include "addons_core" in license check.
2024-06-07 12:09:58 +10:00
Campbell Barton
fa5f2354f7 Extensions: adjust add-ons shown in missing built-in extensions
Based on feedback in !122727, include previously built-in add-ons
in the built-in extensions panel even if there is no support for
adding it back via the extensions repository.
2024-06-06 18:19:54 +10:00
Campbell Barton
8cb94adbef Extensions: support updated permissions table in the manifest
- Update the example manifest.
- Validate the values are short, single line strings.
2024-06-06 17:42:20 +10:00
Campbell Barton
d5850809cd Cleanup: update Makefile to quite mypy errors, remove redundant check 2024-06-06 17:40:24 +10:00
Campbell Barton
fc0a538168 Extensions: translate each permission individually
Without translating terms individually, the translation lookup table
would have had to included every permutation of permissions.
2024-06-06 16:42:22 +10:00
Campbell Barton
2533ff39f9 Extensions: support replacing missing legacy add-ons with extensions
This groups all the add-ons from 4.1 which were enabled but are no
longer distributed with Blender and provides an easy way for users to
install them. This panel is collapsed by default.

Ref !122727

Co-authored-by: Dalai Felinto <dalai@blender.org>
2024-06-06 14:41:20 +10:00
Campbell Barton
809be0c8e0 Extensions: disable translation for labels such as URL & repo name 2024-06-06 10:20:13 +10:00
Campbell Barton
e60887c642 Cleanup: address mypy warnings 2024-06-06 10:07:13 +10:00
Campbell Barton
b56ddb6c90 Fix error building an extension without any paths defined
When the [build] table was defined without any paths, duplicate files
could be added to the zipfile.
2024-06-06 10:05:37 +10:00
Campbell Barton
613f00d5ff Fix variable use before assignment in extensions timer
Also remove unused global.
2024-06-06 09:55:13 +10:00
Campbell Barton
83a2693818 Fix error with debugging operator to lock/unlock extension repos 2024-06-06 09:55:13 +10:00
Pablo Vazquez
7b601464c3 UI: Add new TAG icon
Introduce a new icon: `TAG`. A generic tag/label, to be used anywhere
there are tags.

Details and images in the pull request.

Pull Request: https://projects.blender.org/blender/blender/pulls/122738
2024-06-05 17:56:51 +02:00
Campbell Barton
7c143367d7 Extensions: use deflate compression for ZIP files
Replace LZMA with ZLIB compression as default tools on Linux & Windows
can't decompress these ZIP files and some users wish to open and inspect
the extensions.

While LZMA has the potential for significantly better compression it
turns out the actual gains were marginal for extensions that contain
many Python files (compared with `tar.lzma`) because each file is
compressed individually, see #122710.
2024-06-05 17:18:42 +10:00
Campbell Barton
8719057b4a Cleanup: unused arguments and warnings raised by pylint 2024-06-05 16:21:20 +10:00
Campbell Barton
17ec64770c Extensions: ensure paths are always included for the "build" command
Scanning the file-system for paths to include didn't detect cases when
explicitly included paths (such as wheels) were missing.

Change the logic to build a list of paths which is merged with pattern
matched paths (de-duplicating), then add all files into the ZIP.
Any missing paths will raise an error.
2024-06-05 15:50:14 +10:00