luaforwindows/files/docs/wxlua/changelog.txt

390 lines
20 KiB
Plaintext

wxLua ChangeLog
===============
version 2.8.10.0 (released 05/25/2009)
--------------------------------------------------------------------
- Updated Lua to 5.1.4
* Changed the %typedef binding to work as the C/C++ typedefs work.
The usage is reversed from how it was in previous versions.
You will need to swap the parameters for it in your bindings.
Example: %typedef long wxTextCoord
- Added more C/C++ operators in the bindings.
- wxLuaEdit now prints values in the console like the Lua executable.
* Changed signature of wxLuaState::RunBuffer() to take a const char*
instead of an const unsigned char*, cast to (const char*) as appropriate.
- Allow wxLuaState::RunString/Buffer() and friends to allow for values left
on the stack. The default is to leave none as before.
- Added wxTextUrlEvent to the bindings.
- Fixed double -> unsigned integer using all 32 bits conversion.
Fixes wxSTC_MASK_FOLDERS problem, thanks to Andre Arpin.
- Allow multiple inheritance in the bindings. Changed members of
wxLuaBindClass to reflect that base class info are stored in arrays.
version 2.8.7.0 (released 02/02/2008)
--------------------------------------------------------------------
- Streamlined wxLuaBinding::RegisterBinding(...) and remove the bool
"registerClasses" since it didn't do anything useful anyway.
If there needs to be a way to reregister the wxLua functions it should
to be implemented from the ground up.
- Renamed the functions wxlua_txxx to wxluaT_xxx to make it easier to
search for their usage. The functions in the wxLuaState used to be
called just "txxx" and are now called wxluaT_Xxx where the first
letter of each word is capitalized for searching.
- Made wxluaT_insert(L, idx) not pop the value that it refs since
it may not be the one at the top of the stack.
- Made wxLuaCheckStack class work a little nicer for easier debugging in C++.
- Use wxSIGKILL to kill debuggee process since wxSIGTERM doesn't work in MSW.
- wxLuaStackDialog has better search for all columns, collapse and expand
tables, and show metatables. It also now uses a virtual wxListCtrl so
it's much faster. You can expand both key and values of a table and
more information is provided about items wxLua knows about.
- Separated the "tags" for C++ classes from "refs" for objects we want a
handle on in the Lua registry by putting them in separate tables.
- Removed wxlua_pushkey_XXX #defines since we now have a few tables in the
registry that we use and those methods were not useful anymore.
The lightuserdata keys are now const char* strings with a descriptive name,
however it is the mem address that is used as the table key.
- wxluaT_newtag() now leaves the created table on the stack.
- Removed wxluaT_newweaktag() and wxluaT_settagmethod() since they were
not needed anymore.
* A large portion of the internal workings of the wxLuaState have been
rewritten. All of the data that was stored in wxLuaStateData that might
be needed by a function taking a lua_State* is now in the
LUA_REGISTRYINDEX. C functions have been added to access these values.
The generated bindings no longer need to have "wxLuaState wxlState(L);"
since everything can be done with the C functions.
The result is that wxLua should be faster.
- Applied patches to Lua 5.1.2 #8-11
lua_setfenv may crash if called over an invalid object.
- Made the garbage collector more aggressive since we push void* pointers
but the data behind them may be quite large. Unfortunately there is no
mechanism to give a size hint to Lua without modifying Lua.
lua_gc(L, LUA_GCSETPAUSE, 120); lua_gc(L, LUA_GCSETSTEPMUL, 400);
- Added wxLuaArtProvider with virtual functions to create custom
wxArtProviders in Lua.
* Allowed using wxObject:DynamicCast() on an object and be able to use the
object as both types. The problem was that wxEvent:GetEventObject()
returned a wxObject which overwrote the wxWindow (perhaps) that you had as
a userdata in Lua already.
Additionally, if you delete an object all of the userdata that wrap it
have their metatables cleared for safety.
Functions renamed since they don't do the same thing or behave the same.
wxluaO_istrackedobject -> wxluaO_isgcobject
wxluaO_addtrackedobject -> wxluaO_addgcobject
wxluaO_removetrackedobject -> wxluaO_deletegcobject
- Created a central luauserdata:delete() function for the bindings to reduce
code. wxLua_userdata_delete(L)
* Changed signature of the function wxLuaState::SetLuaDebugHook() so that
the inputs to lua_sethook() are together and in the same order.
- Renamed wxLuaCallback to wxLuaEventCallback to make it more clear that
it is a callback for the wxEvents using wxEvtHandlers.
- Removed wxluabind_removetableforcall(L) used in the bindings to determine
if the function was called from the tables used for class constructors.
It makes more sense to call an intermediatary function to remove
the table before calling the real function.
- Removed the wxLuaFunction class since we no longer need it. It was a
userdata with a __call metatable to call the real function we want.
We now push the actual function or an overload function helper with the
wxLuaBindMethod struct as an upvalue to give better error messages.
The new way should be faster since it doesn't generate as much garbage.
- Added wxlua_argerror(L, stack_idx, type_str) to give a far more
informative message from the bindings when the wrong type is an arg to
a function.
- Renamed WXLUAARG_XXX to WXLUA_TXXX to match LUA_TXXX.
* Do not create a separate overload function in the bindings since we can
just as easily check for multiple functions using the wxLuaBindMethod
and call the generic overload function or just the single function.
* Updated the naming conventions of the wxLua C/C++ functions to get rid of
the term "tag" which dates back to Lua 4. Lua 5 does not use "tags", but
rather metatables to attach functions to userdata in Lua.
The new term for the C++ objects that wxLua wraps in Lua userdata and
assigns a metatable to are wxLua types.
WXLUA_TXXX types < WXLUA_T_MAX correspond to the LUA_TXXX Lua types.
wxLua types > WXLUA_T_MAX are types from the bindings and denote a class or struct.
- Most notably for people who have written their own overrides for their
bindings will be that wxLuaState::PushUserTag() is now wxluaT_PushUserDataType().
Those two functions existed before, but basically did the same thing.
The calling arguments of PushUserTag() were taken however and were the
reverse of what PushUserDataType() had.
- wxluaT_new/get/set/tag() are now wxluaT_new/setmetatable() and
wxluaT_type() where the latter works just like lua_type(), but returns
one of the wxLua types.
- Fix crash in wxListCtrl and wxTreeCtrl::AssignImageList() to use the
%ungc tag to release wxLua from deleting the input wxImageList.
- Added image sample translated from C++ by Hakki Dogusan.
* Changed wxLuaState_Type enum for wxLuaState(lua_State*, wxLuaState_Type)
Removed wxLUASTATE_USESTATE and you now | together wxLUASTATE_SETSTATE with
wxLUASTATE_OPENBINDINGS if you want the bindings opened.
Cleans up the creation of the wxLuaState so a precreated lua_State
should be able to be used easier.
- Remove poorly named wxLuaState::LuaError() and CheckRunError() and
replaced them with the C functions wxlua_errorinfo() and wxlua_LUA_ERR_msg()
respectively.
- Added wxlua_pushargs(wxChar**, int) for a standard way to push args
into Lua.
- Copy Lua's print() function to print_lua() instead of simply
overwriting it in case someone really wants to use it.
- Revised the build system, specially the configure script under Linux which
now accepts more options and automatically detects the presence/absence of
each wxWidgets library when --enable-wxbind* options are left in "auto" mode
* Updated Lua to 5.1.3
- Added static bool wxLuaState::sm_wxAppMainLoop_will_run so that Lua code
that calls "wx.wxGetApp:MainLoop()" will not do anything. C++ coders
should call it if they create a wxLuaState and run Lua code from
their wxApp:OnInit() when wxApp:IsMainLoopRunning() returns false.
See the apps for usage.
* The wxLua type numbers are now generated when the first wxLuaState is created
rather then when the bindings are registered into Lua. This means that
each wxLua type stays the same for the life of the program no matter what
bindings are installed or in what order.
- The copy of the wxLuaBindingList in the wxLuaState was removed since it is
no longer needed. Renamed the functions static wxLuaBinding::GetBindXXX()
to FindBindXXX() since they no longer needed the extra wxLuaBindingList parameter
and they had the same signature as the existing GetBindXXX() functions.
Removed the wxLuaBinding::Clone() function as it is no longer used.
- Added wxLuaState::RegisterBinding(wxLuaBinding*) function to register
single bindings at a time. You may also reregister bindings, which means
that their metatable functions are simple rewritten.
- Removed the wxLuaBinding::PreRegister() and PostRegister() functions and
made RegisterBinding() virtual
Note: wxLuaBinding::RegisterBinding() now leaves the Lua table that the
binding objects were installed into on the stack. You must pop it.
* The rules.lua for genwxbind.lua now uses wxLuaBinding_class_declaration and
wxLuaBinding_class_implementation to replace wxLuaBinding_preregister and
wxLuaBinding_postregister. You may now add whatever you like to the class
declaration and implementation source code.
- Updated bitlib to version 25.
version 2.8.4.2
--------------------------------------------------------------------
- Separated the wxWidgets bindings into the libraries that wxWidgets
uses. wxadv, wxaui, wxbase, wxcore, etc...
- Allow bool = 1/0 and 1/0 = bool in wxlua_getboolean/integer/number.
- Fix bug in prematurely garbage collecting userdata.
The userdata was previously keyed on the pointer to the data instead
of a pointer to the Lua userdata that wraps the data.
- Moved wxLUA_VERSION... bindings into the 'wxlua' table.
- Applied patch to lparser.c
"Too many variables in an assignment may cause a C stack overflow"
- Streamline creation of a wxLuaState and finding the wxLuaState from
an existing lua_State,
See wxlstate.h for changes to the enum WXLUASTATE_ATTACH/SETSTATE
to be more complete.
version 2.8.4.1
--------------------------------------------------------------------
- Made wxLUA_USE_wxMediaCtrl and wxLUA_USE_wxGLCanvas 1 by default.
They are #if wxUSE_MEDIACTRL and wxUSE_GLCANVAS so they are only included
if the wxWidgets you compile against uses them.
- Added media.wx.lua sample to show off the wxMediaCtrl
- Fixed the argtags for integer arrays.
version 2.8.4.0
--------------------------------------------------------------------
- Added RUNTIME_LIBS and THREADING options to the build system to allow
to statically compile against the C runtime (only for some win compilers)
- Added all of the wxWidget's wxUSE_XXX conditions to the bindings
- Hopefully fixed the wx2lua and lua2wx string conversion for unicode
and high ascii characters.
- Removed gc destructor functions, we can do it in the gc function itself.
- Removed wxLua_AddTrackedObject functions, use wxLuaState::AddTrackedObject.
- Updated lua to 5.1.2
- Removed wxEVT_LUA_CONSOLE compatibility #define, use wxEVT_LUA_PRINT now
- Refactored and cleaned up socket debugging code.
Removed exception code.
Removed DebuggerService code as it wasn't used.
- Put derived functions into the LUA_REGISTRYINDEX instead of the
wxLuaState's m_pDerivedList.
- Change the wxLuaStackDialog to use a wxListCtrl instead of a hacked
wxTreeCtrl that tries to act like a listctrl. Cleaner, faster, and smaller.
- **** Big changes to the wxLua syntax! ****
Hopefully this will be the last since it is now a little more flexible and
logical with far fewer gotcha's since it matches the C++ documentation
very closely now.
- Removed wx.wxNull, the NULL tag for NULL pointers. Use wx.NULL now.
- *** Removed MOST %renamed functions so that they are not overloaded.
For example wxSizer::AddWindow/AddSizer is now just wxSizer::Add!
Removed most renamed constructors like wxEmptyBitmap, wxBitmapFromFile
and you now need only call wxBitmap(...). wxLua will determine which
appropriate function to call at runtime.
- Changed class member enums to be accessed by
wx.ClassName.enumName instead of previously wx.ClassName_enumName.
- Changed static class member functions to be accessed by
wx.ClassName.StaticFuncName instead of previously wx.ClassName_StaticFuncName
- Changed the class constructor functions to be a lua table instead of a C
function. You can call the table using the __call metable, there is no
code change required for wxLua scripts. You can get a pointer to the C
function using the "new" table item of the class table if you actually want
to get at the function.
- Binding changes:
Replaced %define %string with %define_string.
Replaced %define %pointer with %define_pointer.
Replaced %define %object with %define_object.
Replaced %define %event with %define_event.
Note: %define alone is still just for numbers.
Removed %overload tag since this is done automatically.
Added %override_name tag to enforce the name of the C function to use since
the binding generator will append 1,2,3,... to overloaded functions.
Removed %static and %static_only since these are automatically handled
and static functions are put into the class table.
Removed %property tag since these are generated on the fly.
Depricated %constructor tag, use %rename NewConstructor ClassName(...)
It is currently kept for very special cases, none of which exist now.
- Changed version strings and numbers to match how wxWidgets defines them.
WXLUA_MAJOR_VERSION -> wxLUA_MAJOR_VERSION
WXLUA_MINOR_VERSION -> wxLUA_MINOR_VERSION
WXLUA_RELEASE_VERSION -> wxLUA_RELEASE_NUMBER
WXLUA_SUBRELEASE_VERSION -> wxLUA_SUBRELEASE_NUMBER
WXLUA_VERSION_STRING -> wxLUA_VERSION_STRING
WXCHECK_WXLUA_VERSION -> wxLUA_CHECK_VERSION
Added wxLUA_CHECK_VERSION_FULL
- Renamed wxConfigBase::Destroy() to Delete() to match the %delete generated
functions.
- Renamed WXLUACLASS, WXLUAMETHOD, WXLUADEFINE, WXLUASTRING, WXLUAEVENT
structs to wxLuaBindClass, wxLuaBindMethod, wxLuaBindDefine,
wxLuaBindString, and wxLuaBindEvent.
- Renamed the GetLua[Class]List functions in wxLuaBindings to
Get[Class]Array, since they're C arrays not wxLists.
- Renamed wxLuaState::LuaCall to LuaPCall since that's what it calls
and changed the parameters to match lua_pcall.
- Removed binding helpers wxArrayString_FromLuaTable and
wxArrayInt_FromLuaTable since the conversion is now automatic and the
function can take either a table or a wxArrayXXX. See notes in binding.html.
- Fixed sorting function for the listctrl.
- Added validator.wx.lua to test wxGenericValidators and wxTextValidators,
both of which work again.
- Rename all functions dealing with "enumeration" to "integer" since it's
more generic and that's what it's often used for.
- Event handling is faster now that we store the wxLuaBindEvent struct
instead of the wxEventType and then have to look up the struct each time.
- Changed calling base class function from base_[FunctionName] to just
_[Function Name]. This is faster and more reliable since if a function
was called "base_XXX" before there would have been a problem.
- Changed the Delete() function from the %delete tag for classes to just
delete() to avoid any future name clashes since delete() is never allowed
to be a function name in C++.
- Moved the wxStyledTextCtrl class and it's 1268 defines into the wxstc table.
- Moved wxLuaObject, wxLuaDebugger (and friends) into the wxlua table and
added more functions for inspecting userdata and the bindings.
- Added the bit library from Reuben Thomas and put it into the bit table.
- Fix mismatches between the bindings base classes and what they really are.
- Add back the treectrl to the Stack Dialog so you get a tree on the left
and the list on the right.
- Added functions to get the items that wxLua tracks (userdata) to know
if you need to garbage collect things
- Use qsort and bsearch to find the class member functions to run.
Combined with using integer items in lua's registry ~ %25 faster.
- Make wxLuaDebugData a real wxObject refed class that can !Ok(), before
it always created it's ref data even if it wasn't used.
- Add %gc, %ungc, %gc_this, and %ungc_this tags for fine tuning of tracking
and releasing userdata objects by functions that take ownership of the data
or release it.
- Apply patches 1-6 for Lua 5.1.2
version 2.8.0.0 (released 24/12/2006)
--------------------------------------------------------------------
- Fixed wxSocketBase::ReadMsg for reading less bytes, Steve Kieu
- Fixed unicode conversion in wx2lua and lua2wx, thanks Steve Kieu
- Switched from lua 5.0 to lua 5.1, updated to 5.1.1 (6/11/06)
- All bindings for wxWidgets have been updated to 2.6.3
- Reordered bindings/wxwidgets/overrides.hpp to follow binding *.i files
- Fixed %member tag for bindings to work properly
- Added %overload for the bindings to handle overloaded function calls
- Added %operator tag for the bindings to handle C++ operators
- Fixed printing and in general overridden functions that call base_XXX funcs
- Added wxLuaFreeze program to create wxLua executables
- Changed wxLuaBindings::OnRegister to Pre/PostRegister
update your rules files for generating your bindings
- Changed naming conventions of generated C binding functions by
prepending "wxLua_" to them. This affects the %overrides so that you have
to also prepend "wxLua_" as %override wxLua_SomeFunction and also add
"wxLua_" to the name of the overridden C function.
- static classmember functions now work and have the naming convention of
classname_functionname. eg. wxButton_GetDefaultSize()
- Added wxGLCanvas and wxGLContext to the bindings, see wxLUA_USE_wxGLCanvas
- user-set C*FLAGS are now considered when building
(previously they were ignored)
- now the lua executable is called wxlua-lua to avoid conflicts
with other installations of lua and a verbatim lua5.1 library and
executable is created instead
- updated wrapper generators and all build system for shared builds
(under Windows)
- added the new module "luamodule" which can be used to create a wx.dll/.so
module to use with the require() function of lua with the verbatim interpreter
- *** Changed wxEvtHandler::ConnectEvent to wxEvtHandler::Connect since there
is NO C++ function called ConnectEvent.
- Fixed wxEvtHandler::Connect[Event] to follow the C++ winID semantics for the
case where there is no winId supplied, use wxID_ANY.
- Finished cleaning up the code, moved all the code in
modules/wxlua/include/internal.h and modules/wxlua/src/internal.cpp
to other files. Please include wxlua/wxlstate.h instead of this file.
- Cleanup debugging socket code
- Add wxVERSION and wxCHECK_VERSION as well as WXLUA_XXX_VERSION bindings
- Removed wxLuaHandler (in wxluasocket) and made wxLuaDebuggerBase a
wxEvtHandler derived class to handle debugger events.
- Renamed all the wxluasocket enums, wx events, and classnames to directly
specify what they are used for, eg. debugger and debuggee.
- Cleaned up and made more robust the wxlua IDE app.
- Moved distribution-stuff into "distrib" to make it clear what is build-related
and what is for making wxLua distributions
- Added PCH support
- Builds with different configurations are fully supported: both the build
directory and the output folders for the libraries and for the binaries are
named with the chosen configuration so that there should be no clashes
when compiling wxLua with different settings.
- Added the --with-lua-prefix configure's option or LUA_DIR option to allow
to use an external LUA library for building wxLua.
- Building under wxMac has been greatly improved thanks to Anders F Björklund;
release 2.8.0.0 also includes a Mac bundle.
version 2.6.2.0 (released 10/03/2006)
--------------------------------------------------------------------
- imported wxLua in SourceForge CVS servers
- added bakefile build system
- added InnoSetup and Autopackage scripts for packaging
- created wxLua website
- updated samples to use sizers
versions < 2.6.2.0
--------------------------------------------------------------------
- the pre-SF releases were kept at http://www.luascript.thersgb.net
which is now unavailable