diff options
Diffstat (limited to 'release/scripts/startup/bl_ui/space_outliner.py')
-rw-r--r-- | release/scripts/startup/bl_ui/space_outliner.py | 140 |
1 files changed, 125 insertions, 15 deletions
diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py index 4951ef83ad0..122fe84763d 100644 --- a/release/scripts/startup/bl_ui/space_outliner.py +++ b/release/scripts/startup/bl_ui/space_outliner.py @@ -28,8 +28,10 @@ class OUTLINER_HT_header(Header): layout = self.layout space = context.space_data + display_mode = space.display_mode scene = context.scene ks = context.scene.keying_sets.active + support_filters = display_mode in {'COLLECTIONS', 'VIEW_LAYER'} row = layout.row(align=True) row.template_header() @@ -38,11 +40,9 @@ class OUTLINER_HT_header(Header): layout.prop(space, "display_mode", text="") - layout.prop(space, "filter_text", icon='VIEWZOOM', text="") - - layout.separator() - if space.display_mode == 'DATABLOCKS': + layout.separator() + row = layout.row(align=True) row.operator("outliner.keyingset_add_selected", icon='ZOOMIN', text="") row.operator("outliner.keyingset_remove_selected", icon='ZOOMOUT', text="") @@ -57,8 +57,54 @@ class OUTLINER_HT_header(Header): else: row = layout.row() row.label(text="No Keying Set Active") - elif space.display_mode == 'ORPHAN_DATA': - layout.operator("outliner.orphans_purge") + + row = layout.row(align=True) + row.prop(space, "use_filter_search", text="") + if space.use_filter_search: + row.prop(space, "filter_text", text="") + row.prop(space, "use_filter_complete", text="") + row.prop(space, "use_filter_case_sensitive", text="") + + if support_filters: + row.separator() + + row.prop(space, "use_filters", text="") + if space.use_filters: + row.separator() + row.prop(space, "use_filter_collection", text="") + row.prop(space, "use_filter_object", text="") + sub = row.row(align=True) + sub.active = space.use_filter_object + sub.prop(space, "use_filter_object_content", text="") + sub.prop(space, "use_filter_children", text="") + + sub.separator() + sub.prop(space, "use_filter_object_type", text="") + + if space.use_filter_object_type: + if bpy.data.meshes: + sub.prop(space, "use_filter_object_mesh", text="") + if bpy.data.armatures: + sub.prop(space, "use_filter_object_armature", text="") + if bpy.data.lamps: + sub.prop(space, "use_filter_object_lamp", text="") + if bpy.data.cameras: + sub.prop(space, "use_filter_object_camera", text="") + + sub.prop(space, "use_filter_object_empty", text="") + + if bpy.data.curves or \ + bpy.data.metaballs or \ + bpy.data.lightprobes or \ + bpy.data.lattices or \ + bpy.data.fonts or bpy.data.speakers: + sub.prop(space, "use_filter_object_others", text="") + + sub.separator() + sub.prop(space, "use_filter_object_state", text="") + + if space.use_filter_object_state: + sub.prop(space, "filter_state", text="", expand=True) class OUTLINER_MT_editor_menus(Menu): @@ -73,11 +119,16 @@ class OUTLINER_MT_editor_menus(Menu): space = context.space_data layout.menu("OUTLINER_MT_view") - layout.menu("OUTLINER_MT_search") if space.display_mode == 'DATABLOCKS': layout.menu("OUTLINER_MT_edit_datablocks") + elif space.display_mode == 'ORPHAN_DATA': + layout.menu("OUTLINER_MT_edit_orphan_data") + + elif space.display_mode == 'VIEW_LAYER': + layout.menu("OUTLINER_MT_edit_view_layer") + class OUTLINER_MT_view(Menu): bl_label = "View" @@ -87,7 +138,7 @@ class OUTLINER_MT_view(Menu): space = context.space_data - if space.display_mode not in {'DATABLOCKS', 'USER_PREFERENCES'}: + if space.display_mode != 'DATABLOCKS': layout.prop(space, "use_sort_alpha") layout.prop(space, "show_restrict_columns") layout.separator() @@ -104,16 +155,14 @@ class OUTLINER_MT_view(Menu): layout.operator("screen.screen_full_area", text="Toggle Fullscreen Area").use_hide_panels = True -class OUTLINER_MT_search(Menu): - bl_label = "Search" +class OUTLINER_MT_edit_view_layer(Menu): + bl_label = "Edit" def draw(self, context): layout = self.layout - space = context.space_data - - layout.prop(space, "use_filter_case_sensitive") - layout.prop(space, "use_filter_complete") + layout.operator("outliner.collection_link", icon='LINKED') + layout.operator("outliner.collection_new", icon='NEW') class OUTLINER_MT_edit_datablocks(Menu): @@ -131,12 +180,73 @@ class OUTLINER_MT_edit_datablocks(Menu): layout.operator("outliner.drivers_delete_selected") +class OUTLINER_MT_edit_orphan_data(Menu): + bl_label = "Edit" + + def draw(self, context): + layout = self.layout + layout.operator("outliner.orphans_purge") + + +class OUTLINER_MT_context_scene_collection(Menu): + bl_label = "Collection" + + def draw(self, context): + layout = self.layout + + layout.operator("outliner.collection_nested_new", text="New Collection", icon='NEW') + layout.operator("outliner.collection_duplicate", text="Duplicate Collection") + layout.operator("outliner.collection_delete_selected", text="Delete Collections", icon='X') + layout.separator() + layout.operator("outliner.collection_objects_add", text="Add Selected", icon='ZOOMIN') + layout.operator("outliner.collection_objects_remove", text="Remove Selected", icon='ZOOMOUT') + + +class OUTLINER_MT_context_object_select(Menu): + bl_label = "Object Operation Select" + + def draw(self, context): + layout = self.layout + + layout.operator("outliner.object_operation", text="Select").type='SELECT' + layout.operator("outliner.object_operation", text="Deselect").type='DESELECT' + layout.operator("outliner.object_operation", text="Select Hierarchy").type='SELECT_HIERARCHY' + + +class OUTLINER_MT_context_object_delete(Menu): + bl_label = "Object Operation Delete" + + def draw(self, context): + layout = self.layout + + layout.operator("outliner.object_operation", text="Delete").type='DELETE' + layout.operator("outliner.object_operation", text="Delete Hierarchy").type='DELETE_HIERARCHY' + + +class OUTLINER_MT_context_object(Menu): + bl_label = "Object" + + def draw(self, context): + layout = self.layout + + layout.menu("OUTLINER_MT_context_object_select", text="Select") + layout.menu("OUTLINER_MT_context_object_delete", text="Delete") + layout.separator() + layout.operator("outliner.object_operation", text="Remap Users").type='REMAP' + layout.operator("outliner.object_operation", text="Rename").type='RENAME' + + classes = ( OUTLINER_HT_header, OUTLINER_MT_editor_menus, OUTLINER_MT_view, - OUTLINER_MT_search, + OUTLINER_MT_edit_view_layer, OUTLINER_MT_edit_datablocks, + OUTLINER_MT_edit_orphan_data, + OUTLINER_MT_context_scene_collection, + OUTLINER_MT_context_object, + OUTLINER_MT_context_object_delete, + OUTLINER_MT_context_object_select, ) if __name__ == "__main__": # only for live edit. |