Commit Graph

2536 Commits

Author SHA1 Message Date
b3f03250de use tp_getset rather then checking the string on getattr for 'id_data' attribute 2009-12-13 10:46:34 +00:00
cff8de339d [#20288] FBX exporter fails
* disallow registering operators that have properties starting with an underscore which caused this problem.
2009-12-11 00:51:14 +00:00
901962c621 return value was included in the list of optional args for function-rna error message 2009-12-10 11:20:43 +00:00
b5740b0e77 remove ICON prefix from the enum, for python this is redundant eg.
layout.prop("setting", icon='ICON_BLAH_BLAH')

Also reverted previous commit, the cursor subtype just needed to be added to the switch statement.
2009-12-10 10:23:53 +00:00
7fcb5d33ff values that had units set would not be coerced into Mathutils types by the python api.
eg. scene.cursor_location wasnt a vector
2009-12-10 09:38:58 +00:00
a41131db24 - added editbone.matrix, readonly, utility property that calculates the matrix from the bone roll
- spine fixes
- arm now uses the average Z axis to place the poll target
2009-12-09 14:25:56 +00:00
0e713ba1d0 - rewrote arm rig so it creates 2 chains and blend them automatically (like the leg)
- use reverse order for palm fingers (pointer first)
- allow copying bone class instances to exclude some bones
- doc generation had a python error (incedently updated online docs linked from the splash)
2009-12-09 12:00:28 +00:00
bee5775702 split out driver functions into its own file 2009-12-08 22:35:03 +00:00
88b0e1c52a OSX: print warning if Blender application is located in a path Python lib can't handle (bug # 20258)
OSX allow file/directory names to contain ':' (displayed as '/' in Finder), and current Python lib (3.1.1) has trouble with those when importing modules.

Added warning message to help user understand why Blender start fails in this case.
2009-12-08 12:16:34 +00:00
0391b1ab78 compile python driver expressions for faster re-evaluation.
approx 15-25x speedup
2009-12-08 10:36:46 +00:00
fccceaa87f - pyrna support for (value in array), currently only 1 dimensional arrays.
- use python malloc's in bpy_array.c
- automatically blending bone locations is disabled if the target bone has locked location
- neck had incorrect roll
2009-12-08 09:40:30 +00:00
926201acf8 - string copy without .py wasnt terminating the string
- console import autocomplete wasnt including modules defined in C like BGL, Mathutils
2009-12-07 14:09:53 +00:00
63fbd76548 [#20021] Non-ASCII characters on blender 2.5 alpha 0
could not redo the bug on my system, fix suggested by Yomgui on blendercoders.
2009-12-07 10:41:16 +00:00
764c4c94fa use sets rather then tuples for enum/flags so you can use bitfield operators 2009-12-07 02:20:55 +00:00
750764f411 rna flag PROP_ENUM_FLAG which makes rna props a tuple of enums when converted into a PyObject
only used by wm.invoke_props_popup() currently
2009-12-07 00:16:57 +00:00
062cf438ce remove nasty hack which made StructRNA class instaces have no __dict__,
use __slots__, it seems all the parent classes need to have slots as well for this to work.
all python defined srna classes are checked for this too
2009-12-05 23:41:45 +00:00
bcd1ab54cd Support for the C Macro system in Python.
Basic definition works like a python operator but you derive from "bpy.types.Macro" instead.
Operators are added to the macro after it has been added with "bpy.ops.add_macro" through the class method "define" which takes an operator id and returns an OperatorMacroType (new RNA type) for which properties can then be defined to be passed to the operator when run.

Example: http://blenderartists.org/~theeth/bf/macro.py

Using this system, it should be easy to add an operator to the console that converts selected lines into a macro or even a more generic record macro system.
2009-12-05 19:27:26 +00:00
3b0e182f71 - property decorators for setting attributes didnt work, hack to prevent every instance of an BPyStructRNA to have its own dictionary, set the tp_dictoffset to 0. attempted to use __slots__ but this doesnt work for some reason.
- made bone.length writable
2009-12-03 21:53:01 +00:00
33c444f965 User Script support added back.
- the scripts path set in the user preferences or ~/.blender/scripts/ui (io, op, io etc..) will be used to load scripts.
- the default home dir part probably only works in *nix os's

- Added a missing sync callback to vector.toTuple()
2009-11-30 22:32:04 +00:00
d98093a91a - added a new math function double_round, useful for rounding a number to a number of decimal places.
- added Mathutils vector method, vec.asTuple(round), since this is tedious in python and fairly common task.
2009-11-29 22:42:33 +00:00
3b72584b7d - access to a nurbs points was broken - sizeof(BPoint) vs sizeof(BPoint *)
- renamed CurvePoint --> SplinePoint
- renamed point.point --> point.co (less stupid, matches vertex.co)
- access point.co was a 3D vector rather then a 4D vector with the Nurbs weight included.
- rename point.weight --> point.weight_softbody, move point.point[3] --> point.weight
- sorted RNA structs (for pedaticness only)
2009-11-29 16:42:51 +00:00
36cbf42e5d Draw function for operators (just like panels), used for the redo popup, file selector and redo tool panel.
Used for ply export & select pattern.
2009-11-29 01:49:22 +00:00
383093957a Mathutils vec += vec wasnt running mathutls callbacks 2009-11-26 16:19:20 +00:00
c410a0e855 rna py api,
generic rna function driver_add(), now returns the driver added (or a list of drivers if all channels are set)
2009-11-25 10:13:24 +00:00
802779eb2d Assorted fixes - compile + drivers:
* Fixed a few compile warnings for scons+mingw
* Driver variables are now added with the ID-type set to ID_OB (objects) by default since this is more convenient
2009-11-25 09:25:58 +00:00
6c55047b40 disallow dynamic sized rna arrays to be returned as mathutils types since it gives unpradictable results if in one case it returns a vector and another a rna float array. 2009-11-24 20:15:24 +00:00
f28975dbc4 avoid operator type lookups when its known 2009-11-24 16:19:15 +00:00
e968017951 - new pyrna api functions srna & prop path_to_id(), useful when setting driver target paths.
This means you can have a pose bone for eg and get the path...
   pose.bones["Bone"]
 uses rna internal functions, so will work for sequence strips etc.

- StructRNA.get(), used for getting ID props without exceptions...
 val = C.object["someKey"]
 or..
 val = C.object.get("someKey", "defaultValue") # wont raise an error

- change rna property for testing if rna props are editable, test the flag rather then calling the function since the function depends on blenders state.

- fix a python exception with the ID-Property popup UI (when editing in more then 1 step)
2009-11-23 23:17:23 +00:00
052290d2b3 fixed some error reporting issues with calling operators 2009-11-23 18:08:42 +00:00
1c806f6bb4 workaround for an error with BKE_reportf (actually BLI_dynstr_vappendf)
fixes a crash that happens when formatting a python exception into a report. - for now use pythons string formatting function.

happens when running the simple operator template so not sure if its worth re-tagging :S
2009-11-23 17:36:44 +00:00
4cac7c88aa bugfix: uninitialized values 2009-11-23 16:58:24 +00:00
dc5b0c8b9c rna functions were getting away with passing the string "True" instead of True, changed get the integer value and test its 1 or 0.
allow rna function return values as an exception since so many poll functions do... "return (context.blah and context.foo)", that makign all return bool's isnt that nice.
2009-11-22 21:51:12 +00:00
adb14a2247 remove template uiTemplate_view3d_select_faceselmenu 2009-11-22 10:02:32 +00:00
acf0fbbf70 left in print 2009-11-20 21:00:09 +00:00
34e7eb1676 use a metaclass to have operator attributes register and display in the order defined. 2009-11-20 20:58:46 +00:00
e9a8db6e73 - dont define properties in the global script namespace
- set __file__ when running scripts (filename or textblock name)
2009-11-20 16:07:10 +00:00
854cc87a80 option to have scripts run on startup for per blendfile UI's 2009-11-20 15:01:09 +00:00
3119eaf284 - dir() now works for collection functions
- group.objects.link/unlink use exceptions rather then return values
- scene.add_object/remove_object --> scene.objects.link/unlink
2009-11-20 10:00:54 +00:00
512c06afdb - StructRNA's __dir__ was missing members from its classes __dict__
- property editor can now set button min/max values and edit the tooltip
- custom props tooltips were not displayed
- cleanup the property UI 
- remove hacks that were used for editing (edit is now a popup operator)
- object.children was broken
2009-11-19 18:22:21 +00:00
e61c90e416 operators were copying the properties from the rna operator into the class instance.
however this meant the invoke function could not modify properties for exec to use (unless it called exec directly after)
since the popup for eg would re-instance the python class each time.

now use the operator properties directly through rna without an automatic copy.

now an operator attribute is accessed like this...
self.path --> self.properties.path
2009-11-19 17:12:08 +00:00
ac8ff25b2d idprop.get(key, default=None)
matching pythons dict.get()

removed checks for a failed PyObject_New(), if python cant make a new object your probably going to crash anyway.
2009-11-19 17:04:28 +00:00
3f10b91235 operator properties were not the correct type 2009-11-19 16:15:22 +00:00
17013ca4ee added 'hidden' option for python defined rna props, means py operators can use hidden properties so the popup wont show
improved error message when bad args are given to propertyRNA funcs
2009-11-19 14:32:12 +00:00
3b4c9d9699 correcting ID property list was incorrect on porting 2009-11-19 11:56:13 +00:00
b895b2e48f - remove CPPFLAG XP_UNIX from CMake, Scons and Irix make, checked our own code and /usr/include, its only used in our netscape plugin.
- CMake on unix default OpenMP to enabled.
- Scons on linux default OpenMP to enabled.
- copying python is slow, for scons only copy if the directory has not been created.
2009-11-19 11:49:42 +00:00
ae5a814f26 ID properties that are displayed via RNA can now define their own UI settings,
only implimented min/max precision & step.

at the moment there is no way to edit these other then via python

example of setting UI limits...

>>> C.object['foo'] = 0.5
>>> C.object['_RNA_UI'] = {'foo': {'step': 0.5, 'soft_max': 10.0, 'soft_min': 0.0, 'precision': 2, 'description': 'Some setting'}}

Also fixed typo's: precission -> precision
2009-11-18 20:01:35 +00:00
d3794d9f94 fix for memory leak, use Key Errors for pyrna getitem access & idprops 2009-11-18 13:02:09 +00:00
318e9aa5d1 - rna attribute setting problem, class instances could not set their own attributes because they are blocked by our own internal setattr.
this could be supported again easily however it leads typo's & api changes not showing any errors.

  This broke povray export.
  Solution for now is to allow setting private properties starting with '_'

  eg, 
    ob = bpy.context.object
    
    ob._foo = [1,2,3] # this is a python list, it will stay only as long as this PyObject is active
    ob.foo = 1 # raises an error!, only for rna properties
    ob["foo"] = 1 # converts to an ID property and is saved

    using the underscore like this should really be used for classes internally.

- povray failed on armatures

- menu key wasn't using WM_keymap_add_menu
2009-11-18 08:40:18 +00:00
2ae15e39ad make animation system and rna internals use getattr style syntax for user defined properties
bone["foo"] rather then bone.foo
matches python and avoids naming collisions
2009-11-17 20:46:59 +00:00
f7682e2e0f - in pose mode, pose bone properties are edited rather then armature bone
- new id property array method convert_to_pyobject()
- editing an array in the UI broke
- fixed for own error when updating ID prop api
2009-11-17 12:54:29 +00:00