Submitted by Perry Parks (scuey)
From the patch:
This patch enables drag and drop parenting for objects in the outliner.
Drag and drop is supported for a selection of multiple objects as well. Also,
all of the "special" parenting tasks (armature, curve, lattice) are possible
through the usual parenting context menus. For example, drag a mesh object onto
an armature and you are prompted for using bone envelopes, automatic weights,
etc.
Demonstration on Vimeo: http://vimeo.com/25698606
* Some cleanup, removed references to already deleted *_header.c files.
* Marked SpaceScript as deprecated and removed header. Will keep space for now though, as some script operators are there and Campbell might want to re-use the space later.
Shane Ambler (sambler) for this 12-month vintage!
From description:
One thing with the outliner filter box is it only filters items that
are currently visible. To find what you want you need to manually
expand a few levels so that what you want to find is visible.
This small patch expands items when filtering is done - effectively
turning it into a search.
Currently this does not alter the datablocks view as expanding all
entries takes waaaay tooooo long.
I prevent the expansion of RNA entries for userprefs which prevents
infinite recursion but the datablocks list is just too big for this
approach. I think it would need a custom outliner_build_tree for a
full search.
Noticed clicking anywhere in the outliner was doing undo pushes, even in empty areas.
- check if any selection is made before redrawing.
- don't do an undo push when selecting outliner items since only screen data is touched here.
Causing a flurry of refresh file prompts post-commit,
Confusing local diffs and causing merge conflicts,
Stating the obvious; redundant and useless...
We shall not miss thou, blasted expand $keywords$
As per my proposal (http://lists.blender.org/pipermail/bf-
committers/2011-July/032553.html), I've split outliner.c into several
new files based on the purpose of the relevant code.
* outliner_tree.c - building outliner structure
* outliner_draw.c - outliner drawing (including toggle buttons and
their handling)
* outliner_edit.c - all operators for toggling stuff, and/or hotkey
accessed operators. Also KeyingSet and Driver operators go here
* outliner_tools.c - all operators and callbacks used for handling RMB
click on items
* outliner_select.c - stuff for selecting rows, and handling the
active/selected toggling stuff
In a few cases, the split hasn't been totally clear-cut due to cross-
dependencies and other spaghetti. However, in a few cases, I have
managed to remove the need for some of the prototypes that were needed
in the past by judicious reshuffling of functions, which also makes it
easier to actually find what you're looking for.
* When clicking on "Animation" items in the Outliner, there's now a
menu containing from which you can change the action used, and
refresh/delete all drivers.
* Moved action-setting logic for AnimData actions to a single utility
function in anim_sys, since this was starting to be done in too many
places already.
* Fixed Outliner refresh bug after changing the active action
- Outliner: new scroll operator, PageUp PageDown scroll entire page now.
- 2D views (like buttons) PageUp PageDown now also scroll entire page.
(they used same step as scrollwheel before)
Previously, because the 'Scene' item is encountered first, all sub-items like this would be ignored. Now, when a non-matching item is encountered, it's subtree is checked as per normal, as long as the item was expanded (so that its subtree is still visible).
Ton's commits missed the RNA changes needed to make this work (i.e. the search field was un-defined). This has now been added, and the search field has the 'search eyeglass' icon to make its purpose clearer.
I've also taken this opportunity to restore the search matching flags (i.e. case sensitivity and complete vs partial matches), making these separate toggle options instead. The old searching operator stuff can probably be removed now?
* Driver adding/removing operators in the Outliner now work properly for arrays
* Renamed these operators so that their names are more indicative of how they work (i.e. based on the data in the Outliner that is selected)
* Added a menu labelled 'Edit' in the Datablocks view which gives access to (and includes the hotkeys for) these tools.
Keymaps are now saveable and configurable from the user preferences, note
that editing one item in a keymap means the whole keymap is now defined by
the user and will not be updated by Blender, an option for syncing might be
added later. The outliner interface is still there, but I will probably
remove it.
There's actually 3 levels now:
* Default builtin key configuration.
* Key configuration loaded from .py file, for configs like Blender 2.4x
or other 3D applications.
* Keymaps edited by the user and saved in .B.blend. These can be saved
to .py files as well to make creating distributable configurations
easier.
Also, user preferences sections were reorganized a bit, now there is:
Interface, Editing, Input, Files and System.
Implementation notes:
* wmKeyConfig was added which represents a key configuration containing
keymaps.
* wmKeymapItem was renamed to wmKeyMapItem for consistency with wmKeyMap.
* Modal maps are not wrapped yet.
* User preferences DNA file reading did not support newdataadr() yet,
added this now for reading keymaps.
* Key configuration related settings are now RNA wrapped.
* is_property_set and is_property_hidden python methods were added.
Removed all related code. Talked with Ton about this and agreed to postpone it at indefinite time in the future, when things get more relaxed.
Files saved since my first commit should not break although I'm not 100% sure.
First step towards keymap editor!
Before getting too excited:
- doesn't save yet
- no rna properties can be defined
- no insert/remove keymap options yet
- no option yet to set 'key press/release'
But what does work;
- Keymap list is in outliner, new category
(Keymaps are listed in order as being created now)
- enable/disable a keymap entry: click on dot icon
- it displays python api names for ops
- browse new operator for keymap (menu button)
- set keymap to use other keys, mouse or tweak events
- four modifier key options
I first intent to test it all well, there are still
quite some modal map conflicts (like border select) and
there's problems assigning items to tweaks
Another issue is that a visual editor for keymaps might be
quite hard to use... the amount of data and options is just not
so fun for a buttons menu. There are ways to improve this though.
Maybe do this via a script?
Commit of basic architecture. Sorry, nothing fun to play with yet.
Added two events: MOUSEDRAG and MOUSEDROP. MOUSEDRAG is sent when left-mouse clicking and then moving the cursor and every time the cursor is moved until the user releases the mouse button, thus generating a MOUSEDROP.
Also added two dummy drag operators in view3d and outliner (place holders for now).
Brecht and Ton: feel free to check/edit especially the event system code. I'm not sure that's the right way to do it. Also, I'm getting some mem leaks which I suspect are caused by my code.
Outliner: brought back to near full functioning:
- proper operators, like for open/close items, exec operations
(note: select is still same operator as activate, should
become modal ops later)
- rename works again (ctrl+click)
- proper notifiers for redraws
- select / extend select works again
- editmode in/out works again
- enter key opens/closes again
- right mouse operations work again
Didn't do:
- options for Sequence strips
- signals to change button views on clicks
- error/warning messages
UI:
- added new uiButSetRenameFunc(), which passes on the old name
- added uiButActiveOnly(), which ensures a button gets created in
active state, and gets removed when used. Needed for editing
names in outliner.
Andrea: check outliner.c for uiButActiveOnly(), very easy to use!
Also:
- Added posemode operator, CTRL+TAB tied to it.
* AKEY - Toggle Outliner Selection (*1)
* Shift-AKEY - Expand/Collapse All
* RKEY - Toggle Renderability
* SKEY - Toggle Selectability
* VKEY - Toggle Visiblity
(*1) - The keymap-order of these has been swapped from the ones used in 2.4x. The old keys used here were inconsistent with the rest of Blender (at least I found myself always getting annoyed that I'd accidentally collapsed/expanded all items by hitting AKEY many times).
In much the same way as Keying Sets are defined in the Outliner, you can now select items in the Datablocks view of the Outliner, and use the D/Alt-D hotkeys to Add/Remove drivers (repectively). This is useful for settings which don't have buttons yet (in the buttons window).
When fully implemented, these will be the clearest demonstration of 'Everything is Animateable', as they will allow users to define an arbitary group of settings through selecting items in the Datablocks (RNA-Viewer) View of the Outliner to define custom 'sets'. Such Keying Sets are known as the 'absolute' ones, which are created for a custom purpose.
Of course, 'builtin' Keying Sets will still be provided. Such built-in ones will not work on any particular paths, but will use context info to maintain the legacy method of inserting keyframes (via IKEY menu).
Currently, KeyingSets cannot be created/edited through the UI, though the backend code is in place to do this.
* Outliner 'select' (i.e. blue/grey highlights for tree items) works again in both normal Outliner + RNA views.
* Fixed bugs/MSVC warnings in animation code
* Note to Icon Designers - we need a new icon for 'Animation data' I think. Currently I'm using the old IPO icon...
* Should F-Curves get shown in the Outliner?
* The RNA viewer is now more integrated with the outliner, as
a "Datablocks" view, with a tree structure.
* Still some issues to be solved with persistence, and also
memory usage is problematic when expanding a million vertices
in a mesh for example, though it will not build closed parts
of the tree.
Our precious outliner is back! :)
Currently no operations are active there, nor notifiers to refresh
other windows. Be patient!
You can switch to RNA with the 'view' menu.
Later we'll sort out how much of both get integrated in 1 system, or
have both options, or make designated 'data view' for rna? ALso the
old Oops... bring back?
Added freeing functions in outliner space, this makes blender quit
without memory free errors in my test .b.blends.
Note: I'll move current rna viewer to new SpaceData editor, then I
can bring back original outliner stuff. Proposed menu name is
"Data Viewer". Probably better not not expose name 'rna' in UI?
- found fix for time-space view2d when increasing height of area, it has min/max Y zoom stored based on size of area... needs
smarter way.
- outliner: header file added, area switch menu + dummy pulldown.
this will become template for other space types...
* Added RNA list viewer. This is currently drawn in the outliner
window, the UI is limited but it is just intended to test RNA
at the moment.
* Added UI names for currently wrapped properties.
* Made iterating collections a bit more convenient.