From c5ae2916dbaf37f9a335656c7d650f7a9b82a2b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 7 May 2024 11:56:49 +0200 Subject: [PATCH] Add `label` to job settings This gives job type authors more control over how settings are presented in Blender's job submission GUI. If a job setting does not define a label, its `key` is used to generate one (like Flamenco 3.5 and older). Note that this isn't used in the web interface yet. --- CHANGELOG.md | 2 ++ addon/flamenco/job_types_propgroup.py | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c7107796..c8ce6529 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ bugs in actually-released versions. ## 3.6 - in development +- Add `label` to job settings, to have full control over how they are presented in Blender's job submission GUI. If a job setting does not define a label, its `key` is used to generate one (like Flamenco 3.5 and older). + ## 3.5 - released 2024-04-16 - Add MQTT support ([docs](https://flamenco.blender.org/usage/manager-configuration/mqtt/)). Flamenco Manager can now send internal events to an MQTT broker. diff --git a/addon/flamenco/job_types_propgroup.py b/addon/flamenco/job_types_propgroup.py index e5de0ce2..48e2c3a9 100644 --- a/addon/flamenco/job_types_propgroup.py +++ b/addon/flamenco/job_types_propgroup.py @@ -304,8 +304,8 @@ def _create_property(job_type: _AvailableJobType, setting: _AvailableJobSetting) if not setting.get("editable", True): prop_kwargs["get"] = _create_prop_getter(job_type, setting) - prop_name = _job_setting_key_to_label(setting.key) - prop = prop_type(name=prop_name, **prop_kwargs) + prop_label = _job_setting_label(setting) + prop = prop_type(name=prop_label, **prop_kwargs) return prop @@ -316,10 +316,10 @@ def _create_autoeval_property( assert isinstance(setting, AvailableJobSetting) - setting_name = _job_setting_key_to_label(setting.key) + setting_label = _job_setting_label(setting) prop_descr = ( "Automatically determine the value for %r when the job gets submitted" - % setting_name + % setting_label ) prop = bpy.props.BoolProperty( @@ -379,13 +379,13 @@ def _job_type_to_class_name(job_type_name: str) -> str: return job_type_name.title().replace("-", "") -def _job_setting_key_to_label(setting_key: str) -> str: - """Change 'some_setting_key' to 'Some Setting Key'. +def _job_setting_label(setting: _AvailableJobSetting) -> str: + """Return a suitable label for this job setting.""" - >>> _job_setting_key_to_label('some_setting_key') - 'Some Setting Key' - """ - return setting_key.title().replace("_", " ") + label = setting.get("label", default="") + if label: + return label + return setting.key.title().replace("_", " ") def _set_if_available(