Commit Graph

396 Commits

Author SHA1 Message Date
b39be60075 NLA: fix keyframes getting messed up when making strips longer. For drawing
and other operations the nla mapping would be applied to the curves, but not
restored correctly. The unmap function was not the inverse of the map function,
and it's not clear to me it's even possible to make it so due to repeat, so
now the old coordinates are backed up in a list and then restored afterwards.
2010-01-12 21:20:09 +00:00
3fa927a42e DopeSheet/Action Editor: Fixed operator name that did not get correctly during the operator renaming fixes done by Campbell's script 2009-12-31 23:56:45 +00:00
eb766f1d3f DopeSheet + Graph Editor hotkey tweak:
Made the TAB key toggle the editability of selected channels in the keyframes area in addition to the channels list.
2009-12-27 01:36:32 +00:00
980e97923b Key map related things:
* Moved 'change shortcut' (previously directly RMB on menu items) to a context-menu item, and added Remove Shortcut and Add Shortcut. This is all available now in a RMB context menu for operator buttons and menu entries.
* Renamed a bunch of key maps to be consistent with UI names, and human-readable. Since these key map names are now being directly used in the UI for people to find things, they should be understandable and in plain language.

This renaming may break some older saved key map setups - though previously saved .b25.blends should convert over ok. Exported .py files may need some find/replacing - in this commit check the changes in resources.c to see what's changed.
2009-12-24 09:26:06 +00:00
da5025d46d Bugfix #20463: In graph editor bone channels cannot be selected with 'A' or 'B' border select
This bug was caused by my recent commit to get bone select -> selection syncing working. The selection flushing was occurring too readily, blocking any selection tools from having any visible effect. Now this syncing is only triggered when appropriate notifiers+flags have been set.
2009-12-23 11:22:30 +00:00
0fcfe8993e Animation Editors - Durian Request - Selection Syncing:
This commit brings back the functionality whereby the selection of F-Curves and/or relevant Group(s) is synced with the selection status of the corresponding bones when the bones are selected/deselected.
2009-12-21 09:52:43 +00:00
ff038161f6 Add missing names to SpaceTypes 2009-12-19 22:37:51 +00:00
b1a39375e5 Keyframing Bugfixes and Feature Requests:
* Added a User-Pref option for the "XYZ to RGB" colour-mode setting for new F-Curves to compliment the one used for Keying Sets. With this option enabled, the builtin Keying Sets also can obey this option.

* Made all places that were previously manually checking the flags for keyframing to use a standard API function to do this now.

* Fixed bug introduced earlier today in commit 25353 by reverting the changes to keyingsets.c. Forgot that delete_keyframe doesn't handle do the "entire array" hack with array_index = -1

