Commit Graph

644 Commits

Author SHA1 Message Date
7dde355185 fix [#34958] keyframe many items would fail if there was a (") in the text. 2013-04-23 20:10:22 +00:00
5580b56876 Bugfix [#34836] Crash when driver variable has path == 'data'
Most of the places which relied on RNA_path_resolve() did so believing that if
it returned true, that it had found a valid property, and that the returned
pointer+property combination would be what the path referred to. However, it
turns out that if the property at the end of the path turns out to be a
"pointer" property (e.g. "data" for Object.data), this would automatically
become the pointer part, while the prop part would be set to null. Hence, if a
user accidentally (or otherwise) specifies a path for the single-property driver
variable type like this, then Blender would crash.

This commit introduces two convenience functions - RNA_path_resolve_property()
and RNA_path_resolve_property_full() - which mirror/wrap the existing
RNA_path_resolve() functions. The only difference though is that these include a
check to ensure that what was found from resolving the path was in fact a
property (they only return true iff this is the case), and make it explicitly
clear in the name that this is what they will do so that there's no further
confusion. It is possible to do without these wrapper functions by doing these
checks inline, but the few cases that had been patched already were pretty
hideous looking specimens. Using these just make it clearer and simpler for all.

I've also beefed up the docs on these a bit, and changed these to using bools.
2013-04-22 13:22:07 +00:00
24ef6f7add Touch properties when clearing/adding to a collection.
Fixes an issue when adding several movie strips fails
second time in sequencer.
2013-04-15 16:24:35 +00:00
0b449df5da Fix #34938: Not freeing dynstr_cstring memory blocks when setting shape keys
In fact almost any rna pointer-to-string had a memory leak.

Patch by Jakub Zolcik (sftd) with minor modification.
2013-04-09 17:31:34 +00:00
aabc999c17 Apparently, you shall not define variables in the middle of the block 2013-04-05 06:50:59 +00:00
3ad13869fe Fix #34862: some operators like mesh separate or object clear parent were not
showing shortcuts in menus, now it shows them in the submenu.
2013-04-05 00:53:37 +00:00
13ec0cd6c3 Fix #34856: crash passing an object rather than a mesh to bpy.data.mesh.remove(),
this should give an error message but it didn't.
2013-04-03 13:43:12 +00:00
e8d532f1dd style cleanup 2013-03-31 03:28:46 +00:00
d39c6fdf2d Various cleanup around default i18n context.
Issue is that the real default context is NULL, however, in python and RNA, this value can't be used easily. So we use a specific string instead ("*"), defined as BLF_I18NCONTEXT_DEFAULT_BPYRNA.

From now on, all bpy/rna code should only use the BLF_I18NCONTEXT_DEFAULT_BPYRNA value, while all "usual" C code should use the BLF_I18NCONTEXT_DEFAULT value (BLF_pgettext is still able to "understand" both, anyway).

Also added BLF_is_default_context helper func, so that we can keep that check in a single place!

Finally, we should no need anymore to understand the void string "" as default context too - two values for a same thing are more than enough!
2013-03-19 19:37:22 +00:00
Lukas Toenne
4638e5f99a Merge of the PyNodes branch (aka "custom nodes") into trunk.
PyNodes opens up the node system in Blender to scripters and adds a number of UI-level improvements.

=== Dynamic node type registration ===
Node types can now be added at runtime, using the RNA registration mechanism from python. This enables addons such as render engines to create a complete user interface with nodes.

Examples of how such nodes can be defined can be found in my personal wiki docs atm [1] and as a script template in release/scripts/templates_py/custom_nodes.py [2].

=== Node group improvements ===
Each node editor now has a tree history of edited node groups, which allows opening and editing nested node groups. The node editor also supports pinning now, so that different spaces can be used to edit different node groups simultaneously. For more ramblings and rationale see (really old) blog post on code.blender.org [3].

The interface of node groups has been overhauled. Sockets of a node group are no longer displayed in columns on either side, but instead special input/output nodes are used to mirror group sockets inside a node tree. This solves the problem of long node lines in groups and allows more adaptable node layout. Internal sockets can be exposed from a group by either connecting to the extension sockets in input/output nodes (shown as empty circle) or by adding sockets from the node property bar in the "Interface" panel. Further details such as the socket name can also be changed there.

[1] http://wiki.blender.org/index.php/User:Phonybone/Python_Nodes
[2] http://projects.blender.org/scm/viewvc.php/trunk/blender/release/scripts/templates_py/custom_nodes.py?view=markup&root=bf-blender
[3] http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/
2013-03-18 16:34:57 +00:00
dfa8540cdf use bool for rna funcs. 2013-03-07 02:44:55 +00:00
fd399fa242 add asserts for passing negative index values to RNA functions which don't support them. 2013-03-06 15:38:11 +00:00
0ac07404ba style cleanup: braces with multi-line statements, also add some comments. 2013-03-01 14:47:06 +00:00
c0a3ebedb3 Fix #34372: mesh.verts.foreach_set not working with normals, regression due to my
bugfix for multidimensional arrays.
2013-02-28 16:37:15 +00:00
89bda7899d style cleanup & some spelling 2013-02-03 10:28:28 +00:00
4838a2c75a Fix python foreach_get/foreach_set not working with dynamic sized arrays. 2013-02-01 18:00:41 +00:00
f414d2980a code cleanup: remove some paranoid checks which would have crashed anyway earlier on.
Also some minor formatting.
2013-01-20 14:50:50 +00:00
761ac89877 style cleanup 2013-01-15 23:45:41 +00:00
cf2eeabf6d fix [#33808] custom property write RNA_pointer_get: xxx.xxxx not found in the console
message was harmless but annoying.
2013-01-09 12:26:36 +00:00
Lukas Toenne
e8b415bdb4 This patch adds support in bpy.props for getter/setter callback functions. We already have update callbacks, but generic get/set functions can come in handy in some cases where the functionality is too complex to use a single value.
The current C callback functions are too simple allow a straightforward implementation, in particular they don't receive the PropertyRNA pointer itself as an argument, which means the callback cannot directly access the PropertyRNA's py_data pointers which store the python function objects. For this reason a second runtime variant of these callbacks has been added. It is only used for runtime callbacks and not in makesrna, but otherwise works the same way.
2013-01-05 14:56:37 +00:00
4e88bfca1b fix [#33677] Lambda is un-settable for mesh.vertices_smooth_laplacian
lambda is python keyword.
2012-12-28 11:12:46 +00:00
37760c0ad0 fix for memory leaks in own recent changes. 2012-12-28 10:23:06 +00:00
5837c7f092 fix error in recent addition - reporting property changes, setting None would crash. 2012-12-19 06:41:19 +00:00
edf826d924 Various minor fixes to i18n code (mostly, translation of enum items' tooltips was wrongly bound to iface option, not tooltips one, and recent changes in r53119 were incorectly using BLF_pgettext, made them simpler by using CTX_IFACE_ macro).
Also fixed CTX_FOO_ macros when building without i18n, those were kinda wrong.

And hid i18n ui section in userpreferences when built without its support too.
2012-12-18 18:25:48 +00:00
54bab21ca0 use 'bpy.context' when printing properties in the info window. 2012-12-18 16:20:30 +00:00
5fcb12d754 changing RNA properties now prints python script in the info view.
next will add context so bpy.data.xxx[id] are not used for all references.
2012-12-18 15:22:06 +00:00
db14a81e04 some speedup by avoiding translation on entire enum arrays, and just translate the single name that ends up being used. 2012-12-18 13:46:37 +00:00
b9d03811d5 add index argument to RNA_property_as_string() - currently unused. 2012-12-18 13:21:32 +00:00
3d6bc1e1f4 Fix warning about missing BKE_idcode_to_name_plural. 2012-12-02 09:54:44 +00:00
82fc331959 There was no way of knowing what ID type a property comes from by the tooltip, (since copying the Data-Path doesn't include the ID the user had to guess).
Now include the full python path to the property in the tool-tip.
2012-12-02 07:13:19 +00:00
ea828fd20e code cleanup: warnings, style 2012-11-25 15:05:17 +00:00
abc059f99a fix [#33299] When I click right button on proportional editing mode button Blender crashes (segmentation fault)
RNA_path_from_ID_to_property() would return an uninitialized pointer.
2012-11-25 09:25:24 +00:00
33767bde9b Fix #33297: crash loading modal keymap after recent keymap bugfix. 2012-11-25 06:55:33 +00:00
87ccc78f2c Fix #33286: when keyframing object scale, noise fmodifier scale would show
as animated in the UI.
2012-11-24 15:46:14 +00:00
ea0d1c74e4 Fix #33227: custom keymap syncing didn't work well always when adding/removing
properties from operator, now it compares at RNA rather than ID property level,
which is more accurate.
2012-11-20 19:44:20 +00:00
Lukas Toenne
616eb84452 Support for type callbacks on IDProperty pointers. Before this the type of the type of a PropertyGroup pointer would be fixed to the default RNA type. This is fine in most cases, but it may be necessary to define the property group subtype dynamically in some cases. Now the returned RNA pointer uses the typef callback if it exists. 2012-11-20 12:25:28 +00:00
5ff3017900 Replacing gettext i18n backend by boost::locale one.
This commit adds a small and simplistic C wrapper around boost's locale library as intern/locale, and heavily simplifies/reduces Blender's own i18n code (under blenfont/ dir). And it adds back UI translation on windows' official builds (with msvc)!

Note to platform maintainers: iconv and gettext (libintl) can now be removed from precompiled libs (not gettext binaries, under windows, of course ;) ).

Note to MinGW32/64 users: boost_locale lib has not yet been uploaded for those build env, please disable WITH_INTERNATIONAL for now (hopefully will be fixed very soon, have contacted psy-fy).
2012-11-11 16:54:26 +00:00
03d0040fe7 patch [#32874] Fixed the property path calculation in situations where the link.index variable gets set during the search.
From Florian K?\246berle
2012-11-08 09:38:18 +00:00
db250a48f6 fix [#32855] Obj im and export and the file path and name
file selector now uses previously used settings for operators rather then over riding them with the currently open blend file.
2012-10-24 04:29:35 +00:00
0760308551 fix for crash using an uninitialized pointer when fcurves reference missing collections (removing animated shape keys could crash). 2012-10-23 11:03:52 +00:00
1767b65846 style cleanup: also rename bmesh_decimate.c --> bmesh_decimate_collapse.c 2012-10-23 03:38:26 +00:00
a99b377167 More UI messages fixes and tweaks, and BKE_report<->BKE_reportf. 2012-10-20 10:28:34 +00:00
459a2b38e0 correct another misuse of FLT_MIN 2012-10-14 13:21:40 +00:00
8e01b8959e style cleanup 2012-10-14 13:08:19 +00:00
6c1da4d022 code cleanup: make many functions static 2012-09-22 14:07:55 +00:00
10d18e5b5f code cleanup: use min/max inline functions rather than macros & simplify loop 2012-09-11 09:39:37 +00:00
1a7eb3454e style cleanup 2012-09-08 08:59:47 +00:00
e9d73dbba5 use -FLT_MAX where FLT_MIN was misused 2012-08-07 19:49:38 +00:00
e32c60284a style cleanup 2012-07-29 00:20:28 +00:00
0dafa97ea3 UI translation from inside Blender UI: first part.
This commit reshapes a bit runtime button info getter, by adding a new uiButGetStrInfo() which accepts a variable number of uiStringInfo parameters, and tries to fill them with the requested strings, for the given button (label, tip, context, RNA identifier, keymap, etc.). Currently used mostly by existing ui_tooltip_create(), and new UI_OT_edittranslation_init operator.

It also adds a few getters (to get RNA i18n context, and current language iso code).

Finally, it adds to C operators needed for the py ui_translation addon:
*UI_OT_edittranslation_init, which gathers requested data and launch the py operator.
*UI_OT_reloadtranslation, which forces a full reload of the whole UI translation (including rechecking the directory containing mo files).

For the first operator to work, it also adds a new user preferences path: i18n_branches_directory, to point to the /branch part of a bf-translation checkout.
2012-07-09 14:25:35 +00:00