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:
authorNathan Craddock <nzcraddock@gmail.com>2020-12-03 20:52:08 +0300
committerNathan Craddock <nzcraddock@gmail.com>2020-12-05 03:54:19 +0300
commit48acf15f9856d6ffcd29cdd8b3a64dd9eb983cd0 (patch)
treefea2ce35811ae689c261fb2cf03ae1f22f9098cc
parentaaa02984d3978bcf94d9a98d1ac9139d5fbfca2d (diff)
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
-rw-r--r--source/blender/editors/space_outliner/CMakeLists.txt1
-rw-r--r--source/blender/editors/space_outliner/outliner_tree.c18
-rw-r--r--source/blender/editors/space_outliner/tree/tree_display.cc1
-rw-r--r--source/blender/editors/space_outliner/tree/tree_display.hh13
-rw-r--r--source/blender/editors/space_outliner/tree/tree_display_data.cc56
5 files changed, 73 insertions, 16 deletions
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