Commit Graph

333 Commits

Author SHA1 Message Date
05884e09be - rna bugfix where ints were not clamped and would overflow, now raise an error and print valid range.
- fixed WM_OT_context_cycle_int was causing problems with int overflow, now it cycles properly.
- rename QUOTE macro to STRINGIFY_ARG, and added STRINGIFY, which is used more often since it gives the value as a string.
2010-10-03 01:44:00 +00:00
5158684256 bugfix [#24014] Operator UI not shown in the order defined 2010-09-27 02:52:12 +00:00
47628dfab6 missing include from own commit r32117 2010-09-26 13:53:32 +00:00
d305a64b69 py/rna keyframe functions can now key longer paths if called from an ID block.
eg, bpy.context.object.keyframe_insert("soft_body.plastic")
2010-09-25 10:11:36 +00:00
e90ad1d9ba Annoying hack to pretend that an operator and its properties are the same, when passing an operator to an rna function argument which accepts 'AnyType', then pass the properties instead.
This means we can do operator drawing without passing self.properties as an argument.

while this check if quite specific, if this gives problems later on we should probably change operators not to try to mix an operator and its properties, it looks nice to a scripter but internally is not easy to manage.
2010-09-24 03:48:26 +00:00
5c99f3886e fix for python refcounting leak, RNA_path_resolve_full now unsets the index if its not last. 2010-09-24 03:24:15 +00:00
2b9a73ff98 - py/rna's path_resolve function was ignoring the index eg: obj.path_resolve("location[1]")
- corrected comment from previous commit
2010-09-23 02:12:33 +00:00
e546d7666b minor changes needed for the next commit.
- BKE_add_image_extension now sets the extension rather then appending. (no more image.jpg.tga)
- py/rna functions which have no return value now raise an error if a non-None value is returned.
- added back the red-alert flag so buttons can have a red highlight if somethings wrong.
2010-09-17 05:58:06 +00:00
5559a0d52e rewrote python IDProperty metaclass in C, this was a quick hack to get it working.
The reason this didnt work is all sibclasses of pythons type() or PyType_Type in C, have to have their size set to sizeof(PyHeapTypeObject) rather then sizeof(PyTypeObject) as you might expect.
This is strange since its not a heap-class (defined in pythons runtime), but a static C type, so Im not sure about this, and cant find any documentation but it seems to work ok.
2010-09-10 14:54:50 +00:00
f9367c4c4d definition/syntax edits for operators and rna (no functional changes) 2010-09-09 17:36:54 +00:00
9bdb7b5ffa fix crash for calling setattr with a non-string attribute and warning. 2010-09-09 13:58:38 +00:00
45cf7633fe remove class methods for defining properties
eg: bpy.types.Scene.BoolProperty()
2010-09-09 06:29:44 +00:00
ced3f3ad15 - fix for using ['prop'] in RNA api
- fix for testing without USE_PY_METACLASS defined.
2010-09-09 06:06:37 +00:00
f4be9a6393 support for defining rna class properties as class attributes
eg:
 bpy.types.Scene.myprop = BoolProperty()
 
note, this uses an ugly python metaclass, this should be replaced with a C implimentation which is included but commented out, causing crashes in pythons GC which gives no hint as to where the bug comes from.
2010-09-09 05:37:22 +00:00
128bd96c01 py/rna internals
- rna internal deferred properties now store the functions as PyObjects rather then C function pointers
- Property functions now allow the first non keyword argument to be a class.
2010-09-08 10:43:36 +00:00
ae0d99291f bugfix [#23656] Problems retrieving properties from inside runtime-created PointerProperties
Setting the classes __dict__ member directly didnt update the types slots (python internal type stuff used with subclassing), so class.bl_rna was returning an incorrect value.

Set the value using typical python setattr command.
2010-09-07 08:10:19 +00:00
ad0a176a22 - new subclass for ID-Property based collections - this way add/remove/move functions will only be shown for types that support it.
- moved array attributes into array properties - saves 8 bytes per allocated non-array property.
2010-09-02 06:35:00 +00:00
70ec45d757 have rna function obj.as_pointer() return a memory address rather then a PyCapsule object.
this can be passed to ctypes.c_void_p(bpy.context.object.as_pointer())
2010-09-01 15:25:22 +00:00
39cb1432d8 bugfix [#23285] Exporters not available whel using special characters in path name
- ID properties now suopport non utf-8 strings for their values but not their keys.
- moved utility functions into py_capi_utils.c from bpy_utils and bpy_rna.
- import/export paths have to be printed with repr() or %r, so non utf-8 chars are escaped.
2010-09-01 14:13:48 +00:00
dfb8c5974e rna support for passing dynamic sized arrays to rna functions
using this for object.vertex_groups.assign([index list ...], group, weight, mode)
2010-08-31 11:31:21 +00:00
ec8848d03a raise an error when setting the values of read-only rna wrapped Vector/Matrix/Euler/Quat 2010-08-30 12:27:34 +00:00
92f6dd73b3 fix for resolving rna paths, RNA_path_resolve could return a property which was the parent of the pointer (when it would normally be assumed to be the child).
also change pythons struct_rna.path_resolve to return StructRNA's or Properties when the property isnt NULL.
2010-08-30 09:18:21 +00:00
df4dd70d7b various utf8 compatibility fixes
- OBJ import/export now work with non utf8 paths. (all exporters and importers need changes like this)
- strip non utf8 chars from new ID blocks (also applies to renaming)
- set the file rename button to allow non-utf8 chars.
2010-08-30 08:28:48 +00:00
f28b5e672e python/utf8 compatibility fixes. (as discussed on the mailing list)
- user input gets non utf8 chars stripped all text input other then file paths.

- python has the same limitations, it will raise an error on non utf8 strings except for paths use unicode escape literals so its possible to deal with saving to these file paths from python.

- new string functions
  BLI_utf8_invalid_byte(str, len) returns the first invalid utf8 byte or -1 on on success.
  BLI_utf8_invalid_strip(str, len) strips non utf-8 chars.
2010-08-28 12:34:22 +00:00
6d195f6195 speedup for pyrna boolean checking.
if bpy.data.objects: ...

Would get loop over the entire collection, instead see if this collection has a single item.
2010-08-27 01:50:50 +00:00
ea3be03743 ED_view3d_draw_offscreen_imbuf_simple and ED_view3d_draw_offscreen_imbuf now accept the imbuf flag so they can get the float buffer from opengl directly. 2010-08-26 23:30:15 +00:00
50bce31dbb rna api changes
- mesh.add_geometry(v, e, f)  --> mesh.vertices.add(tot), mesh.edges.add(tot), mesh.faces.add(tot)
- mesh.add_material(mat) --> mesh.materials.link(mat)

changed material.link so it always adds a material even if it exists in the list, this behavior is good for users but not scripts since it can mess up indicies (some formats may have the same material set twice).
2010-08-26 22:44:05 +00:00
Dalai Felinto
31a9a587ca renaming recast_type to type_recast so people don't miss this.
Discussed with Campbell.
2010-08-25 01:51:38 +00:00
9854546f37 update to pyrna so deleting an attribute only fails if that attribute resolves to an RNA property. 2010-08-24 23:52:20 +00:00
5c604e5524 remove recently added rna function uilayout.prop_search_self() and instead allow collections to be coerced into rna structs when they define a type.
eg:
 row.prop_search_self(scene, "active", "keying_sets", text="")
...becomes
 row.prop_search(scene.keying_sets, "active", scene, "keying_sets", text="")

This is more flexible since it works for other UI functions too.
2010-08-24 03:02:27 +00:00
48e34b9956 - pythons 'del somevalue.attr' could crash when used with the rna api (reported by Luca)
eg:
    bpy.context.StringProperty(attr='myprop'); del bpy.context.myprop

- made rna StringProperty/PointerProperty & similar into class methods.

- file selector hide option was inverted
2010-08-24 02:12:09 +00:00
1be4eda552 bugfix [#23454] vector*matrix not the same as vector*=matrix
- they now share the same code so it wont happen again.
- added id_data to properties so we can do...
  matrix = C.object.matrix_world
  obj = matrix.owner.id_data # get the original object back.
2010-08-23 22:10:13 +00:00
f956e94d13 collection attributes can now be resolved with by rna
this now works...
  bpy.context.scene.path_resolve("objects.active.location")
  
Also added an option to coerce the property into a native pytype.
2010-08-23 05:36:21 +00:00
a60f79daf7 - rna py-api bug fix, a NULL item in a collection was raising an error
eg: mesh.materials[0] 
 ... when this was an empty slot.

- game world mist panel wasnt updated for rna renaming.
2010-08-22 17:23:08 +00:00
4e3390437e - Properties from base classes are now registered too, this allows class mix-in's to define properties.
An example of how this is useful - an importer mixin could define the filepath properties and a generic invoke function which can run the subclasses exec for each selected file.

- Panels and Menus now skip the property check when registering.

- renamed _idproperties_ to _idprops_ in function names, function names were getting very long.
2010-08-19 10:16:30 +00:00
98140e234e - pyrna fix for reference counting when unable to register a property
- added modified 'Warp' enum to reserve this ID for durian files until the modifier is merged.
2010-08-19 05:58:22 +00:00
3a34d669e1 remove foreach_get/set for rna arrays, was crashing and are only valid for collections. 2010-08-15 16:06:26 +00:00
0e7d0cfe2a [#23266] bpy.ops.poselib.browse_interactive - blend_factor argument does nothing
commenting 'blend_factor' for now, its not used.

COLOR and EULER internal pyrna subtypes were causing color type variables to try update euler rotation order.
2010-08-15 12:03:49 +00:00
bf52b68dcd minor changes to rna/python.
- raise an exception when python calls is_property_set(name) or is_property_hidden(name) and the property does not exist.
- added BLI_findstring_ptr(), which finds a named item in a listbase where that name is a pointer to a string.
- replaced inline for loops with calls to BLI_findstring_ptr() and IDP_GetPropertyFromGroup().
2010-08-13 06:30:04 +00:00
76b17eaac5 repr() functions for the python api, this means it can print 'bpy.data.objects[foo].modifiers' from the objects modifiers, uses the same function thats used to make the animation path. 2010-08-10 15:46:16 +00:00
a6f13f9d7b poll() as a python '@staticmethod' was too limiting and didnt allow useful base class poll functions in many cases.
now rna functions that dont have a 'self' are automatically assumed '@classmethods'.

de-duplicated poll functions and made some minor tweaks too.
2010-08-09 01:37:09 +00:00
7fcbbad5a4 remove py2.x compat check for class registration. 2010-08-08 23:46:49 +00:00
163f6055d2 bugfix [#23182] Using self.report() inside poll() gives crash
poll() function is now a static method in python, this is more correct, matching C where the operator is not created to run poll.


    def poll(self, context): ...

is now...

    @staticmethod
    def poll(context): ...

Pythons way of doing static methods is a bit odd but cant be helped :|

This does make subclassing poll functions with COMPAT_ENGINES break, so had to modify quite a few scripts for this.
2010-08-05 16:05:30 +00:00
55e64f0ba4 minor changes to Martni's commit 30961
- removed the immediate option from C/api and now store in python only, when python loads modules it sets it to False.
- unloading a module would clear the entire TypeMap for all modules, only remove the module types that is being unloaded.
- added some checks for bad class registering, report errors rather then crashing.
2010-08-02 04:20:41 +00:00
5b345524ea RNA Types metaclass registration
See mailing list posts for details [1][2][3]

Addons still need to be fixed; Campbell said he'd do it today.

See any of the py files (outside netrender) in this commit for how to do it (it's rather simple).

[1] http://lists.blender.org/pipermail/bf-committers/2010-February/026328.html
[2] http://lists.blender.org/pipermail/bf-committers/2010-August/028311.html
[3] http://lists.blender.org/pipermail/bf-committers/2010-August/028321.html
2010-08-02 02:55:12 +00:00
8fd1d8f02a mistake in recent commit allowd bpy.types.Scene() which would then crash blender (thanks for spotting Luca). 2010-08-01 11:20:51 +00:00
648f40f409 bugfix [#22660] Text Boxes properties are not animateable.
suggestion [#23093] Curve -> CurveMapping in brush...
2010-07-30 06:48:18 +00:00
d44a2b5b1b fix for running rna subclasses own __init__ functions.
- exceptions in the __init__ functions were not being checked for and segfaulting
- avoid creating a new BPy_StructRNA instance per function call, use the existing one if the type matches.
2010-07-28 12:11:40 +00:00
304043ee5f [#22617] Using register/unregister alone crashes blender
wasnt crashing anymore but made exception message clearer.
2010-07-26 05:55:56 +00:00
026ac24922 [#22488] Reloading scripts causes crash
F8 key enabled again, useful for script UI development.

- keying set freeing wasnt freeing from all scenes and the builtin list.
- PointerProperty() cant refer to a removed python srna type (fixed in rigify and netrender).
- Added a check for freeing a type used by a PointerProperty but its very slow, makes reloading take ~10sec. Only enabled this in debug mode for now.

Netrender register() function isnt re-registering the property, probably because the module is cached by python and not re-run.
2010-07-23 01:43:30 +00:00