Commit Graph

282 Commits

Author SHA1 Message Date
f743b583bf more lint includes
Only source/blender/editors/ dir, should not give errors on different platforms
Only removing:  UI_*.h, ED_*.h, WM_*.h, DNA_*.h, IMB_*.h, RNA_*.h, PIL_*.h
2010-03-23 14:09:09 +00:00
42ac4a3e7d Fix syntax for ID keyword. 2010-03-21 01:14:04 +00:00
0b33be5a7b select parent/child in object mode with [] keys, like pose mode.
also needed to extend the RNA api to allow C to set enums without meaningful values.
2010-02-25 15:41:46 +00:00
0cc59b9bb7 generic modal operator to make adjusting almost any rna property with the mouse possible with a few lines.
Example which is similar to interactive lamp adjusting in 2.4x ...
  wm.context_modal_mouse(path_iter="selected_editable_objects", path_item="data.spot_size")

Added lamp Wkey menu back.
2010-02-21 14:05:02 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
f22104542b copy vgroups to selected objects as long as they have aligned arrays.
access in the vertex group panel menu.
2010-02-09 22:00:19 +00:00
95bfbd470e vertex group sort operator, access from the vgroup panel, sintels mesh has 144 vertex groups which got quite tedious to look through. 2010-02-02 21:43:26 +00:00
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
7759fc2983 Motion Paths - (Part 3) Operators, Drawing, and Fixes
This commit makes the new-style Motion Paths work for Objects and Bones. Motion Paths can either be added for Objects (Object buttons) or for Selected Bones in PoseMode (Armature Buttons), and/or removed from these panels too.

Changes:
* Changed the way the baking code worked, since it was better to be able to bake a bunch of objects at once, instead of doing it per object
* Fixed a variety of bugs regarding initialising defaults and reading old files
* Added operators for Objects (like for bones), and replaced the existing code for bones.
* Fixed bug with baking code that was causing it to bake the wrong ranges

Todos:
* Frame number drawing is currently messed up, since the "cached" text drawing takes into account the object transforms.
* The new MotionPath panels currently appear as the first panels in the respective contexts, probably due to the order in which the files are included. This needs some fixing, though not sure what the best way is yet.
2010-01-19 11:31:49 +00:00
ace8d45c1c - particle drawing was using invalid memory with weights.
- particle set weight operator (Shift + K) and from the menu.
- mirror vertex groups operator can also flip weight group names.

a number of utility functions for weight groups added
 int *get_defgroup_flip_map(struct Object *ob);
 void flip_vertexgroup_name (char *name_r, const char *name, int strip_number); // moved from modifier.c 
 void copy_defvert (struct MDeformVert *dvert_r, const struct MDeformVert *dvert);
 void flip_defvert (struct MDeformVert *dvert, int *flip_map);
