Commit Graph

708 Commits

Author SHA1 Message Date
38f3b8ab92 Fixed segmentation fault when converting mesh to mesh with non-empty modifiers stack. 2010-03-08 13:49:05 +00:00
3ad1bfa69e Fix for convert_exec()
"Keep original" option now works for all objects' types
2010-03-07 05:04:22 +00:00
5de69e9545 [#21436] Do not set BASACT to NULL when new base wasn't created in convert_exec
by Sergey Sharybin (nazgul)

(from the patch)
When new base wasn't created in convert_exec() function. BASACT will set to NULL, which is not convenient. For example,
u can't enter edit mode after converting curve to mesh. Now BASACT changes only if base for active object was changed.
2010-03-03 18:49:26 +00:00
cb22649e0b convert to mesh (Alt+C), was failing in cases when MDef was used. make the mesh from the original rather then the copy. 2010-03-02 15:33:33 +00:00
f41660cfd0 GLSL: fix some notifiers for scene settings and remove unneeded check. 2010-02-15 09:03:22 +00:00
3917691297 [#21130] Fix segmentation fault when adding Empty object in Blender rev26870
from Sergey Sharybin (nazgul)
2010-02-13 15:50:46 +00:00
d125f17db8 Fix #19736: GLSL viewport materials are not updated on all changes. 2010-02-13 13:49:27 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
15ef07d684 More tooltip editing 2010-02-11 02:03:18 +00:00
148435b70a batch remove .'s used with RNA_def_struct_ui_text 2010-02-10 21:15:44 +00:00
2745609ffd [#20905] Blender 2.5 - Crash on drag an drop
Only allow dnd' adding objects in object mode.
2010-02-03 10:16:12 +00:00
d121c0153b Fix #20932: add surface operator did not pop up type menu when invoked. 2010-02-02 17:38:56 +00:00
5e98d8c523 Fix #20876: adjusting the settings after adding a new curve, surface,
or metaball creates duplicates, these did two undo pushes when only
one is needed.
2010-01-30 09:34:54 +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
7c776bc124 Fix for make duplicates real, put new objects on same layers as
duplicator instead of original object.
2010-01-26 11:23:47 +00:00
5fe3524ab1 Fix #20803: convert button in particle modifier didn't work
for creating duplis yet.
2010-01-26 11:15:45 +00:00
0de9b98a31 Fixed newly added group instances not getting any layers assigned. 2010-01-22 04:52:32 +00:00
1ad61f32aa Fix [#20750] adding Lattice object in Local space doesn't appears
Now add object operators take a layer parameter (hidden in UI) to determine their layer when created.
2010-01-21 04:54:52 +00:00
e7686b4cdb use a search popup for the add group menu item when there are more then 10. 2010-01-20 13:38:17 +00:00
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
e6c61acb68 Fix [#20644] new curve sets itself to the origin, but the pivot to the cursor
+ Cleaned up the nurbs spin operator and gave it properties rather than 
relying on context
2010-01-12 01:50:34 +00:00
a3e461ce1b - player building again
- fix for compiler warnigns
- bpath reporting was incorrect
2010-01-11 10:48:41 +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
dbf295b904 Added location and rotation operator properties for adding objects. The Align to View boolean
is now just used to set the rotation property value during invoke.

This removes some reliance on 3d view info for non-interactive use, and also lets you specify
new object's locations/rotations explicitly when calling from Python.
2009-12-28 04:09:46 +00:00
e299798bbf Fix for [#20203] Linked objects - A few bugs
Did a lot of cleaning Object operator poll functions to check if the object's linked 
or not. For this, added the function ED_operator_object_active_editable() as 
opposed to ED_operator_object_active()
2009-12-04 06:33:01 +00:00
d828062f1b Fix for [#20157] 2.5 Can`t remove a linked objects from the 3D view by pressing X 2009-12-04 05:05:50 +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
d2c999020c Updated icons. Thanks to jendrzych.
Adds icon entries to the force fields.

Also reverted last menu naming commit - this is apparently due to a bug in the Python API that will be fixed.
2009-11-24 15:40:56 +00:00
2e7dbdf025 Depsgraph/Drivers
* Removed ED_anim_dag_flush_update and ED_anim_object_flush_update. These
  were wrapping DAG_* calls and were intended be used instead of them when
  doing a DAG update from editors. That goes against the design in my opinion,
  no matter who calls the DAG, that should update the editors correctly, so
  any special checks in such functions for editors should be avoided.

* Driver RNA properties now do updates again, including DAG scene sorting,
  text buttons no longer update as you type anymore, so this should be
  safe I think.

* Remove scene.update() RNA function, all properties/functions should do this
  automatically, if changing some property or calling a function/operator
  does not do the correct update, that should be fixed.
2009-11-24 11:48:16 +00:00
bc6190f3e3 python api for collection add()/remove()
Added a group example
 C = bpy.context
 ob = C.active_object
 bpy.data.groups[0].objects.add(ob)

- add_to_group and rem_from_group now take optional scene and base flags and deal with updating the object & base flags
- operators that add objects to groups were setting ob->recalc= OB_RECALC_OB; looks like its not needed.
- previously add() ignored python args, now add and remove are called like any other FunctionRNA from python.
- made the pyrna api use tp_getset's for collestions active/add()/remove()
2009-11-11 16:28:53 +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
bdfa652605 adding group instances didnt do an undo push 2009-11-05 17:43:23 +00:00
b1ac71b3a0 enter editmode when adding objects even if the object is not in an active layer,
useful for python but in rare cases this also happens for users.

Active layer getting out of sync is an old bug but hard find when it happens.
This at least fixes segfaulting on adding objects.
2009-11-05 14:25:08 +00:00
0b2bc7785d * Fix for [#19700] undo doesn't display visual feedback on lattices
Depgraph update was commented out in undo system because of globals, restored this with new context/id-based depgraph

* Fix in UV editor UV menu
* Slightly nicer default names for adding forcefields with Add menu
2009-11-05 09:57:43 +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
b221e57fd2 Second try at fixing this... the props were still not getting initialised in many cases, but this time because those were using the exec() callbacks which didn't set this. This fix ain't that nice, but at least the old functionality works again like 2.4x. 2009-11-04 09:55:24 +00:00
de7da7c779 Bugfixes for Adding Objects:
* Auto enter EditMode for adding Armatures was broken
* Adding a camera no longer tries to enter editmode, even though that's invalid...
2009-11-04 09:45:37 +00:00
1d9f90ed42 - all add object operators now take view_align as an argument, and enter_editmode where its used. Makes running the operator from python pradictable without having to know the user prefs.
- missing return in function
- python error in view3d (assumed active object exists)
2009-11-02 16:07:49 +00:00
a87c16947d * Set some custom empty draw types on adding force fields, where relevant 2009-11-02 11:37:35 +00:00
6f2ca7c2bf check for error that could happen when making editmode armatures 2009-10-30 13:08:58 +00:00
e14a8635cc Modified python rna property types (BPy_PropertyRNA), so PySequence_Check() returns true
this means you can do...
C = {"selected_editable_objects":bpy.data.objects}
...when defining pythons context, without doing list(bpy.data.objects)
2009-10-29 10:03:34 +00:00
40731af9d0 use objects rather then bases where possible, use context rather then OBACT macro 2009-10-29 09:14:20 +00:00
e024b46eb6 - 'id_data' attribute for py rna api, so you can get the Mesh from a face, Armature from a bone, etc.
- fixed crash when adjusting added objects settngs from the toolbar.
2009-10-28 11:31:24 +00:00
d27649e9f0 Bugfix: adding a curve path did not mark it as being a path/3d
correctly, causing e.g. curve guides not to work with it.
2009-10-20 19:37:49 +00:00
991e67ddc7 RNA:
* Enums with an _itemf callback now never get context NULL passed in,
  rather a fixed list of enum items are defined which should contain
  all items (if possible), from which the _itemf callback can then use
  a subset.
2009-10-14 19:19:43 +00:00
a3f6b0ed00 - add torus back from 2.4x as an operator
bpy.ops.mesh.primitive_torus_add(major_radius=1, minor_radius=0.25, major_segments=48, minor_segments=16)

- experemental dynamic menus, used for INFO_MT_file, INFO_MT_file_import, INFO_MT_file_export and INFO_MT_mesh_add. these can have items added from python.
eg.

- removed OBJECT_OT_mesh_add, use the python add menu instead.

- made mesh primitive ops -  MESH_OT_primitive_plane_add, ...cube_add, etc. work in object mode.

- RNA scene.active_object wrapped

- bugfix [#19466] 2.5: Tweak menu only available for mesh objects added within Edit Mode
  ED_object_exit_editmode was always doing an undo push, made this optional using the existing flag - EM_DO_UNDO, called everywhere except when adding primitives.
2009-10-10 21:23:20 +00:00
85ebea5838 When in localview, MKey moves objects out of localview, added redraw notifiers 2009-10-10 12:29:11 +00:00
5621848629 - added redraw notifier.
- removed custom invoke function, use generic names (was misleading since conversion is done on selection, not just active).
- made convert mesh to curve use the 'keep_original' option.
2009-10-10 10:49:17 +00:00
fb561fb4c8 added mesh to curve conversion (edge loops only)
like the script in 2.4x
2009-10-09 22:09:48 +00:00
5c867406aa menus are now global (like operators), so for eg, the info add menu and the 3D add menu can be shared. 2009-10-08 19:06:32 +00:00