[Bf-blender-cvs] [48acf15f985] master: Cleanup: Outliner Data API display mode

Nathan Craddock noreply at git.blender.org
Sat Dec 5 02:00:39 CET 2020


Commit: 48acf15f9856d6ffcd29cdd8b3a64dd9eb983cd0
Author: Nathan Craddock
Date:   Thu Dec 3 10:52:08 2020 -0700
Branches: master
https://developer.blender.org/rB48acf15f9856d6ffcd29cdd8b3a64dd9eb983cd0

Cleanup: Outliner Data API display mode

No functional changes. Moves the data API display building code to C++.

Differential Revision: https://developer.blender.org/D9741

===================================================================

M	source/blender/editors/space_outliner/CMakeLists.txt
M	source/blender/editors/space_outliner/outliner_tree.c
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_data.cc

===================================================================

diff --git a/source/blender/editors/space_outliner/CMakeLists.txt b/source/blender/editors/space_outliner/CMakeLists.txt
index 6b941eb3e62..b21b969493a 100644
--- a/source/blender/editors/space_outliner/CMakeLists.txt
+++ b/source/blender/editors/space_outliner/CMakeLists.txt
@@ -51,6 +51,7 @@ set(SRC
   tree/tree_display_sequencer.cc
   tree/tree_display_orphaned.cc
   tree/tree_display_scenes.cc
+  tree/tree_display_data.cc
 
   outliner_intern.h
   tree/tree_display.h
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 85203d1f4dd..52f91781967 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -2061,11 +2061,6 @@ void outliner_build_tree(Main *mainvar,
                          SpaceOutliner *space_outliner,
                          ARegion *region)
 {
-  TreeElement *ten;
-  TreeStoreElem *tselem;
-  /* on first view, we open scenes */
-  int show_opened = !space_outliner->treestore || !BLI_mempool_len(space_outliner->treestore);
-
   /* Are we looking for something - we want to tag parents to filter child matches
    * - NOT in data-blocks view - searching all data-blocks takes way too long to be useful
    * - this variable is only set once per tree build */
@@ -2119,17 +2114,8 @@ void outliner_build_tree(Main *mainvar,
     BLI_assert(false);
   }
   else if (space_outliner->outlinevis == SO_DATA_API) {
-    PointerRNA mainptr;
-
-    RNA_main_pointer_create(mainvar, &mainptr);
-
-    ten = outliner_add_element(
-        space_outliner, &space_outliner->tree, (void *)&mainptr, NULL, TSE_RNA_STRUCT, -1);
-
-    if (show_opened) {
-      tselem = TREESTORE(ten);
-      tselem->flag &= ~TSE_CLOSED;
-    }
+    /* Ported to new tree-display, should be built there already. */
+    BLI_assert(false);
   }
   else if (space_outliner->outlinevis == SO_ID_ORPHANS) {
     /* Ported to new tree-display, should be built there already. */
diff --git a/source/blender/editors/space_outliner/tree/tree_display.cc b/source/blender/editors/space_outliner/tree/tree_display.cc
index f94c643d2bb..d2070fb9b1c 100644
--- a/source/blender/editors/space_outliner/tree/tree_display.cc
+++ b/source/blender/editors/space_outliner/tree/tree_display.cc
@@ -41,6 +41,7 @@ TreeDisplay *outliner_tree_display_create(eSpaceOutliner_Mode mode, SpaceOutline
       tree_display = new TreeDisplaySequencer(*space_outliner);
       break;
     case SO_DATA_API:
+      tree_display = new TreeDisplayDataAPI(*space_outliner);
       break;
     case SO_ID_ORPHANS:
       tree_display = new TreeDisplayIDOrphans(*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 4a2559d94ab..b6183050e82 100644
--- a/source/blender/editors/space_outliner/tree/tree_display.hh
+++ b/source/blender/editors/space_outliner/tree/tree_display.hh
@@ -163,4 +163,17 @@ class TreeDisplayScenes final : public AbstractTreeDisplay {
   ListBase buildTree(const TreeSourceData &source_data) override;
 };
 
+/* -------------------------------------------------------------------- */
+/* Data API Tree-Display */
+
+/**
+ * \brief Tree-Display for the Scenes display mode
+ */
+class TreeDisplayDataAPI final : public AbstractTreeDisplay {
+ public:
+  TreeDisplayDataAPI(SpaceOutliner &space_outliner);
+
+  ListBase buildTree(const TreeSourceData &source_data) override;
+};
+
 }  // namespace blender::ed::outliner
diff --git a/source/blender/editors/space_outliner/tree/tree_display_data.cc b/source/blender/editors/space_outliner/tree/tree_display_data.cc
new file mode 100644
index 00000000000..41ca4f72903
--- /dev/null
+++ b/source/blender/editors/space_outliner/tree/tree_display_data.cc
@@ -0,0 +1,56 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/** \file
+ * \ingroup spoutliner
+ */
+
+#include "BLI_listbase.h"
+#include "BLI_mempool.h"
+
+#include "RNA_access.h"
+
+#include "../outliner_intern.h"
+#include "tree_display.hh"
+
+namespace blender::ed::outliner {
+
+TreeDisplayDataAPI::TreeDisplayDataAPI(SpaceOutliner &space_outliner)
+    : AbstractTreeDisplay(space_outliner)
+{
+}
+
+ListBase TreeDisplayDataAPI::buildTree(const TreeSourceData &source_data)
+{
+  ListBase tree = {nullptr};
+
+  PointerRNA mainptr;
+  RNA_main_pointer_create(source_data.bmain, &mainptr);
+
+  TreeElement *te = outliner_add_element(
+      &space_outliner_, &tree, (void *)&mainptr, NULL, TSE_RNA_STRUCT, -1);
+
+  /* On first view open parent data elements */
+  const int show_opened = !space_outliner_.treestore ||
+                          !BLI_mempool_len(space_outliner_.treestore);
+  if (show_opened) {
+    TreeStoreElem *tselem = TREESTORE(te);
+    tselem->flag &= ~TSE_CLOSED;
+  }
+  return tree;
+}
+
+}  // namespace blender::ed::outliner



More information about the Bf-blender-cvs mailing list