Animation: Expose "mute" for drivers in their properties UI

In the driver editor and the "edit driver" popover, add a checkbox that
can mute the driver. This is the same functionality as the checkbox in
the driver editor's channel list, but then exposed in a different place
in the UI.

This is for convenience, such that a driver can now be muted by
right-clicking on the driven property, choosing "Edit Driver", then
muting it there. The same checkbox was added to the regular driver
editor's header for consistency.

Reviewed By: Severin

Maniphest Tasks: T101592

Differential Revision: https://developer.blender.org/D16173
This commit is contained in:
Sybren A. Stüvel 2022-10-06 19:06:48 +02:00
parent 46c40d7fa1
commit c592bff047
Notes: blender-bot 2023-02-23 11:28:31 +01:00
Referenced by issue #101592, Expose "mute" for drivers in the Edit Driver popup
Referenced by commit f2250b7a5b, Fix #105078: Regression: Memory leak in driver UI drawing code
1 changed files with 41 additions and 1 deletions

View File

@ -905,6 +905,45 @@ static void graph_panel_driverVar__transChan(uiLayout *layout, ID *id, DriverVar
/* ----------------------------------------------------------------- */
/* property driven by the driver - duplicates Active FCurve, but useful for clarity */
static void graph_draw_driven_property_enabled_btn(uiLayout *layout,
ID *id,
FCurve *fcu,
const char *label)
{
PointerRNA fcurve_ptr;
RNA_pointer_create(id, &RNA_FCurve, fcu, &fcurve_ptr);
uiBlock *block = uiLayoutGetBlock(layout);
uiDefButR(block,
UI_BTYPE_CHECKBOX_N,
0,
label,
0,
0,
UI_UNIT_X,
UI_UNIT_Y,
&fcurve_ptr,
"mute",
0,
0,
0,
0,
0,
TIP_("Let the driver determine this property's value"));
}
static void graph_panel_drivers_header(const bContext *C, Panel *panel)
{
bAnimListElem *ale;
FCurve *fcu;
if (!graph_panel_context(C, &ale, &fcu)) {
return;
}
graph_draw_driven_property_enabled_btn(panel->layout, ale->id, fcu, IFACE_("Driver"));
}
static void graph_draw_driven_property_panel(uiLayout *layout, ID *id, FCurve *fcu)
{
PointerRNA fcu_ptr;
@ -1315,7 +1354,7 @@ static void graph_panel_drivers_popover(const bContext *C, Panel *panel)
uiItemS(layout);
/* Drivers Settings */
uiItemL(layout, IFACE_("Driver Settings:"), ICON_NONE);
graph_draw_driven_property_enabled_btn(panel->layout, id, fcu, IFACE_("Driver:"));
graph_draw_driver_settings_panel(panel->layout, id, fcu, true);
}
}
@ -1432,6 +1471,7 @@ void graph_buttons_register(ARegionType *art)
strcpy(pt->category, "Drivers");
strcpy(pt->translation_context, BLT_I18NCONTEXT_DEFAULT_BPYRNA);
pt->draw = graph_panel_drivers;
pt->draw_header = graph_panel_drivers_header;
pt->poll = graph_panel_drivers_poll;
BLI_addtail(&art->paneltypes, pt);