Commit Graph

245 Commits

Author SHA1 Message Date
Sergey Sharybin
4a8849b030 - Hhighlight active nurb in edit mode
- Replaced hardcoded nurbcol array with theme colors
- Send notification in duplicate curve operator (this operator could
  reset/change active nurb)
- Edge seam color added to the user preferences dialog
2010-03-12 16:43:04 +00:00
Joshua Leung
9c513346a5 Bugfix #21117: Trying to select overlapping keys in the graph editor only cycles through top two keys
(A masterclass in killing a bug using a sledgehammer...)

Recoded the way that Graph Editor keyframe selection works, replacing the old penalties + closest vert system with a selection queue. 

Perhaps the sensitivity tolerance for picking up when a vert is clicked on is too sensitive now, but this can be fixed easily.
2010-03-09 07:09:38 +00:00
Joshua Leung
b055e596cc Bugfix #21434: 'Ghost' for Rotation F-curves was not taking unit conversions into account, so the ghost curves were calculated+stored wrong 2010-03-05 11:35:15 +00:00
Joshua Leung
30d01cf240 Cleanup tweaks:
1) Decreased the alpha value for unselected F-Curves in the Graph Editor, making them more invisible to help make the selected ones stand out more.

2) Removed various outdated settings from pose bone RNA
2010-02-17 10:23:14 +00:00
Campbell Barton
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
Daniel Salazar
15ef07d684 More tooltip editing 2010-02-11 02:03:18 +00:00
Campbell Barton
148435b70a batch remove .'s used with RNA_def_struct_ui_text 2010-02-10 21:15:44 +00:00
Campbell Barton
2aa028e77d Graph editor, when 'Only Selected Handles' is enabled, dont allow selecting a handle unless they key is alredy partially selected. 2010-02-08 18:00:27 +00:00
Joerg Mueller
9827a3e9ea 2.5 Audio:
- recode of the whole sequencer audio handling
- encode audio flag removed, instead you choose None as audio codec, added None for video codec too
- ffmpeg formats/codecs: enabled: theora, ogg, vorbis; added: matroska, flac (not working, who can fix?), mp3, wav
- sequencer wave drawing
- volume animation (now also working when mixing down to a file!)
- made sequencer strip position and length values unanimatable
2010-02-07 23:41:17 +00:00
Joshua Leung
2f72b91a54 Operator Execution Contexts Bugfix:
This commit adds a few more execution contexts for operators, given the increasing tendency for some special regiontypes to exist within areas that must have their own set of special operators. 

Examples of these include the "channel" operators in the Animation Editors (i.e. those in the 'Channels' menu), and the "Fit to Preview Window" operator for the Sequencer.

Previously, operators such as these would not function when clicked on from the menus, and they would not show the hotkeys they were mapped to.


Also, fixed a few operator definitions in the Animation Editors which were missing ot->prop defines. This meant that some hotkeys (mainly selection) were shown incorrectly in the menus.
2010-02-07 23:39:44 +00:00
Joshua Leung
20fb4e3367 DopeSheet and Graph Editors: Select More/Less Operators
This commit introduces the Select More/Less Operators (Ctrl +/-) for keyframes. This works like the ones for curves, by only selecting/deselecting keyframes lying in the same F-Curve. Inter F-Curve selection is not done by this operator. That is the job for another one. 

This is especially useful for F-Curves set in the 0-1-0 pattern (i.e. 3 keyframes forming localised peaks), where the peaks can be selected by clicking on them individually, and immediately surrounding '0' values are selected too using "Select More".
2010-02-07 11:50:03 +00:00
Joshua Leung
1ee7b2fae4 Bugfix #19970: auto-clamped / auto working strangly in f-curve editor
Thanks to a great doc from Bassam (slikdigit) on the different types of handles (which should probably become/be part of future 2.5 docs), I've revised the code again so that this works well again.

The doc:
http://docs.google.com/View?id=dvgkxj6_1d8cpfw79
2010-02-02 21:16:28 +00:00
Joshua Leung
c8e8057ada Bugfix #19970: auto-clamped / auto working strangly in f-curve editor
Fixed the operators for DopeSheet/Graph Editors responsible for setting the "auto-clamped". This option is actually per F-Curve instead of per handle, and the code here should function like it did in 2.4x

