Hi John,

As I've been working through the code to figure out how to inherit a
new class from wxApp (similar to how wxLuaPrintout inherits from
wxPrintout), I wondered if it's possible to do most of it at the Lua
level (with a bit of help from C++).

If the binding generator identifies all wxwidgets classes that can be
passed as parameters and creates inherited *Lua* classes, the I can do
something like this:

local app = wx.wxGetApp()
-- recast wxApp to wxLuaApp
local newapp = app:GetInstance():DynamicCast("wxLuaApp")
newapp.MacOpenFiles = function(files) ... end
-- register the new app with wxwidgets
app:SetInstance(newapp)

This will also allow "true" inheritance from wxwidgets classes at the
Lua level, which I find lacking in wxlua right now (unless I'm missing
something).

The implementation would automate most of the work that would need to
be done manually for these inherited classes: (1) pick a class based
on whether it's passed as a parameter or not; if it's difficult to do
automatically, the list can be pre-assigned; (2) generate a proper
class definition; and (3) create stubs for virtual methods that will
check for properties assigned in the derived class (in the example
above it would be MacOpenFiles method).

One of the challenges I see is the initialization that needs to assign
the current lua state (m_wxlState) as I'm not sure when it needs to
happen (as DynamicCast doesn't create a new object). Maybe DynamicCast
can check if the cast is to one of wxLua* classes and do the
assignment? This problem remains even when the class definitions are
done "manually", so I'd be interested in any suggestions on how to
address this.

Is there a method to get the current Lua state (wxlState) to use in
virtual functions:

void wxApp::MacOpenFiles(const wxArrayString& filenames)
{
    wxLuaState m_wxlState = s_wxlState // <== not sure what to put here

Related question: I'm trying to use wxEVT_LUA_ERROR and
wxEVT_LUA_PRINT form the Lua code, but can't find any examples on how
to set it up. Any pointers? Thank you.




Paul.

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
wxlua-users mailing list
wxlua-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wxlua-users

Reply via email to