-- removed struct Script (DNA_script_types.h) from makesdna to blender/include/BPI_script.h
(BPI meaning Blender Python-related external Include file).
Had agreed with Ton that makesdna was not the proper place for it.
-- fixed two small warnings in Ipo.c (variables might be used uninitialized)
-- fixed a bug reported on blender.org's python forum by Wim Van Hoydonck (aka tuinbels):
Blender would hang if a script failed. My fault, accidentally put a node=node->next type call outside the while loop check, so it never ended.
With makesdna/DNA_script_types.h removed and include/BPI_script.h added, msvc projectfiles will need to be updated. Sorry to do it now, but I promissed I'd fix this before next release.
- now the file .Bpymenus is in ~/.blender/, please delete the old one
- both ~/.blender/scripts/ and (if set) user pref scripts dir are scanned for scripts
- 2 scripts of the same group with the same name, one in each dir: user pref overwrites the other's entry
- fixed the problem with trailing backslash, was my fault (used NULL instead of "/" for relbase in BLI_make_file_string
- slightly changed msgs to be less verbose and parsing to be more forgiving
- if a script registers with a wrong group, 'Misc' is used instead
- 'Blender' tag is now checked, gives a warning (notice) msg if script is newer than Blender program
Blender.NMesh module and doc:
- added vertex.sel var to get/set selection state of vertex.
-- trying a different approach to see if the crash on Windows goes away.
Running a script with PyRun_File -- a Python/C API function -- was probably
the cause for crashes on Windows, because it uses a pointer to a FILE
struct and on windows this struct can be "different and incompatible"
depending on which libc was used to build the program. This is mentioned in
the Python/C API Ref Manual, chapter 2.
Now we're loading the file contents to a string buffer and using PyRun_String.
-- this finishes the heavier part (not counting tweaks and possible bugs) of
letting scripts be accessed from Blender menus. Will explain more in emails
to bf and bpython lists, but just check
source/blender/python/BPY_menus.[hc] and
source/blender/src/header_info.c and header_script.c for details.
Scripts need a small update (registering info, basically a header) to be used.
Scripts dir (user pref file paths: Python) must be set.
This commit moves the 2 undefined references to BPY_interface.c and
changes things a little, hopefully fixing the problem. I had to add a new dir,
source/blender/include/ to auto*'s Makefile.am in source/blender/python/.
Thanks Chris for the report, and Jiri, for adding a missing declaration.
- add a new space: Space Script
- add a new dna struct: Script
- add these two properly everywhere they are meant to
It's not a tiny commit, but most of it is ground work for what is still to be done.
Right now the benefits should be: freeing the Text Editor to be used in a window even while a script w/ gui in "on" and letting more than one currently running script w/ gui be accessible from each window
Some files are added, so some build systems (not autotools) will need updates
- Window: implemented .SetCursorPos, .GetViewMatrix, .GetViewVector
- Lamp: .setDist was not in the methods table:
Fix by new bpython developer Stephen Swaney
- Scene: .frameSettings was crashing Blender (pointed by jms)
- Added site dirs to sys.path (patch by Stephen Swaney)
- NMesh: small internal change (added pointer to parent object)
- Object: function NMesh_FromPyObject has a new arg: pointer to obj
- Docs: added docs for implemented functions, plus some more info
- Window: added .GetCursorPos()
- Lamp: updated for NoDiffuse and NoSpecular modes
- Registry: new module to handle persistent data
- vector: made it correctly print only 3 values when vec->size==3:
Fixes nmvert coords printed with a 4th 0.0 coordinate
- Text: fixed crash on startup (Python 2.3, linux):
added definition of the Text pyobject earlier, in Types.c
- Continued getting rid of print methods and updating repr ones:
Needed to fix crashes on Windows >= 98 systems.
- Found and fixed a few small memory leaks in EXPP_interface, related to
execution of script links.
- Fixed a problem with control of the global Python dictionary persistence:
Blender.ReleaseGlobalDict(bool) should now work fine.
- Trying to fix the sigsegv crashes on Windows:
They happen when we try to "print" our objects, like Lamps or Cameras.
Following advice from the Python Embedding doc, removed the tp_print
method from Camera and also improved its tp_repr one, that will be used
as print, repr() and str() for Cameras. If this test works all other objs
will be updated accordingly.
Found by Jonathan Thambidurai
* Fixes a scriptlink problem when a script is run using ALT-p.
Found by Yann Vernier (LoneTech)
* Prints unhandled exceptions. Should fix some memory leaks too.
Fixed by Yann Verniet (LoneTech)
- Trying to fix linking problems in OSX;
- Making module .Get functions behave like the ones in Blender 2.25 - 2.27
(Guignot pointed the incompatibility);
- Included more types to Blender.Types;
- Found by luck and corrected two bugs that were making Blender crash;
- Added/updated some simple functions.
Callbacks registered with Draw.Register in Python are called now.
That should fix submodule Blender.Draw.
* Added a few other missing functions to BPY_interface.c
* Finished implementing Get() function for Camera, Lamp, Image and Text:
Both the .Get(name) and .Get() cases are handled now.
* Added function Blender.ReleaseGlobalDict():
This function should give script writers control over whether the
global Python Interpreter Dict should be cleared after the script is
run (default is to clear). This is a test.
* Implemented BPY_end_python function.
* Implemented error handling. This results in rerunning a script after an
error has occurred. No need to restart blender anymore.
* Camera module supports dir()
* variable assignment now calls the Python equivalent function - this has
type checking and should be safer now.
* Implemented the Lamp module. Used the Camera module as a template.
* Implemented the Image module.
* Added EXPP_ClampFloat and EXPP_intError functions to gen_utils.[ch]
* Implemented 'constant' object.
gen_utils.c (GetObjectByName).
* Blender.link, Blender.bylink and Blender.event should work. Somehow the
only event coming through now is only REDRAW.
* Added include path to /intern/guardedalloc
Michel
wrapper functionality by hand.
* Removed the swig files (*.i and *_wrap.c)
* Created initial datablock functionality. Most of it has been copied from
the old implementation.
* Created some general functions in gen_utils.[ch]
* Blender.Get(), Blender.Set() and Blender.Redraw functions should work in a
script now.
* Started implementation on an Event function call (BPY_do_pyscript)
Michel
Blender.
* Moved api2_2x/interface.c to ./BPY_interface.c
This will be the general api layer from which all variants of the Blender
api. Currently only the 2.2x variant is initialised.
* Used swig (www.swig.org) to create Python wrappers for a couple of dummy
functions.
* Started implementation of the Blender and Blender.Object modules.
Michel