UI: Layout changes for new checkbox layout possibilities
Follow-up to previous commit. Some examples: {F8473507} {F8473508} {F8473509} {F8473510} For more screenshots, please see D7430. We use column or row headings here to bring more structure, and to give the eye visual anchors which aid eye-scanning. The left-aligned checkboxes likewise help with this. And we keep the adherence to the center line, so the alignment matches up between the various buttons and controls. * Changes the property split percentage from 50/50% to 40/60%. This is needed to give enough space for the checkboxes. But in most cases this looks better anyway - see Transform panel. In some cases it simply fills out the available space more efficently. * Fix various hacks where we previously used manually defined splits. When we did this, the alignment was never quite right, and the layout code was a mess. * Adds column headings to many places where a list of checkboxes all share a common purpose or leading text. * Add checkbox + value configurations various places where a checkbox only serves to enable the value slider * Removes most uses of grid flow layout. The grid flow layouts combine poorly with column headings, and also they would mess alignment up badly. The grid flow layouts also often made buttons and controls jump around on the screen if you would just resize editors slightly, causing visual confusion, making users lose their place. The logic for at what time the list of items would re-flow was often flawed, jumping to multiple columns too fast or too late - and frankly, the grid flow layouts would often just look bad. Maniphest Task: https://developer.blender.org/T65965 Differential Revision: https://developer.blender.org/D7430 Reviewed by: Brecht Van Lommel, Pablo Vazquez. Most work here by William Reynish, few changes by Julian Eisel.
This commit is contained in:
parent
219049bb3b
commit
7fc60bff14
Notes:
blender-bot
2023-02-14 02:08:39 +01:00
Referenced by commit77187718e4
, Fix T78469: Output Metadata: Strip Name no longer accessible Referenced by commit6154aa1529
, Cleanup: remove redundant decorator for eevee 'overscan_size' Referenced by commit879032d2ab
, Cleanup: Correct order of proxy resolutions Referenced by commitd07dab0d61
, Fix T76225: Cycles View layer filters are grayed out while still working Referenced by issue #78469, UI: Output Metadata: Strip Name no long accessible Referenced by issue #76225, View layer filters are grayed out while still working. Referenced by issue #65965, Checkboxes alignment tweaks
|
@ -500,8 +500,9 @@ class CYCLES_RENDER_PT_light_paths_caustics(CyclesButtonsPanel, Panel):
|
|||
|
||||
col = layout.column()
|
||||
col.prop(cscene, "blur_glossy")
|
||||
col.prop(cscene, "caustics_reflective")
|
||||
col.prop(cscene, "caustics_refractive")
|
||||
col = layout.column(heading="Caustics", align=True)
|
||||
col.prop(cscene, "caustics_reflective", text="Reflective")
|
||||
col.prop(cscene, "caustics_refractive", text="Refractive")
|
||||
|
||||
|
||||
class CYCLES_RENDER_PT_motion_blur(CyclesButtonsPanel, Panel):
|
||||
|
@ -762,20 +763,13 @@ class CYCLES_RENDER_PT_filter(CyclesButtonsPanel, Panel):
|
|||
rd = scene.render
|
||||
view_layer = context.view_layer
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Include")
|
||||
col.prop(view_layer, "use_sky", text="Environment")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_ao", text="Ambient Occlusion")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_solid", text="Surfaces")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_strand", text="Hair")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_volumes", text="Volumes")
|
||||
if with_freestyle:
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_freestyle", text="Freestyle")
|
||||
col.active = rd.use_freestyle
|
||||
|
||||
|
@ -819,36 +813,27 @@ class CYCLES_RENDER_PT_passes_data(CyclesButtonsPanel, Panel):
|
|||
view_layer = context.view_layer
|
||||
cycles_view_layer = view_layer.cycles
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Include", align=True)
|
||||
col.prop(view_layer, "use_pass_combined")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_z")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_mist")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_normal")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_vector")
|
||||
col.active = not rd.use_motion_blur
|
||||
col = flow.column()
|
||||
sub = col.column()
|
||||
sub.active = not rd.use_motion_blur
|
||||
sub.prop(view_layer, "use_pass_vector")
|
||||
col.prop(view_layer, "use_pass_uv")
|
||||
col = flow.column()
|
||||
|
||||
col.prop(cycles_view_layer, "denoising_store_passes", text="Denoising Data")
|
||||
|
||||
col = layout.column(heading="Indexes", align=True)
|
||||
col.prop(view_layer, "use_pass_object_index")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_material_index")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = flow.column()
|
||||
col.prop(cycles_view_layer, "denoising_store_passes", text="Denoising Data")
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Debug", align=True)
|
||||
col.prop(cycles_view_layer, "pass_debug_render_time", text="Render Time")
|
||||
col = flow.column()
|
||||
col.prop(cycles_view_layer, "pass_debug_sample_count", text="Sample Count")
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
||||
layout.prop(view_layer, "pass_alpha_threshold")
|
||||
|
||||
|
@ -866,38 +851,26 @@ class CYCLES_RENDER_PT_passes_light(CyclesButtonsPanel, Panel):
|
|||
view_layer = context.view_layer
|
||||
cycles_view_layer = view_layer.cycles
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Diffuse")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer, "use_pass_diffuse_direct", text="Direct", toggle=True)
|
||||
row.prop(view_layer, "use_pass_diffuse_indirect", text="Indirect", toggle=True)
|
||||
row.prop(view_layer, "use_pass_diffuse_color", text="Color", toggle=True)
|
||||
col = layout.column(heading="Diffuse", align=True)
|
||||
col.prop(view_layer, "use_pass_diffuse_direct", text="Direct")
|
||||
col.prop(view_layer, "use_pass_diffuse_indirect", text="Indirect")
|
||||
col.prop(view_layer, "use_pass_diffuse_color", text="Color")
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Glossy")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer, "use_pass_glossy_direct", text="Direct", toggle=True)
|
||||
row.prop(view_layer, "use_pass_glossy_indirect", text="Indirect", toggle=True)
|
||||
row.prop(view_layer, "use_pass_glossy_color", text="Color", toggle=True)
|
||||
col = layout.column(heading="Glossy", align=True)
|
||||
col.prop(view_layer, "use_pass_glossy_direct", text="Direct")
|
||||
col.prop(view_layer, "use_pass_glossy_indirect", text="Indirect")
|
||||
col.prop(view_layer, "use_pass_glossy_color", text="Color")
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Transmission")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer, "use_pass_transmission_direct", text="Direct", toggle=True)
|
||||
row.prop(view_layer, "use_pass_transmission_indirect", text="Indirect", toggle=True)
|
||||
row.prop(view_layer, "use_pass_transmission_color", text="Color", toggle=True)
|
||||
col = layout.column(heading="Transmission", align=True)
|
||||
col.prop(view_layer, "use_pass_transmission_direct", text="Direct")
|
||||
col.prop(view_layer, "use_pass_transmission_indirect", text="Indirect")
|
||||
col.prop(view_layer, "use_pass_transmission_color", text="Color")
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Volume")
|
||||
row = split.row(align=True)
|
||||
row.prop(cycles_view_layer, "use_pass_volume_direct", text="Direct", toggle=True)
|
||||
row.prop(cycles_view_layer, "use_pass_volume_indirect", text="Indirect", toggle=True)
|
||||
col = layout.column(heading="Volume", align=True)
|
||||
col.prop(cycles_view_layer, "use_pass_volume_direct", text="Direct")
|
||||
col.prop(cycles_view_layer, "use_pass_volume_indirect", text="Indirect")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col = layout.column(heading="Other", align=True)
|
||||
col.prop(view_layer, "use_pass_emit", text="Emission")
|
||||
col.prop(view_layer, "use_pass_environment")
|
||||
col.prop(view_layer, "use_pass_shadow")
|
||||
|
@ -918,11 +891,10 @@ class CYCLES_RENDER_PT_passes_crypto(CyclesButtonsPanel, Panel):
|
|||
|
||||
cycles_view_layer = context.view_layer.cycles
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.use_property_split = False
|
||||
row.prop(cycles_view_layer, "use_pass_crypto_object", text="Object", toggle=True)
|
||||
row.prop(cycles_view_layer, "use_pass_crypto_material", text="Material", toggle=True)
|
||||
row.prop(cycles_view_layer, "use_pass_crypto_asset", text="Asset", toggle=True)
|
||||
col = layout.column(heading="Include", align=True)
|
||||
col.prop(cycles_view_layer, "use_pass_crypto_object", text="Object")
|
||||
col.prop(cycles_view_layer, "use_pass_crypto_material", text="Material")
|
||||
col.prop(cycles_view_layer, "use_pass_crypto_asset", text="Asset")
|
||||
|
||||
layout.prop(cycles_view_layer, "pass_crypto_depth", text="Levels")
|
||||
|
||||
|
@ -1012,10 +984,9 @@ class CYCLES_RENDER_PT_denoising(CyclesButtonsPanel, Panel):
|
|||
view_layer = context.view_layer
|
||||
cycles_view_layer = view_layer.cycles
|
||||
|
||||
split = layout.split()
|
||||
split.active = cycles_view_layer.use_denoising
|
||||
layout.active = cycles_view_layer.use_denoising
|
||||
|
||||
col = split.column(align=True)
|
||||
col = layout.column()
|
||||
|
||||
if show_optix_denoising(context):
|
||||
col.prop(cycles_view_layer, "use_optix_denoising")
|
||||
|
@ -1026,51 +997,29 @@ class CYCLES_RENDER_PT_denoising(CyclesButtonsPanel, Panel):
|
|||
return
|
||||
|
||||
col.prop(cycles_view_layer, "denoising_radius", text="Radius")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(cycles_view_layer, "denoising_strength", slider=True, text="Strength")
|
||||
col.prop(cycles_view_layer, "denoising_feature_strength", slider=True, text="Feature Strength")
|
||||
col.prop(cycles_view_layer, "denoising_relative_pca")
|
||||
|
||||
layout.separator()
|
||||
|
||||
split = layout.split(factor=0.5)
|
||||
split.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes
|
||||
col = layout.column()
|
||||
col.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Diffuse")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.use_property_split = False
|
||||
row = col.row(heading="Diffuse", align=True)
|
||||
row.prop(cycles_view_layer, "denoising_diffuse_direct", text="Direct", toggle=True)
|
||||
row.prop(cycles_view_layer, "denoising_diffuse_indirect", text="Indirect", toggle=True)
|
||||
|
||||
split = layout.split(factor=0.5)
|
||||
split.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Glossy")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.use_property_split = False
|
||||
row = col.row(heading="Glossy", align=True)
|
||||
row.prop(cycles_view_layer, "denoising_glossy_direct", text="Direct", toggle=True)
|
||||
row.prop(cycles_view_layer, "denoising_glossy_indirect", text="Indirect", toggle=True)
|
||||
|
||||
split = layout.split(factor=0.5)
|
||||
split.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Transmission")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.use_property_split = False
|
||||
row = col.row(heading="Transmission", align=True)
|
||||
row.prop(cycles_view_layer, "denoising_transmission_direct", text="Direct", toggle=True)
|
||||
row.prop(cycles_view_layer, "denoising_transmission_indirect", text="Indirect", toggle=True)
|
||||
|
||||
split = layout.split(factor=0.5)
|
||||
split.active = cycles_view_layer.use_denoising or cycles_view_layer.denoising_store_passes
|
||||
|
||||
|
||||
class CYCLES_PT_post_processing(CyclesButtonsPanel, Panel):
|
||||
bl_label = "Post Processing"
|
||||
|
@ -1084,7 +1033,7 @@ class CYCLES_PT_post_processing(CyclesButtonsPanel, Panel):
|
|||
|
||||
rd = context.scene.render
|
||||
|
||||
col = layout.column(align=True)
|
||||
col = layout.column(align=True, heading="Pipeline")
|
||||
col.prop(rd, "use_compositing")
|
||||
col.prop(rd, "use_sequencer")
|
||||
|
||||
|
@ -1273,22 +1222,18 @@ class CYCLES_OBJECT_PT_visibility(CyclesButtonsPanel, Panel):
|
|||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
layout = self.layout
|
||||
ob = context.object
|
||||
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_viewport", text="Show in Viewports", invert_checkbox=True, toggle=False)
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_render", text="Show in Renders", invert_checkbox=True, toggle=False)
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_select", text="Selectable", invert_checkbox=True, toggle=False)
|
||||
layout.prop(ob, "hide_select", text="Selectable", invert_checkbox=True, toggle=False)
|
||||
|
||||
col = layout.column(heading="Show in")
|
||||
col.prop(ob, "hide_viewport", text="Viewports", invert_checkbox=True, toggle=False)
|
||||
col.prop(ob, "hide_render", text="Renders", invert_checkbox=True, toggle=False)
|
||||
|
||||
if has_geometry_visibility(ob):
|
||||
cob = ob.cycles
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Mask")
|
||||
col.prop(cob, "is_shadow_catcher")
|
||||
col = flow.column()
|
||||
col.prop(cob, "is_holdout")
|
||||
|
||||
|
||||
|
@ -1312,24 +1257,16 @@ class CYCLES_OBJECT_PT_visibility_ray_visibility(CyclesButtonsPanel, Panel):
|
|||
cob = ob.cycles
|
||||
visibility = ob.cycles_visibility
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(visibility, "camera")
|
||||
col = flow.column()
|
||||
col.prop(visibility, "diffuse")
|
||||
col = flow.column()
|
||||
col.prop(visibility, "glossy")
|
||||
col = flow.column()
|
||||
col.prop(visibility, "transmission")
|
||||
col = flow.column()
|
||||
col.prop(visibility, "scatter")
|
||||
|
||||
if ob.type != 'LIGHT':
|
||||
col = flow.column()
|
||||
col.prop(visibility, "shadow")
|
||||
|
||||
layout.separator()
|
||||
sub = col.column()
|
||||
sub.prop(visibility, "shadow")
|
||||
|
||||
|
||||
class CYCLES_OBJECT_PT_visibility_culling(CyclesButtonsPanel, Panel):
|
||||
|
@ -1352,15 +1289,13 @@ class CYCLES_OBJECT_PT_visibility_culling(CyclesButtonsPanel, Panel):
|
|||
ob = context.object
|
||||
cob = ob.cycles
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
row = layout.row()
|
||||
row.active = scene.render.use_simplify and cscene.use_camera_cull
|
||||
row.prop(cob, "use_camera_cull")
|
||||
|
||||
col = flow.column()
|
||||
col.active = scene.render.use_simplify and cscene.use_camera_cull
|
||||
col.prop(cob, "use_camera_cull")
|
||||
|
||||
col = flow.column()
|
||||
col.active = scene.render.use_simplify and cscene.use_distance_cull
|
||||
col.prop(cob, "use_distance_cull")
|
||||
row = layout.row()
|
||||
row.active = scene.render.use_simplify and cscene.use_distance_cull
|
||||
row.prop(cob, "use_distance_cull")
|
||||
|
||||
|
||||
def panel_node_draw(layout, id_data, output_type, input_name):
|
||||
|
@ -1906,26 +1841,24 @@ class CYCLES_RENDER_PT_bake_influence(CyclesButtonsPanel, Panel):
|
|||
sub.prop(cbk, "normal_b", text="B")
|
||||
|
||||
elif cscene.bake_type == 'COMBINED':
|
||||
row = col.row(align=True)
|
||||
row.use_property_split = False
|
||||
row.prop(cbk, "use_pass_direct", toggle=True)
|
||||
row.prop(cbk, "use_pass_indirect", toggle=True)
|
||||
|
||||
flow = col.grid_flow(row_major=False, columns=0, even_columns=False, even_rows=False, align=True)
|
||||
col = layout.column(heading="Lighting", align=True)
|
||||
col.prop(cbk, "use_pass_direct")
|
||||
col.prop(cbk, "use_pass_indirect")
|
||||
|
||||
flow.active = cbk.use_pass_direct or cbk.use_pass_indirect
|
||||
flow.prop(cbk, "use_pass_diffuse")
|
||||
flow.prop(cbk, "use_pass_glossy")
|
||||
flow.prop(cbk, "use_pass_transmission")
|
||||
flow.prop(cbk, "use_pass_ambient_occlusion")
|
||||
flow.prop(cbk, "use_pass_emit")
|
||||
col = layout.column(heading="Contributions", align=True)
|
||||
col.active = cbk.use_pass_direct or cbk.use_pass_indirect
|
||||
col.prop(cbk, "use_pass_diffuse")
|
||||
col.prop(cbk, "use_pass_glossy")
|
||||
col.prop(cbk, "use_pass_transmission")
|
||||
col.prop(cbk, "use_pass_ambient_occlusion")
|
||||
col.prop(cbk, "use_pass_emit")
|
||||
|
||||
elif cscene.bake_type in {'DIFFUSE', 'GLOSSY', 'TRANSMISSION'}:
|
||||
row = col.row(align=True)
|
||||
row.use_property_split = False
|
||||
row.prop(cbk, "use_pass_direct", toggle=True)
|
||||
row.prop(cbk, "use_pass_indirect", toggle=True)
|
||||
row.prop(cbk, "use_pass_color", toggle=True)
|
||||
col = layout.column(heading="Contributions", align=True)
|
||||
col.prop(cbk, "use_pass_direct")
|
||||
col.prop(cbk, "use_pass_indirect")
|
||||
col.prop(cbk, "use_pass_color")
|
||||
|
||||
|
||||
class CYCLES_RENDER_PT_bake_selected_to_active(CyclesButtonsPanel, Panel):
|
||||
|
@ -2131,17 +2064,17 @@ class CYCLES_RENDER_PT_simplify_culling(CyclesButtonsPanel, Panel):
|
|||
|
||||
layout.active = rd.use_simplify
|
||||
|
||||
col = layout.column()
|
||||
col.prop(cscene, "use_camera_cull")
|
||||
sub = col.column()
|
||||
row = layout.row(heading="Camera Culling")
|
||||
row.prop(cscene, "use_camera_cull", text="")
|
||||
sub = row.column()
|
||||
sub.active = cscene.use_camera_cull
|
||||
sub.prop(cscene, "camera_cull_margin")
|
||||
sub.prop(cscene, "camera_cull_margin", text="")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(cscene, "use_distance_cull")
|
||||
sub = col.column()
|
||||
row = layout.row(heading="Distance Culling")
|
||||
row.prop(cscene, "use_distance_cull", text="")
|
||||
sub = row.column()
|
||||
sub.active = cscene.use_distance_cull
|
||||
sub.prop(cscene, "distance_cull_margin", text="Distance")
|
||||
sub.prop(cscene, "distance_cull_margin", text="")
|
||||
|
||||
|
||||
class CYCLES_VIEW3D_PT_shading_render_pass(Panel):
|
||||
|
|
|
@ -84,17 +84,12 @@ class DATA_PT_display(ArmatureButtonsPanel, Panel):
|
|||
|
||||
layout.prop(arm, "display_type", text="Display As")
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=False, even_rows=False, align=True)
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Show")
|
||||
col.prop(arm, "show_names", text="Names")
|
||||
col = flow.column()
|
||||
col.prop(arm, "show_axes", text="Axes")
|
||||
col = flow.column()
|
||||
col.prop(arm, "show_bone_custom_shapes", text="Shapes")
|
||||
col = flow.column()
|
||||
col.prop(arm, "show_group_colors", text="Group Colors")
|
||||
if ob:
|
||||
col = flow.column()
|
||||
col.prop(ob, "show_in_front", text="In Front")
|
||||
|
||||
|
||||
|
|
|
@ -360,8 +360,9 @@ class DATA_PT_camera_background_image(CameraButtonsPanel, Panel):
|
|||
col.prop(bg, "rotation")
|
||||
col.prop(bg, "scale")
|
||||
|
||||
col.prop(bg, "use_flip_x")
|
||||
col.prop(bg, "use_flip_y")
|
||||
col = box.column(heading="Flip")
|
||||
col.prop(bg, "use_flip_x", text="X")
|
||||
col.prop(bg, "use_flip_y", text="Y")
|
||||
|
||||
|
||||
class DATA_PT_camera_display(CameraButtonsPanel, Panel):
|
||||
|
@ -377,21 +378,12 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
|
|||
|
||||
col = layout.column(align=True)
|
||||
|
||||
col.separator()
|
||||
|
||||
col.prop(cam, "display_size", text="Size")
|
||||
|
||||
col.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=False, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Show")
|
||||
col.prop(cam, "show_limits", text="Limits")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_mist", text="Mist")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_sensor", text="Sensor")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_name", text="Name")
|
||||
|
||||
|
||||
|
@ -407,24 +399,20 @@ class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel):
|
|||
|
||||
cam = context.camera
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=False, even_rows=False, align=False)
|
||||
layout.prop(cam, "show_composition_thirds")
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Center", align=True)
|
||||
col.prop(cam, "show_composition_center")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_center_diagonal")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_thirds")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_golden")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_golden_tria_a")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_golden_tria_b")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_harmony_tri_a")
|
||||
col = flow.column()
|
||||
col.prop(cam, "show_composition_harmony_tri_b")
|
||||
col.prop(cam, "show_composition_center_diagonal", text="Diagonal")
|
||||
|
||||
col = layout.column(heading="Golden", align=True)
|
||||
col.prop(cam, "show_composition_golden", text="Ratio")
|
||||
col.prop(cam, "show_composition_golden_tria_a", text="Triangle A")
|
||||
col.prop(cam, "show_composition_golden_tria_b", text="Triangle B")
|
||||
|
||||
col = layout.column(heading="Harmony", align=True)
|
||||
col.prop(cam, "show_composition_harmony_tri_a", text="Triangle A")
|
||||
col.prop(cam, "show_composition_harmony_tri_b", text="Triangle B")
|
||||
|
||||
|
||||
class DATA_PT_camera_display_passepartout(CameraButtonsPanel, Panel):
|
||||
|
|
|
@ -276,23 +276,23 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
|
|||
col.prop(act_spline, "use_smooth")
|
||||
else:
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(act_spline, "use_cyclic_u")
|
||||
sub = col.column(heading="Cyclic", align=True)
|
||||
sub.prop(act_spline, "use_cyclic_u", text="U")
|
||||
if is_surf:
|
||||
sub.prop(act_spline, "use_cyclic_v", text="V")
|
||||
|
||||
if act_spline.type == 'NURBS':
|
||||
sub = col.column(align=True)
|
||||
sub = col.column(heading="Bezier", align=True)
|
||||
# sub.active = (not act_spline.use_cyclic_u)
|
||||
sub.prop(act_spline, "use_bezier_u", text="Bezier U")
|
||||
sub.prop(act_spline, "use_bezier_u", text="U")
|
||||
|
||||
if is_surf:
|
||||
subsub = sub.column()
|
||||
subsub.active = (not act_spline.use_cyclic_v)
|
||||
subsub.prop(act_spline, "use_bezier_v", text="V")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.prop(act_spline, "use_endpoint_u", text="Endpoint U")
|
||||
sub = col.column(heading="Endpoint", align=True)
|
||||
sub.prop(act_spline, "use_endpoint_u", text="U")
|
||||
|
||||
if is_surf:
|
||||
subsub = sub.column()
|
||||
|
|
|
@ -53,9 +53,11 @@ class DATA_PT_empty(DataButtonsPanel, Panel):
|
|||
depth_row.enabled = not ob.show_in_front
|
||||
depth_row.prop(ob, "empty_image_depth", text="Depth", expand=True)
|
||||
col.row().prop(ob, "empty_image_side", text="Side", expand=True)
|
||||
col.prop(ob, "show_empty_image_orthographic", text="Display Orthographic")
|
||||
col.prop(ob, "show_empty_image_perspective", text="Display Perspective")
|
||||
col.prop(ob, "show_empty_image_only_axis_aligned")
|
||||
|
||||
col = layout.column(heading="Show in", align=True)
|
||||
col.prop(ob, "show_empty_image_orthographic", text="Orthographic")
|
||||
col.prop(ob, "show_empty_image_perspective", text="Perspective")
|
||||
col.prop(ob, "show_empty_image_only_axis_aligned", text="Only Axis Aligned")
|
||||
|
||||
|
||||
class DATA_PT_empty_alpha(DataButtonsPanel, Panel):
|
||||
|
|
|
@ -189,28 +189,21 @@ class DATA_PT_normals(MeshButtonsPanel, Panel):
|
|||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
|
||||
def draw(self, context):
|
||||
pass
|
||||
|
||||
|
||||
class DATA_PT_normals_auto_smooth(MeshButtonsPanel, Panel):
|
||||
bl_label = "Auto Smooth"
|
||||
bl_parent_id = "DATA_PT_normals"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
|
||||
def draw_header(self, context):
|
||||
mesh = context.mesh
|
||||
|
||||
self.layout.prop(mesh, "use_auto_smooth", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
mesh = context.mesh
|
||||
|
||||
layout.active = mesh.use_auto_smooth and not mesh.has_custom_normals
|
||||
layout.prop(mesh, "auto_smooth_angle", text="Angle")
|
||||
col = layout.column(align=False, heading="Auto Smooth")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(mesh, "use_auto_smooth", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = mesh.use_auto_smooth and not mesh.has_custom_normals
|
||||
sub.prop(mesh, "auto_smooth_angle", text="")
|
||||
row.prop_decorator(mesh, "auto_smooth_angle")
|
||||
|
||||
|
||||
class DATA_PT_texture_space(MeshButtonsPanel, Panel):
|
||||
|
@ -485,9 +478,11 @@ class DATA_PT_remesh(MeshButtonsPanel, Panel):
|
|||
col.prop(mesh, "remesh_voxel_adaptivity")
|
||||
col.prop(mesh, "use_remesh_fix_poles")
|
||||
col.prop(mesh, "use_remesh_smooth_normals")
|
||||
col.prop(mesh, "use_remesh_preserve_volume")
|
||||
col.prop(mesh, "use_remesh_preserve_paint_mask")
|
||||
col.prop(mesh, "use_remesh_preserve_sculpt_face_sets")
|
||||
|
||||
col = layout.column(heading="Preserve")
|
||||
col.prop(mesh, "use_remesh_preserve_volume", text="Volume")
|
||||
col.prop(mesh, "use_remesh_preserve_paint_mask", text="Paint Mask")
|
||||
col.prop(mesh, "use_remesh_preserve_sculpt_face_sets", text="Face Sets")
|
||||
col.operator("object.voxel_remesh", text="Voxel Remesh")
|
||||
else:
|
||||
col.operator("object.quadriflow_remesh", text="QuadriFlow Remesh")
|
||||
|
@ -515,12 +510,12 @@ class DATA_PT_customdata(MeshButtonsPanel, Panel):
|
|||
else:
|
||||
col.operator("mesh.customdata_custom_splitnormals_add", icon='ADD')
|
||||
|
||||
col = layout.column()
|
||||
col = layout.column(heading="Store")
|
||||
|
||||
col.enabled = obj is not None and obj.mode != 'EDIT'
|
||||
col.prop(me, "use_customdata_vertex_bevel")
|
||||
col.prop(me, "use_customdata_edge_bevel")
|
||||
col.prop(me, "use_customdata_edge_crease")
|
||||
col.prop(me, "use_customdata_vertex_bevel", text="Vertex Bevel Weight")
|
||||
col.prop(me, "use_customdata_edge_bevel", text="Edge Bevel Weight")
|
||||
col.prop(me, "use_customdata_edge_crease", text="Edge Crease")
|
||||
|
||||
|
||||
class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, Panel):
|
||||
|
@ -544,7 +539,6 @@ classes = (
|
|||
DATA_PT_vertex_colors,
|
||||
DATA_PT_face_maps,
|
||||
DATA_PT_normals,
|
||||
DATA_PT_normals_auto_smooth,
|
||||
DATA_PT_texture_space,
|
||||
DATA_PT_remesh,
|
||||
DATA_PT_customdata,
|
||||
|
|
|
@ -212,7 +212,6 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
|||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
obj = context.object
|
||||
obj_type = obj.type
|
||||
|
@ -222,35 +221,22 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
|||
is_dupli = (obj.instance_type != 'NONE')
|
||||
is_gpencil = (obj_type == 'GPENCIL')
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Show")
|
||||
col.prop(obj, "show_name", text="Name")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(obj, "show_axis", text="Axis")
|
||||
|
||||
# Makes no sense for cameras, armatures, etc.!
|
||||
# but these settings do apply to dupli instances
|
||||
if is_geometry or is_dupli:
|
||||
col = flow.column()
|
||||
col.prop(obj, "show_wire", text="Wireframe")
|
||||
if obj_type == 'MESH' or is_dupli:
|
||||
col = flow.column()
|
||||
col.prop(obj, "show_all_edges", text="All Edges")
|
||||
|
||||
col = flow.column()
|
||||
if is_geometry:
|
||||
col.prop(obj, "show_texture_space", text="Texture Space")
|
||||
col = flow.column()
|
||||
col.prop(obj.display, "show_shadows", text="Shadow")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(obj, "show_in_front", text="In Front")
|
||||
# if obj_type == 'MESH' or is_empty_image:
|
||||
# col.prop(obj, "show_transparent", text="Transparency")
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
if is_wire:
|
||||
# wire objects only use the max. display type for duplis
|
||||
col.active = is_dupli
|
||||
|
@ -258,28 +244,17 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
|
|||
|
||||
if is_geometry or is_dupli or is_empty_image or is_gpencil:
|
||||
# Only useful with object having faces/materials...
|
||||
col = flow.column()
|
||||
col.prop(obj, "color")
|
||||
|
||||
|
||||
class OBJECT_PT_display_bounds(ObjectButtonsPanel, Panel):
|
||||
bl_label = "Bounds"
|
||||
bl_parent_id = "OBJECT_PT_display"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
|
||||
def draw_header(self, context):
|
||||
|
||||
obj = context.object
|
||||
|
||||
self.layout.prop(obj, "show_bounds", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
obj = context.object
|
||||
layout.use_property_split = True
|
||||
|
||||
layout.active = obj.show_bounds or (obj.display_type == 'BOUNDS')
|
||||
layout.prop(obj, "display_bounds_type", text="Shape")
|
||||
col = layout.column(align=False, heading="Bounds")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(obj, "show_bounds", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = obj.show_bounds or (obj.display_type == 'BOUNDS')
|
||||
sub.prop(obj, "display_bounds_type", text="")
|
||||
row.prop_decorator(obj, "display_bounds_type")
|
||||
|
||||
|
||||
class OBJECT_PT_instancing(ObjectButtonsPanel, Panel):
|
||||
|
@ -295,7 +270,6 @@ class OBJECT_PT_instancing(ObjectButtonsPanel, Panel):
|
|||
row.prop(ob, "instance_type", expand=True)
|
||||
|
||||
layout.use_property_split = True
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
if ob.instance_type == 'VERTS':
|
||||
layout.prop(ob, "use_instance_vertices_rotation", text="Align to Vertex Normal")
|
||||
|
@ -305,9 +279,9 @@ class OBJECT_PT_instancing(ObjectButtonsPanel, Panel):
|
|||
col.prop(ob, "instance_collection", text="Collection")
|
||||
|
||||
if ob.instance_type != 'NONE' or ob.particle_systems:
|
||||
col = flow.column(align=True)
|
||||
col.prop(ob, "show_instancer_for_viewport")
|
||||
col.prop(ob, "show_instancer_for_render")
|
||||
col = layout.column(heading="Show Instancer", align=True)
|
||||
col.prop(ob, "show_instancer_for_viewport", text="Viewport")
|
||||
col.prop(ob, "show_instancer_for_render", text="Render")
|
||||
|
||||
|
||||
class OBJECT_PT_instancing_size(ObjectButtonsPanel, Panel):
|
||||
|
@ -385,19 +359,16 @@ class OBJECT_PT_visibility(ObjectButtonsPanel, Panel):
|
|||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
layout = self.layout
|
||||
ob = context.object
|
||||
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_viewport", text="Show in Viewports", toggle=False, invert_checkbox=True)
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_render", text="Show in Renders", toggle=False, invert_checkbox=True)
|
||||
col = flow.column()
|
||||
col.prop(ob, "hide_select", text="Selectable", toggle=False, invert_checkbox=True)
|
||||
layout.prop(ob, "hide_select", text="Selectable", toggle=False, invert_checkbox=True)
|
||||
|
||||
col = layout.column(heading="Show in")
|
||||
col.prop(ob, "hide_viewport", text="Viewports", toggle=False, invert_checkbox=True)
|
||||
col.prop(ob, "hide_render", text="Renders", toggle=False, invert_checkbox=True)
|
||||
|
||||
if context.object.type == 'GPENCIL':
|
||||
col = flow.column()
|
||||
col.prop(ob, "use_grease_pencil_lights", toggle=False)
|
||||
|
||||
|
||||
|
@ -419,7 +390,6 @@ classes = (
|
|||
OBJECT_PT_motion_paths,
|
||||
OBJECT_PT_motion_paths_display,
|
||||
OBJECT_PT_display,
|
||||
OBJECT_PT_display_bounds,
|
||||
OBJECT_PT_visibility,
|
||||
OBJECT_PT_custom_props,
|
||||
)
|
||||
|
|
|
@ -94,14 +94,14 @@ class RENDER_PT_dimensions(RenderOutputButtonsPanel, Panel):
|
|||
return args
|
||||
|
||||
@staticmethod
|
||||
def draw_framerate(layout, sub, rd):
|
||||
def draw_framerate(layout, rd):
|
||||
if RENDER_PT_dimensions._preset_class is None:
|
||||
RENDER_PT_dimensions._preset_class = bpy.types.RENDER_MT_framerate_presets
|
||||
|
||||
args = rd.fps, rd.fps_base, RENDER_PT_dimensions._preset_class.bl_label
|
||||
fps_label_text, show_framerate = RENDER_PT_dimensions._draw_framerate_label(*args)
|
||||
|
||||
sub.menu("RENDER_MT_framerate_presets", text=fps_label_text)
|
||||
layout.menu("RENDER_MT_framerate_presets", text=fps_label_text)
|
||||
|
||||
if show_framerate:
|
||||
col = layout.column(align=True)
|
||||
|
@ -136,10 +136,8 @@ class RENDER_PT_dimensions(RenderOutputButtonsPanel, Panel):
|
|||
col.prop(scene, "frame_end", text="End")
|
||||
col.prop(scene, "frame_step", text="Step")
|
||||
|
||||
col = layout.split()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Frame Rate")
|
||||
self.draw_framerate(layout, col, rd)
|
||||
col = layout.column(heading="Frame Rate")
|
||||
self.draw_framerate(col, rd)
|
||||
|
||||
|
||||
class RENDER_PT_frame_remapping(RenderOutputButtonsPanel, Panel):
|
||||
|
@ -171,10 +169,8 @@ class RENDER_PT_post_processing(RenderOutputButtonsPanel, Panel):
|
|||
|
||||
rd = context.scene.render
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Pipeline")
|
||||
col.prop(rd, "use_compositing")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_sequencer")
|
||||
|
||||
layout.prop(rd, "dither_intensity", text="Dither", slider=True)
|
||||
|
@ -192,43 +188,22 @@ class RENDER_PT_stamp(RenderOutputButtonsPanel, Panel):
|
|||
|
||||
rd = context.scene.render
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_date", text="Date")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_time", text="Time")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_render_time", text="Render Time")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_frame", text="Frame")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_frame_range", text="Frame Range")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_memory", text="Memory")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_hostname", text="Hostname")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_camera", text="Camera")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_lens", text="Lens")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_scene", text="Scene")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_marker", text="Marker")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_filename", text="Filename")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_sequencer_strip", text="Strip Name")
|
||||
|
||||
if rd.use_sequencer:
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_stamp_strip_meta", text="Use Strip Metadata")
|
||||
layout.prop(rd, "metadata_input")
|
||||
|
||||
col = layout.column(heading="Include")
|
||||
col.prop(rd, "use_stamp_date", text="Date")
|
||||
col.prop(rd, "use_stamp_time", text="Time")
|
||||
col.prop(rd, "use_stamp_render_time", text="Render Time")
|
||||
col.prop(rd, "use_stamp_frame", text="Frame")
|
||||
col.prop(rd, "use_stamp_frame_range", text="Frame Range")
|
||||
col.prop(rd, "use_stamp_memory", text="Memory")
|
||||
col.prop(rd, "use_stamp_hostname", text="Hostname")
|
||||
col.prop(rd, "use_stamp_camera", text="Camera")
|
||||
col.prop(rd, "use_stamp_lens", text="Lens")
|
||||
col.prop(rd, "use_stamp_scene", text="Scene")
|
||||
col.prop(rd, "use_stamp_marker", text="Marker")
|
||||
col.prop(rd, "use_stamp_filename", text="Filename")
|
||||
|
||||
|
||||
class RENDER_PT_stamp_note(RenderOutputButtonsPanel, Panel):
|
||||
|
@ -293,21 +268,17 @@ class RENDER_PT_output(RenderOutputButtonsPanel, Panel):
|
|||
|
||||
layout.use_property_split = True
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col.active = not rd.is_movie_format
|
||||
col.prop(rd, "use_overwrite")
|
||||
col = flow.column()
|
||||
col.active = not rd.is_movie_format
|
||||
col.prop(rd, "use_placeholder")
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Saving")
|
||||
col.prop(rd, "use_file_extension")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_render_cache")
|
||||
|
||||
layout.template_image_settings(image_settings, color_management=False)
|
||||
|
||||
if not rd.is_movie_format:
|
||||
col = layout.column(heading="Image Sequence")
|
||||
col.prop(rd, "use_overwrite")
|
||||
col.prop(rd, "use_placeholder")
|
||||
|
||||
|
||||
class RENDER_PT_output_views(RenderOutputButtonsPanel, Panel):
|
||||
bl_label = "Views"
|
||||
|
|
|
@ -587,10 +587,12 @@ def brush_settings(layout, context, brush, popover=False):
|
|||
slider=True,
|
||||
)
|
||||
|
||||
layout.prop(brush, "use_plane_trim", text="Plane Trim")
|
||||
row = layout.row()
|
||||
row.active = brush.use_plane_trim
|
||||
row.prop(brush, "plane_trim", slider=True, text="Distance")
|
||||
row = layout.row(heading="Plane Trim")
|
||||
row.prop(brush, "use_plane_trim", text="")
|
||||
sub = row.row()
|
||||
sub.active = brush.use_plane_trim
|
||||
sub.prop(brush, "plane_trim", slider=True, text="")
|
||||
|
||||
layout.separator()
|
||||
|
||||
# height
|
||||
|
@ -808,23 +810,27 @@ def brush_settings_advanced(layout, context, brush, popover=False):
|
|||
use_accumulate = capabilities.has_accumulate
|
||||
use_frontface = True
|
||||
|
||||
col = layout.column(heading="Auto-Masking", align=True)
|
||||
|
||||
# topology automasking
|
||||
layout.prop(brush, "use_automasking_topology")
|
||||
col.prop(brush, "use_automasking_topology", text="Topology")
|
||||
|
||||
# face masks automasking
|
||||
layout.prop(brush, "use_automasking_face_sets")
|
||||
|
||||
# boundary edges/face sets automasking
|
||||
layout.prop(brush, "use_automasking_boundary_edges")
|
||||
layout.prop(brush, "use_automasking_boundary_face_sets")
|
||||
layout.prop(brush, "automasking_boundary_edges_propagation_steps")
|
||||
col.prop(brush, "use_automasking_face_sets", text="Face Sets")
|
||||
|
||||
# boundary edges/face sets automasking
|
||||
col.prop(brush, "use_automasking_boundary_edges", text="Mesh Boundary")
|
||||
col.prop(brush, "use_automasking_boundary_face_sets", text="Face Sets")
|
||||
col.prop(brush, "automasking_boundary_edges_propagation_steps")
|
||||
|
||||
layout.separator()
|
||||
|
||||
# sculpt plane settings
|
||||
if capabilities.has_sculpt_plane:
|
||||
layout.prop(brush, "sculpt_plane")
|
||||
layout.prop(brush, "use_original_normal")
|
||||
layout.prop(brush, "use_original_plane")
|
||||
col = layout.column(heading="Use Original", align=True)
|
||||
col.prop(brush, "use_original_normal", text="Normal")
|
||||
col.prop(brush, "use_original_plane", text="Plane")
|
||||
layout.separator()
|
||||
|
||||
# 3D and 2D Texture Paint.
|
||||
|
|
|
@ -310,8 +310,10 @@ def basic_force_field_settings_ui(self, field):
|
|||
else:
|
||||
col.prop(field, "flow")
|
||||
|
||||
col.prop(field, "apply_to_location", text="Affect Location")
|
||||
col.prop(field, "apply_to_rotation", text="Affect Rotation")
|
||||
sub = col.column(heading="Affect")
|
||||
|
||||
sub.prop(field, "apply_to_location", text="Location")
|
||||
sub.prop(field, "apply_to_rotation", text="Rotation")
|
||||
|
||||
col = flow.column()
|
||||
sub = col.column(align=True)
|
||||
|
@ -336,26 +338,29 @@ def basic_force_field_falloff_ui(self, field):
|
|||
if not field or field.type == 'NONE':
|
||||
return
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=True)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(field, "z_direction")
|
||||
col.prop(field, "falloff_power", text="Power")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(field, "use_min_distance", text="Use Minimum")
|
||||
|
||||
sub = col.column(align=True)
|
||||
col = layout.column(align=False, heading="Minimum Distance")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(field, "use_min_distance", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = field.use_min_distance
|
||||
sub.prop(field, "distance_min", text="Min Distance")
|
||||
sub.prop(field, "distance_min", text="")
|
||||
row.prop_decorator(field, "distance_min")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(field, "use_max_distance", text="Use Maximum")
|
||||
|
||||
sub = col.column(align=True)
|
||||
col = layout.column(align=False, heading="Maximum Distance")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(field, "use_max_distance", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = field.use_max_distance
|
||||
sub.prop(field, "distance_max", text="Max Distance")
|
||||
|
||||
sub.prop(field, "distance_max", text="")
|
||||
row.prop_decorator(field, "distance_max")
|
||||
|
||||
classes = (
|
||||
PHYSICS_PT_add,
|
||||
|
|
|
@ -475,33 +475,21 @@ class RENDER_PT_eevee_film(RenderButtonsPanel, Panel):
|
|||
|
||||
scene = context.scene
|
||||
rd = scene.render
|
||||
props = scene.eevee
|
||||
|
||||
col = layout.column()
|
||||
col.prop(rd, "filter_size")
|
||||
col.prop(rd, "film_transparent", text="Transparent")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_film_overscan(RenderButtonsPanel, Panel):
|
||||
bl_label = "Overscan"
|
||||
bl_parent_id = "RENDER_PT_eevee_film"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_EEVEE'}
|
||||
|
||||
def draw_header(self, context):
|
||||
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
self.layout.prop(props, "use_overscan", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
scene = context.scene
|
||||
props = scene.eevee
|
||||
|
||||
layout.active = props.use_overscan
|
||||
layout.prop(props, "overscan_size", text="Size")
|
||||
col = layout.column(align=False, heading="Overscan")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(props, "use_overscan", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = props.use_overscan
|
||||
sub.prop(props, "overscan_size", text="")
|
||||
row.prop_decorator(props, "overscan_size")
|
||||
|
||||
|
||||
class RENDER_PT_eevee_hair(RenderButtonsPanel, Panel):
|
||||
|
@ -696,7 +684,6 @@ classes = (
|
|||
RENDER_PT_eevee_indirect_lighting,
|
||||
RENDER_PT_eevee_indirect_lighting_display,
|
||||
RENDER_PT_eevee_film,
|
||||
RENDER_PT_eevee_film_overscan,
|
||||
RENDER_PT_opengl_sampling,
|
||||
RENDER_PT_opengl_lighting,
|
||||
RENDER_PT_opengl_color,
|
||||
|
|
|
@ -40,17 +40,12 @@ class VIEWLAYER_PT_layer(ViewLayerButtonsPanel, Panel):
|
|||
|
||||
layout.use_property_split = True
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
layout.use_property_split = True
|
||||
|
||||
scene = context.scene
|
||||
rd = scene.render
|
||||
layer = context.view_layer
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(layer, "use", text="Use for Rendering")
|
||||
col = flow.column()
|
||||
col.prop(rd, "use_single_layer", text="Render Single Layer")
|
||||
|
||||
|
||||
|
@ -77,14 +72,10 @@ class VIEWLAYER_PT_eevee_layer_passes_data(ViewLayerButtonsPanel, Panel):
|
|||
rd = scene.render
|
||||
view_layer = context.view_layer
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(view_layer, "use_pass_combined")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_z")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_mist")
|
||||
col = flow.column()
|
||||
col.prop(view_layer, "use_pass_normal")
|
||||
|
||||
|
||||
|
@ -104,29 +95,19 @@ class VIEWLAYER_PT_eevee_layer_passes_light(ViewLayerButtonsPanel, Panel):
|
|||
scene = context.scene
|
||||
scene_eevee = scene.eevee
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Diffuse")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer, "use_pass_diffuse_direct", text="Light", toggle=True)
|
||||
row.prop(view_layer, "use_pass_diffuse_color", text="Color", toggle=True)
|
||||
col = layout.column(heading="Diffuse", align=True)
|
||||
col.prop(view_layer, "use_pass_diffuse_direct", text="Light")
|
||||
col.prop(view_layer, "use_pass_diffuse_color", text="Color")
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Specular")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer, "use_pass_glossy_direct", text="Light", toggle=True)
|
||||
row.prop(view_layer, "use_pass_glossy_color", text="Color", toggle=True)
|
||||
col = layout.column(heading="Specular", align=True)
|
||||
col.prop(view_layer, "use_pass_glossy_direct", text="Light")
|
||||
col.prop(view_layer, "use_pass_glossy_color", text="Color")
|
||||
|
||||
split = layout.split(factor=0.35)
|
||||
split.use_property_split = False
|
||||
split.label(text="Volume")
|
||||
row = split.row(align=True)
|
||||
row.prop(view_layer_eevee, "use_pass_volume_transmittance", text="Transmittance", toggle=True)
|
||||
row.prop(view_layer_eevee, "use_pass_volume_scatter", text="Scatter", toggle=True)
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column(heading="Volume", align=True)
|
||||
col.prop(view_layer_eevee, "use_pass_volume_transmittance", text="Transmittance")
|
||||
col.prop(view_layer_eevee, "use_pass_volume_scatter", text="Scatter")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col = layout.column(heading="Other", align=True)
|
||||
col.prop(view_layer, "use_pass_emit", text="Emission")
|
||||
col.prop(view_layer, "use_pass_environment")
|
||||
col.prop(view_layer, "use_pass_shadow")
|
||||
|
@ -146,14 +127,12 @@ class VIEWLAYER_PT_eevee_layer_passes_effects(ViewLayerButtonsPanel, Panel):
|
|||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
view_layer = context.view_layer
|
||||
view_layer_eevee = view_layer.eevee
|
||||
scene = context.scene
|
||||
scene_eevee = scene.eevee
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(view_layer_eevee, "use_pass_bloom", text="Bloom")
|
||||
col.active = scene_eevee.use_bloom
|
||||
|
||||
|
|
|
@ -1687,18 +1687,15 @@ class SEQUENCER_PT_adjust_transform(SequencerButtonsPanel, Panel):
|
|||
layout = self.layout
|
||||
strip = act_strip(context)
|
||||
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
layout.active = not strip.mute
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Mirror")
|
||||
|
||||
col = split.column()
|
||||
row = col.row(align=True)
|
||||
row.prop(strip, "use_flip_x", text="X", toggle=True)
|
||||
row.prop(strip, "use_flip_y", text="Y", toggle=True)
|
||||
row = layout.row(heading="Mirror")
|
||||
sub = row.row(align=True)
|
||||
sub.prop(strip, "use_flip_x", text="X", toggle=True)
|
||||
sub.prop(strip, "use_flip_y", text="Y", toggle=True)
|
||||
|
||||
|
||||
class SEQUENCER_PT_adjust_video(SequencerButtonsPanel, Panel):
|
||||
|
@ -1802,12 +1799,12 @@ class SEQUENCER_PT_cache_settings(SequencerButtonsPanel, Panel):
|
|||
|
||||
ed = context.scene.sequence_editor
|
||||
|
||||
col = layout.column()
|
||||
col = layout.column(heading="Cache", align=True)
|
||||
|
||||
col.prop(ed, "use_cache_raw")
|
||||
col.prop(ed, "use_cache_preprocessed")
|
||||
col.prop(ed, "use_cache_composite")
|
||||
col.prop(ed, "use_cache_final")
|
||||
col.prop(ed, "use_cache_raw", text="Raw")
|
||||
col.prop(ed, "use_cache_preprocessed", text="Pre-Processed")
|
||||
col.prop(ed, "use_cache_composite", text="Composite")
|
||||
col.prop(ed, "use_cache_final", text="Final")
|
||||
col.separator()
|
||||
col.prop(ed, "recycle_max_cost")
|
||||
|
||||
|
@ -1871,21 +1868,19 @@ class SEQUENCER_PT_strip_proxy(SequencerButtonsPanel, Panel):
|
|||
|
||||
flow = layout.column_flow()
|
||||
if ed.proxy_storage == 'PER_STRIP':
|
||||
flow.prop(proxy, "use_proxy_custom_directory")
|
||||
flow.prop(proxy, "use_proxy_custom_file")
|
||||
|
||||
col = layout.column(heading="Custom Proxy")
|
||||
col.prop(proxy, "use_proxy_custom_directory", text="Directory")
|
||||
if proxy.use_proxy_custom_directory and not proxy.use_proxy_custom_file:
|
||||
flow.prop(proxy, "directory")
|
||||
col.prop(proxy, "directory")
|
||||
col.prop(proxy, "use_proxy_custom_file", text="File")
|
||||
if proxy.use_proxy_custom_file:
|
||||
flow.prop(proxy, "filepath")
|
||||
col.prop(proxy, "filepath")
|
||||
|
||||
box = layout.box()
|
||||
row = box.row(align=True)
|
||||
row.prop(strip.proxy, "build_25")
|
||||
row.prop(strip.proxy, "build_75")
|
||||
row = box.row(align=True)
|
||||
row.prop(strip.proxy, "build_50")
|
||||
row.prop(strip.proxy, "build_100")
|
||||
row = layout.row(heading="Resolutions", align=True)
|
||||
row.prop(strip.proxy, "build_25", toggle=True)
|
||||
row.prop(strip.proxy, "build_75", toggle=True)
|
||||
row.prop(strip.proxy, "build_50", toggle=True)
|
||||
row.prop(strip.proxy, "build_100", toggle=True)
|
||||
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
@ -1926,10 +1921,10 @@ class SEQUENCER_PT_strip_cache(SequencerButtonsPanel, Panel):
|
|||
strip = act_strip(context)
|
||||
layout.active = strip.override_cache_settings
|
||||
|
||||
col = layout.column()
|
||||
col.prop(strip, "use_cache_raw")
|
||||
col.prop(strip, "use_cache_preprocessed")
|
||||
col.prop(strip, "use_cache_composite")
|
||||
col = layout.column(heading="Cache")
|
||||
col.prop(strip, "use_cache_raw", text="Raw")
|
||||
col.prop(strip, "use_cache_preprocessed", text="Pre-Processed")
|
||||
col.prop(strip, "use_cache_composite", text="Composite")
|
||||
|
||||
|
||||
class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
|
||||
|
|
|
@ -129,18 +129,21 @@ class TEXT_PT_properties(Panel):
|
|||
layout.use_property_decorate = False
|
||||
st = context.space_data
|
||||
|
||||
flow = layout.column_flow()
|
||||
if not st.text:
|
||||
flow.active = False
|
||||
row = flow.row(align=True)
|
||||
st = context.space_data
|
||||
row.prop(st, "show_margin", text="Margin")
|
||||
rowsub = row.row()
|
||||
rowsub.active = st.show_margin
|
||||
rowsub.prop(st, "margin_column", text="")
|
||||
layout.active = False
|
||||
|
||||
flow.prop(st, "font_size")
|
||||
flow.prop(st, "tab_width")
|
||||
st = context.space_data
|
||||
|
||||
col = layout.column(align=False, heading="Margin")
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(st, "show_margin", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.active = st.show_margin
|
||||
sub.prop(st, "margin_column", text="")
|
||||
|
||||
layout.prop(st, "font_size")
|
||||
layout.prop(st, "tab_width")
|
||||
|
||||
text = st.text
|
||||
if text:
|
||||
|
|
|
@ -628,9 +628,10 @@ class _defs_edit_mesh:
|
|||
layout.prop(props, "vertex_only")
|
||||
layout.prop(props, "clamp_overlap")
|
||||
layout.prop(props, "loop_slide")
|
||||
layout.prop(props, "mark_seam")
|
||||
layout.prop(props, "mark_sharp")
|
||||
layout.prop(props, "harden_normals")
|
||||
col = layout.column(heading="Mark")
|
||||
col.prop(props, "mark_seam", text="Seam")
|
||||
col.prop(props, "mark_sharp", text="Sharp")
|
||||
|
||||
layout.prop(props, "material")
|
||||
|
||||
|
|
|
@ -200,19 +200,16 @@ class USERPREF_PT_interface_display(InterfacePanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
view = prefs.view
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
|
||||
flow.prop(view, "ui_scale", text="Resolution Scale")
|
||||
flow.prop(view, "ui_line_width", text="Line Width")
|
||||
col.prop(view, "ui_scale", text="Resolution Scale")
|
||||
col.prop(view, "ui_line_width", text="Line Width")
|
||||
col.prop(view, "show_splash", text="Splash Screen")
|
||||
col.prop(view, "show_developer_ui")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(view, "show_splash", text="Splash Screen")
|
||||
flow.prop(view, "show_tooltips")
|
||||
flow.prop(view, "show_tooltips_python")
|
||||
flow.prop(view, "show_developer_ui")
|
||||
col = layout.column(heading="Tooltips")
|
||||
col.prop(view, "show_tooltips")
|
||||
col.prop(view, "show_tooltips_python")
|
||||
|
||||
|
||||
class USERPREF_PT_interface_text(InterfacePanel, CenterAlignMixIn, Panel):
|
||||
|
@ -248,12 +245,11 @@ class USERPREF_PT_interface_translation(InterfacePanel, CenterAlignMixIn, Panel)
|
|||
|
||||
layout.prop(view, "language")
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
flow.active = (bpy.app.translations.locale != 'en_US')
|
||||
|
||||
flow.prop(view, "use_translate_tooltips", text="Tooltips")
|
||||
flow.prop(view, "use_translate_interface", text="Interface")
|
||||
flow.prop(view, "use_translate_new_dataname", text="New Data")
|
||||
col = layout.column(heading="Affect")
|
||||
col.active = (bpy.app.translations.locale != 'en_US')
|
||||
col.prop(view, "use_translate_tooltips", text="Tooltips")
|
||||
col.prop(view, "use_translate_interface", text="Interface")
|
||||
col.prop(view, "use_translate_new_dataname", text="New Data")
|
||||
|
||||
|
||||
class USERPREF_PT_interface_editors(InterfacePanel, CenterAlignMixIn, Panel):
|
||||
|
@ -264,14 +260,13 @@ class USERPREF_PT_interface_editors(InterfacePanel, CenterAlignMixIn, Panel):
|
|||
view = prefs.view
|
||||
system = prefs.system
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(system, "use_region_overlap")
|
||||
flow.prop(view, "show_layout_ui", text="Corner Splitting")
|
||||
flow.prop(view, "show_navigate_ui")
|
||||
flow.prop(view, "color_picker_type")
|
||||
flow.row().prop(view, "header_align")
|
||||
flow.prop(view, "factor_display_type")
|
||||
col = layout.column()
|
||||
col.prop(system, "use_region_overlap")
|
||||
col.prop(view, "show_layout_ui", text="Corner Splitting")
|
||||
col.prop(view, "show_navigate_ui")
|
||||
col.prop(view, "color_picker_type")
|
||||
col.row().prop(view, "header_align")
|
||||
col.prop(view, "factor_display_type")
|
||||
|
||||
|
||||
class USERPREF_PT_interface_temporary_windows(InterfacePanel, CenterAlignMixIn, Panel):
|
||||
|
@ -283,10 +278,9 @@ class USERPREF_PT_interface_temporary_windows(InterfacePanel, CenterAlignMixIn,
|
|||
prefs = context.preferences
|
||||
view = prefs.view
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(view, "render_display_type", text="Render in")
|
||||
flow.prop(view, "filebrowser_display_type", text="File Browser")
|
||||
col = layout.column()
|
||||
col.prop(view, "render_display_type", text="Render in")
|
||||
col.prop(view, "filebrowser_display_type", text="File Browser")
|
||||
|
||||
|
||||
class USERPREF_PT_interface_menus(InterfacePanel, Panel):
|
||||
|
@ -376,6 +370,8 @@ class USERPREF_PT_edit_objects_duplicate_data(EditingPanel, CenterAlignMixIn, Pa
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
layout.use_property_split = False
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=True)
|
||||
|
||||
col = flow.column()
|
||||
|
@ -409,10 +405,9 @@ class USERPREF_PT_edit_cursor(EditingPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "use_mouse_depth_cursor")
|
||||
flow.prop(edit, "use_cursor_lock_adjust")
|
||||
col = layout.column()
|
||||
col.prop(edit, "use_mouse_depth_cursor")
|
||||
col.prop(edit, "use_cursor_lock_adjust")
|
||||
|
||||
|
||||
class USERPREF_PT_edit_gpencil(EditingPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -423,10 +418,9 @@ class USERPREF_PT_edit_gpencil(EditingPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
|
||||
flow.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
|
||||
col = layout.column(heading="Distance")
|
||||
col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan")
|
||||
col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean")
|
||||
|
||||
|
||||
class USERPREF_PT_edit_annotations(EditingPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -436,10 +430,9 @@ class USERPREF_PT_edit_annotations(EditingPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "grease_pencil_default_color", text="Default Color")
|
||||
flow.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
|
||||
col = layout.column()
|
||||
col.prop(edit, "grease_pencil_default_color", text="Default Color")
|
||||
col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
|
||||
|
||||
|
||||
class USERPREF_PT_edit_weight_paint(EditingPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -450,6 +443,8 @@ class USERPREF_PT_edit_weight_paint(EditingPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
view = prefs.view
|
||||
|
||||
layout.use_property_split = False
|
||||
|
||||
layout.prop(view, "use_weight_color_range", text="Use Custom Colors")
|
||||
|
||||
col = layout.column()
|
||||
|
@ -465,10 +460,9 @@ class USERPREF_PT_edit_misc(EditingPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "sculpt_paint_overlay_color", text="Sculpt Overlay Color")
|
||||
flow.prop(edit, "node_margin", text="Node Auto-offset Margin")
|
||||
col = layout.column()
|
||||
col.prop(edit, "sculpt_paint_overlay_color", text="Sculpt Overlay Color")
|
||||
col.prop(edit, "node_margin", text="Node Auto-offset Margin")
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -488,20 +482,16 @@ class USERPREF_PT_animation_timeline(AnimationPanel, CenterAlignMixIn, Panel):
|
|||
view = prefs.view
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
flow.prop(edit, "use_negative_frames")
|
||||
col = layout.column()
|
||||
col.prop(edit, "use_negative_frames")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(view, "view2d_grid_spacing_min", text="Minimum Grid Spacing")
|
||||
flow.prop(view, "timecode_style")
|
||||
flow.prop(view, "view_frame_type")
|
||||
col.prop(view, "view2d_grid_spacing_min", text="Minimum Grid Spacing")
|
||||
col.prop(view, "timecode_style")
|
||||
col.prop(view, "view_frame_type")
|
||||
if view.view_frame_type == 'SECONDS':
|
||||
flow.prop(view, "view_frame_seconds")
|
||||
col.prop(view, "view_frame_seconds")
|
||||
elif view.view_frame_type == 'KEYFRAMES':
|
||||
flow.prop(view, "view_frame_keyframes")
|
||||
col.prop(view, "view_frame_keyframes")
|
||||
|
||||
|
||||
class USERPREF_PT_animation_keyframes(AnimationPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -511,25 +501,14 @@ class USERPREF_PT_animation_keyframes(AnimationPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
col.prop(edit, "use_visual_keying")
|
||||
col.prop(edit, "use_keyframe_insert_needed", text="Only Insert Needed")
|
||||
|
||||
flow.prop(edit, "use_visual_keying")
|
||||
flow.prop(edit, "use_keyframe_insert_needed", text="Only Insert Needed")
|
||||
|
||||
|
||||
class USERPREF_PT_animation_autokey(AnimationPanel, CenterAlignMixIn, Panel):
|
||||
bl_label = "Auto-Keyframing"
|
||||
bl_parent_id = "USERPREF_PT_animation_keyframes"
|
||||
|
||||
def draw_centered(self, context, layout):
|
||||
prefs = context.preferences
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "use_auto_keying_warning", text="Show Warning")
|
||||
flow.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
|
||||
flow.prop(edit, "use_auto_keying", text="Enable in New Scenes")
|
||||
col = layout.column(heading="Auto-Keyframing")
|
||||
col.prop(edit, "use_auto_keying_warning", text="Show Warning")
|
||||
col.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
|
||||
col.prop(edit, "use_auto_keying", text="Enable in New Scenes")
|
||||
|
||||
|
||||
class USERPREF_PT_animation_fcurves(AnimationPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -604,33 +583,36 @@ class USERPREF_PT_system_memory(SystemPanel, CenterAlignMixIn, Panel):
|
|||
system = prefs.system
|
||||
edit = prefs.edit
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(edit, "undo_steps", text="Undo Steps")
|
||||
flow.prop(edit, "undo_memory_limit", text="Undo Memory Limit")
|
||||
flow.prop(edit, "use_global_undo")
|
||||
col = layout.column()
|
||||
col.prop(edit, "undo_steps", text="Undo Steps")
|
||||
col.prop(edit, "undo_memory_limit", text="Undo Memory Limit")
|
||||
col.prop(edit, "use_global_undo")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow.prop(system, "texture_time_out", text="Texture Time Out")
|
||||
flow.prop(system, "texture_collection_rate", text="Garbage Collection Rate")
|
||||
col = layout.column()
|
||||
col.prop(system, "memory_cache_limit", text="Sequencer Cache Limit")
|
||||
col.prop(system, "scrollback", text="Console Scrollback Lines")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow.prop(system, "vbo_time_out", text="Vbo Time Out")
|
||||
flow.prop(system, "vbo_collection_rate", text="Garbage Collection Rate")
|
||||
col = layout.column()
|
||||
col.prop(system, "use_sequencer_disk_cache")
|
||||
col.prop(system, "sequencer_disk_cache_dir")
|
||||
col.prop(system, "sequencer_disk_cache_size_limit")
|
||||
col.prop(system, "sequencer_disk_cache_compression")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow.prop(system, "scrollback", text="Console Scrollback Lines")
|
||||
col = layout.column()
|
||||
col.prop(system, "texture_time_out", text="Texture Time Out")
|
||||
col.prop(system, "texture_collection_rate", text="Garbage Collection Rate")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow.prop(system, "memory_cache_limit", text="Sequencer Cache Limit")
|
||||
flow.prop(system, "use_sequencer_disk_cache")
|
||||
flow.prop(system, "sequencer_disk_cache_dir")
|
||||
flow.prop(system, "sequencer_disk_cache_size_limit")
|
||||
flow.prop(system, "sequencer_disk_cache_compression")
|
||||
col = layout.column()
|
||||
col.prop(system, "vbo_time_out", text="Vbo Time Out")
|
||||
col.prop(system, "vbo_collection_rate", text="Garbage Collection Rate")
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -649,23 +631,19 @@ class USERPREF_PT_viewport_display(ViewportPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
view = prefs.view
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(view, "show_object_info", text="Object Info")
|
||||
flow.prop(view, "show_view_name", text="View Name")
|
||||
flow.prop(view, "show_playback_fps", text="Playback FPS")
|
||||
col = layout.column(heading="Show")
|
||||
col.prop(view, "show_object_info", text="Object Info")
|
||||
col.prop(view, "show_view_name", text="View Name")
|
||||
col.prop(view, "show_playback_fps", text="Playback FPS")
|
||||
|
||||
layout.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(view, "gizmo_size")
|
||||
col.prop(view, "lookdev_sphere_size")
|
||||
|
||||
flow.separator()
|
||||
col.separator()
|
||||
|
||||
col = flow.column()
|
||||
col.prop(view, "mini_axis_type", text="3D Viewport Axis")
|
||||
|
||||
if view.mini_axis_type == 'MINIMAL':
|
||||
|
@ -680,11 +658,12 @@ class USERPREF_PT_viewport_quality(ViewportPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
system = prefs.system
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
col.prop(system, "viewport_aa")
|
||||
|
||||
flow.prop(system, "viewport_aa")
|
||||
flow.prop(system, "use_overlay_smooth_wire")
|
||||
flow.prop(system, "use_edit_mode_smooth_wire")
|
||||
col = layout.column(heading="Smooth Wires")
|
||||
col.prop(system, "use_overlay_smooth_wire", text="Overlay")
|
||||
col.prop(system, "use_edit_mode_smooth_wire", text="Edit Mode")
|
||||
|
||||
|
||||
class USERPREF_PT_viewport_textures(ViewportPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -694,12 +673,11 @@ class USERPREF_PT_viewport_textures(ViewportPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
system = prefs.system
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(system, "gl_texture_limit", text="Limit Size")
|
||||
flow.prop(system, "anisotropic_filter")
|
||||
flow.prop(system, "gl_clip_alpha", slider=True)
|
||||
flow.prop(system, "image_draw_method", text="Image Display Method")
|
||||
col = layout.column()
|
||||
col.prop(system, "gl_texture_limit", text="Limit Size")
|
||||
col.prop(system, "anisotropic_filter")
|
||||
col.prop(system, "gl_clip_alpha", slider=True)
|
||||
col.prop(system, "image_draw_method", text="Image Display Method")
|
||||
|
||||
|
||||
class USERPREF_PT_viewport_selection(ViewportPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -710,9 +688,7 @@ class USERPREF_PT_viewport_selection(ViewportPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
system = prefs.system
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(system, "use_select_pick_depth")
|
||||
layout.prop(system, "use_select_pick_depth")
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -1320,37 +1296,40 @@ class USERPREF_PT_saveload_blend(SaveLoadPanel, CenterAlignMixIn, Panel):
|
|||
paths = prefs.filepaths
|
||||
view = prefs.view
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column(heading="Save")
|
||||
col.prop(view, "use_save_prompt")
|
||||
col.prop(paths, "use_save_preview_images")
|
||||
|
||||
flow.prop(paths, "use_relative_paths")
|
||||
flow.prop(paths, "use_file_compression")
|
||||
flow.prop(paths, "use_load_ui")
|
||||
flow.prop(paths, "use_save_preview_images")
|
||||
flow.prop(paths, "use_tabs_as_spaces")
|
||||
flow.prop(view, "use_save_prompt")
|
||||
col = layout.column(heading="Default to")
|
||||
col.prop(paths, "use_relative_paths")
|
||||
col.prop(paths, "use_file_compression")
|
||||
col.prop(paths, "use_load_ui")
|
||||
|
||||
layout.separator()
|
||||
col = layout.column(heading="Text Files")
|
||||
col.prop(paths, "use_tabs_as_spaces")
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(paths, "save_version")
|
||||
flow.prop(paths, "recent_files")
|
||||
col = layout.column()
|
||||
col.prop(paths, "save_version")
|
||||
col.prop(paths, "recent_files")
|
||||
|
||||
|
||||
class USERPREF_PT_saveload_blend_autosave(SaveLoadPanel, CenterAlignMixIn, Panel):
|
||||
bl_label = "Auto Save"
|
||||
bl_parent_id = "USERPREF_PT_saveload_blend"
|
||||
|
||||
def draw_header(self, context):
|
||||
prefs = context.preferences
|
||||
paths = prefs.filepaths
|
||||
|
||||
self.layout.prop(paths, "use_auto_save_temporary_files", text="")
|
||||
|
||||
def draw_centered(self, context, layout):
|
||||
prefs = context.preferences
|
||||
paths = prefs.filepaths
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(paths, "use_auto_save_temporary_files")
|
||||
sub = flow.column()
|
||||
sub.active = paths.use_auto_save_temporary_files
|
||||
sub.prop(paths, "auto_save_time", text="Timer (mins)")
|
||||
col = layout.column()
|
||||
col.active = paths.use_auto_save_temporary_files
|
||||
col.prop(paths, "auto_save_time", text="Timer (mins)")
|
||||
|
||||
|
||||
class USERPREF_PT_saveload_file_browser(SaveLoadPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -1360,12 +1339,13 @@ class USERPREF_PT_saveload_file_browser(SaveLoadPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
paths = prefs.filepaths
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
col.prop(paths, "use_filter_files")
|
||||
|
||||
flow.prop(paths, "use_filter_files")
|
||||
flow.prop(paths, "show_hidden_files_datablocks")
|
||||
flow.prop(paths, "hide_recent_locations")
|
||||
flow.prop(paths, "hide_system_bookmarks")
|
||||
col = layout.column(heading="Hide")
|
||||
col.prop(paths, "show_hidden_files_datablocks", text="Dot File & Datablocks")
|
||||
col.prop(paths, "hide_recent_locations", text="Recent Locations")
|
||||
col.prop(paths, "hide_system_bookmarks", text="System Bookmarks")
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -1424,10 +1404,9 @@ class USERPREF_PT_input_tablet(InputPanel, CenterAlignMixIn, Panel):
|
|||
layout.prop(inputs, "tablet_api")
|
||||
layout.separator()
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(inputs, "pressure_threshold_max")
|
||||
flow.prop(inputs, "pressure_softness")
|
||||
col = layout.column()
|
||||
col.prop(inputs, "pressure_threshold_max")
|
||||
col.prop(inputs, "pressure_softness")
|
||||
|
||||
|
||||
class USERPREF_PT_input_ndof(InputPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -1474,24 +1453,27 @@ class USERPREF_PT_navigation_orbit(NavigationPanel, CenterAlignMixIn, Panel):
|
|||
inputs = prefs.inputs
|
||||
view = prefs.view
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
|
||||
flow.row().prop(inputs, "view_rotate_method", expand=True)
|
||||
col.row().prop(inputs, "view_rotate_method", expand=True)
|
||||
if inputs.view_rotate_method == 'TURNTABLE':
|
||||
flow.prop(inputs, "view_rotate_sensitivity_turntable")
|
||||
col.prop(inputs, "view_rotate_sensitivity_turntable")
|
||||
else:
|
||||
flow.prop(inputs, "view_rotate_sensitivity_trackball")
|
||||
col.prop(inputs, "view_rotate_sensitivity_trackball")
|
||||
col.prop(inputs, "use_rotate_around_active")
|
||||
|
||||
col.separator()
|
||||
|
||||
flow.prop(inputs, "use_rotate_around_active")
|
||||
flow.prop(inputs, "use_auto_perspective")
|
||||
flow.prop(inputs, "use_mouse_depth_navigate")
|
||||
if sys.platform == "darwin":
|
||||
flow.prop(inputs, "use_trackpad_natural", text="Natural Trackpad Direction")
|
||||
col.prop(inputs, "use_trackpad_natural", text="Natural Trackpad Direction")
|
||||
|
||||
flow.separator()
|
||||
col = layout.column(heading="Auto")
|
||||
col.prop(inputs, "use_auto_perspective", text="Perspective")
|
||||
col.prop(inputs, "use_mouse_depth_navigate", text="Depth")
|
||||
|
||||
flow.prop(view, "smooth_view")
|
||||
flow.prop(view, "rotation_angle")
|
||||
col = layout.column()
|
||||
col.prop(view, "smooth_view")
|
||||
col.prop(view, "rotation_angle")
|
||||
|
||||
|
||||
class USERPREF_PT_navigation_zoom(NavigationPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -1501,16 +1483,20 @@ class USERPREF_PT_navigation_zoom(NavigationPanel, CenterAlignMixIn, Panel):
|
|||
prefs = context.preferences
|
||||
inputs = prefs.inputs
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
|
||||
flow.row().prop(inputs, "view_zoom_method", text="Zoom Method")
|
||||
col.row().prop(inputs, "view_zoom_method", text="Zoom Method")
|
||||
if inputs.view_zoom_method in {'DOLLY', 'CONTINUE'}:
|
||||
flow.row().prop(inputs, "view_zoom_axis")
|
||||
flow.prop(inputs, "invert_mouse_zoom", text="Invert Mouse Zoom Direction")
|
||||
col.row().prop(inputs, "view_zoom_axis")
|
||||
col.prop(inputs, "use_zoom_to_mouse")
|
||||
col = layout.column(heading="Invert Zoom Direction", align=True)
|
||||
col.prop(inputs, "invert_mouse_zoom", text="Mouse")
|
||||
col.prop(inputs, "invert_zoom_wheel", text="Wheel")
|
||||
else:
|
||||
col.prop(inputs, "use_zoom_to_mouse")
|
||||
col.prop(inputs, "invert_zoom_wheel", text="Invert Wheel Zoom Direction")
|
||||
|
||||
flow.prop(inputs, "invert_zoom_wheel", text="Invert Wheel Zoom Direction")
|
||||
# sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
|
||||
flow.prop(inputs, "use_zoom_to_mouse")
|
||||
|
||||
|
||||
class USERPREF_PT_navigation_fly_walk(NavigationPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -1541,15 +1527,14 @@ class USERPREF_PT_navigation_fly_walk_navigation(NavigationPanel, CenterAlignMix
|
|||
inputs = prefs.inputs
|
||||
walk = inputs.walk_navigation
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
col = layout.column()
|
||||
col.prop(walk, "use_mouse_reverse")
|
||||
col.prop(walk, "mouse_speed")
|
||||
col.prop(walk, "teleport_time")
|
||||
|
||||
flow.prop(walk, "use_mouse_reverse")
|
||||
flow.prop(walk, "mouse_speed")
|
||||
flow.prop(walk, "teleport_time")
|
||||
|
||||
sub = flow.column(align=True)
|
||||
sub.prop(walk, "walk_speed")
|
||||
sub.prop(walk, "walk_speed_factor")
|
||||
col = layout.column(align=True)
|
||||
col.prop(walk, "walk_speed")
|
||||
col.prop(walk, "walk_speed_factor")
|
||||
|
||||
|
||||
class USERPREF_PT_navigation_fly_walk_gravity(NavigationPanel, CenterAlignMixIn, Panel):
|
||||
|
@ -1576,10 +1561,9 @@ class USERPREF_PT_navigation_fly_walk_gravity(NavigationPanel, CenterAlignMixIn,
|
|||
|
||||
layout.active = walk.use_gravity
|
||||
|
||||
flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
flow.prop(walk, "view_height")
|
||||
flow.prop(walk, "jump_height")
|
||||
col = layout.column()
|
||||
col.prop(walk, "view_height")
|
||||
col.prop(walk, "jump_height")
|
||||
|
||||
|
||||
# Special case, this is only exposed as a popover.
|
||||
|
@ -2124,7 +2108,7 @@ class ExperimentalPanel:
|
|||
experimental = prefs.experimental
|
||||
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_split = False
|
||||
layout.use_property_decorate = False
|
||||
|
||||
for prop_keywords, task in items:
|
||||
|
|
|
@ -5396,8 +5396,8 @@ class VIEW3D_PT_view3d_properties(Panel):
|
|||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False # No animation.
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=False, even_rows=False, align=True)
|
||||
col = flow.column()
|
||||
|
||||
col = layout.column()
|
||||
|
||||
subcol = col.column()
|
||||
subcol.active = bool(view.region_3d.view_perspective != 'CAMERA' or view.region_quadviews)
|
||||
|
@ -5409,14 +5409,16 @@ class VIEW3D_PT_view3d_properties(Panel):
|
|||
|
||||
subcol.separator()
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
|
||||
subcol = col.column()
|
||||
subcol.prop(view, "use_local_camera")
|
||||
|
||||
subcol = col.column()
|
||||
subcol.enabled = view.use_local_camera
|
||||
subcol.prop(view, "camera", text="Local Camera")
|
||||
col = layout.column(align=False, heading="Local Camera")
|
||||
col.use_property_decorate = False
|
||||
row = col.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.prop(view, "use_local_camera", text="")
|
||||
sub = sub.row(align=True)
|
||||
sub.enabled = view.use_local_camera
|
||||
sub.prop(view, "camera", text="")
|
||||
|
||||
subcol = col.column(align=True)
|
||||
subcol.prop(view, "use_render_border")
|
||||
|
@ -5439,23 +5441,24 @@ class VIEW3D_PT_view3d_lock(Panel):
|
|||
view = context.space_data
|
||||
|
||||
col = layout.column(align=True)
|
||||
subcol = col.column()
|
||||
subcol.active = bool(view.region_3d.view_perspective != 'CAMERA' or view.region_quadviews)
|
||||
sub = col.column()
|
||||
sub.active = bool(view.region_3d.view_perspective != 'CAMERA' or view.region_quadviews)
|
||||
|
||||
subcol.prop(view, "lock_object")
|
||||
sub.prop(view, "lock_object")
|
||||
lock_object = view.lock_object
|
||||
if lock_object:
|
||||
if lock_object.type == 'ARMATURE':
|
||||
subcol.prop_search(
|
||||
sub.prop_search(
|
||||
view, "lock_bone", lock_object.data,
|
||||
"edit_bones" if lock_object.mode == 'EDIT'
|
||||
else "bones",
|
||||
text="",
|
||||
)
|
||||
else:
|
||||
subcol.prop(view, "lock_cursor", text="Lock to 3D Cursor")
|
||||
subcol = sub.column(heading="Lock")
|
||||
subcol.prop(view, "lock_cursor", text="To 3D Cursor")
|
||||
|
||||
col.prop(view, "lock_camera")
|
||||
col.prop(view, "lock_camera", text="Camera to View")
|
||||
|
||||
|
||||
class VIEW3D_PT_view3d_cursor(Panel):
|
||||
|
|
|
@ -125,21 +125,15 @@ class View3DPanel:
|
|||
# Used by vertex & weight paint
|
||||
def draw_vpaint_symmetry(layout, vpaint):
|
||||
|
||||
split = layout.split()
|
||||
col = layout.column()
|
||||
col.use_property_split = True
|
||||
col.use_property_decorate = False
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Mirror")
|
||||
|
||||
col = split.column()
|
||||
row = col.row(align=True)
|
||||
row = col.row(heading="Mirror", align=True)
|
||||
row.prop(vpaint, "use_symmetry_x", text="X", toggle=True)
|
||||
row.prop(vpaint, "use_symmetry_y", text="Y", toggle=True)
|
||||
row.prop(vpaint, "use_symmetry_z", text="Z", toggle=True)
|
||||
|
||||
col = layout.column()
|
||||
col.use_property_split = True
|
||||
col.use_property_decorate = False
|
||||
col.prop(vpaint, "radial_symmetry", text="Radial")
|
||||
|
||||
|
||||
|
@ -179,10 +173,10 @@ class VIEW3D_PT_tools_object_options_transform(View3DPanel, Panel):
|
|||
|
||||
tool_settings = context.tool_settings
|
||||
|
||||
layout.label(text="Affect Only")
|
||||
layout.prop(tool_settings, "use_transform_data_origin", text="Origins")
|
||||
layout.prop(tool_settings, "use_transform_pivot_point_align", text="Locations")
|
||||
layout.prop(tool_settings, "use_transform_skip_children", text="Parents")
|
||||
col = layout.column(heading="Affect Only", align=True)
|
||||
col.prop(tool_settings, "use_transform_data_origin", text="Origins")
|
||||
col.prop(tool_settings, "use_transform_pivot_point_align", text="Locations")
|
||||
col.prop(tool_settings, "use_transform_skip_children", text="Parents")
|
||||
|
||||
|
||||
# ********** default tools for editmode_mesh ****************
|
||||
|
@ -209,16 +203,11 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel):
|
|||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Mirror")
|
||||
|
||||
col = split.column()
|
||||
|
||||
row = col.row(align=True)
|
||||
row.prop(mesh, "use_mirror_x", text="X", toggle=True)
|
||||
row.prop(mesh, "use_mirror_y", text="Y", toggle=True)
|
||||
row.prop(mesh, "use_mirror_z", text="Z", toggle=True)
|
||||
row = layout.row(heading="Mirror")
|
||||
sub = row.row(align=True)
|
||||
sub.prop(mesh, "use_mirror_x", text="X", toggle=True)
|
||||
sub.prop(mesh, "use_mirror_y", text="Y", toggle=True)
|
||||
sub.prop(mesh, "use_mirror_z", text="Z", toggle=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.active = ob.data.use_mirror_x or ob.data.use_mirror_y or ob.data.use_mirror_z
|
||||
|
@ -872,10 +861,13 @@ class VIEW3D_PT_sculpt_voxel_remesh(Panel, View3DPaintPanel):
|
|||
col.prop(mesh, "remesh_voxel_adaptivity")
|
||||
col.prop(mesh, "use_remesh_fix_poles")
|
||||
col.prop(mesh, "use_remesh_smooth_normals")
|
||||
col.prop(mesh, "use_remesh_preserve_volume")
|
||||
col.prop(mesh, "use_remesh_preserve_paint_mask")
|
||||
col.prop(mesh, "use_remesh_preserve_sculpt_face_sets")
|
||||
col.operator("object.voxel_remesh", text="Remesh")
|
||||
|
||||
col = layout.column(heading="Preserve", align=True)
|
||||
col.prop(mesh, "use_remesh_preserve_volume", text="Volume")
|
||||
col.prop(mesh, "use_remesh_preserve_paint_mask", text="Paint Mask")
|
||||
col.prop(mesh, "use_remesh_preserve_sculpt_face_sets", text="Face Sets")
|
||||
|
||||
layout.operator("object.voxel_remesh", text="Remesh")
|
||||
|
||||
|
||||
# TODO, move to space_view3d.py
|
||||
|
@ -896,23 +888,19 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel):
|
|||
tool_settings = context.tool_settings
|
||||
sculpt = tool_settings.sculpt
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column(heading="Display", align=True)
|
||||
col.prop(sculpt, "use_threaded", text="Threaded Sculpt")
|
||||
col = flow.column()
|
||||
col.prop(sculpt, "show_low_resolution")
|
||||
col = flow.column()
|
||||
col.prop(sculpt, "use_sculpt_delay_updates")
|
||||
col = flow.column()
|
||||
col.prop(sculpt, "use_deform_only")
|
||||
|
||||
col = flow.column()
|
||||
col.separator()
|
||||
col.prop(sculpt, "use_automasking_topology")
|
||||
col.prop(sculpt, "use_automasking_face_sets")
|
||||
col.prop(sculpt, "use_automasking_boundary_edges")
|
||||
col.prop(sculpt, "use_automasking_boundary_face_sets")
|
||||
|
||||
col = layout.column(heading="Auto-Masking", align=True)
|
||||
col.prop(sculpt, "use_automasking_topology", text="Topology")
|
||||
col.prop(sculpt, "use_automasking_face_sets", text="Face Sets")
|
||||
col.prop(sculpt, "use_automasking_boundary_edges", text="Boundary Edges")
|
||||
col.prop(sculpt, "use_automasking_boundary_face_sets", text="Boundary Face Sets")
|
||||
|
||||
|
||||
class VIEW3D_PT_sculpt_options_gravity(Panel, View3DPaintPanel):
|
||||
|
@ -955,61 +943,34 @@ class VIEW3D_PT_sculpt_symmetry(Panel, View3DPaintPanel):
|
|||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
sculpt = context.tool_settings.sculpt
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Mirror")
|
||||
|
||||
col = split.column()
|
||||
|
||||
row = col.row(align=True)
|
||||
row = layout.row(align=True, heading="Mirror")
|
||||
row.prop(sculpt, "use_symmetry_x", text="X", toggle=True)
|
||||
row.prop(sculpt, "use_symmetry_y", text="Y", toggle=True)
|
||||
row.prop(sculpt, "use_symmetry_z", text="Z", toggle=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Lock")
|
||||
|
||||
col = split.column()
|
||||
|
||||
row = col.row(align=True)
|
||||
row = layout.row(align=True, heading="Lock")
|
||||
row.prop(sculpt, "lock_x", text="X", toggle=True)
|
||||
row.prop(sculpt, "lock_y", text="Y", toggle=True)
|
||||
row.prop(sculpt, "lock_z", text="Z", toggle=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.alignment = 'RIGHT'
|
||||
col.label(text="Tiling")
|
||||
|
||||
col = split.column()
|
||||
|
||||
row = col.row(align=True)
|
||||
row = layout.row(align=True, heading="Tiling")
|
||||
row.prop(sculpt, "tile_x", text="X", toggle=True)
|
||||
row.prop(sculpt, "tile_y", text="Y", toggle=True)
|
||||
row.prop(sculpt, "tile_z", text="Z", toggle=True)
|
||||
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
layout.prop(sculpt, "use_symmetry_feather", text="Feather")
|
||||
layout.column().prop(sculpt, "radial_symmetry", text="Radial")
|
||||
layout.column().prop(sculpt, "tile_offset", text="Tile Offset")
|
||||
layout.prop(sculpt, "radial_symmetry", text="Radial")
|
||||
layout.prop(sculpt, "tile_offset", text="Tile Offset")
|
||||
|
||||
layout.separator()
|
||||
|
||||
col = layout.column()
|
||||
|
||||
col.prop(sculpt, "symmetrize_direction")
|
||||
col.operator("sculpt.symmetrize")
|
||||
layout.prop(sculpt, "symmetrize_direction")
|
||||
layout.operator("sculpt.symmetrize")
|
||||
|
||||
|
||||
class VIEW3D_PT_sculpt_symmetry_for_topbar(Panel):
|
||||
|
@ -1212,12 +1173,8 @@ class VIEW3D_PT_tools_imagepaint_options(View3DPaintPanel, Panel):
|
|||
layout.prop(ipaint, "seam_bleed")
|
||||
layout.prop(ipaint, "dither", slider=True)
|
||||
|
||||
flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False)
|
||||
|
||||
col = flow.column()
|
||||
col = layout.column()
|
||||
col.prop(ipaint, "use_occlude")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(ipaint, "use_backface_culling", text="Backface Culling")
|
||||
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
} \
|
||||
(void)0
|
||||
|
||||
#define UI_ITEM_PROP_SEP_DIVIDE 0.5f
|
||||
#define UI_ITEM_PROP_SEP_DIVIDE 0.4f
|
||||
|
||||
/* uiLayoutRoot */
|
||||
|
||||
|
|
|
@ -5699,6 +5699,16 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
|
|||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
static const EnumPropertyItem meta_input_items[] = {
|
||||
{0, "SCENE", 0, "Scene", "Use metadata from the current scene"},
|
||||
{R_STAMP_STRIPMETA,
|
||||
"STRIPS",
|
||||
0,
|
||||
"Sequencer Strips",
|
||||
"Use metadata from the strips in the sequencer"},
|
||||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
rna_def_scene_ffmpeg_settings(brna);
|
||||
|
||||
srna = RNA_def_struct(brna, "RenderSettings", NULL);
|
||||
|
@ -6216,10 +6226,10 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
|
|||
prop, "Stamp Labels", "Display stamp labels (\"Camera\" in front of camera name, etc.)");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "use_stamp_strip_meta", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_STRIPMETA);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Strip Metadata", "Use metadata from the strips in the sequencer");
|
||||
prop = RNA_def_property(srna, "metadata_input", PROP_ENUM, PROP_NONE); /* as an enum */
|
||||
RNA_def_property_enum_bitflag_sdna(prop, NULL, "stamp");
|
||||
RNA_def_property_enum_items(prop, meta_input_items);
|
||||
RNA_def_property_ui_text(prop, "Metadata Input", "Where to take the metadata from");
|
||||
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "use_stamp_memory", PROP_BOOLEAN, PROP_NONE);
|
||||
|
|
Loading…
Reference in New Issue