2003-10-10 03:16:32 +00:00
/**
* $ Id $
*
Orange branch: Revived hidden treasure, the Groups!
Previous experiment (in 2000) didn't satisfy, it had even some primitive
NLA option in groups... so, cleaned up the old code (removed most) and
integrated it back in a more useful way.
Usage:
- CTRL+G gives menu to add group, add to existing group, or remove from
groups.
- In Object buttons, a new (should become first) Panel was added, showing
not only Object "ID button" and Parent, but also the Groups the Object
Belongs to. These buttons also allow rename, assigning or removing.
- To indicate Objects are grouped, they're drawn in a (not theme yet, so
temporal?) green wire color.
- Use ALT+SHIFT mouse-select to (de)select an entire group
But, the real power of groups is in the following features:
-> Particle Force field and Guide control
In the "Particle Motion" Panel, you can indicate a Group name, this then
limits force fields or guides to members of that Group. (Note that layers
still work on top of that... not sure about that).
-> Light Groups
In the Material "Shaders" Panel, you can indicate a Group name to limit
lighting for the Material to lamps in this group. The Lights in a Group do
need to be 'visible' for the Scene to be rendered (as usual).
-> Group Duplicator
In the Object "Anim" Panel, you can set any Object (use Empty!) to
duplicate an entire Group. It will make copies of all Objects in that Group.
Also works for animated Objects, but it will copy the current positions or
deforms. Control over 'local timing' (so we can do Massive anims!) will be
added later.
(Note; this commit won't render Group duplicators yet, a fix in bf-blender
will enable that, next commit will sync)
-> Library Appending
In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed.
By appending or linking the Group itself, and use the Group Duplicator, you
now can animate and position linked Objects. The nice thing is that the
local saved file itself will only store the Group name that was linked, so
on a next file read, the Group Objects will be re-read as stored (changed)
in the Library file.
(Note; current implementation also "gives a base" to linked Group Objects,
to show them as Objects in the current Scene. Need that now for testing
purposes, but probably will be removed later).
-> Outliner
Outliner now shows Groups as optio too, nice to organize your data a bit too!
In General, Groups have a very good potential... for example, it could
become default for MetaBall Objects too (jiri, I can help you later on how
this works). All current 'layer relationships' in Blender should be dropped
in time, I guess...
2005-12-06 10:55:30 +00:00
* * * * * * BEGIN GPL LICENSE BLOCK * * * * *
2003-10-10 03:16:32 +00:00
*
* 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
Orange branch: Revived hidden treasure, the Groups!
Previous experiment (in 2000) didn't satisfy, it had even some primitive
NLA option in groups... so, cleaned up the old code (removed most) and
integrated it back in a more useful way.
Usage:
- CTRL+G gives menu to add group, add to existing group, or remove from
groups.
- In Object buttons, a new (should become first) Panel was added, showing
not only Object "ID button" and Parent, but also the Groups the Object
Belongs to. These buttons also allow rename, assigning or removing.
- To indicate Objects are grouped, they're drawn in a (not theme yet, so
temporal?) green wire color.
- Use ALT+SHIFT mouse-select to (de)select an entire group
But, the real power of groups is in the following features:
-> Particle Force field and Guide control
In the "Particle Motion" Panel, you can indicate a Group name, this then
limits force fields or guides to members of that Group. (Note that layers
still work on top of that... not sure about that).
-> Light Groups
In the Material "Shaders" Panel, you can indicate a Group name to limit
lighting for the Material to lamps in this group. The Lights in a Group do
need to be 'visible' for the Scene to be rendered (as usual).
-> Group Duplicator
In the Object "Anim" Panel, you can set any Object (use Empty!) to
duplicate an entire Group. It will make copies of all Objects in that Group.
Also works for animated Objects, but it will copy the current positions or
deforms. Control over 'local timing' (so we can do Massive anims!) will be
added later.
(Note; this commit won't render Group duplicators yet, a fix in bf-blender
will enable that, next commit will sync)
-> Library Appending
In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed.
By appending or linking the Group itself, and use the Group Duplicator, you
now can animate and position linked Objects. The nice thing is that the
local saved file itself will only store the Group name that was linked, so
on a next file read, the Group Objects will be re-read as stored (changed)
in the Library file.
(Note; current implementation also "gives a base" to linked Group Objects,
to show them as Objects in the current Scene. Need that now for testing
purposes, but probably will be removed later).
-> Outliner
Outliner now shows Groups as optio too, nice to organize your data a bit too!
In General, Groups have a very good potential... for example, it could
become default for MetaBall Objects too (jiri, I can help you later on how
this works). All current 'layer relationships' in Blender should be dropped
in time, I guess...
2005-12-06 10:55:30 +00:00
* of the License , or ( at your option ) any later version .
2003-10-10 03:16:32 +00:00
*
* 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 ,
2003-10-11 20:56:26 +00:00
* Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
2003-10-10 03:16:32 +00:00
*
* The Original Code is Copyright ( C ) 2001 - 2002 by NaN Holding BV .
* All rights reserved .
*
Orange branch: Revived hidden treasure, the Groups!
Previous experiment (in 2000) didn't satisfy, it had even some primitive
NLA option in groups... so, cleaned up the old code (removed most) and
integrated it back in a more useful way.
Usage:
- CTRL+G gives menu to add group, add to existing group, or remove from
groups.
- In Object buttons, a new (should become first) Panel was added, showing
not only Object "ID button" and Parent, but also the Groups the Object
Belongs to. These buttons also allow rename, assigning or removing.
- To indicate Objects are grouped, they're drawn in a (not theme yet, so
temporal?) green wire color.
- Use ALT+SHIFT mouse-select to (de)select an entire group
But, the real power of groups is in the following features:
-> Particle Force field and Guide control
In the "Particle Motion" Panel, you can indicate a Group name, this then
limits force fields or guides to members of that Group. (Note that layers
still work on top of that... not sure about that).
-> Light Groups
In the Material "Shaders" Panel, you can indicate a Group name to limit
lighting for the Material to lamps in this group. The Lights in a Group do
need to be 'visible' for the Scene to be rendered (as usual).
-> Group Duplicator
In the Object "Anim" Panel, you can set any Object (use Empty!) to
duplicate an entire Group. It will make copies of all Objects in that Group.
Also works for animated Objects, but it will copy the current positions or
deforms. Control over 'local timing' (so we can do Massive anims!) will be
added later.
(Note; this commit won't render Group duplicators yet, a fix in bf-blender
will enable that, next commit will sync)
-> Library Appending
In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed.
By appending or linking the Group itself, and use the Group Duplicator, you
now can animate and position linked Objects. The nice thing is that the
local saved file itself will only store the Group name that was linked, so
on a next file read, the Group Objects will be re-read as stored (changed)
in the Library file.
(Note; current implementation also "gives a base" to linked Group Objects,
to show them as Objects in the current Scene. Need that now for testing
purposes, but probably will be removed later).
-> Outliner
Outliner now shows Groups as optio too, nice to organize your data a bit too!
In General, Groups have a very good potential... for example, it could
become default for MetaBall Objects too (jiri, I can help you later on how
this works). All current 'layer relationships' in Blender should be dropped
in time, I guess...
2005-12-06 10:55:30 +00:00
* The Original Code is : not all of this file anymore .
2003-10-10 03:16:32 +00:00
*
Orange branch: Revived hidden treasure, the Groups!
Previous experiment (in 2000) didn't satisfy, it had even some primitive
NLA option in groups... so, cleaned up the old code (removed most) and
integrated it back in a more useful way.
Usage:
- CTRL+G gives menu to add group, add to existing group, or remove from
groups.
- In Object buttons, a new (should become first) Panel was added, showing
not only Object "ID button" and Parent, but also the Groups the Object
Belongs to. These buttons also allow rename, assigning or removing.
- To indicate Objects are grouped, they're drawn in a (not theme yet, so
temporal?) green wire color.
- Use ALT+SHIFT mouse-select to (de)select an entire group
But, the real power of groups is in the following features:
-> Particle Force field and Guide control
In the "Particle Motion" Panel, you can indicate a Group name, this then
limits force fields or guides to members of that Group. (Note that layers
still work on top of that... not sure about that).
-> Light Groups
In the Material "Shaders" Panel, you can indicate a Group name to limit
lighting for the Material to lamps in this group. The Lights in a Group do
need to be 'visible' for the Scene to be rendered (as usual).
-> Group Duplicator
In the Object "Anim" Panel, you can set any Object (use Empty!) to
duplicate an entire Group. It will make copies of all Objects in that Group.
Also works for animated Objects, but it will copy the current positions or
deforms. Control over 'local timing' (so we can do Massive anims!) will be
added later.
(Note; this commit won't render Group duplicators yet, a fix in bf-blender
will enable that, next commit will sync)
-> Library Appending
In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed.
By appending or linking the Group itself, and use the Group Duplicator, you
now can animate and position linked Objects. The nice thing is that the
local saved file itself will only store the Group name that was linked, so
on a next file read, the Group Objects will be re-read as stored (changed)
in the Library file.
(Note; current implementation also "gives a base" to linked Group Objects,
to show them as Objects in the current Scene. Need that now for testing
purposes, but probably will be removed later).
-> Outliner
Outliner now shows Groups as optio too, nice to organize your data a bit too!
In General, Groups have a very good potential... for example, it could
become default for MetaBall Objects too (jiri, I can help you later on how
this works). All current 'layer relationships' in Blender should be dropped
in time, I guess...
2005-12-06 10:55:30 +00:00
* Contributor ( s ) : Blender Foundation .
2003-10-10 03:16:32 +00:00
*
Orange branch: Revived hidden treasure, the Groups!
Previous experiment (in 2000) didn't satisfy, it had even some primitive
NLA option in groups... so, cleaned up the old code (removed most) and
integrated it back in a more useful way.
Usage:
- CTRL+G gives menu to add group, add to existing group, or remove from
groups.
- In Object buttons, a new (should become first) Panel was added, showing
not only Object "ID button" and Parent, but also the Groups the Object
Belongs to. These buttons also allow rename, assigning or removing.
- To indicate Objects are grouped, they're drawn in a (not theme yet, so
temporal?) green wire color.
- Use ALT+SHIFT mouse-select to (de)select an entire group
But, the real power of groups is in the following features:
-> Particle Force field and Guide control
In the "Particle Motion" Panel, you can indicate a Group name, this then
limits force fields or guides to members of that Group. (Note that layers
still work on top of that... not sure about that).
-> Light Groups
In the Material "Shaders" Panel, you can indicate a Group name to limit
lighting for the Material to lamps in this group. The Lights in a Group do
need to be 'visible' for the Scene to be rendered (as usual).
-> Group Duplicator
In the Object "Anim" Panel, you can set any Object (use Empty!) to
duplicate an entire Group. It will make copies of all Objects in that Group.
Also works for animated Objects, but it will copy the current positions or
deforms. Control over 'local timing' (so we can do Massive anims!) will be
added later.
(Note; this commit won't render Group duplicators yet, a fix in bf-blender
will enable that, next commit will sync)
-> Library Appending
In the SHIFT-F1 or SHIFT+F4 browsers, you can also find the Groups listed.
By appending or linking the Group itself, and use the Group Duplicator, you
now can animate and position linked Objects. The nice thing is that the
local saved file itself will only store the Group name that was linked, so
on a next file read, the Group Objects will be re-read as stored (changed)
in the Library file.
(Note; current implementation also "gives a base" to linked Group Objects,
to show them as Objects in the current Scene. Need that now for testing
purposes, but probably will be removed later).
-> Outliner
Outliner now shows Groups as optio too, nice to organize your data a bit too!
In General, Groups have a very good potential... for example, it could
become default for MetaBall Objects too (jiri, I can help you later on how
this works). All current 'layer relationships' in Blender should be dropped
in time, I guess...
2005-12-06 10:55:30 +00:00
* * * * * * END GPL LICENSE BLOCK * * * * *
2003-10-10 03:16:32 +00:00
*/
# include <stdlib.h>
# include <string.h>
2004-03-26 01:12:45 +00:00
# include <stdio.h>
2003-10-10 03:16:32 +00:00
# ifdef HAVE_CONFIG_H
# include <config.h>
# endif
# include "BMF_Api.h"
# include "BIF_language.h"
# include "DNA_ID.h"
# include "DNA_oops_types.h"
# include "DNA_screen_types.h"
# include "DNA_space_types.h"
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...
2004-10-06 18:55:00 +00:00
# include "BKE_global.h"
# include "BKE_main.h"
2003-10-10 03:16:32 +00:00
# include "BIF_gl.h"
# include "BIF_interface.h"
# include "BIF_resources.h"
# include "BIF_screen.h"
2004-01-07 12:26:40 +00:00
# include "BIF_editoops.h"
# include "BIF_oops.h"
2004-10-08 09:27:08 +00:00
# include "BIF_outliner.h"
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...
2004-10-06 18:55:00 +00:00
# include "BIF_space.h"
2003-10-10 03:16:32 +00:00
# include "BSE_drawipo.h"
# include "BSE_drawoops.h"
# include "BSE_headerbuttons.h"
# include "blendef.h"
2005-04-30 21:27:05 +00:00
# include "BKE_depsgraph.h"
2008-10-28 18:47:13 +00:00
# ifndef DISABLE_PYTHON
2005-12-16 13:50:45 +00:00
# include "BPY_extern.h"
# include "BPY_menus.h"
2008-10-28 18:47:13 +00:00
# endif
2005-12-16 13:50:45 +00:00
2003-10-10 03:16:32 +00:00
static int viewmovetemp = 0 ;
void do_oops_buttons ( short event )
{
2003-10-11 20:56:26 +00:00
float dx , dy ;
2006-01-19 01:15:17 +00:00
/* used for maximize hack */
int win_width , win_height ;
float aspect_win , aspect_oops , oops_width , oops_height , oops_x_mid , oops_y_mid ;
2003-10-11 20:56:26 +00:00
if ( curarea - > win = = 0 ) return ;
2005-12-16 13:50:45 +00:00
2006-01-19 01:15:17 +00:00
if ( event = = B_NEWOOPS ) {
scrarea_queue_winredraw ( curarea ) ;
scrarea_queue_headredraw ( curarea ) ;
G . soops - > lockpoin = 0 ;
} else { /* must be either B_OOPSHOME or B_OOPSVIEWSEL */
2005-12-16 13:50:45 +00:00
init_v2d_oops ( curarea , curarea - > spacedata . first ) ; // forces min/max to be reset
2006-01-19 01:15:17 +00:00
if ( event = = B_OOPSHOME ) {
boundbox_oops ( 0 ) ; /* Test all oops blocks */
} else {
boundbox_oops ( 1 ) ; /* Test only selected oops blocks */
}
/* Hack to work with test_view2d in drawipo.c
Modify the bounding box so it is maximized to the window aspect
so viewing all oops blocks isnt limited to hoz / vert only .
Cant modify drawipo . c because many other functions use this hos / vert operation - Campbell */
win_width = curarea - > winrct . xmax - curarea - > winrct . xmin ;
win_height = curarea - > winrct . ymax - curarea - > winrct . ymin ;
oops_width = G . v2d - > tot . xmax - G . v2d - > tot . xmin ;
oops_height = G . v2d - > tot . ymax - G . v2d - > tot . ymin ;
oops_x_mid = ( G . v2d - > tot . xmax + G . v2d - > tot . xmin ) * 0.5 ;
oops_y_mid = ( G . v2d - > tot . ymax + G . v2d - > tot . ymin ) * 0.5 ;
/* wide windows will be above 1, skinny below 1 */
aspect_win = ( float ) win_width / ( float ) win_height ;
aspect_oops = ( float ) oops_width / ( float ) oops_height ;
if ( aspect_win > aspect_oops ) { /* the window is wider then the oops bounds, increase the oops width */
G . v2d - > tot . xmin = oops_x_mid - ( ( oops_x_mid - G . v2d - > tot . xmin ) * ( aspect_win / aspect_oops ) ) ; /* scale the min */
G . v2d - > tot . xmax = oops_x_mid + ( ( G . v2d - > tot . xmax - oops_x_mid ) * ( aspect_win / aspect_oops ) ) ; /* scale the max */
} else { /* the window is skinnier then the oops bounds, increase the oops height */
G . v2d - > tot . ymin = oops_y_mid - ( ( oops_y_mid - G . v2d - > tot . ymin ) * ( aspect_oops / aspect_win ) ) ; /* scale the min */
G . v2d - > tot . ymax = oops_y_mid + ( ( G . v2d - > tot . ymax - oops_y_mid ) * ( aspect_oops / aspect_win ) ) ; /* scale the max */
}
/* maybe we should restore the correct values? - do next of its needed */
/* end hack */
2005-12-16 13:50:45 +00:00
G . v2d - > cur = G . v2d - > tot ;
dx = 0.15 * ( G . v2d - > cur . xmax - G . v2d - > cur . xmin ) ;
dy = 0.15 * ( G . v2d - > cur . ymax - G . v2d - > cur . ymin ) ;
G . v2d - > cur . xmin - = dx ;
G . v2d - > cur . xmax + = dx ;
G . v2d - > cur . ymin - = dy ;
G . v2d - > cur . ymax + = dy ;
test_view2d ( G . v2d , curarea - > winx , curarea - > winy ) ;
scrarea_queue_winredraw ( curarea ) ;
2003-10-11 20:56:26 +00:00
}
2004-01-07 12:26:40 +00:00
}
static void do_oops_viewmenu ( void * arg , int event )
{
2006-11-20 05:12:58 +00:00
SpaceOops * soops = curarea - > spacedata . first ;
2004-01-07 12:26:40 +00:00
switch ( event ) {
case 0 : /* Shuffle Selected Blocks */
shuffle_oops ( ) ;
break ;
case 1 : /* Shrink Selected Blocks */
shrink_oops ( ) ;
break ;
case 2 : /* View All */
do_oops_buttons ( B_OOPSHOME ) ;
break ;
2005-12-16 13:50:45 +00:00
case 3 : /* View All */
do_oops_buttons ( B_OOPSVIEWSEL ) ;
break ;
case 4 : /* Maximize Window */
2004-01-07 12:26:40 +00:00
/* using event B_FULL */
break ;
2005-12-16 13:50:45 +00:00
case 5 : /* show outliner */
2006-11-20 05:12:58 +00:00
if ( soops - > type = = SO_OOPS | | soops - > type = = SO_DEPSGRAPH ) soops - > type = SO_OUTLINER ;
else soops - > type = SO_OOPS ;
init_v2d_oops ( curarea , soops ) ;
test_view2d ( G . v2d , curarea - > winx , curarea - > winy ) ;
scrarea_queue_winredraw ( curarea ) ;
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...
2004-10-06 18:55:00 +00:00
break ;
2005-12-16 13:50:45 +00:00
case 6 :
2004-10-08 09:27:08 +00:00
outliner_toggle_visible ( curarea ) ;
break ;
2005-12-16 13:50:45 +00:00
case 7 :
2004-10-08 09:27:08 +00:00
outliner_show_hierarchy ( curarea ) ;
break ;
2005-12-16 13:50:45 +00:00
case 8 :
2004-10-08 09:27:08 +00:00
outliner_show_active ( curarea ) ;
break ;
2005-12-16 13:50:45 +00:00
case 9 :
2004-11-14 13:37:29 +00:00
outliner_one_level ( curarea , 1 ) ;
break ;
2005-12-16 13:50:45 +00:00
case 10 :
2004-11-14 13:37:29 +00:00
outliner_one_level ( curarea , - 1 ) ;
break ;
2005-04-30 21:27:05 +00:00
# ifdef SHOWDEPGRAPH
2005-12-16 13:50:45 +00:00
case 11 :
2005-04-30 21:27:05 +00:00
// show deps
{
SpaceOops * soops = curarea - > spacedata . first ;
if ( soops - > type = = SO_OOPS ) {
soops - > type = SO_DEPSGRAPH ;
soops - > deps_flags = DAG_RL_ALL_BUT_DATA_MASK ;
} else
soops - > type = SO_OOPS ;
init_v2d_oops ( curarea , soops ) ;
test_view2d ( G . v2d , curarea - > winx , curarea - > winy ) ;
scrarea_queue_winredraw ( curarea ) ;
}
break ;
# endif
2006-11-20 05:12:58 +00:00
case 12 :
if ( soops - > flag & SO_HIDE_RESTRICTCOLS ) soops - > flag & = ~ SO_HIDE_RESTRICTCOLS ;
else soops - > flag | = SO_HIDE_RESTRICTCOLS ;
break ;
2004-01-07 12:26:40 +00:00
}
}
static uiBlock * oops_viewmenu ( void * arg_unused )
{
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...
2004-10-06 18:55:00 +00:00
SpaceOops * soops = curarea - > spacedata . first ;
2004-01-07 12:26:40 +00:00
uiBlock * block ;
short yco = 0 , menuwidth = 120 ;
block = uiNewBlock ( & curarea - > uiblocks , " oops_viewmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_oops_viewmenu , NULL ) ;
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...
2004-10-06 18:55:00 +00:00
if ( soops - > type = = SO_OOPS ) {
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Outliner " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 5 , " " ) ;
2005-04-30 21:27:05 +00:00
# ifdef SHOWDEPGRAPH
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Dependancies " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 11 , " " ) ;
2005-04-30 21:27:05 +00:00
# endif
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...
2004-10-06 18:55:00 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2004-01-07 12:26:40 +00:00
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...
2004-10-06 18:55:00 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Shuffle Selected Blocks|Shift S " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Shrink Selected Blocks|Alt S " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 1 , " " ) ;
2003-10-11 20:56:26 +00:00
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...
2004-10-06 18:55:00 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " View All|Home " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 2 , " " ) ;
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " View Selected|NumPad . " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 3 , " " ) ;
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...
2004-10-06 18:55:00 +00:00
}
2005-04-30 21:27:05 +00:00
# ifdef SHOWDEPGRAPH
else if ( soops - > type = = SO_DEPSGRAPH ) {
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Outliner " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 5 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Oops Schematic " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 11 , " " ) ;
2005-04-30 21:27:05 +00:00
}
# endif
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...
2004-10-06 18:55:00 +00:00
else {
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Oops Schematic " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 5 , " " ) ;
2004-01-07 12:26:40 +00:00
2006-11-20 05:12:58 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2004-11-14 13:37:29 +00:00
2006-11-20 05:12:58 +00:00
if ( soops - > flag & SO_HIDE_RESTRICTCOLS )
uiDefIconTextBut ( block , BUTM , 1 , ICON_CHECKBOX_DEHLT , " Show Restriction Columns " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 12 , " " ) ;
else
uiDefIconTextBut ( block , BUTM , 1 , ICON_CHECKBOX_HLT , " Show Restriction Columns " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 12 , " " ) ;
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Expand One Level|NumPad + " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 9 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Collapse One Level|NumPad - " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 10 , " " ) ;
2004-10-08 09:27:08 +00:00
2006-11-20 05:12:58 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2005-12-16 13:50:45 +00:00
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show/Hide All " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 6 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Hierarchy|Home " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 7 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Show Active|NumPad . " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 1 , 8 , " " ) ;
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...
2004-10-06 18:55:00 +00:00
}
2004-10-08 09:27:08 +00:00
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
2005-12-16 13:50:45 +00:00
if ( ! curarea - > full ) uiDefIconTextBut ( block , BUTM , B_FULL , ICON_BLANK1 , " Maximize Window|Ctrl UpArrow " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
else uiDefIconTextBut ( block , BUTM , B_FULL , ICON_BLANK1 , " Tile Window|Ctrl DownArrow " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
2004-01-07 12:26:40 +00:00
if ( curarea - > headertype = = HEADERTOP ) {
uiBlockSetDirection ( block , UI_DOWN ) ;
}
else {
uiBlockSetDirection ( block , UI_TOP ) ;
uiBlockFlipOrder ( block ) ;
}
uiTextBoundsBlock ( block , 50 ) ;
return block ;
2003-10-10 03:16:32 +00:00
}
2004-01-07 12:26:40 +00:00
static void do_oops_selectmenu ( void * arg , int event )
{
switch ( event )
{
case 0 : /* Border Select */
borderselect_oops ( ) ;
break ;
case 1 : /* Select/Deselect All */
swap_select_all_oops ( ) ;
break ;
case 2 : /* Linked to Selected */
select_linked_oops ( ) ;
break ;
case 3 : /* Users of Selected */
select_backlinked_oops ( ) ;
break ;
}
}
static uiBlock * oops_selectmenu ( void * arg_unused )
2003-10-10 03:16:32 +00:00
{
2004-01-07 12:26:40 +00:00
uiBlock * block ;
short yco = 0 , menuwidth = 120 ;
block = uiNewBlock ( & curarea - > uiblocks , " oops_selectmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_oops_selectmenu , NULL ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Border Select|B " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Select/Deselect All|A " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 1 , " " ) ;
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Linked to Selected|L " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 2 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Users of Selected|Shift L " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 3 , " " ) ;
if ( curarea - > headertype = = HEADERTOP ) {
uiBlockSetDirection ( block , UI_DOWN ) ;
}
else {
uiBlockSetDirection ( block , UI_TOP ) ;
uiBlockFlipOrder ( block ) ;
}
uiTextBoundsBlock ( block , 50 ) ;
return block ;
}
2004-06-03 14:29:14 +00:00
static void do_oops_blockmenu ( void * arg , int event )
{
switch ( event )
{
case 0 : /* grab/move */
2005-04-30 21:19:19 +00:00
transform_oops ( ' g ' , 0 ) ;
2004-06-03 14:29:14 +00:00
break ;
case 1 : /* scale */
2005-04-30 21:19:19 +00:00
transform_oops ( ' s ' , 0 ) ;
2004-06-03 14:29:14 +00:00
break ;
}
}
static uiBlock * oops_blockmenu ( void * arg_unused )
{
uiBlock * block ;
short yco = 0 , menuwidth = 120 ;
block = uiNewBlock ( & curarea - > uiblocks , " oops_blockmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_oops_blockmenu , NULL ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Grab/Move|G " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Scale|S " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 1 , " " ) ;
if ( curarea - > headertype = = HEADERTOP ) {
uiBlockSetDirection ( block , UI_DOWN ) ;
}
else {
uiBlockSetDirection ( block , UI_TOP ) ;
uiBlockFlipOrder ( block ) ;
}
uiTextBoundsBlock ( block , 50 ) ;
return block ;
}
Patch #4980, by Joshua Leung (aligorith)
This enables finding data in the Outliner.
Usage: Fkey (partial strings), CTRL+Fkey (partial strings, case sensitive).
SHIFT+Fkey to repeat a search, this cycles around.
Extra changes:
- button popups to enter strings now starts activated.
- outliner either shows for Armature the Bones, or Posechannels or
Editbones, depending the mode. Was needed to make searches meaningful.
Although Joshua did very good work on the key functions, there were a couple
of issues in his code, and problems in Outliner code, that didn't make it
all work nicely. So, this is quite a revised patch. :)
Full review log can be found in the patch tracker.
2006-11-07 14:25:58 +00:00
static void do_oops_searchmenu ( void * arg , int event )
{
int search_flags = OL_FIND , again = 0 ;
switch ( event )
{
case 0 : /* plain new find */
search_flags = OL_FIND ;
break ;
case 1 : /* case sensitive */
search_flags = OL_FIND_CASE ;
break ;
case 2 : /* full search */
search_flags = OL_FIND_COMPLETE ;
break ;
case 3 : /* full case sensitive */
search_flags = OL_FIND_COMPLETE_CASE ;
break ;
case 4 : /* again */
again = 1 ;
break ;
default : /* nothing valid */
return ;
}
/* run search */
outliner_find_panel ( curarea , again , search_flags ) ;
}
static uiBlock * oops_searchmenu ( void * arg_unused )
{
uiBlock * block ;
short yco = 0 , menuwidth = 120 ;
block = uiNewBlock ( & curarea - > uiblocks , " oops_searchmenu " , UI_EMBOSSP , UI_HELV , curarea - > headwin ) ;
uiBlockSetButmFunc ( block , do_oops_searchmenu , NULL ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Find|F " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Find (Case Sensitive)|Ctrl F " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 1 , " " ) ;
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Find Complete|Alt F " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 2 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Find Complete (Case Sensitive)|Ctrl Alt F " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 3 , " " ) ;
uiDefBut ( block , SEPR , 0 , " " , 0 , yco - = 6 , menuwidth , 6 , NULL , 0.0 , 0.0 , 0 , 0 , " " ) ;
uiDefIconTextBut ( block , BUTM , 1 , ICON_BLANK1 , " Find Again|Shift F " , 0 , yco - = 20 , menuwidth , 19 , NULL , 0.0 , 0.0 , 0 , 4 , " " ) ;
2004-01-07 12:26:40 +00:00
Patch #4980, by Joshua Leung (aligorith)
This enables finding data in the Outliner.
Usage: Fkey (partial strings), CTRL+Fkey (partial strings, case sensitive).
SHIFT+Fkey to repeat a search, this cycles around.
Extra changes:
- button popups to enter strings now starts activated.
- outliner either shows for Armature the Bones, or Posechannels or
Editbones, depending the mode. Was needed to make searches meaningful.
Although Joshua did very good work on the key functions, there were a couple
of issues in his code, and problems in Outliner code, that didn't make it
all work nicely. So, this is quite a revised patch. :)
Full review log can be found in the patch tracker.
2006-11-07 14:25:58 +00:00
if ( curarea - > headertype = = HEADERTOP ) {
uiBlockSetDirection ( block , UI_DOWN ) ;
}
else {
uiBlockSetDirection ( block , UI_TOP ) ;
uiBlockFlipOrder ( block ) ;
}
uiTextBoundsBlock ( block , 50 ) ;
return block ;
}
2005-12-16 13:50:45 +00:00
2004-01-07 12:26:40 +00:00
void oops_buttons ( void )
{
2003-10-10 03:16:32 +00:00
SpaceOops * soops ;
Oops * oops ;
uiBlock * block ;
2004-01-07 12:26:40 +00:00
short xco , xmax ;
2003-10-10 03:16:32 +00:00
char naam [ 256 ] ;
soops = curarea - > spacedata . first ;
sprintf ( naam , " header %d " , curarea - > headwin ) ;
Another mega commit... loadsof restructure, and a pretty good one! :)
- changed the BIF_DrawString() function. it used to work different for
AA fonts as for default fonts. Now it's identical. Setting color for fonts
can just be done with OpenGL, for both font types.
Removed: BIF_DrawStringRGB()
- added theme color options for Buttons
- recoded DefButton, so it automatically chooses the right color.
- had to remove a 1000 uiBlockSetCol() calls for that reason...
- uiBlockSetCol() still works, to override automatic color
- removed entirely the silly old color system (BIFColorID). All color
calls can now be done with a BIF_ThemeColor() call, including fonts and
buttons and opengl stuff
- all buttons in button header have headercolor by default
- recoded drawing icons, it was a really bad & old loop doing manually
colorshading and blending... which was per pixel a load of code!
Now it uses a single OpenGL call to blend or colorize. Quite faster!
- (as test, for review) icons don't colorize anymore with button color,
but have a different alpha to blend in (when not active)
- recoded the entire interface_draw.c file...:
- drawing buttons is separated in three parts:
1. main drawing function for text and icons
2. free definable callback for button itself
3. free definable callback for slider
- removed a load of redundant code for this!
- coded a minimal theme, and adjusted Matt's buttons to match new
callback system
- adding new drawing themes is piece of cake now
- for coders, default 'themes' to be aware of:
UI_EMBOSS : the themable drawing style
UI_EMBOSSP: the pulldown menu system (apart from color not themable)
UI_EMBOSSN: draw nothing, only text and/or icon
UI_EMBOSSM: minimal theme, still in use for Logic and Constraintsa
this can be set with uiBlockSetEmboss(block) or in the uiNewBlock() call.
TODO: make UI API call for button alignment
(plus removed another series of warnings from code...)
Plus: fixed bug in Matts commit: he used a 'short' button for an 'int'
2003-10-20 15:40:20 +00:00
block = uiNewBlock ( & curarea - > uiblocks , naam , UI_EMBOSS , UI_HELV , curarea - > headwin ) ;
if ( area_is_active_area ( curarea ) ) uiBlockSetCol ( block , TH_HEADER ) ;
else uiBlockSetCol ( block , TH_HEADERDESEL ) ;
2003-10-10 03:16:32 +00:00
curarea - > butspacetype = SPACE_OOPS ;
2003-10-15 13:47:15 +00:00
xco = 8 ;
uiDefIconTextButC ( block , ICONTEXTROW , B_NEWSPACE , ICON_VIEW3D , windowtype_pup ( ) , xco , 0 , XIC + 10 , YIC , & ( curarea - > butspacetype ) , 1.0 , SPACEICONMAX , 0 , 0 , " Displays Current Window Type. Click for menu of available types. " ) ;
2004-01-07 12:26:40 +00:00
xco + = XIC + 14 ;
2003-10-10 03:16:32 +00:00
2004-01-07 12:26:40 +00:00
uiBlockSetEmboss ( block , UI_EMBOSSN ) ;
if ( curarea - > flag & HEADER_NO_PULLDOWN ) {
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , HEADER_NO_PULLDOWN , B_FLIPINFOMENU , ICON_DISCLOSURE_TRI_RIGHT ,
2004-01-07 12:26:40 +00:00
xco , 2 , XIC , YIC - 2 ,
& ( curarea - > flag ) , 0 , 0 , 0 , 0 , " Show pulldown menus " ) ;
} else {
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , HEADER_NO_PULLDOWN , B_FLIPINFOMENU , ICON_DISCLOSURE_TRI_DOWN ,
2004-01-07 12:26:40 +00:00
xco , 2 , XIC , YIC - 2 ,
& ( curarea - > flag ) , 0 , 0 , 0 , 0 , " Hide pulldown menus " ) ;
}
uiBlockSetEmboss ( block , UI_EMBOSS ) ;
xco + = XIC ;
if ( ( curarea - > flag & HEADER_NO_PULLDOWN ) = = 0 ) {
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...
2004-10-06 18:55:00 +00:00
/* pull down menus */
2004-01-07 12:26:40 +00:00
uiBlockSetEmboss ( block , UI_EMBOSSP ) ;
2003-10-10 03:16:32 +00:00
2004-01-07 12:26:40 +00:00
xmax = GetButStringLength ( " View " ) ;
2004-10-03 13:49:54 +00:00
uiDefPulldownBut ( block , oops_viewmenu , NULL , " View " , xco , - 2 , xmax - 3 , 24 , " " ) ;
2004-01-07 12:26:40 +00:00
xco + = xmax ;
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...
2004-10-06 18:55:00 +00:00
if ( soops - > type = = SO_OOPS ) {
xmax = GetButStringLength ( " Select " ) ;
uiDefPulldownBut ( block , oops_selectmenu , NULL , " Select " , xco , - 2 , xmax - 3 , 24 , " " ) ;
xco + = xmax ;
xmax = GetButStringLength ( " Block " ) ;
uiDefPulldownBut ( block , oops_blockmenu , NULL , " Block " , xco , - 2 , xmax - 3 , 24 , " " ) ;
xco + = xmax ;
2005-12-16 13:50:45 +00:00
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...
2004-10-06 18:55:00 +00:00
}
Patch #4980, by Joshua Leung (aligorith)
This enables finding data in the Outliner.
Usage: Fkey (partial strings), CTRL+Fkey (partial strings, case sensitive).
SHIFT+Fkey to repeat a search, this cycles around.
Extra changes:
- button popups to enter strings now starts activated.
- outliner either shows for Armature the Bones, or Posechannels or
Editbones, depending the mode. Was needed to make searches meaningful.
Although Joshua did very good work on the key functions, there were a couple
of issues in his code, and problems in Outliner code, that didn't make it
all work nicely. So, this is quite a revised patch. :)
Full review log can be found in the patch tracker.
2006-11-07 14:25:58 +00:00
else {
xmax = GetButStringLength ( " Search " ) ;
uiDefPulldownBut ( block , oops_searchmenu , NULL , " Search " , xco , - 2 , xmax - 3 , 24 , " " ) ;
xco + = xmax ;
}
2004-01-07 12:26:40 +00:00
}
2005-08-04 22:36:21 +00:00
uiBlockSetEmboss ( block , UI_EMBOSS ) ;
2004-01-07 12:26:40 +00:00
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...
2004-10-06 18:55:00 +00:00
if ( soops - > type = = SO_OOPS ) {
/* ZOOM and BORDER */
uiBlockBeginAlign ( block ) ;
uiDefIconButI ( block , TOG , B_VIEW2DZOOM , ICON_VIEWZOOM , ( short ) ( xco ) , 0 , XIC , YIC , & viewmovetemp , 0 , 0 , 0 , 0 , " Zooms view (Ctrl MiddleMouse) " ) ;
uiDefIconBut ( block , BUT , B_IPOBORDER , ICON_BORDERMOVE , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , 0 , 0 , 0 , 0 , 0 , " Zooms view to area " ) ;
uiBlockEndAlign ( block ) ;
2003-10-10 03:16:32 +00:00
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...
2004-10-06 18:55:00 +00:00
xco + = 8 ;
/* VISIBLE */
uiBlockBeginAlign ( block ) ;
2005-08-03 18:48:22 +00:00
uiDefButBitS ( block , TOG , OOPS_LAY , B_NEWOOPS , " Layer " , ( short ) ( xco + = XIC ) , 0 , XIC + 20 , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Only show object datablocks on visible layers " ) ;
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...
2004-10-06 18:55:00 +00:00
xco + = 20 ;
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , OOPS_SCE , B_NEWOOPS , ICON_SCENE_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Scene datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_OB , B_NEWOOPS , ICON_OBJECT_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Object datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_ME , B_NEWOOPS , ICON_MESH_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Mesh datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_CU , B_NEWOOPS , ICON_CURVE_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Curve/Surface/Font datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_MB , B_NEWOOPS , ICON_MBALL_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Metaball datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_LT , B_NEWOOPS , ICON_LATTICE_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Lattice datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_LA , B_NEWOOPS , ICON_LAMP_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Lamp datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_MA , B_NEWOOPS , ICON_MATERIAL_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Material datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_TE , B_NEWOOPS , ICON_TEXTURE_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Texture datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_IP , B_NEWOOPS , ICON_IPO_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Ipo datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_IM , B_NEWOOPS , ICON_IMAGE_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Image datablocks " ) ;
2007-06-04 00:09:41 +00:00
uiDefIconButBitS ( block , TOG , OOPS_GR , B_NEWOOPS , ICON_CIRCLE_DEHLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Group datablocks " ) ;
2005-08-03 18:48:22 +00:00
uiDefIconButBitS ( block , TOG , OOPS_LI , B_NEWOOPS , ICON_LIBRARY_HLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Library datablocks " ) ;
2008-06-16 19:54:43 +00:00
uiDefIconButBitS ( block , TOG , OOPS_CA , B_NEWOOPS , ICON_CAMERA_DEHLT , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Camera datablocks " ) ;
uiDefIconButBitS ( block , TOG , OOPS_AR , B_NEWOOPS , ICON_ARMATURE , ( short ) ( xco + = XIC ) , 0 , XIC , YIC , & soops - > visiflag , 0 , 0 , 0 , 0 , " Displays Armature datablocks " ) ;
2007-06-04 00:09:41 +00:00
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...
2004-10-06 18:55:00 +00:00
uiBlockEndAlign ( block ) ;
/* name */
if ( G . soops - > lockpoin ) {
oops = G . soops - > lockpoin ;
if ( oops - > type = = ID_LI ) strcpy ( naam , ( ( Library * ) oops - > id ) - > name ) ;
else strcpy ( naam , oops - > id - > name ) ;
cpack ( 0x0 ) ;
2007-06-04 00:09:41 +00:00
BIF_ThemeColor ( TH_MENU_TEXT ) ; /* makes text readable on dark theme */
BIF_SetScale ( 1.0 ) ;
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...
2004-10-06 18:55:00 +00:00
glRasterPos2i ( xco + = XIC + 10 , 5 ) ;
2007-06-04 00:09:41 +00:00
BIF_RasterPos ( xco + = XIC + 10 , 5 ) ;
BIF_DrawString ( G . font , naam , 0 ) ;
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...
2004-10-06 18:55:00 +00:00
}
2003-10-10 03:16:32 +00:00
}
2005-04-30 21:27:05 +00:00
# ifdef SHOWDEPGRAPH
else if ( soops - > type = = SO_DEPSGRAPH ) {
// cpack colors : 0x00FF00 0xFF0000 0xFFFF00 0x000000 0x0000FF 0x00FFFF
static unsigned char colr [ 21 ] = { 0x00 , 0xFF , 0x00 ,
0x00 , 0x00 , 0xFF ,
0x00 , 0xFF , 0xFF ,
0x00 , 0x00 , 0x00 ,
0xFF , 0x00 , 0x00 ,
0xFF , 0xFF , 0x00 ,
0xFF , 0x00 , 0x00 } ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 10 ) , 0 , 5 , YIC , colr , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 2 , B_REDR , " parent " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " parent " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 3 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 1 , B_REDR , " data " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " data " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 6 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 3 , B_REDR , " track " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " track " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 9 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 4 , B_REDR , " path " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " path " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 12 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 5 , B_REDR , " cons. " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " constraint " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 15 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 6 , B_REDR , " hook. " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " hook " ) ;
uiDefButC ( block , COL , 0 , " " , ( short ) ( xco + = 60 ) , 0 , 5 , YIC , colr + 18 , 0 , 1 , 0 , 0 , " " ) ;
uiDefButS ( block , TOG | BIT | 7 , B_REDR , " d cons. " , ( short ) ( xco + = 7 ) , 0 , 50 , YIC , & soops - > deps_flags , 0 , 1 , 0 , 0 , " d cons " ) ;
}
# endif
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...
2004-10-06 18:55:00 +00:00
else {
2006-10-12 11:53:50 +00:00
if ( G . main - > library . first )
# ifdef WITH_VERSE
2008-09-19 22:51:05 +00:00
uiDefButS ( block , MENU , B_REDR , " Outliner Display%t|Verse Servers %x9|Verse Sessions %x8|Libraries %x7|All Scenes %x0|Current Scene %x1|Visible Layers %x2|Groups %x6|Same Types %x5|Selected %x3|Active %x4|Sequence %x10 " , xco , 0 , 100 , 20 , & soops - > outlinevis , 0 , 0 , 0 , 0 , " " ) ;
2006-10-12 11:53:50 +00:00
# else
2008-09-19 22:51:05 +00:00
uiDefButS ( block , MENU , B_REDR , " Outliner Display%t|Libraries %x7|All Scenes %x0|Current Scene %x1|Visible Layers %x2|Groups %x6|Same Types %x5|Selected %x3|Active %x4|Sequence %x10 " , xco , 0 , 100 , 20 , & soops - > outlinevis , 0 , 0 , 0 , 0 , " " ) ;
2006-10-12 11:53:50 +00:00
# endif /* WITH_VERSE */
2006-09-06 09:51:30 +00:00
else
2006-10-12 11:53:50 +00:00
# ifdef WITH_VERSE
2008-09-19 22:51:05 +00:00
uiDefButS ( block , MENU , B_REDR , " Outliner Display%t|Verse Servers %x9|Verse Sessions %x8|All Scenes %x0|Current Scene %x1|Visible Layers %x2|Groups %x6|Same Types %x5|Selected %x3|Active %x4|Sequence %x10 " , xco , 0 , 100 , 20 , & soops - > outlinevis , 0 , 0 , 0 , 0 , " " ) ;
2006-10-12 11:53:50 +00:00
# else
2008-09-19 22:51:05 +00:00
uiDefButS ( block , MENU , B_REDR , " Outliner Display%t|All Scenes %x0|Current Scene %x1|Visible Layers %x2|Groups %x6|Same Types %x5|Selected %x3|Active %x4|Sequence %x10 " , xco , 0 , 100 , 20 , & soops - > outlinevis , 0 , 0 , 0 , 0 , " " ) ;
2006-10-12 11:53:50 +00:00
# endif /* WITH_VERSE */
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...
2004-10-06 18:55:00 +00:00
}
2003-10-10 03:16:32 +00:00
/* always do as last */
curarea - > headbutlen = xco + 2 * XIC ;
2004-01-07 12:26:40 +00:00
2003-10-10 03:16:32 +00:00
uiDrawBlock ( block ) ;
}
2004-01-07 12:26:40 +00:00
2008-06-16 19:54:43 +00:00