Commit Graph

1161 Commits

Author SHA1 Message Date
b88836a45b Add a warning to enum props' items parameter, to *never* use a generator as value for this param! It works in most cases, but in some it leads to an empty set of values for the enum (see [#33716]), and it's not an easy bug to track down! 2013-01-01 15:55:21 +00:00
7504cf34b4 This commit frees list ui items from their dependencies to Panel, and hence from all the limitations this implied (mostly, the "only one list per panel" one).
It introduces a new (py-extendable and registrable) RNA type, UIList (roughly similar to Panel one), which currently contains only "standard" list's scroll pos and size (but may be expended to include e.g. some filtering data, etc.). This now makes lists completely independent from Panels!

This UIList has a draw_item callback which allows to customize items' drawing from python, that all addons can now use. Incidentally, this also greatly simplifies the C code of this widget, as we do not code any "special case" here anymore!

To make all this work, other changes were also necessary:

* Now all buttons (uiBut struct) have a 'custom_data' void pointer, used currently to store the uiList struct associated with a given uiLayoutListBox.

* DynamicPaintSurface now exposes a new bool, use_color_preview (readonly), saying whether that surface has some 3D view preview data or not.

* UILayout class has now four new (static) functions, to get the actual icon of any RNA object (important e.g. with materials or textures), and to get an enum item's UI name, description and icon.

* UILayout's label() func now takes an optional 'icon_value' integer parameter, which if not zero will override the 'icon' one (mandatory to use "custom" icons as generated for material/texture/... previews).
  Note: not sure whether we should add that one to all UILayout's prop funcs?

