The property split flag was moved onto the column holding the add,
remove and move buttons, where it has no effect, instead of the column
drawing the active variable properties below the list.
This issue was introduced in 2cbd1b78e8.
Pull Request: https://projects.blender.org/blender/blender/pulls/163229
Part of #133001.
This adds project variables to Blender projects. Project variables are
basically just key-value pairs that the user can create in a project,
that all files within that project then have access to. A UI is provided
in Project Settings for the user to create, delete, and manage these
variables for the current project.
Project variables are typed, and can be an integer, float, or string.
String variables additionally have a subtype, which can be either 'NONE'
or 'FILEPATH'. Filepath strings are interpreted differently in path
templates: they are left unescaped during template substitution,
allowing e.g. slashes etc. to pass through.
Project variable names are currently restricted to ascii alphanumeric
characters and underscores, much like identifiers in some programming
languages. This is not intended to necessarily be a permanent
restriction, but I think it makes sense to start off conservative and
lift restrictions later rather than start permissive and possibly have
to make breaking changes to restrict things later.
The reason for being conservative with names at all is because we may
want to do things in the future like reserve template expressions
starting with "$" to be for accessing environment variables, etc.
As a minor (potential) bonus, it also makes variable names a little
easier to identify at a glance in things like template expressions.
In addition to their name and value, project variables also have a
user-definable description, which shows up as a tool tip for that
variable in the variable list.
Project variables can be created and accessed in Python via the RNA
APIs, but practically their main use case is as variables in path
templates.
Pull Request: https://projects.blender.org/blender/blender/pulls/159770
This replaces `UILayout::label` calls with `UILayout::label_multiline`
when used with longer warnings and descriptions, allowing readability
in compact layouts.
See #161779
Pull Request: https://projects.blender.org/blender/blender/pulls/162111
---------
Co-authored-by: Ruben Messerschmidt <ruben.messerschmidt@outlook.com>
"Project" as a noun is newly introduced. Whereas it always meant the
verb, "to project e.g. a point onto a face", it now also means a
project as in "project management".
This commit adds the "Preferences" translation contexts to the few
current occurrences of the noun.
Pull Request: https://projects.blender.org/blender/blender/pulls/162426
Instead of reusing `ERROR` for both warnings and errors, and the Info
Editor icon for "info" label comments, use the new icons from !161002.
* Use `STATUS_WARNING` when the code refers to simple warnings, the
feature might still work.
* Use `STATUS_ERROR` when the code refers to incompatibility, broken
functionality, general errors.
* Use `STATUS_INFO` for every info label. Keep `INFO` for the editor.
* Sometimes `WARNING_LARGE` was used, that should only be used for
dialogs. Use the regular warning instead, it looks almost the same.
* When extra contrast is needed, the filled version is used.
Mostly no big visual changes, other than warnings that were meant as
actual errors using the proper icon now.
See !161038 for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/161038
Adds minimal projects to Blender. Part of #133001
The high-level additions in this PR are:
- A single global run-time Blender project, which can either exist or
not depending on whether a project is currently loaded. A python API
is provided for creating, clearing, and modifying this run-time project.
- An on-disk TOML serialization of projects. For a given project, this
lives in `<project_root>/.blender_project/config.toml`.
The `.blender_project` directory functions similarly to a `.git`
directory: any files under the directory that it's in are considered
part of that project. When opening a file under a project, that
project is automatically loaded.
- New `project_root` and `project_name` path template variables, which
are available whenever there is a project.
- A new Project editor type, where the user can create/edit/manage projects.
The UI and UX follow the "MVP - Single Project" design in:
https://devtalk.blender.org/t/2025-11-25-project-setup-meeting/43475
The core Blender project data structures are defined in C++. Currently
they are quite minimal, and only accommodate a project name and root
path. This will be expanded in the future as more project features from
#133001 are added.
Loading/saving and the on-disk format of projects is defined entirely
in Python. This was partly to make development easier, but also for
dog-fooding to ensure that the APIs are reasonable: in the future we
hope to allow Python extensions to define other ways of loading/saving
projects, to accommodate a wider range of production environments.
Co-authored-by: Sebastian Parborg <sebastian@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/140924