2010-01-15 17:28:00 +00:00
874ef4c747 Changed 3D View menu Duplicate Linked to use the same
duplicate linked + move macro as in the default key map (alt d).
2010-01-14 04:36:27 +00:00
9565322d32 Fix [#20600] First added camera is not made active
Also forced view align on when adding cameras
2010-01-11 06:57:41 +00:00
1f12e8c59f * Restored vertex parent
The operator was already there and written, just didn't have a hotkey 
assigned. Gave it an icky popup menu like object mode parent until we 
get a nice non-blocking report viewer.
2010-01-11 05:55:34 +00:00
57cd505d3f bake is now modal like render and updates the image view while baking.
it also has an exec function which doesnt update (like render too)
2009-12-30 14:37:25 +00:00
010e3fccb2 bake operator and UI, no feedback while baking yet 2009-12-29 18:55:38 +00:00
accfa71b2c pedantic naming: wmKeyMapItem wasnt called 'kmi' in some cases. 2009-12-24 09:36:15 +00:00
bb094b8655 key shortcits for sculpt back
- T was 'Flatten Brush', now Shift+T
- added an option to OBJECT_OT_subdivision_set to set the level relatively (so page up/down works), however RNA lets it set one level higher then the maximum, this seems displays OK in the 3D view so not sure whats going on here (as if there is always an extra hidden multires level).
2009-12-23 12:13:48 +00:00
29ea21e6bd Multires: added back Reshape function, to copy vertex locations
from another mesh.
2009-12-21 15:55:10 +00:00
62639a55d9 Keymap conflict detection operator.
Takes into account the hierarchical structures of keymaps as well as wildcards (KM_ANY) in event definitions, user remaps (emulate numpad, action/select mouse buttons, ...) and event values that overlap (click, press and release)

For now, doesn't do anything other than print conflicts in the console.

As a result, I cleaned up a lot of keymaps that had double definitions, moved some keymap items in more appropriate places, fixed wrong definitions and removed kmi that were added for testing a long long time ago.

Out of all the remaining conflicts, after removing obvious non-issues, here's what remains: http://www.pasteall.org/9898
2009-12-17 22:14:43 +00:00
3a9dcf1fea Sculpt Branch:
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r25245:25315
2009-12-11 14:38:02 +00:00
acadb8c39f Sculpt Branch:
Revised external multires file saving. Now it is more manual in that you
have to specify where to save it, like an image file, but still saved at
the same time as the .blend. It would ideally be automatic, but this is
difficult to implement, so for now this should at least be more reliable.
2009-12-10 14:26:06 +00:00
9358af05d0 rename operators TFM_OT_* --> TRANSFORM_OT_* 2009-12-10 10:36:32 +00:00
a321e2b139 Sculpt Branch:
Subdivision set with Ctrl+1-5 now works for multires as well.
2009-12-07 19:56:59 +00:00
18b465b749 Finish renaming job in Set Center operator to use Origin instead of Center.
Also replace ObData by Geometry and Object Geometry after talk with Matt.
2009-12-03 21:56:04 +00:00
cd154da973 1. Extend option for 3d view border select now does something (default True to keep same behavior)
2. Add action parameter to Select_All_Toggle operators, rename to Select_All.
Options are Toggle (default), Select, Deselect, Invert (same as select swap). This makes it possible to map separate hotkeys for select all and deselect all.

NOTE for Aligorith: I didn't change animation operators for select_all which already had an Invert operator. These should be fixed eventually.
2009-11-29 22:16:29 +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
aa3ed47848 * New tool - Join as Shapes
Available in object mode (Object -> Join as Shapes), only works for meshes at 
the present. Will merge all selected objects as shape keys on the active object, 
if the vertex count is the same.

This does not keep references to the external objects like in some applications, 
rather it's a quick way to update the shapes on the active object (perhaps after 
importing new versions from external applications).
2009-11-28 04:04:01 +00:00
74715d00cc First changes to implement the 2.5 snapping proposal (discussed back in May and recently on IRC).
http://wiki.blender.org/index.php/User:Theeth/Snapping

The new widget isn't there yet, but the rest works, including:

Increment (gears) is now a snap mode

Ctrl click to toggle snap on or off (in transform and 3d view)
Shift+Ctrl click to select snap mode (3d view only)

Snap status (on/off) is persisted in tool settings, no need to always turn it back on when entering transform.

It's still possible to have something resembling the old system by editing the transform modal keymap to snap on on ctrl press and snap off on key release.
2009-11-26 19:47:55 +00:00
64f552356a ctrl 1-5 for changing subsurf levels 2009-11-26 15:36:23 +00:00
8224dff9e2 Bugfix - Hook Operators:
These now work for curves, nurbs, and lattices in addition to meshes again.
2009-11-23 02:27:52 +00:00
8e76e2d09c * Re-implemented/refactored 3D View hooks menu.
Now shares the same operators as the modifier buttons, works context-sensitive, and uses Python menu too.