Note: will update addons using template list asap.
2012-12-28 09:20:16 +00:00
71dbd39891 remove workaround for [#31555], forcing PYTHONIOENCODING was causing stdout to be lost on exit - no MEM_printmemlist_stats() 2012-12-28 00:54:22 +00:00
789b2acd77 Add keying "options" parameter to keyframe_insert() bpy_rna function, so now you can enable 'INSERTKEY_NEEDED', 'INSERTKEY_VISUAL' and/or 'INSERTKEY_XYZ_TO_RGB' when you directly key some property from python script (previously those options were only available through keyingsets).
Thanks to Campbell for review!
2012-12-23 13:58:42 +00:00
0e3d637ad0 Change region drawing callbacks to work much closer to how blender manages them internally.
- yes, this does break scripts, but the api is marked experimental.


ED_region_draw_cb_activate() adds a callback to a region type whereas the api made it look like the callback was being added to the region instance.
Use a class method on bpy.types.Space to manage region drawing, eg.

was:
  self._handle = context.region.callback_add(draw_callback_px, args, 'POST_PIXEL')

is now:
  self._handle = bpy.types.SpaceView3D.draw_handler_add(draw_callback_px, args, 'WINDOW', 'POST_PIXEL')
2012-12-20 13:29:58 +00:00
Lukas Toenne
35c2267aee Support for actual class methods in the RNA/bpy. Previously all functions with FUNC_NO_SELF were treated as static methods, which is not sufficient for getting actual type information if the function can not be generated in advance in makesrna. Now the FUNC_USE_SELF_TYPE flag can be set in addition to FUNC_NO_SELF (if FUNC_NO_SELF is not set, FUNC_USE_SELF_TYPE has no effect). Such functions will be interpreted as class methods and must take a StructRNA pointer argument. This pointer is the same as the type member in PointerRNA, but can be passed without an actual data/id instance. 2012-12-20 09:33:12 +00:00
3c9f502049 py api: be more strict with boolean assignment, only accept 0 or 1, True/False. Would allow any nonzero value. 2012-12-20 03:08:27 +00:00
7e56e5ac94 Adding "build_options" to bpy.app, a frozenset containing strings matching optional feature's build defines (like 'FFMPEG', 'MOD_BOOLEAN', 'INTERNATIONAL', etc.) for all enabled elements.
Note I tried to select all interesting defines, but this might be extended if needed...
2012-12-18 18:02:20 +00:00
734b4f60c1 missed adding show_grease_pencil to node space in recent commit 2012-12-17 09:17:21 +00:00
c92dd5fa40 bpy/rna api: add support for classmethods.
So RNA can expose functions from the type, eg:
  bpy.types.Objects.some_function()
2012-12-17 06:58:19 +00:00
21a9fa9089 move bpath module from BLI to BKE, it was making many bad level calls into BKE. 2012-12-15 15:31:50 +00:00
a864259d50 bump python requirement to 3.3 2012-12-06 02:42:42 +00:00
5b9f30980a update parse_syntax_error() from python3.3 - this is an internal python function that isn't exposed to the api. 2012-12-04 20:09:07 +00:00
d0667c70dd fix for python button evaluation not restoring the __main__ module. 2012-12-04 19:58:13 +00:00
60cd5ee412 fix for typo when overwriting pythons stdout/stderr, also print errors if they happen here now. 2012-12-04 11:21:33 +00:00
4302cde8ff re-apply a workaround for [#31555] Username with special chars in Windows 7
this time keep the stderr/stdout so there FD's are not closed (causing [#32720]).

This workaround is ugly but saves us from using a patched python.
2012-12-03 10:01:09 +00:00
93ad97c131 avoid string -> unicode conversion when registering classes, also avoid unlikely but possible crash if the py-class returns new instances of PyObjects it doesnt own when registering the class. 2012-11-22 08:45:32 +00:00
3fd388fb06 py api cleanup, replace use...
- PyLong_FromSsize_t --> PyLong_FromLong
- PyLong_AsSsize_t --> PyLong_AsLong

In all places except for those where python api expects PySsize_t (index lookups mainly).

- use PyBool_FromLong in a few areas of the BGE.
- fix incorrect assumption in the BGE that PySequence_Check() means PySequence_Fast_ functions can be used.
2012-11-21 02:28:36 +00:00
ea61c74262 hopefully fixes building on msvc, also some minor header edits 2012-11-05 14:58:12 +00:00
004f8d78ed default to Python3.3 on Linux for SCons and CMake, warn when building with python 3.2x or older.
also remove casts to keep Python3.2 warning quiet.
2012-11-05 13:48:42 +00:00
25591e958d style cleanup: tabs & whitespace 2012-11-03 15:35:03 +00:00
47cd3cf225 BPY/RNA: determine callback functions that are allowed to write data by a flag
on the function instead of checking the name.
2012-11-03 14:31:38 +00:00
9a82b47b4f all library data now gets the PointerRNA's invalidated on removal. 2012-11-01 17:16:24 +00:00
f4e5404e4a fix for long standing problem with blender 2.5x py api.
Removing data then accessing would allow invalid memory access and often crash.

Example:
  import bpy
  image = bpy.data.images.new(name="a", width=5, height=5)
  bpy.data.images.remove(image)
  print(image.name)

Now access to the removed data raises an error:
  ReferenceError: StructRNA of type Image has been removed

This is the same level of error checking that was done in blender 2.4x but was made difficult by RNA functions not having access to the PyObject's.
2012-11-01 15:56:42 +00:00
f4dea6d829 when an invalid subtype is passed to a property, a list of valid subtypes is now included in the exception message.
from bug report [#33018], this avoids common mistakes.
2012-10-30 12:45:42 +00:00
900fa1bfb9 rename subtype FILENAME --> FILE_NAME to match FILE_PATH, DIR_PATH 2012-10-30 12:36:54 +00:00
8c9e1b3c16 Disallow collection add/remove/clear/move when drawing. - similar to how writing to attributes is disabled. 2012-10-30 03:05:45 +00:00
c9e5b1e6ee add --debug-handlers so --debug-events isnt so noisy. 2012-10-27 15:05:12 +00:00
818710f082 * Windows compile fix for __func__ (r51642) 2012-10-26 18:06:14 +00:00
c9dade4fe0 Big i18n commit: add "reports" from bmesh/readfile/tracking/dynapaint (and a few others), and another bunch of UI messages tweaks/fixes, as well as some BKE_report()<->BKE_reportf()... 2012-10-26 17:32:50 +00:00
2821f822c5 * New string property subtype: PASSWORD
When this new subtypes is used, then string of property is hidden using
asterisks, e.g.: mysecretpassword -> ****************

This code was reviewed and modified by Brecht. Thanks very much:
 - https://codereview.appspot.com/6713044/

This new subtype of string property is intended mostly for Add-on developers
writing Add-on which communicates with some server (http, sql, ftp, verse,
etc.). When this server requires user authentication and user has to type
username and password, then current API didn't allow to type 'hidden' password,
e.g. when you want to demonstrate this script, then everybody can see this
security password. Some examples of Add-on which could use this new subtype:
 - On-line database of textures
 - Integration of render farm
 - Integration of Verse

Security Notes:
 - You can copy paste hiddent string of property from text input using (Ctrl-C, Ctrl-V),
but you can do this in other GUI toolkits too (this behavior it is widely used).
 - Text of string property is stored in plain text, but it is widely used in other
GUI toolkits (Qt, Gtk, etc.).

Simple examples:
 - https://dl.dropbox.com/u/369894/draw_op_passwd.py
 - https://dl.dropbox.com/u/369894/blender-password.png
2012-10-26 12:58:54 +00:00
0e3de1df4b fix [#31661] Custom properties do no respect min/max values
also renamed function added prev commit
2012-10-26 10:54:02 +00:00
0e6f8e3e25 fix for crash when a python operator or render engine was freed in the C code and then referenced from python.
now further access in python gives an exception at the line when the freed data is accessed.
2012-10-26 10:33:57 +00:00
0e494b74c4 style cleanup 2012-10-26 04:14:10 +00:00
2223ca1c20 Fix #32973: crash adding python property with update=None parameter passed. 2012-10-25 22:37:05 +00:00
d599b643b7 style cleanup: bge, switch statements mostly.
also left bmesh decimator on in previous commit.
2012-10-21 07:58:38 +00:00
f3ece5a108 style cleanup: trailing tabs & expand some non prefix tabs into spaces. 2012-10-21 05:46:41 +00:00
c56a911cd9 style cleanup: comments 2012-10-20 20:20:02 +00:00
536d9fec80 code cleanup:
- move object_iterators.c --> view3d_iterators. (ED_object.h had to include ED_view3d.h which isn't so nice)
- move projection functions from view3d_view.c --> view3d_project.c (view3d_view was becoming a mishmash of utility functions and operators).
- some some cmake includes as system-includes.
2012-10-17 04:13:03 +00:00
da9394f596 code cleanup: define sizes of vectors for function args and use C style comments 2012-10-15 09:11:17 +00:00
b7f4c69ef7 More UI messages and BKE_reportf->BKE_report fixes... 2012-10-14 15:29:09 +00:00
97d4fb4161 code cleanup: make header defines more consistent, JOYSENSOR header guard had a typo too. 2012-10-09 13:36:42 +00:00
75fff05348 revert fix for [#31555] Username with special chars in Windows 7
this breaks and causes bug: [#32720], where sys.stdout becomes invalid and print() does nothing.

On investigation - python is not getting the environment variable from blender (aparently because its a DLL?) so this should be resolved rather then overwriting sys.stdout.
2012-10-02 13:24:28 +00:00
b04b8fd0e8 fix for crash found when attempting to setup testing environment to find crashes :)
scripts that have `Register` enabled and load another blend file would crash blender.
2012-10-01 14:14:21 +00:00
ed1cda9a6c style cleanup 2012-09-30 06:12:47 +00:00
9fccfd313c correct addon example, it used both __doc__ and bl_description 2012-09-29 11:51:18 +00:00
79d8367974 add warning that RNA update callbacks dont have checks for infinite recursion. 2012-09-28 09:35:32 +00:00
589ada7f0c code cleanup: correct spelling 2012-09-28 06:45:20 +00:00
95002a98bf fix for very bad bug with python list slicing which - in bmesh and bpy api for all? 2.5x + releases.
negative stop values when slicing was broken. eg.
 bpy.data.objects[0:-2] != list(bpy.data.objects)[0:-2]
2012-09-25 23:41:32 +00:00
552cd4b7e7 fix for crash executing a python script.
nice obscure case, when a script executes, frees its self (by loading a file for eg), then has a python error.

... in this case blender would fetch the python exception and attempt to move the cursor in the freed textblock to the error line, crashing blender.
2012-09-23 06:25:39 +00:00