UI: move gizmo orientation settings into popover
Instead of link toggle with enum, use a single popover that contains both settings. The code for this isn't nice - needing 3x panels for now. See D4075
This commit is contained in:
parent
25fcb44d2d
commit
2af0ec9457
|
@ -67,13 +67,25 @@ class _template_widget:
|
|||
class TRANSFORM_GGT_gizmo:
|
||||
@staticmethod
|
||||
def draw_settings_with_index(context, layout, index):
|
||||
row = layout.row(align=True)
|
||||
scene = context.scene
|
||||
orientation_slot = scene.transform_orientation_slots[index]
|
||||
value = orientation_slot.use
|
||||
row.prop(orientation_slot, "use", text="", icon='LINKED' if value else 'UNLINKED')
|
||||
if not value:
|
||||
row.prop(orientation_slot, "type", text="")
|
||||
orient_slot = scene.transform_orientation_slots[index]
|
||||
use_global = orient_slot.use_global
|
||||
row = layout.row(align=True)
|
||||
|
||||
row.label(text="Orientation:")
|
||||
|
||||
popover_kw = {
|
||||
"panel": "VIEW3D_PT_transform_orientations_gizmo_" f"{index}",
|
||||
}
|
||||
|
||||
if use_global:
|
||||
popover_kw["text"], popover_kw["icon"] = "Scene", 'OBJECT_ORIGIN'
|
||||
else:
|
||||
popover_kw["text"], popover_kw["icon_value"] = orient_slot.ui_info()
|
||||
|
||||
sub = layout.row()
|
||||
sub.ui_units_x = 4
|
||||
sub.popover(**popover_kw)
|
||||
|
||||
|
||||
class _defs_view3d_generic:
|
||||
|
|
|
@ -5270,6 +5270,40 @@ class VIEW3D_PT_transform_orientations(Panel):
|
|||
row.operator("transform.delete_orientation", text="", icon='X', emboss=False)
|
||||
|
||||
|
||||
# XXX, each panel needs to access a different orientation index.
|
||||
# look into a way to pass this from the UI that draws it.
|
||||
def VIEW3D_PT_transform_orientations_gizmo_factory(index):
|
||||
class VIEW3D_PT_transform_orientations_other_n(Panel):
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'HEADER'
|
||||
bl_label = "Transform Orientations"
|
||||
bl_ui_units_x = 8
|
||||
bl_idname = "VIEW3D_PT_transform_orientations_gizmo_" + str(index)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.label(text="Transform Orientations")
|
||||
|
||||
scene = context.scene
|
||||
orient_slot = scene.transform_orientation_slots[index]
|
||||
|
||||
layout.prop(orient_slot, "use_global", text="Scene Orientation", icon='OBJECT_ORIGIN')
|
||||
use_global = orient_slot.use_global
|
||||
|
||||
col = layout.column()
|
||||
col.active = not use_global
|
||||
col.column().prop(orient_slot, "type", expand=True)
|
||||
|
||||
# Only 'VIEW3D_PT_transform_orientations' can edit
|
||||
|
||||
return VIEW3D_PT_transform_orientations_other_n
|
||||
|
||||
VIEW3D_PT_transform_orientations_gizmo_1 = VIEW3D_PT_transform_orientations_gizmo_factory(1)
|
||||
VIEW3D_PT_transform_orientations_gizmo_2 = VIEW3D_PT_transform_orientations_gizmo_factory(2)
|
||||
VIEW3D_PT_transform_orientations_gizmo_3 = VIEW3D_PT_transform_orientations_gizmo_factory(3)
|
||||
|
||||
|
||||
class VIEW3D_PT_gpencil_origin(Panel):
|
||||
bl_space_type = 'VIEW_3D'
|
||||
bl_region_type = 'HEADER'
|
||||
|
@ -5782,6 +5816,9 @@ classes = (
|
|||
VIEW3D_PT_gpencil_origin,
|
||||
VIEW3D_PT_gpencil_lock,
|
||||
VIEW3D_PT_transform_orientations,
|
||||
VIEW3D_PT_transform_orientations_gizmo_1,
|
||||
VIEW3D_PT_transform_orientations_gizmo_2,
|
||||
VIEW3D_PT_transform_orientations_gizmo_3,
|
||||
VIEW3D_PT_overlay_gpencil_options,
|
||||
VIEW3D_PT_context_properties,
|
||||
TOPBAR_PT_gpencil_materials,
|
||||
|
|
|
@ -1242,10 +1242,10 @@ static void gizmo_xform_message_subscribe(
|
|||
RNA_pointer_create(&scene->id, &RNA_TransformOrientationSlot, orient_slot, &orient_ref_ptr);
|
||||
{
|
||||
extern PropertyRNA rna_TransformOrientationSlot_type;
|
||||
extern PropertyRNA rna_TransformOrientationSlot_use;
|
||||
extern PropertyRNA rna_TransformOrientationSlot_use_global;
|
||||
const PropertyRNA *props[] = {
|
||||
&rna_TransformOrientationSlot_type,
|
||||
&rna_TransformOrientationSlot_use,
|
||||
&rna_TransformOrientationSlot_use_global,
|
||||
};
|
||||
for (int i = 0; i < ARRAY_SIZE(props); i++) {
|
||||
if (props[i]) {
|
||||
|
|
|
@ -2237,9 +2237,9 @@ static void rna_def_transform_orientation_slot(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(prop, "Current Transform Orientation", "");
|
||||
|
||||
/* flag */
|
||||
prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
|
||||
prop = RNA_def_property(srna, "use_global", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SELECT);
|
||||
RNA_def_property_ui_text(prop, "Use", "Disable to unlink the orientation from the scene-setting");
|
||||
RNA_def_property_ui_text(prop, "Use", "Use scene orientation instead of a custom setting");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, NULL);
|
||||
|
||||
FunctionRNA *func;
|
||||
|
|
Loading…
Reference in New Issue