* Cleanups/tweaks in 3D View vertex group menu
2009-11-22 06:20:56 +00:00
455866ecf9 - added back Shift+Tab to toggle snap
- added curve tilt and shrink/fatten buttons into the toolbar
- fix typo in last commit for view3d snap header button
2009-11-21 13:01:28 +00:00
cb40583b90 * Added a quick little weight group 'Levels' operator, can interactively tweak overall weight value offset and gain in weight paint mode. 2009-11-20 05:09:57 +00:00
df0f1d53b8 new function WM_keymap_add_menu(), similar to WM_keymap_add_item() except it takes a registered menu. the key will then trigger this menu. 2009-11-17 15:29:55 +00:00
20043a0fc0 add hook in vertex and control point menu's, Ctrl+H
TODO's
- add for lattice
- break up add_hook
- add other hook operators
2009-11-16 13:59:27 +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
46c8bfe151 Make Links (Ctrl+L) back
- split into 2 operators: object.make_links_data() & object.make_links_scene since they are quite different.
- added reusable functions RNA_group_itemf & RNA_scene_itemf which can be used for any operator that takes ID data (easy to add more types Mesh, Text etc)
- DummyRNA_NULL_items for dynamic items so each operator need not define its own empty enum.
2009-11-04 10:25:57 +00:00
b3c8935b06 - Shift+F1 is append in 2.4x (not link). Lee asked it to be made the same.
- use OBJECT_OT_mode_set rather then OBJECT_OT_*_toggle, better for using report output for script input. OBJECT_OT_posemode_toggle and OBJECT_OT_editmode_toggle are called by OBJECT_OT_mode_set.
2009-11-03 11:00:10 +00:00
da1765765b many operators uses Bases, for the python to set operators context python too needs to be able to access bases.
- added scene.bases (like scene.objects)
- renamed group create operator.

Example
 scene = bpy.data.scenes[0]
 C = {}
 C["scene"] = scene
 C["selected_editable_bases"] = [scene.bases[2], scene.bases[3]]
 
 bpy.ops.group.create(C)


Also made operator fake modules not return __call__ (reported by Stani, fixes autocomp. bug)
2009-11-02 11:14:22 +00:00
d5921a274f Proportional edit for object mode.
Limitations:

1) Parents and children of selected objects are excluded from the pool (siblings are ok) Making it work with that would required unparenting and reparenting after transform, that would turn nasty really quick.

2) Does not support Connected (this could be done through parent links, but see 3 first).

3) Parent relationships in affected objects aren't taken into account. When parent and children in the area of effect, remember that the children will also take the motion of the parents (with additive results). This could perhaps be fixed, but it could be nasty.


Other stuff:
New BASE_EDITABLE macro that checks if base is editable (like TESTBASELIB except it doesn't check for selection)
Add scene parameter to TESTBASELIB_BGMODE macro (using it from current scope is nasty)
2009-10-30 17:48:50 +00:00
536fe27ba3 Restored 'Make Parent Without Inverse' Operator (Ctrl Shift P)
I've made this a separate operator to Make Parent, since the two were signficantly different (this version only works for Objects, and doesn't care about other types of parenting).
2009-10-26 11:20:16 +00:00
b06640c583 changed WM_OT_context_* operators to pass through if one of the members in the path is None, rather then raising an error.
This means if you refer to a member of an object it will fail silently if there is no active object, but if you use an invalid attribute of the object it raises an error.
The method to check this is not nice but works well enough.

also removed pageup/down keys for changing the active shape since listviews can do this now.
2009-10-22 16:21:06 +00:00
77ccb5aec1 shape key operators and buttons for reordering 2009-10-21 14:33:52 +00:00
3a6da12ab1 added new context operator WM_OT_context_cycle_int, use for switching between active shape keys 2009-10-21 10:11:03 +00:00
29b0afde6e [#19445] New Object is not Grabbed after using Duplicate Linked 2009-10-20 21:12:09 +00:00
487a5045c9 [#19688] pressing O and alt+O doesn't toggle proportional edit mode when editing a lattice.
- proportional edit keybindings for particle and lattice
2009-10-20 20:59:02 +00:00
9a00cc55c1 - editmesh select mirror (in editmode select menu)
- weight blending (Vertex specials menu), currently blends from surrounding unselected verts (nice for blending edge loops), but will eventually support face mask mode.
2009-10-20 16:31:03 +00:00
4197253b26 split weight normalize into 2 operators, normalize and normalize_all.
Added an option for normalize_all that keeps the active group at its existing weight while normaling all other groups around it.
Thsi makes it easy to paint up to 100% where all other groups will use progressivly less until the active group is 100% and all others are 0.

Added weight operators to the toolbar
2009-10-20 13:59:26 +00:00
9f841f5b35 weight paint operators - normalize/clean/invert 2009-10-20 10:19:48 +00:00
299adde803 shape key mirror tool, access from shapekey list buttons 2009-10-16 13:04:59 +00:00