[Bf-blender-cvs] [13fe40b5d0c] temp-outliner-library-override-hierarchy: Add toggle for Library Overrides view mode
Julian Eisel
noreply at git.blender.org
Wed Mar 9 18:27:20 CET 2022
Commit: 13fe40b5d0c54d2e3e021c9007bfc0b707f8209b
Author: Julian Eisel
Date: Wed Mar 9 18:08:45 2022 +0100
Branches: temp-outliner-library-override-hierarchy
https://developer.blender.org/rB13fe40b5d0c54d2e3e021c9007bfc0b707f8209b
Add toggle for Library Overrides view mode
Adds a menu to choose between Properties and Hierarchy display mode.
Each is implemented as separate tree-display for now.
===================================================================
M release/scripts/startup/bl_ui/space_outliner.py
M source/blender/editors/space_outliner/CMakeLists.txt
M source/blender/editors/space_outliner/tree/tree_display.cc
M source/blender/editors/space_outliner/tree/tree_display.hh
A source/blender/editors/space_outliner/tree/tree_display_override_library_hierarchy.cc
R091 source/blender/editors/space_outliner/tree/tree_display_override_library.cc source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/intern/rna_space.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py
index 9d3f20ce4a4..f80e07213f9 100644
--- a/release/scripts/startup/bl_ui/space_outliner.py
+++ b/release/scripts/startup/bl_ui/space_outliner.py
@@ -22,6 +22,8 @@ class OUTLINER_HT_header(Header):
if display_mode == 'DATA_API':
OUTLINER_MT_editor_menus.draw_collapsible(context, layout)
+ if display_mode == 'LIBRARY_OVERRIDES':
+ layout.prop(space, "lib_override_view_mode", text="")
layout.separator_spacer()
diff --git a/source/blender/editors/space_outliner/CMakeLists.txt b/source/blender/editors/space_outliner/CMakeLists.txt
index a91de37fa76..b415ebd9d86 100644
--- a/source/blender/editors/space_outliner/CMakeLists.txt
+++ b/source/blender/editors/space_outliner/CMakeLists.txt
@@ -36,7 +36,8 @@ set(SRC
tree/tree_display_data.cc
tree/tree_display_libraries.cc
tree/tree_display_orphaned.cc
- tree/tree_display_override_library.cc
+ tree/tree_display_override_library_properties.cc
+ tree/tree_display_override_library_hierarchy.cc
tree/tree_display_scenes.cc
tree/tree_display_sequencer.cc
tree/tree_display_view_layer.cc
diff --git a/source/blender/editors/space_outliner/tree/tree_display.cc b/source/blender/editors/space_outliner/tree/tree_display.cc
index f9141dffd6a..d1fb1a20b0a 100644
--- a/source/blender/editors/space_outliner/tree/tree_display.cc
+++ b/source/blender/editors/space_outliner/tree/tree_display.cc
@@ -30,7 +30,13 @@ std::unique_ptr<AbstractTreeDisplay> AbstractTreeDisplay::createFromDisplayMode(
case SO_ID_ORPHANS:
return std::make_unique<TreeDisplayIDOrphans>(space_outliner);
case SO_OVERRIDES_LIBRARY:
- return std::make_unique<TreeDisplayOverrideLibrary>(space_outliner);
+ switch ((eSpaceOutliner_LibOverrideViewMode)space_outliner.lib_override_view_mode) {
+ case SO_LIB_OVERRIDE_VIEW_PROPERTIES:
+ return std::make_unique<TreeDisplayOverrideLibraryProperties>(space_outliner);
+ case SO_LIB_OVERRIDE_VIEW_HIERARCHY:
+ return std::make_unique<TreeDisplayOverrideLibraryHierarchy>(space_outliner);
+ }
+ break;
case SO_VIEW_LAYER:
return std::make_unique<TreeDisplayViewLayer>(space_outliner);
}
diff --git a/source/blender/editors/space_outliner/tree/tree_display.hh b/source/blender/editors/space_outliner/tree/tree_display.hh
index bdca1954a9c..2fde6d3b73f 100644
--- a/source/blender/editors/space_outliner/tree/tree_display.hh
+++ b/source/blender/editors/space_outliner/tree/tree_display.hh
@@ -127,11 +127,11 @@ class TreeDisplayLibraries final : public AbstractTreeDisplay {
/* Library Overrides Tree-Display. */
/**
- * \brief Tree-Display for the Library Overrides display mode.
+ * \brief Tree-Display for the Library Overrides display mode, Properties view mode.
*/
-class TreeDisplayOverrideLibrary final : public AbstractTreeDisplay {
+class TreeDisplayOverrideLibraryProperties final : public AbstractTreeDisplay {
public:
- TreeDisplayOverrideLibrary(SpaceOutliner &space_outliner);
+ TreeDisplayOverrideLibraryProperties(SpaceOutliner &space_outliner);
ListBase buildTree(const TreeSourceData &source_data) override;
@@ -141,6 +141,16 @@ class TreeDisplayOverrideLibrary final : public AbstractTreeDisplay {
short id_filter_get() const;
};
+/**
+ * \brief Tree-Display for the Library Overrides display mode, Hierarchy view mode.
+ */
+class TreeDisplayOverrideLibraryHierarchy final : public AbstractTreeDisplay {
+ public:
+ TreeDisplayOverrideLibraryHierarchy(SpaceOutliner &space_outliner);
+
+ ListBase buildTree(const TreeSourceData &source_data) override;
+};
+
/* -------------------------------------------------------------------- */
/* Video Sequencer Tree-Display */
diff --git a/source/blender/editors/space_outliner/tree/tree_display_override_library_hierarchy.cc b/source/blender/editors/space_outliner/tree/tree_display_override_library_hierarchy.cc
new file mode 100644
index 00000000000..c4870fe3b6b
--- /dev/null
+++ b/source/blender/editors/space_outliner/tree/tree_display_override_library_hierarchy.cc
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+/** \file
+ * \ingroup spoutliner
+ */
+
+#include "BLI_listbase.h"
+
+#include "tree_display.hh"
+
+namespace blender::ed::outliner {
+
+TreeDisplayOverrideLibraryHierarchy::TreeDisplayOverrideLibraryHierarchy(
+ SpaceOutliner &space_outliner)
+ : AbstractTreeDisplay(space_outliner)
+{
+}
+
+ListBase TreeDisplayOverrideLibraryHierarchy::buildTree(const TreeSourceData & /*source_data*/)
+{
+ ListBase tree = {nullptr};
+ return tree;
+}
+
+} // namespace blender::ed::outliner
diff --git a/source/blender/editors/space_outliner/tree/tree_display_override_library.cc b/source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc
similarity index 91%
rename from source/blender/editors/space_outliner/tree/tree_display_override_library.cc
rename to source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc
index f94727ba356..10b00c2e9cb 100644
--- a/source/blender/editors/space_outliner/tree/tree_display_override_library.cc
+++ b/source/blender/editors/space_outliner/tree/tree_display_override_library_properties.cc
@@ -25,12 +25,12 @@ namespace blender::ed::outliner {
/* Convenience/readability. */
template<typename T> using List = ListBaseWrapper<T>;
-TreeDisplayOverrideLibrary::TreeDisplayOverrideLibrary(SpaceOutliner &space_outliner)
+TreeDisplayOverrideLibraryProperties::TreeDisplayOverrideLibraryProperties(SpaceOutliner &space_outliner)
: AbstractTreeDisplay(space_outliner)
{
}
-ListBase TreeDisplayOverrideLibrary::buildTree(const TreeSourceData &source_data)
+ListBase TreeDisplayOverrideLibraryProperties::buildTree(const TreeSourceData &source_data)
{
ListBase tree = {nullptr};
@@ -94,7 +94,7 @@ ListBase TreeDisplayOverrideLibrary::buildTree(const TreeSourceData &source_data
return tree;
}
-TreeElement *TreeDisplayOverrideLibrary::add_library_contents(Main &mainvar,
+TreeElement *TreeDisplayOverrideLibraryProperties::add_library_contents(Main &mainvar,
ListBase &lb,
Library *lib)
{
@@ -170,7 +170,7 @@ TreeElement *TreeDisplayOverrideLibrary::add_library_contents(Main &mainvar,
return tenlib;
}
-short TreeDisplayOverrideLibrary::id_filter_get() const
+short TreeDisplayOverrideLibraryProperties::id_filter_get() const
{
if (space_outliner_.filter & SO_FILTER_ID_TYPE) {
return space_outliner_.filter_id_type;
@@ -178,7 +178,7 @@ short TreeDisplayOverrideLibrary::id_filter_get() const
return 0;
}
-bool TreeDisplayOverrideLibrary::override_library_id_filter_poll(const Library *lib, ID *id) const
+bool TreeDisplayOverrideLibraryProperties::override_library_id_filter_poll(const Library *lib, ID *id) const
{
if (id->lib != lib) {
return false;
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index e6c163d94ba..6bdcf74e1cf 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -280,8 +280,12 @@ typedef struct SpaceOutliner {
char search_string[64];
struct TreeStoreElem search_tse;
- short flag, outlinevis, storeflag;
+ short flag;
+ short outlinevis;
+ short lib_override_view_mode;
+ short storeflag;
char search_flags;
+ char _pad[6];
/** Selection syncing flag (#WM_OUTLINER_SYNC_SELECT_FROM_OBJECT and similar flags). */
char sync_select_dirty;
@@ -389,6 +393,12 @@ typedef enum eSpaceOutliner_Mode {
SO_OVERRIDES_LIBRARY = 16,
} eSpaceOutliner_Mode;
+/** #SpaceOutliner.outlinevis */
+typedef enum eSpaceOutliner_LibOverrideViewMode {
+ SO_LIB_OVERRIDE_VIEW_PROPERTIES = 0,
+ SO_LIB_OVERRIDE_VIEW_HIERARCHY = 1,
+} eSpaceOutliner_LibOverrideViewMode;
+
/** #SpaceOutliner.storeflag */
typedef enum eSpaceOutliner_StoreFlag {
/* cleanup tree */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 2344aa42838..ffca8716a75 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -3593,6 +3593,20 @@ static void rna_def_space_outliner(BlenderRNA *brna)
{0, NULL, 0, NULL, NULL},
};
+ static const EnumPropertyItem lib_override_view_mode[] = {
+ {SO_LIB_OVERRIDE_VIEW_PROPERTIES,
+ "PROPERTIES",
+ ICON_NONE,
+ "Properties",
+ "Display all data-blocks with their overridden properties and buttons do edit them"},
+ {SO_LIB_OVERRIDE_VIEW_HIERARCHY,
+ "HIERARCHY",
+ ICON_NONE,
+ "Hierarchy",
+ "Display library override relationships"},
+ {0, NULL, 0, NULL, NULL},
+ };
+
static const EnumPropertyItem filter_state_items[] = {
{SO_FILTER_OB_ALL, "ALL", 0, "All", "Show all objects in the view layer"},
{SO_FILTER_OB_VISIBLE, "VISIBLE", 0, "Visible", "Show visible objects"},
@@ -3612,6 +3626,13 @@ static void rna_def_space_outliner(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Display Mode", "Type of information to display");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_OUTLINER, NULL);
+ prop = RNA_def_property(srna, "lib_override_view_mode", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_items(prop, lib_override_view_mode);
+ RNA_def_property_ui_text(prop,
+ "Library Override View Mode",
+ "Choose different visualizations of library override data");
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_OUTLINER, NULL);
+
prop = RNA_def_property(srna, "filter_text", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "search_string");
RNA_def_property_ui_text(prop, "Display Filter", "Live search filtering string");
More information about the Bf-blender-cvs
mailing list