* Fixed bug with the insert-keyframe code for the array_index = -1 case, where too many channels were being keyed (i.e. an imaginary channel was often keyed in addition to the valid ones)
2009-12-14 12:09:20 +00:00
a4d52bd0fd patch [#20342] Notifier patch for modifier rename and particle system rename
by 'ThatHaze'. thanks!
2009-12-13 23:51:41 +00:00
9358af05d0 rename operators TFM_OT_* --> TRANSFORM_OT_* 2009-12-10 10:36:32 +00:00
9c5019a9a9 Notifier related fixes:
[#20319] 3D View - need 3D cursor notifier
[#20321] Views not receiving the NC_ID notifier
2009-12-10 09:58:10 +00:00
495cbc1a6f Forgot to remove these. 2009-12-07 21:56:25 +00:00
b71749305a Pythonazed DopeSheet and NLA editors headers UI. 2009-12-07 21:51:44 +00:00
ba0981031a Assorted warning and comment fixes 2009-12-06 09:37:31 +00:00
45955fef18 Bugfixes: Deleting Keyframes + F-Curves
This commit fixes #19908 and #20239. Deleting keyframes will now delete the F-Curves they came from too, if the F-Curves don't have any more keyframes and/or F-Modifiers providing any further motion info.
2009-12-04 03:51:52 +00:00
510c0facdf operator renaming for more consistent word ordering (_add/_remmove shold be last, ACT_OT_* --> ACTION_OT_*)
ACT_OT_clean --> ACTION_OT_clean
ACT_OT_clickselect --> ACTION_OT_clickselect
ACT_OT_copy --> ACTION_OT_copy
ACT_OT_delete --> ACTION_OT_delete
ACT_OT_duplicate --> ACTION_OT_duplicate
ACT_OT_extrapolation_type --> ACTION_OT_extrapolation_type
ACT_OT_frame_jump --> ACTION_OT_frame_jump
ACT_OT_handle_type --> ACTION_OT_handle_type
ACT_OT_insert_keyframe --> ACTION_OT_insert_keyframe
ACT_OT_insert_keyframe --> ACT_OT_keyframe_insert
ACT_OT_interpolation_type --> ACTION_OT_interpolation_type
ACT_OT_keyframe_type --> ACTION_OT_keyframe_type
ACT_OT_mirror --> ACTION_OT_mirror
ACT_OT_new --> ACTION_OT_new
ACT_OT_paste --> ACTION_OT_paste
ACT_OT_previewrange_set --> ACTION_OT_previewrange_set
ACT_OT_properties --> ACTION_OT_properties
ACT_OT_sample --> ACTION_OT_sample
ACT_OT_select_all_toggle --> ACTION_OT_select_all_toggle
ACT_OT_select_border --> ACTION_OT_select_border
ACT_OT_select_column --> ACTION_OT_select_column
ACT_OT_snap --> ACTION_OT_snap
ACT_OT_test --> ACTION_OT_test
ACT_OT_unlink --> ACTION_OT_unlink
ACT_OT_view_all --> ACTION_OT_view_all
ANIM_OT_add_driver_button --> ANIM_OT_driver_button_add
ANIM_OT_add_keyingset_button --> ANIM_OT_keyingset_button_add
ANIM_OT_delete_keyframe --> ANIM_OT_keyframe_delete
ANIM_OT_delete_keyframe_button --> ANIM_OT_keyframe_delete_button
ANIM_OT_delete_keyframe_v3d --> ANIM_OT_keyframe_delete_v3d
ANIM_OT_insert_keyframe --> ANIM_OT_keyframe_insert
ANIM_OT_insert_keyframe_button --> ANIM_OT_keyframe_insert_button
ANIM_OT_insert_keyframe_menu --> ANIM_OT_keyframe_insert_menu
ANIM_OT_remove_driver_button --> ANIM_OT_driver_button_remove
ANIM_OT_remove_keyingset_button --> ANIM_OT_keyingset_button_remove
FILE_OT_add_bookmark --> FILE_OT_bookmark_add
GRAPH_OT_insert_keyframe --> GRAPH_OT_keyframe_insert
NLA_OT_add_actionclip --> NLA_OT_actionclip_add
NLA_OT_add_meta --> NLA_OT_meta_add
NLA_OT_add_tracks --> NLA_OT_tracks_add
NLA_OT_add_transition --> NLA_OT_transition_add
NLA_OT_remove_meta --> NLA_OT_meta_remove
PARTICLE_OT_remove_target --> PARTICLE_OT_target_remove
PTCACHE_OT_add_new --> PTCACHE_OT_add
2009-11-28 14:37:21 +00:00
993da72d06 Added RMB-menu to Headers:
This contains two entries - one which calls the region flip operator, and one which calls the maxmize area operator. 

Unfortunately, there seem to be some context issues which are causing the wrong region to get activated for use by the region flipping, meaning that nothing happens.


Also, fixed own typo in 3d-view header/menu code...
2009-11-27 06:24:09 +00:00
c0fae59c99 * Fixed nodetree animation by giving nodes unique names
Now the rna path to nodes happens via the node name, which is ensured to be unique via RNA.
As part of this, the node->username string has been removed, upon renaming the node itself it takes care of making sure it's unique (like bones, constraints, etc). There's currently no interactive rename tool, but you can do it via the datablocks editor.

- plus a few notifier tweaks, using the newer NC_NODE notifier to refresh graph editor etc.
2009-11-11 09:11:21 +00:00
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00
6e47d9bb9c - modal keymap for border select
- revert circle select keys adjustments & view navigation while selecting (durian guys liked but allowed activating multiple circle select's at once)
2009-11-06 22:51:08 +00:00
5777c624a5 Animation Editors: Menu Tweaks
* Submenus displaying the options available for certain operators now will now show the hotkey for the operator on the menu entries. 

* Added an option for mirroring keyframes in the Graph Editor which makes use of the new cursor
2009-10-22 09:07:19 +00:00
53624a53d9 Assorted tweaks for animation editors:
* Changing to the ShapeKey editor now automatically enables the value sliders
* Filtering code for ShapeKey editor can now do AnimData block filtering too (internal details...)
* Silenced console warnings when inserting keyframes on F-Curves with no keyframes already (for Animation Editor sliders)
* Made the update code for keyframe transforms send more general depsgraph updates. Unfortuately, this still doesn't resolve the update problems with shapekeys
2009-10-17 04:22:52 +00:00
d389406766 DopeSheet/Action Editors - Summary Channel Tweaks:
* Summary channel now works in DopeSheet AND Action Editors
* By clicking on the expand/collapse widget on the summary channel, you can now show/hide all the other channels in the editor.
2009-10-14 09:54:29 +00:00
de818dace5 DopeSheet: DopeSheet Summary Channel
Added a summary channel that appears as the first channel in the DopeSheet. For now, this is disabled by default, but can be enabled using the 'Summary' toggle in the header between the mode selector and the standard filtering options. This has been done, since there is a possibility that it will make the DopeSheet run a bit slower.

In this channel you can do everything that you can normally do with DopeSheet channels (i.e. select, transform, edit, etc). It might be worth noting though that care probably needs to be taken when trying to use Copy/Paste, since that is still a bit fidgety...

In the process, I've fixed a few bugs, mostly with selection:
- Selecting keyframes in scene summaries wouldn't work
- Border select only worked in F-Curve and Group channels
2009-10-13 11:21:02 +00:00
7171c5928e Changing the animation editor filters should now result in the editors updating in realtime afterwards again. 2009-10-13 02:21:18 +00:00
3ebd58673f Key Configuration
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.
2009-10-08 18:40:03 +00:00
b26ef33b8e Fix #19311: adding/opening datablocks did not always make the right
one active. Now there's a function to get the pointer + property from
the UI, just like for the animation operators.

Also two fixes for fileselect events, regions are now preserved so that
context is restored to the old region, and the cancel callback is called
when the operator is cancelled.
2009-10-01 23:32:57 +00:00
8a6d6a33f8 Animation Editors - Moved the code for drawing the filtering toggles into a single function. 2009-09-27 06:14:42 +00:00
fbfa8d2f81 2.5 - Assorted Animation UI/Editing Tweaks
Main Feature:
* It is now possible to choose which AnimData block is the 'active' one for editing, and/or select them too. AnimData blocks are generally the dark blue and lighter-blue expanders (i.e. Scene, Object, Camera, Lamp, Curve, Armature, etc.)

* Objects are no longer selected/deselected when AKEY is used to toggle selection of channels. This was getting a bit annoying. 

* Following on from selection of AnimData blocks, it is now possible to select/make active an AnimData block in the animation editors, and change the active action for that block via the 'Animation Data' panel in NLA Editor's properties region.
--> Be aware that user-counts are not totally handled correctly there yet, so some funky behaviour might be seen...
--> It is possible to assign a new action, or to assign an existing one, allowing to switch between actions as in the past with Actions/IPO Editors...

Other tweaks:
* Some code tweaks towards making the 'Euler Filter' feature for Graph Editor working sometime soon
* Added some backend code for snapping the values of keyframes to a single value. Still need to work out some UI for it though.
* Shuffled the code for ACT_OT_new() around, and removed the poll() callback so that it worked in NLA too.
* Fixed some more notifier bugs with deleting bones and a few other editmode operations for Armatures.
2009-09-27 04:22:04 +00:00
cdc5fd64e5 2.5 - Keyframes can now be marked as 'extremes' in addition to 'breakdowns'
* Extremes are shown as red/pink diamonds
* I've changed the order of extremes and breakdowns in the code to make for nicer sizing/ordering. This might break a couple of files out there, but it shouldn't be too many.

TODO:
Still on my todo is to make these tags more useful (i.e. less likely to be overwritten by keyframing)
2009-09-21 12:29:53 +00:00
e2e0a864a8 * Added Armature data filter buttons in Dopesheet/Graph editor headers
* Fixed an RNA typo to fix ranges in action constraint
2009-09-21 07:25:48 +00:00
7eb436a6b8 2.5 - More Animation Bugfixes
* Updating Preview Range settings results in correct updates for Animation Editors

* Compositing nodes now correctly animate when the values were set by IKEY/RMB on suitable node parameters. Beware that these nodes are not relinkable node-trees, hence the standard code not working.

* Ctrl-P to parent objects to bones now works in Pose Mode too. I needed to add a special keymap entry for this, though I thought this would have been better to be automatically inherited/present from Object keymap already?
* Ctrl-P -> Parent to Bone option now works correctly again. 1.5 lines of code missing here...

* Breakdowns tool now shows custom cursor during 'modal' phase so that it's not that confusing what's going on.
2009-09-19 12:36:22 +00:00
69e919530e Keymaps now have a poll() function, rather than adding/removing
their handlers based on notifiers, which is simpler and more
reliable.

This fixes for example editmode or uv edit keymaps not working
when creating a new 3dview or image space.
2009-09-17 21:36:02 +00:00
3a6bf17b3e UI
* Fix problem with curve mapping / color ramps not updating
  things like previews propertly. Now it uses the RNA update
  of the pointer from the material/texture/.. so each of those
  can define their own update, but still share the RNA struct.
* Code for these templates is now in interface_templates.c
* Fix exception for "axis" property, now it always shows normal
  widget with the PROP_DIRECTION subtype.
* Remove context from uiBlockLayoutResolve, no longer needed.
2009-09-16 18:47:42 +00:00
de59f34be0 UI: action editor header now also uses template for browsing action
datablocks, was last place using deprecated uiDefIDPoinButs.
2009-09-16 18:32:10 +00:00
7df35db1b1 2.5
Notifiers
---------

Various fixes for wrong use of notifiers, and some new notifiers
to make things a bit more clear and consistent, with two notable
changes:

* Geometry changes are now done with NC_GEOM, rather than
  NC_OBJECT|ND_GEOM_, so an object does need to be available.
* Space data now use NC_SPACE|ND_SPACE_*, instead of data
  notifiers or even NC_WINDOW in some cases. Note that NC_SPACE
  should only be used for notifying about changes in space data,
  we don't want to go back to allqueue(REDRAW..).

Depsgraph
---------

The dependency graph now has a different flush call:

DAG_object_flush_update(scene, ob, flag)
is replaced by:
DAG_id_flush_update(id, flag)

It still works basically the same, one difference is that it now
also accepts object data (e.g. Mesh), again to avoid requiring an
Object to be available. Other ID types will simply do nothing at
the moment.

Docs
----

I made some guidelines for how/when to do which kinds of updates
and notifiers. I can't specify totally exact how to make these
decisions, but these are basically the guidelines I use. So, new
and updated docs are here:

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/NotifiersUpdates
http://wiki.blender.org/index.php/BlenderDev/Blender2.5/DataNotifiers
2009-09-04 20:51:09 +00:00
a819ef1bf2 2.5 - Keyframing Bugfixes + Code Cleanups
* DopeSheet + Graph Editor - 'Sample Keyframes' option now tags newly created keyframes as being breakdowns. Also moved reduced the code duplication here by moving the core code for this to the animation module.

* Keyframing (Standard/Auto) - Added proper 'replace' option
Keyframes can now be rekeyed non-destructively when the INSERTKEY_REPLACE flag is provided to the keyframing API functions, since this option will make sure that only the values of the handles get altered.

For the Auto-Keyframing 'Replace/Edit Keys' option, this means that it truly works as it describes now, since it will now only replace the values of the keyframes on the current frame, and won't create new keyframes in the process or destroy the tangents already created for those keys.

For things like the sliders in animation editors, keyframes changing the value won't destroy existing tangents.
2009-09-04 04:27:06 +00:00
fa01703ac3 2.5 - Keyframe Types for DopeSheet
It is now possible to tag certain keyframes as being 'breakdowns' in the DopeSheet. Breakdown keyframes are drawn as slightly smaller blue diamonds.

Simply select the relevant keyframes and use the RKEY hotkey (or from the menus, Key->Keyframe Type) to choose between tagging the keyframe as a 'proper' keyframe and a 'breakdown' keyframe. 

Notes:
* Please note that this feature does not currently imply anything about breakdowns moving around keyframes or behaving any differently from any other type of keyframe
* In future, if there is any such need, more keyframe types could be added, though this is not really likely at all
2009-09-04 02:44:56 +00:00
33343fced5 2.5 - Action Editor
New Actions can now be added again from the Action Editor. 

There are no guarantees that this works totally safely yet (reference counting may be quite off), so you've been warned.
2009-08-25 04:32:40 +00:00
4a78b9e904 2.5 - Assorted Bugfixes for Animation Editing
* Inserting keyframes now takes into account whether the F-Curve was editable or not.

* Editing keyframes in animation editors now sends proper depsgraph updates instead of just tagging the relevant objects. 

Thanks JiriH for reporting these bugs.
2009-08-25 00:12:11 +00:00
b33b6babbd 2.5 - Sliders in Animation Editors
The 'Show Sliders' option for DopeSheet and Graph Editors now works again. When this option is enabled (it is disabled by default), a slider (or combobox) is shown beside the mute/lock toggles for F-Curves. Editing the slider will result in a new keyframe being added on the current frame. 

So, for all the (ex)-Maya animators out there, you can now animate in a channelbox-like way. :)

Also in this commit:
* Fixed some warnings in modifier.c from previous commits there
* Fixed some refresh problems with DopeSheet channel list (which were only obvious after adding back the sliders)
* Removed the old/unrestored and nasty slider code used in the past by the Action Editor only.
2009-08-24 04:31:13 +00:00
1c614f6cf6 2.5: layout.itemO now returns OperatorProperties to be filled in,
when passing properties=True as argument.

Other changes:
* uiItemR, uiItemFullR, uiItemFullO now accept a flag argument rather
  than multiple different "boolean" arguments, but still exposed as
  booleans to python.
* Fix RNA to support setting PROP_RNAPTR for return values.
2009-08-21 12:57:47 +00:00
184ac26dd0 2.5: Headers
* Fix header menu spacing bug, and make it consistent for all headers.
* For consistency, always put menus first in the header, then any enums
  to switch the type of data displayed.
* Node editor header ported to python layout. Still quite a few
  operators missing to make the menus complete.
* RNA wrapped node editor, and added use_nodes property to material
  and scene.
2009-08-19 00:55:30 +00:00
b257acfed1 Animation Editors: Code Cleanups (for Channel Lists) Part 2
Now the mute/protect/expand/etc. toggles are drawn using UI widgets. This means that special event handling code to determine when they were clicked on is no longer needed, and also means that there can now be tooltips for these items too. 

Also, added visibility toggles for ID-block expanders, which will cause all the F-Curves in the linked datablock to not get drawn. The backend filtering code to make this work will come later...
2009-08-16 02:21:43 +00:00
b9584607c5 Animation Editors: Code Cleanup Part 1 - Drawing
Finally started refactoring the drawing code for animation editors so that all the drawing (of the channels/names list) is done using standardised code for all the editors. 

A little specialised system for this has been made, and is now used for DopeSheet and Graph Editor drawing. This should make it easier to add new channel types with less effort.

Protect/mute toggles are now always clamped to the right-hand edge of the channels list. So you can now make the list wider to view longer names fully. However, since the mouse-handling hasn't been fixed yet, this won't always work.

TODOs:
* make mouse-click handling code use this system too, simplifying things to 1-2 lines of code there. Maybe this could be made to use UI widgets instead at a later date?
* NLA still needs to be ported to this system
2009-08-11 11:52:23 +00:00
641c8e69a8 2.5 - MetaBalls are now animateable 2009-08-03 13:09:23 +00:00
e05474d52f Graph Editor Bugfixes:
* Tools such as set handle type, etc. were not being called correctly from the menus. There were missing operator-context calls to make sure that the invoke methods would get skipped.

* Hack for loading old files - buttons region for Graph Editor now gets added. Dunno why this didn't work automatically as for NLA despite the two having the same code.
2009-08-02 22:56:42 +00:00
b3d0753467 2.5 - Small tweaks to order of buttons for Animation Editor header buttons to have more consistent layout 2009-07-29 11:59:21 +00:00
74e4ad20c9 2.5: code cleanup, added CTX_wm_space_* for each space type,
instead of casting everywhere.
2009-07-28 16:33:02 +00:00
9325f35d4c ParticleSettings animdata wasn't shown in graph editor, dope sheet and nla editor.
Tiny bug fix too: Had forgotten particle child length setting from do_versions so old files with child hair showed all hair with zero length.
2009-07-24 19:36:08 +00:00