UI: Status Bar Display for POSELIB_OT_blend_pose_asset

Simplify and improve the status bar display by adding icons and
state highlighting while running "Blend Pose Asset".

Pull Request: https://projects.blender.org/blender/blender/pulls/133397
This commit is contained in:
Harley Acheson
2025-01-22 03:30:40 +01:00
committed by Harley Acheson
parent ecdeeca5b3
commit efe75841d3
3 changed files with 25 additions and 8 deletions

View File

@@ -535,21 +535,19 @@ static int poselib_blend_modal(bContext *C, wmOperator *op, const wmEvent *event
}
if (pbd->needs_redraw) {
char status_string[UI_MAX_DRAW_STR];
char slider_string[UI_MAX_DRAW_STR];
char tab_string[50];
ED_slider_status_string_get(pbd->slider, slider_string, sizeof(slider_string));
WorkspaceStatus status(C);
if (pbd->state == POSE_BLEND_BLENDING) {
STRNCPY(tab_string, IFACE_("[Tab] - Show original pose"));
status.item(IFACE_("Show Original Pose"), ICON_EVENT_TAB);
}
else {
STRNCPY(tab_string, IFACE_("[Tab] - Show blended pose"));
status.item(IFACE_("Show Blended Pose"), ICON_EVENT_TAB);
}
SNPRINTF(status_string, IFACE_("%s | %s | [Ctrl] - Flip Pose"), tab_string, slider_string);
ED_workspace_status_text(C, status_string);
ED_slider_status_get(pbd->slider, status);
status.item_bool(IFACE_("Flip Pose"), pbd->is_flipped, ICON_EVENT_CTRL);
poselib_blend_apply(C, op);
}

View File

@@ -12,6 +12,7 @@
struct Main;
struct bContext;
class WorkspaceStatus;
namespace blender::bke::id {
class IDRemapper;
@@ -86,6 +87,8 @@ void ED_slider_status_string_get(const tSlider *slider,
char *status_string,
size_t size_of_status_string);
void ED_slider_status_get(const tSlider *slider, WorkspaceStatus &status);
float ED_slider_factor_get(const tSlider *slider);
void ED_slider_factor_set(tSlider *slider, float factor);

View File

@@ -556,6 +556,22 @@ void ED_slider_status_string_get(const tSlider *slider,
increments_str);
}
void ED_slider_status_get(const tSlider *slider, WorkspaceStatus &status)
{
if (slider->allow_overshoot_lower || slider->allow_overshoot_upper) {
status.item_bool(IFACE_("Overshoot"), slider->overshoot, ICON_EVENT_E);
}
else {
status.item(IFACE_("Overshoot Disabled"), ICON_INFO);
}
status.item_bool(IFACE_("Precision"), slider->precision, ICON_EVENT_SHIFT);
if (slider->allow_increments) {
status.item_bool(IFACE_("Increments"), slider->increments, ICON_EVENT_CTRL);
}
}
void ED_slider_destroy(bContext *C, tSlider *slider)
{
/* Remove draw callback. */