However, despite this, it still appears to work oddly IMO. Any comments Bassam or animators familiar with the intentions of this?
2010-02-01 11:45:24 +00:00
Joshua Leung
aafe6e2d9c Renamed the FILE_OPEN option for the file browser to FILE_OPENFILE to cleanup compiler warnings about redefined definitions (mingw) 2010-01-31 23:07:32 +00:00
Joshua Leung
96daa3348d Bugfixes:
* Old files imported to 2.5 with curves that got cycles FModifiers added during version patching, would not have their keyframes shown for editing. 

* #20893: Can't see/show the Properties area in the NLA
I don't know why this worked on a few of my test files several months ago, and yet now fails for many files today.
2010-01-30 21:11:46 +00:00
Campbell Barton
41861eecd1 [#20892] Locking animation curves with Tab Key don't hide the curves handles
drawing handles for fcurves wasnt checking ((fcu->grp) && (fcu->grp->flag & AGRP_PROTECTED))
2010-01-30 17:17:23 +00:00
Joshua Leung
e1fdf7fc58 View2D/TimeCode Drawing:
This commit introduces a few cleanups and tweaks to the way that timecodes (i.e. the timing indications used instead of frame numbers) get displayed.

1. Custom Spacing of TimeCodes/Gridlines
Made the minimum number of pixels between gridlines/timecode indications a user-preference, instead of being a hardcoded constant. This allows to set the spacing tighter/looser than the defaults, and is also used for the other changes.

2. Default timecode display style, (now named 'minimal') uses '+' as the delimeter for the sub-second frames. This hopefully makes it a bit clearer what those values represent, as opposed to the '!', which can sometimes look too much like a colon.

3. Added various timecode display styles as user-preference. - These include always displaying full SMPTE, to showing milliseconds instead of frams for sub-second times, and also an option to just show the times as seconds only.
- When changing the timecode style, the spacing setting is automatically modified so that the timecodes are spaced far apart enough so that they won't clash (under most circumstances). This automatic modification is only done if the spacing is too tight for the style being set.

4. Unified the code for generating timecode strings between the View2D scrollbar drawing and the current frame indicator drawing.
2010-01-30 04:43:36 +00:00
Matt Ebb
904665f15b [#20728] "Export UV Layout" overwrites existing files (without feedback)
The 'save over' popup was only appearing based on a string comparison of the operator name ("Save"). Changed this to use a hidden operator property: "check_existing". Python operators must 
have this property for the file selector confirmation too.

This property can also be set to false, to prevent checking for existing files, useful in the File->Save menu item to prevent the dangerously missable confirmation popup.
2010-01-27 02:20:24 +00:00
Ton Roosendaal
b119ce5fcc Drag and drop 2.5 integration! Finally, slashdot regulars can use
Blender too now! :)

** Drag works as follows:

- drag-able items are defined by the standard interface ui toolkit
- each button can get this feature, via uiButSetDragXXX(but, ...).
  There are calls to define drag-able images, ID blocks, RNA paths, 
  file paths, and so on. By default you drag an icon, exceptionally 
  an ImBuf
- Drag items are registered centrally in the WM, it allows more drag 
  items simultaneous too, but not implemented

** Drop works as follows:

- On mouse release, and if drag items exist in the WM, it converts 
  the mouse event to an EVT_DROP type. This event then gets the full 
  drag info as customdata

- drop regions are defined with WM_dropbox_add(), similar to keymaps 
  you can make a "drop map" this way, which become 'drop map handlers' 
  in the queues.
- next to that the UI kit handles some common button types (like 
  accepting ID or names) to be catching a drop event too.

- Every "drop box" has two callbacks:
  - poll() = check if the event drag data is relevant for this box
  - copy() = fill in custom properties in the dropbox to initialize 
    an operator
- The dropbox handler then calls its standard Operator with its 
  dropbox properties.

** Currently implemented

Drag items:
- ID icons in browse buttons
- ID icons in context menu of properties region
- ID icons in outliner and rna viewer
- FileBrowser icons
- FileBrowser preview images

Drag-able icons are subtly visualized by making them brighter a bit 
on mouse-over. In case the icon is a button or UI element too (most 
cases), the drag-able feature will make the item react to 
mouse-release instead of mouse-press. 

Drop options:

- UI buttons: ID and text buttons (paste name)
- View3d: Object ID drop copies object
- View3d: Material ID drop assigns to object under cursor
- View3d: Image ID drop assigns to object UV texture under cursor
- Sequencer: Path drop will add either Image or Movie strip
- Image window: Path drop will open image


** Drag and drop Notes:

- Dropping into another Blender window (from same application) works 
too. I've added code that passes on mousemoves and clicks to other 
windows, without activating them though. This does make using multi-window
Blender a bit friendler.

- Dropping a file path to an image, is not the same as dropping an 
Image ID... keep this in mind. Sequencer for example wants paths to 
be dropped,  textures in 3d window wants an Image ID.

- Although drop boxes could be defined via Python, I suggest they're 
part of the UI and editor design (= how we want an editor to work), and 
not default offered configurable like keymaps. 

- At the moment only one item can be dragged at a time. This is for 
several reasons.... For one, Blender doesn't have a well defined 
uniform way to define "what is selected" (files, outliner items, etc). 
Secondly there's potential conflicts on what todo when you drop mixed 
drag sets on spots. All undefined stuff... nice for later.

- Example to bypass the above: a collection of images that form a strip, 
should be represented in filewindow as a single sequence anyway. 
This then will fit well and gets handled neatly by design.

- Another option to check is to allow multiple options per drop... it 
could show the operator as a sort of menu, allowing arrow or scrollwheel 
to choose. For time being I'd prefer to try to design a singular drop 
though, just offer only one drop action per data type on given spots.

- What does work already, but a tad slow, is to use a function that 
detects an object (type) under cursor, so a drag item's option can be 
further refined (like drop object on object = parent). (disabled)


** More notes

- Added saving for Region layouts (like split points for toolbar)

- Label buttons now handle mouse over

- File list: added full path entry for drop feature.

- Filesel bugfix: wm_operator_exec() got called there and fully handled, 
while WM event code tried same. Added new OPERATOR_HANDLED flag for this. 
Maybe python needs it too?

- Cocoa: added window move event, so multi-win setups work OK (didnt save).

- Interface_handlers.c: removed win->active

- Severe area copy bug: area handlers were not set to NULL

- Filesel bugfix: next/prev folder list was not copied on area copies

** Leftover todos

- Cocoa windows seem to hang on cases still... needs check
- Cocoa 'draw overlap' swap doesn't work
- Cocoa window loses focus permanently on using Spotlight
  (for these reasons, makefile building has Carbon as default atm)

- ListView templates in UI cannot become dragged yet, needs review... 
it consists of two overlapping UI elements, preventing handling icon clicks.

- There's already Ghost library code to handle dropping from OS 
into Blender window. I've noticed this code is unfinished for Macs, but 
seems to be complete for Windows. Needs test... currently, an external 
drop event will print in console when succesfully delivered to Blender's WM.
2010-01-26 18:18:21 +00:00
Joshua Leung
e03bbf12c3 Assorted Bugfixes:
* Adding new Keying Set paths didn't initialise the id-type setting. Make this default to Object
* Fixed bad poll callbacks for Graph Editor operators working on keyframes, which were expecting F-Curves to be selected too to be eligible for editing. This was often too restrictive, resulting in nothing happening.
* Fixed error with default property for Debug Redraw-Timer Operator not being set. However, this operator is currently still no use, since the info popups are now disabled.
2010-01-26 10:29:10 +00:00
Joshua Leung
0e1eca2d08 Finishing off the Transform code changes for Degrees/Radians:
Added flags for the mapping function offering more control over what values were affected and when. In the WIP code, the values for unselected verts were getting the restoration conversion being repeatedly applied, resulting in the values tending to zero.
2010-01-26 09:25:32 +00:00
Matt Ebb
07a4986be7 WIP commit - degree conversions for transform fcurve editing - grabbing a point works fine, but still
issues with grabbing a single handle.

Using the Radians unit setting still goes fine though so you can use that for now.
2010-01-26 05:58:03 +00:00
Joshua Leung
14d4feca57 Radians vs Degrees: The Second Attempt
F-Curves now internally store radians again instead of degrees. 
- This solves problems with inconsistencies when working with drivers.
- No need to version patch old files, potentially screwing them up. As such, removed the version patching for F-Curves.
- Is better suited to optionally showing radians throughout the UI instead or degrees.

As a result, values are now converted on the fly in the Graph Editor for display and operators that operate on values. I've made the conversion system for this rather general, so that other unit type conversions can also be hooked up with the type conversion backend.

Also, made some tweaks to F-Curve RNA wrapping to make it represent the data better.

TODO:
- Transform code currently still needs to be corrected to work with these changes. Currently moving keyframes for rotation curves will make them change too rapidly vertically when using degrees.
2010-01-26 03:16:14 +00:00
Joshua Leung
9cd3ab1e0c Bugfix #20817: Graph Editor, Drivers: Driving a Shapekey by a bone rotation: Unable to add modifiers
Wrong filters were used for F-Curves for adding the modifiers. Now the Graph Editor curve visibility settings are only taken into account for this when the hotkey version (i.e. only_active == False) is used, which means that the button works again.
2010-01-25 23:11:01 +00:00
Martin Poirier
4907e8df20 Remove unneeded notifier data added in revision 26219.
Fix a lot of notifier calls to stop abusing ND_TRANSFORM and use more appropriate data flags.
2010-01-25 19:42:33 +00:00
Joshua Leung
3b446ed4e4 Durian Request/Bugfixes: Graph Editor Zooming doesn't go far enough
Pushed limits for Graph Editor view extents to proper limits, and fixed clamping used in View2D code which was preventing height of View2D viewports from getting below 1.0
2010-01-25 11:06:55 +00:00
Joseph Eagar
351d239ac7 View3d transform was sending a too-general notifier to redraw, causing several animation editors and the property editor to redraw too, which can really slow things down. added a more specific ND_VIEW3D_TRANSFORM notifier to solve this. 2010-01-24 04:26:01 +00:00
Joshua Leung
42c8448fe6 Durian Request: Expansion of Action Groups not linked between DopeSheet editors and the Graph Editor
Action Groups can now be expanded/collapsed in DopeSheet editors without the same thing happening in the Graph Editor, and visa versa. 

This should help improve the workflow, since the channel lists are generally kept more compact in the DopeSheet, while they are more expanded in the Graph Editor, so less time is spent expanding/collapsing stuff. Also this should hopefully alleviate some of the errors from accidentally deleting and then having to restore channels that were not intended to be deleted.

Also, switched the order of the expand/collapse hotkeys (in the channels list region) for channels so that Ctrl +/- now expands/collapses selected channels only, while +/- expands/collapses all channels. This should make it more convenient to quickly open up all groups to select F-Curves for the Graph Editor.
2010-01-23 03:04:37 +00:00
Joshua Leung
8dd14e1eed Graph Editor: Bugfixes for option where only the keyframes of selected F-Curves are shown
* Selected keyframes in unselected F-Curves were still being modified, although not shown
* Selection tools for keyframes were changing the selection status of F-Curves, making keyframes sometimes disappear after trying to select another keyframe

* Warning fixes in a few other files
2010-01-22 23:51:31 +00:00
Joshua Leung
a8855e2caf Drivers UI: Debug Info
Feature request for ZanQdo, which shows the intermediate values used in driver calculations (i.e. current value of driver, and current value of variables), allowing drivers expressions to be debugged. This is a per-driver setting...
2010-01-19 23:38:26 +00:00
Joshua Leung
a8a5defc0c Preview Range Tweak:
Made preview range be turned on/off using a proper flag instead of just relying on checking for start-frame = 0. It is no longer satisfactory to do that since we can have negative frame numbers, and also having it as a proper flag means that the range can be toggled on/off non-destructively.
2010-01-19 20:30:04 +00:00
Joshua Leung
2100412284 Small tweaks to 26108 - Graph Select Borderselect:
Campbell's fix was ok, but just added a few comments as to why the previous way didn't work.

Also, fixed the bug where borderselect would make all F-Curves selected regardless of whether any keyframes on those curves were selected.
2010-01-19 19:53:50 +00:00
Campbell Barton
f75301939c Aligorith: please check. this was copied from mouse select. however BKE_nla_tweakedit_remap(adt, rectf.xmin, NLATIME_CONVERT_UNMAP) is running which looks like it should be doing the remapping. however both functions are needed for this to work.
Committing since Lee wants border select to work in the graph editor but feel free to revert.
2010-01-19 15:12:14 +00:00
Campbell Barton
5272991e8b generic operator menu was searching for "type" and using the first enum property if it wasnt found.
this is too arbitrary and could break if roperty order is changed.
store the property in the operator type that is to be used for menu and enum search func's.

python function for searching operator enums on invoke. (just need dynamic python enums now)
 wm.invoke_search_popup(self)
2010-01-15 22:40:33 +00:00
Joshua Leung
39ff5d7eb9 Reverting changes made in r25940 with the NLA unmapping.
The reverted code was just blindly restoring the old state of the keyframes; changes to selection state, value changes, handle type, etc. were overridden, and the cases where keyframes were deliberately retimed or otherwise were also ignored.  

I'm not sure what problems these changes were meant to be solving, but will reassess the situation when I get more info on this.
2010-01-15 10:34:39 +00:00
Brecht Van Lommel
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
Joshua Leung
1afb01876c Graph Editor: Snapping + Cursor
Added buttons beside the numeric inputs for cursor location to make it more obvious how the cursor can be used for numeric manipulation of selected keyframes.
2010-01-11 06:32:05 +00:00
Joshua Leung
b6598ed710 Quick fix for layout of Transform Channel var type, since on smaller regions, the widget sizes were too small to be useful. 2010-01-05 12:12:26 +00:00
Joshua Leung
6fb1d0e6a3 More Driver Fixes:
* Fixed Driver version-patching code to work correctly again with the new system.

* Fix for bug #20484, by adding a new driver variable type ('Transform Channel') which makes it easier to use object/bone transforms as in the past. The main differences with using this (compared with the 'Single Prop' type) are that this allows for 'final' transforms to get used instead (i.e. constraints are also taken into account), and also that this variable type can only be used for transforms (more limited scope -> less flexibility -> point-n-click goodies can follow). Mancandy now loads correctly again.

* Added toggle for local vs worldspace transforms when working with Rot/Loc Diff variable types, and also for the newly added Transform Channel

* Removed some dead code from sequencer...
2010-01-05 11:59:12 +00:00
Joshua Leung
a9861e3381 Durian Request: Drivers Recode
Highlights:
* Support for Multi-Target Variables
This was the main reason for this recode. Previously, variables could only be used to give some RNA property used as an input source to the driver a name. However, this meant that effects such as Rotational Difference couldn't be used in conjunction with other effects and/or settings to achieve the powerful results. Now, a variable can take several input targets, perform some interesting operations on them, and spit out a representative value based on that.

* New Variable Types
With the introduction of multi-target variables, there are now 3 types of variable that can be used: single property (i.e. the only type previously), Rotational Difference (angle between two bones), and Distance (distance between two objects or bones).

* New Driver Types
In addition to the existing 'Average', 'Sum', and 'Expression' types, there is now the additional options of 'Minimum' and 'Maximum'. These take the smallest/largest value that one of the variables evaluates to.

* Fix for Driver F-Curve colouring bug 
Newly added drivers did not get automatically coloured in the Graph Editor properly. Was caused by inappropriate notifiers being used.


Notes:
* This commit breaks existing 2.5 files with drivers (in other words, they are lost forever). 
* Rigify has been corrected to work with the new system. The PyAPI for accessing targets used for the variables could still be made nicer (using subclassing to directly access?), but that is left for later.
* Version patching for 2.49 files still needs to be put back in place.
2010-01-04 21:15:45 +00:00
Guillermo S. Romero
bbac520987 Add audaspace includes. And some reorg/cleaning. 2010-01-02 01:33:03 +00:00
Joerg Mueller
637873deb0 Added another three effects that you can use with the Sound to F-Curve modifier, have fun! 2010-01-01 18:45:21 +00:00
Joshua Leung
8ac9ec4156 Scons compiling fix fox neXyon's new-year audio commit 2010-01-01 09:41:53 +00:00
Joerg Mueller
174eccf078 Huge new year audio commit!
* Refactored the whole audaspace library to use float as sample format over all readers.
* Added new Readers like the linear resampler, envelope, lowpass, highpass and butterworth.
* Note: The butterworth filter isn't working correctly, some bug in there... Maybe also true for the envelope.
* Added a sound to f-curve operator that behaves mostly like the soundtracker script of technoestupido.
2010-01-01 05:09:30 +00:00
Joshua Leung
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
Joerg Mueller
a2b0020e11 Reverted the addition of the f-curve sound modifier (was added in revision 24759) due to unusability and performance issues. The ability to use a sound as animation source will be added as an import operator later that renders a sound to an f-curve which brings the advantage that you can edit the generated curve later and the disadvantage it is not automatically updated when the sound changes. 2009-12-24 14:01:22 +00:00
Matt Ebb
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
Joshua Leung
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
Joshua Leung
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
Joshua Leung
170c464920 Animation Editor Code Cleanups:
Removing some unused functions that have become redundant in recent times.
2009-12-20 05:09:55 +00:00