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:
authorTon Roosendaal <ton@blender.org>2004-10-06 22:55:00 +0400
committerTon Roosendaal <ton@blender.org>2004-10-06 22:55:00 +0400
commitd5e0c065bc58a8a6e45a5ffee58fb97f120228e6 (patch)
treece4f18cb2b3a010441a5011f8d89065da5699f44 /source/blender/makesdna
parentd5e1d1844a6aba0fc66e456b3fa3e70a9e4e98e1 (diff)
Version 1.0 of the new Outliner
The outliner is a hierarchical diagram displaying a list of data in Blender and its dependencies. The 'databrowse' doesn't really show it, and Oops is too chaotic still. And most of all, the former two don't offer much tools. After discussions on irc, Matt came with this design proposal; http://mke3.net/blender/interface/layout/outliner/ Which is closely followed for the implementation. The current version only shows all 'library data' in Blender (objects, meshes, ipos, etc) and not the 'direct data' such as vertex groups or NLA. I decided to make it inside the Oopw window, as an option. You can find the option in the "View" pulldown, or directly invoke it with ALT+SHIFT+F9 Here's a quick overview of the Outliner GUI: - Header pulldown has options what it can show (Visible = in current layers) - click on triangle arrow to open/close - press AKEY to open/close all - Leftmouse click on an item activates; and does based on type a couple of extra things: - activates a scene - selects/activates the Object - enters editmode (if clicked on Mesh, Curve, etc) - shows the appropriate Shading buttons (Lamp, Material, Texture) - sets the IpoWindow to the current IPO - activates the Ipo-channel in an Action - Selected and Active objects are drawn in its Theme selection color - SHIFT+click on Object does extend-select - Press DOTkey to get the current active data in center of view TODO; - rightmouse selection; for indicating operations like delete or duplicate - showing more data types - icon (re)design... - lotsof options as described in Matts paper still...
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_ID.h3
-rw-r--r--source/blender/makesdna/DNA_oops_types.h15
-rw-r--r--source/blender/makesdna/DNA_space_types.h20
3 files changed, 37 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 3802a8ff37c..86ee9eabb15 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -129,7 +129,8 @@ typedef struct Library {
#define ID_SCRIPT MAKE_ID2('P', 'Y')
#define IPO_CO MAKE_ID2('C', 'O') /* NOTE! This is not an ID, but is needed for g.sipo->blocktype */
-
+#define ID_NLA MAKE_ID2('N', 'L') /* fake ID for outliner */
+
/* id->flag: set frist 8 bits always at zero while reading */
#define LIB_LOCAL 0
#define LIB_EXTERN 1
diff --git a/source/blender/makesdna/DNA_oops_types.h b/source/blender/makesdna/DNA_oops_types.h
index 3b03af4dfd9..30049987e59 100644
--- a/source/blender/makesdna/DNA_oops_types.h
+++ b/source/blender/makesdna/DNA_oops_types.h
@@ -41,6 +41,16 @@
struct ID;
+typedef struct TreeStoreElem {
+ short type, nr, flag, used;
+ ID *id;
+} TreeStoreElem;
+
+typedef struct TreeStore {
+ int totelem, usedelem;
+ TreeStoreElem *data;
+} TreeStore;
+
typedef struct Oops {
struct Oops *next, *prev;
short type, flag, dt, hide;
@@ -65,5 +75,10 @@ typedef struct OopsLink {
#define OOPS_DOSELECT 2
#define OOPS_REFER 4
+/* TreeStoreElem->flag */
+#define TSE_CLOSED 1
+#define TSE_LASTCLICKED 2
+
+
#endif
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 15638aed57d..ef646ee81ab 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -47,6 +47,8 @@ struct ImBuf;
struct Image;
struct SpaceIpo;
struct BlendHandle;
+struct TreeStore;
+
/**
* The base structure all the other spaces
@@ -194,6 +196,11 @@ typedef struct SpaceOops {
short pin, visiflag, flag, rt;
void *lockpoin;
+ ListBase tree;
+ struct TreeStore *treestore;
+ short type, outlinevis, storeflag;
+ short pad1;
+
} SpaceOops;
typedef struct SpaceImage {
@@ -438,6 +445,9 @@ typedef struct SpaceImaSel {
#define ST_SCROLL_SELECT 0x0001 // scrollable
#define ST_CLEAR_NAMESPACE 0x0010 // clear namespace after script
// execution (see BPY_main.c)
+/* SpaceOops->type */
+#define SO_OOPS 0
+#define SO_OUTLINER 1
/* SpaceOops->flag */
#define SO_TESTBLOCKS 1
@@ -458,6 +468,16 @@ typedef struct SpaceImaSel {
#define OOPS_LI 2048
#define OOPS_IM 4096
+/* SpaceOops->outlinevis */
+#define SO_ALL_SCENES 0
+#define SO_CUR_SCENE 1
+#define SO_VISIBLE 2
+#define SO_SELECTED 3
+#define SO_ACTIVE 4
+
+/* SpaceOops->storeflag */
+#define SO_TREESTORE_CLEANUP 1
+
/* headerbuttons: 450-499 */
#define B_IMASELHOME 451