Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/startup/bl_ui/space_outliner.py')
-rw-r--r--release/scripts/startup/bl_ui/space_outliner.py140
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.