Update of /cvsroot/wxlua/wxLua/modules/wxbind/src In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv20968/wxLua/modules/wxbind/src Modified Files: Makefile_wxcore Makefile_wxhtml Added Files: wxcore_wxlcore.cpp wxhtml_wxlhtml.cpp Removed Files: wxcore_wxlprint.cpp wxhtml_wxlhtmlwin.cpp Log Message: Renamed wxcore_wxlprint to wxcore_wxlcore and wxhtml_wxlhtmlwin to wxhtml_wxlhtml since these files contain more than just printing or the htmlwin. Updated configure.ac to check for $WXSTEDIT shell env var and added --with-wxstedit-prefix to make it easier to specify where wxStEdit is. --- NEW FILE: wxhtml_wxlhtml.cpp --- ///////////////////////////////////////////////////////////////////////////// // Name: wxLuaHtmlWindow.cpp // Purpose: Provide an interface to wxHtmlWindow for wxLua. // Author: J. Winwood. // Created: June 2002. // Copyright: (c) 2002 Lomtick Software. All rights reserved. // Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/datetime.h" #include "wxbind/include/wxhtml_wxlhtml.h" #include "wxbind/include/wxhtml_bind.h" //#include "wxlua/include/wxlcallb.h" #if wxLUA_USE_wxHTML DEFINE_EVENT_TYPE(wxEVT_HTML_TAG_HANDLER) // ---------------------------------------------------------------------------- // wxLuaHtmlWindow // ---------------------------------------------------------------------------- IMPLEMENT_ABSTRACT_CLASS(wxLuaHtmlWindow, wxHtmlWindow) wxLuaHtmlWindow::wxLuaHtmlWindow(const wxLuaState& wxlState, wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name) :wxHtmlWindow(parent, id, pos, size, style, name) { m_wxlState = wxlState; } #if wxCHECK_VERSION(2,7,0) bool #else void #endif wxLuaHtmlWindow::OnCellClicked(wxHtmlCell *cell, wxCoord x, wxCoord y, const wxMouseEvent& event) { bool fResult = false; #if wxCHECK_VERSION(2,7,0) bool ret = false; #endif if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnCellClicked", true)) { lua_State *L = m_wxlState.GetLuaState(); int nOldTop = lua_gettop(L); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaHtmlWindow, true); m_wxlState.wxluaT_PushUserDataType(cell, g_wxluatype_wxHtmlCell, true); lua_pushnumber(L, x); lua_pushnumber(L, y); m_wxlState.wxluaT_PushUserDataType((void *) &event, g_wxluatype_wxMouseEvent, true); m_wxlState.LuaPCall(5, 1); fResult = (lua_tonumber(L, -1) != 0); lua_settop(L, nOldTop); if (fResult) { #if wxCHECK_VERSION(2,7,0) ret = #endif wxHtmlWindow::OnCellClicked(cell, x, y, event); } } else { #if wxCHECK_VERSION(2,7,0) ret = #endif wxHtmlWindow::OnCellClicked(cell, x, y, event); } m_wxlState.SetCallBaseClassFunction(false); // clear flag always #if wxCHECK_VERSION(2,7,0) return ret; #endif } void wxLuaHtmlWindow::OnCellMouseHover(wxHtmlCell *cell, wxCoord x, wxCoord y) { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnCellMouseHover", true)) { lua_State *L = m_wxlState.GetLuaState(); int nOldTop = lua_gettop(L); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaHtmlWindow, true); m_wxlState.wxluaT_PushUserDataType(cell, g_wxluatype_wxHtmlCell, true); lua_pushnumber(L, x); lua_pushnumber(L, y); m_wxlState.LuaPCall(4, 0); lua_settop(L, nOldTop); } else wxHtmlWindow::OnCellMouseHover(cell, x, y); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } void wxLuaHtmlWindow::OnLinkClicked(const wxHtmlLinkInfo& link) { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnLinkClicked", true)) { lua_State *L = m_wxlState.GetLuaState(); int nOldTop = lua_gettop(L); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaHtmlWindow, true); m_wxlState.wxluaT_PushUserDataType((void *) &link, g_wxluatype_wxHtmlLinkInfo, true); m_wxlState.LuaPCall(2, 0); lua_settop(L, nOldTop); } else wxHtmlWindow::OnLinkClicked(link); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } void wxLuaHtmlWindow::OnSetTitle(const wxString& title) { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnSetTitle", true)) { lua_State *L = m_wxlState.GetLuaState(); int nOldTop = lua_gettop(L); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaHtmlWindow, true); m_wxlState.lua_PushString(title); m_wxlState.LuaPCall(2, 0); lua_settop(L, nOldTop); } else wxHtmlWindow::OnSetTitle(title); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } // ---------------------------------------------------------------------------- // wxLuaHtmlWinTagHandler // ---------------------------------------------------------------------------- class wxLuaHtmlWinTagHandler : public wxHtmlWinTagHandler { public: wxLuaHtmlWinTagHandler() {} virtual wxString GetSupportedTags() { return wxT("LUA"); } virtual bool HandleTag(const wxHtmlTag& tag) { wxLuaHtmlWinTagEvent htmlEvent(wxEVT_HTML_TAG_HANDLER); htmlEvent.SetTagInfo(&tag, m_WParser); if (wxTheApp->ProcessEvent(htmlEvent)) return htmlEvent.GetParseInnerCalled(); return false; } }; class wxLuaHtmlTagsModule : public wxHtmlTagsModule { DECLARE_DYNAMIC_CLASS(wxLuaHtmlTagsModule) public: virtual void FillHandlersTable(wxHtmlWinParser *parser) { parser->AddTagHandler(new wxLuaHtmlWinTagHandler); } }; IMPLEMENT_DYNAMIC_CLASS(wxLuaHtmlTagsModule, wxHtmlTagsModule) // ---------------------------------------------------------------------------- // wxLuaHtmlWinTagEvent // ---------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxLuaHtmlWinTagEvent, wxEvent) wxLuaHtmlWinTagEvent::wxLuaHtmlWinTagEvent(wxEventType eventType) :wxEvent(wxID_ANY, eventType), m_pHtmlTag(NULL), m_pHtmlParser(NULL), m_fParseInnerCalled(false) { } wxLuaHtmlWinTagEvent::wxLuaHtmlWinTagEvent(const wxLuaHtmlWinTagEvent& event) :wxEvent(event), m_pHtmlTag(event.m_pHtmlTag), m_pHtmlParser(event.m_pHtmlParser), m_fParseInnerCalled(event.m_fParseInnerCalled) { } void wxLuaHtmlWinTagEvent::SetTagInfo(const wxHtmlTag *pHtmlTag, wxHtmlWinParser *pParser) { m_pHtmlTag = pHtmlTag; m_pHtmlParser = pParser; } #endif //wxLUA_USE_wxHTML Index: Makefile_wxcore =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxbind/src/Makefile_wxcore,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile_wxcore 16 Jul 2007 19:34:44 -0000 1.1 --- Makefile_wxcore 10 Jan 2008 23:06:27 -0000 1.2 *************** *** 45,49 **** wxcore_sizer.cpp \ wxcore_windows.cpp \ ! wxcore_wxlprint.cpp OBJECTS=$(SOURCES:.cpp=.o) --- 45,49 ---- wxcore_sizer.cpp \ wxcore_windows.cpp \ ! wxcore_wxlcore.cpp OBJECTS=$(SOURCES:.cpp=.o) --- wxcore_wxlprint.cpp DELETED --- Index: Makefile_wxhtml =================================================================== RCS file: /cvsroot/wxlua/wxLua/modules/wxbind/src/Makefile_wxhtml,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Makefile_wxhtml 16 Jul 2007 19:34:44 -0000 1.1 --- Makefile_wxhtml 10 Jan 2008 23:06:27 -0000 1.2 *************** *** 29,33 **** wxhtml_bind.cpp \ wxhtml_html.cpp \ ! wxhtml_wxlhtmlwin.cpp OBJECTS=$(SOURCES:.cpp=.o) --- 29,33 ---- wxhtml_bind.cpp \ wxhtml_html.cpp \ ! wxhtml_wxlhtml.cpp OBJECTS=$(SOURCES:.cpp=.o) --- NEW FILE: wxcore_wxlcore.cpp --- ///////////////////////////////////////////////////////////////////////////// // Name: wxLuaPrinting.cpp // Purpose: Provide an interface to wxPrintout for wxLua. // Author: J. Winwood. // Created: July 2002. // Copyright: (c) 2002 Lomtick Software. All rights reserved. // Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/datetime.h" #include "wxbind/include/wxcore_wxlcore.h" #if wxLUA_USE_wxLuaPrintout // This lua tag is defined in bindings extern int g_wxluatype_wxLuaPrintout; // ---------------------------------------------------------------------------- // wxLuaPrintout // ---------------------------------------------------------------------------- int wxLuaPrintout::ms_test_int = -1; IMPLEMENT_ABSTRACT_CLASS(wxLuaPrintout, wxPrintout) wxLuaPrintout::wxLuaPrintout(const wxLuaState& wxlState, const wxString& title, wxLuaObject *pObject) :wxPrintout(title), m_wxlState(wxlState), m_pObject(pObject), m_minPage(0), m_maxPage(0), m_pageFrom(0), m_pageTo(0) { } void wxLuaPrintout::SetPageInfo(int minPage, int maxPage, int pageFrom, int pageTo) { m_minPage = minPage; m_maxPage = maxPage; m_pageFrom = pageFrom; m_pageTo = pageTo; } void wxLuaPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) { *minPage = *maxPage = *pageFrom = *pageTo = 0; if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "GetPageInfo", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.LuaPCall(1, 4); *minPage = (int)m_wxlState.GetNumberType(-4); *maxPage = (int)m_wxlState.GetNumberType(-3); *pageFrom = (int)m_wxlState.GetNumberType(-2); *pageTo = (int)m_wxlState.GetNumberType(-1); m_wxlState.lua_SetTop(nOldTop); } else { *minPage = m_minPage; *maxPage = m_maxPage; *pageFrom = m_pageFrom; *pageTo = m_pageTo; } m_wxlState.SetCallBaseClassFunction(false); // clear flag always } bool wxLuaPrintout::HasPage(int pageNum) { bool fResult = false; if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "HasPage", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.lua_PushNumber(pageNum); m_wxlState.LuaPCall(2, 1); fResult = m_wxlState.GetBooleanType(-1); m_wxlState.lua_SetTop(nOldTop); } else fResult = wxPrintout::HasPage(pageNum); m_wxlState.SetCallBaseClassFunction(false); // clear flag always return fResult; } // Notes about virtual functions: // // This is the call list using the wxPrintf statements in wxLuaPrintout::OnBeginDocument // for the wxLua code (see printing.wx.lua sample for complete listing) // // previewPrintout = wxLuaPrintout("Test print") // ... // previewPrintout.OnBeginDocument = function(self, startPage, endPage) // return self:base_OnBeginDocument(startPage, endPage) // end // ... // local preview = wx.wxPrintPreview(printerPrintout, previewPrintout, printDialogData) // // wxLuaPrintout::OnBeginDocument 1 call base 0 // wxlua_getTableFunc func 'base_OnBeginDocument' pClass -1220355700 'wxLuaPrintout', userdata 1, lightuserdata 0, ttag 207, class_tag 207 lua_State 139252808 wxLuaStateRefData 139155808 call base 1 // wxLua_wxPrintout_OnBeginDocument 1 (this is the wxLua binding function for wxPrintout::OnBeginDocument) // wxLuaPrintout::OnBeginDocument 1 call base 1 // wxLuaPrintout::OnBeginDocument 3 call base 1 // wxPrintout::OnBeginDocument (this is the call to the wxWidgets function in it's library) // wxLuaPrintout::OnBeginDocument 4 call base 1 // wxLuaPrintout::OnBeginDocument 2 call base 0 // wxLuaPrintout::OnBeginDocument 4 call base 0 bool wxLuaPrintout::OnBeginDocument(int startPage, int endPage) { // NOTE: The wxLua program MUST call the base class, see printing.wx.lua bool fResult = true; //wxPrintf(wxT("wxLuaPrintout::OnBeginDocument 1 call base %d\n"), m_wxlState.GetCallBaseClassFunction()); if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnBeginDocument", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.lua_PushNumber(startPage); m_wxlState.lua_PushNumber(endPage); m_wxlState.LuaPCall(3, 1); fResult = m_wxlState.GetBooleanType(-1); m_wxlState.lua_SetTop(nOldTop); //wxPrintf(wxT("wxLuaPrintout::OnBeginDocument 2 call base %d\n"), m_wxlState.GetCallBaseClassFunction()); } else { //wxPrintf(wxT("wxLuaPrintout::OnBeginDocument 3 call base %d\n"), m_wxlState.GetCallBaseClassFunction()); fResult = wxPrintout::OnBeginDocument(startPage, endPage); } //wxPrintf(wxT("wxLuaPrintout::OnBeginDocument 4 call base %d\n"), m_wxlState.GetCallBaseClassFunction()); m_wxlState.SetCallBaseClassFunction(false); // clear flag always return fResult; } void wxLuaPrintout::OnEndDocument() { // NOTE: The wxLua program MUST call the base class, see printing.wx.lua if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnEndDocument", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.LuaPCall(1, 0); m_wxlState.lua_SetTop(nOldTop); } else wxPrintout::OnEndDocument(); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } void wxLuaPrintout::OnBeginPrinting() { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnBeginPrinting", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.LuaPCall(1, 0); m_wxlState.lua_SetTop(nOldTop); } else wxPrintout::OnBeginPrinting(); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } void wxLuaPrintout::OnEndPrinting() { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnEndPrinting", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.LuaPCall(1, 0); m_wxlState.lua_SetTop(nOldTop); } else wxPrintout::OnEndPrinting(); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } void wxLuaPrintout::OnPreparePrinting() { if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnPreparePrinting", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.LuaPCall(1, 0); m_wxlState.lua_SetTop(nOldTop); } else wxPrintout::OnPreparePrinting(); m_wxlState.SetCallBaseClassFunction(false); // clear flag always } bool wxLuaPrintout::OnPrintPage(int pageNum) { bool fResult = false; if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "OnPrintPage", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.lua_PushNumber(pageNum); m_wxlState.LuaPCall(2, 1); fResult = m_wxlState.GetBooleanType(-1); m_wxlState.lua_SetTop(nOldTop); } // no else since this is pure virtual m_wxlState.SetCallBaseClassFunction(false); // clear flag always return fResult; } wxString wxLuaPrintout::TestVirtualFunctionBinding(const wxString& val) { wxString result(val + wxT("-Base")); if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "TestVirtualFunctionBinding", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaPrintout, true); m_wxlState.lua_PushString(val); m_wxlState.LuaPCall(2, 1); result = m_wxlState.GetwxStringType(-1); m_wxlState.lua_SetTop(nOldTop); } // no else since wxPrintout doesn't have this function m_wxlState.SetCallBaseClassFunction(false); // clear flag always return result; } // ---------------------------------------------------------------------------- // wxLuaPrintout // ---------------------------------------------------------------------------- IMPLEMENT_ABSTRACT_CLASS(wxLuaArtProvider, wxArtProvider) #include "wxbind/include/wxcore_bind.h" // for wxLua_wxObject_wxSize extern int g_wxluatype_wxLuaArtProvider; extern int g_wxluatype_wxSize; extern int g_wxluatype_wxBitmap; wxLuaArtProvider::wxLuaArtProvider(const wxLuaState& wxlState) : m_wxlState(wxlState) { } wxSize wxLuaArtProvider::DoGetSizeHint(const wxArtClient& client) { wxSize size; if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "DoGetSizeHint", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaArtProvider, true); m_wxlState.lua_PushString(client); m_wxlState.LuaPCall(2, 1); wxSize *s = (wxSize*)m_wxlState.GetUserDataType(-1, g_wxluatype_wxSize); if (s) size = *s; m_wxlState.lua_SetTop(nOldTop); } else size = wxArtProvider::DoGetSizeHint(client); m_wxlState.SetCallBaseClassFunction(false); // clear flag always return size; } wxBitmap wxLuaArtProvider::CreateBitmap(const wxArtID& id, const wxArtClient& client, const wxSize& size) { wxBitmap bitmap; if (m_wxlState.Ok() && !m_wxlState.GetCallBaseClassFunction() && m_wxlState.HasDerivedMethod(this, "CreateBitmap", true)) { int nOldTop = m_wxlState.lua_GetTop(); m_wxlState.wxluaT_PushUserDataType(this, g_wxluatype_wxLuaArtProvider, true); m_wxlState.lua_PushString(id); m_wxlState.lua_PushString(client); // allocate a new object using the copy constructor wxSize* s = new wxSize(size); // add the new object to the tracked memory list m_wxlState.AddGCObject((void*)s, new wxLua_wxObject_wxSize((wxSize*)s)); m_wxlState.wxluaT_PushUserDataType(s, g_wxluatype_wxSize, true); m_wxlState.LuaPCall(4, 1); wxBitmap *b = (wxBitmap*)m_wxlState.GetUserDataType(-1, g_wxluatype_wxBitmap); if (b) bitmap = *b; m_wxlState.lua_SetTop(nOldTop); } // no else since this is pure virtual m_wxlState.SetCallBaseClassFunction(false); // clear flag always return bitmap; } #endif // wxLUA_USE_wxLuaPrintout --- wxhtml_wxlhtmlwin.cpp DELETED --- |