Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
from wxWindow to be loaded from a C++ .dll (or .so) and be used in a wxPython program, without the widget having to be SWIGged first. Various updates for distribs git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -105,6 +105,14 @@ wxRemotelyScrolledTreeCtrl, wxTreeCompanionWindow,
 | 
			
		||||
wxThinSplitterWindow, and wxSplitterScrolledWindow, some of which may
 | 
			
		||||
also be useful by themselves.
 | 
			
		||||
 | 
			
		||||
Added wxDllWidget from Vaclav Slavik which allows wx widgets derived
 | 
			
		||||
from wxWindow to be loaded from a C++ .dll (or .so) and be used in a
 | 
			
		||||
wxPython program, without the widget having to be SWIGged first.  The
 | 
			
		||||
visible API of the widget is limited to wxWindow methods plus a
 | 
			
		||||
SendCommand method, but it is still quite powerful.  See
 | 
			
		||||
wxPython/contrib/dllwidget and wxPython/demo/dllwidget for more
 | 
			
		||||
details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -166,3 +166,17 @@ include contrib/gizmos/*.c
 | 
			
		||||
include contrib/gizmos/*.h
 | 
			
		||||
include contrib/gizmos/contrib/include/wx/gizmos/*.h
 | 
			
		||||
include contrib/gizmos/contrib/src/gizmos/*.cpp
 | 
			
		||||
 | 
			
		||||
include contrib/dllwidget/*.txt
 | 
			
		||||
include contrib/dllwidget/*.i
 | 
			
		||||
include contrib/dllwidget/*.py
 | 
			
		||||
include contrib/dllwidget/*.cpp
 | 
			
		||||
include contrib/dllwidget/*.c
 | 
			
		||||
include contrib/dllwidget/*.h
 | 
			
		||||
 | 
			
		||||
include demo/dllwidget/*.h
 | 
			
		||||
include demo/dllwidget/*.cpp
 | 
			
		||||
include demo/dllwidget/*.py
 | 
			
		||||
include demo/dllwidget/Makefile
 | 
			
		||||
include demo/dllwidget/makefile.*
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										128
									
								
								wxPython/contrib/dllwidget/dllwidget.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								wxPython/contrib/dllwidget/dllwidget.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Name:        dllwidget.cpp
 | 
			
		||||
// Purpose:     Dynamically loadable C++ widget for wxPython
 | 
			
		||||
// Author:      Vaclav Slavik
 | 
			
		||||
// Created:     2001/12/03
 | 
			
		||||
// RCS-ID:      $Id$
 | 
			
		||||
// Copyright:   (c) 2001 Vaclav Slavik
 | 
			
		||||
// Licence:     wxWindows licence
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUG__
 | 
			
		||||
#pragma implementation "dllwidget.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// For compilers that support precompilation, includes "wx.h".
 | 
			
		||||
#include "wx/wxprec.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __BORLANDC__
 | 
			
		||||
    #pragma hdrstop
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "wx/defs.h"
 | 
			
		||||
#include "wx/dynlib.h"
 | 
			
		||||
#include "wx/sizer.h"
 | 
			
		||||
 | 
			
		||||
#include "dllwidget.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IMPLEMENT_ABSTRACT_CLASS(wxDllWidget, wxPanel)
 | 
			
		||||
 | 
			
		||||
wxDllWidget::wxDllWidget(wxWindow *parent,
 | 
			
		||||
                         wxWindowID id,
 | 
			
		||||
                         const wxString& dllName, const wxString& className,
 | 
			
		||||
                         const wxPoint& pos, const wxSize& size,
 | 
			
		||||
                         long style)
 | 
			
		||||
    : wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL | wxNO_BORDER,
 | 
			
		||||
              className + wxT("_container")),
 | 
			
		||||
    m_widget(NULL), m_lib(NULL), m_controlAdded(FALSE)
 | 
			
		||||
{
 | 
			
		||||
    SetBackgroundColour(wxColour(255, 0, 255));
 | 
			
		||||
    if ( !!className )
 | 
			
		||||
        LoadWidget(dllName, className, style);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
wxDllWidget::~wxDllWidget()
 | 
			
		||||
{
 | 
			
		||||
    UnloadWidget();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void wxDllWidget::AddChild(wxWindowBase *child)
 | 
			
		||||
{
 | 
			
		||||
    wxASSERT_MSG( !m_controlAdded, wxT("Couldn't load two widgets into one container!") )
 | 
			
		||||
 | 
			
		||||
    wxPanel::AddChild(child);
 | 
			
		||||
 | 
			
		||||
    m_controlAdded = TRUE;
 | 
			
		||||
    wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
 | 
			
		||||
    sizer->Add((wxWindow*)child, 1, wxEXPAND);
 | 
			
		||||
    SetSizer(sizer);
 | 
			
		||||
    SetAutoLayout(TRUE);
 | 
			
		||||
    Layout();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
wxString wxDllWidget::GetDllExt()
 | 
			
		||||
{
 | 
			
		||||
    return wxDllLoader::GetDllExt();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
typedef WXDLLEXPORT bool (*DLL_WidgetFactory_t)(const wxString& className,
 | 
			
		||||
                                                wxWindow *parent,
 | 
			
		||||
                                                long style,
 | 
			
		||||
                                                wxWindow **classInst,
 | 
			
		||||
                                                wxSendCommandFunc *cmdFunc);
 | 
			
		||||
 | 
			
		||||
bool wxDllWidget::LoadWidget(const wxString& dll, const wxString& className,
 | 
			
		||||
                             long style)
 | 
			
		||||
{
 | 
			
		||||
    UnloadWidget();
 | 
			
		||||
 | 
			
		||||
    // Load the dynamic library
 | 
			
		||||
    m_lib = new wxDynamicLibrary(dll);
 | 
			
		||||
    if ( !m_lib->IsLoaded() )
 | 
			
		||||
    {
 | 
			
		||||
        delete m_lib;
 | 
			
		||||
        m_lib = NULL;
 | 
			
		||||
        return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DLL_WidgetFactory_t factory;
 | 
			
		||||
    factory = (DLL_WidgetFactory_t) m_lib->GetSymbol(wxT("DLL_WidgetFactory"));
 | 
			
		||||
    if ( factory == NULL)
 | 
			
		||||
    {
 | 
			
		||||
        delete m_lib;
 | 
			
		||||
        m_lib = NULL;
 | 
			
		||||
        return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ( !factory(className, this, style, &m_widget, &m_cmdFunc) )
 | 
			
		||||
    {
 | 
			
		||||
        delete m_widget;
 | 
			
		||||
        delete m_lib;
 | 
			
		||||
        m_lib = NULL;
 | 
			
		||||
        m_widget = NULL;
 | 
			
		||||
        return FALSE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return TRUE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void wxDllWidget::UnloadWidget()
 | 
			
		||||
{
 | 
			
		||||
    if ( m_widget )
 | 
			
		||||
    {
 | 
			
		||||
        DestroyChildren();
 | 
			
		||||
        m_widget = NULL;
 | 
			
		||||
        delete m_lib;
 | 
			
		||||
        m_lib = NULL;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int wxDllWidget::SendCommand(int cmd, const wxString& param)
 | 
			
		||||
{
 | 
			
		||||
    wxASSERT_MSG( m_widget && m_cmdFunc, wxT("Sending command to not loaded widget!"));
 | 
			
		||||
 | 
			
		||||
    return m_cmdFunc(m_widget, cmd, param);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										143
									
								
								wxPython/contrib/dllwidget/dllwidget.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								wxPython/contrib/dllwidget/dllwidget.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Name:        dllwidget.h
 | 
			
		||||
// Purpose:     Dynamically loadable C++ widget for wxPython
 | 
			
		||||
// Author:      Vaclav Slavik
 | 
			
		||||
// Created:     2001/12/03
 | 
			
		||||
// RCS-ID:      $Id$
 | 
			
		||||
// Copyright:   (c) 2001 Vaclav Slavik
 | 
			
		||||
// Licence:     wxWindows licence
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUG__
 | 
			
		||||
#pragma interface "dllwidget.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef __DLLWIDGET_H__
 | 
			
		||||
#define __DLLWIDGET_H__
 | 
			
		||||
 | 
			
		||||
#include "wx/panel.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
wxDllWidget can be used to embed a wxWindow implemented in C++ in your
 | 
			
		||||
wxPython application without the need to write a SWIG interface. Widget's code
 | 
			
		||||
is stored in shared library or DLL that exports DLL_WidgetFactory symbol
 | 
			
		||||
and loaded at runtime. All you have to do is to pass the name of DLL and the class
 | 
			
		||||
to create to wxDllWidget's ctor.
 | 
			
		||||
 | 
			
		||||
Runtime-loadable widget must have HandleCommand method (see the example) that is
 | 
			
		||||
used to communicate with Python app. You call wxDllWidget.SendCommand(cmd,param) from
 | 
			
		||||
Python and it in turn calls HandleCommand of the loaded widget.
 | 
			
		||||
 | 
			
		||||
You must use DECLARE_DLL_WIDGET, BEGIN_WIDGET_LIBRARY, END_WIDGET_LIBRARY and
 | 
			
		||||
REGISTER_WIDGET macros in your C++ module in order to provide all the meat
 | 
			
		||||
wxDllWidget needs.
 | 
			
		||||
 | 
			
		||||
Example of use:
 | 
			
		||||
 | 
			
		||||
    #define CMD_MAKEWHITE     1
 | 
			
		||||
 | 
			
		||||
    class MyWindow : public wxWindow
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        MyWindow(wxWindow *parent, long style)
 | 
			
		||||
            : wxWindow(parent, -1) {}
 | 
			
		||||
 | 
			
		||||
        int HandleCommand(int cmd, const wxString& param)
 | 
			
		||||
        {
 | 
			
		||||
            if (cmd == CMD_MAKEWHITE)
 | 
			
		||||
                SetBackgroundColour(*wxWHITE);
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    DECLARE_DLL_WIDGET(MyWindow)
 | 
			
		||||
 | 
			
		||||
    class MyCanvasWindow : public wxScrolledWindow
 | 
			
		||||
    {
 | 
			
		||||
        ...
 | 
			
		||||
    };
 | 
			
		||||
    DECLARE_DLL_WIDGET(MyCanvasWindow)
 | 
			
		||||
 | 
			
		||||
    BEGIN_WIDGET_LIBRARY()
 | 
			
		||||
        REGISTER_WIDGET(MyWindow)
 | 
			
		||||
        REGISTER_WIDGET(MyCanvasWindow)
 | 
			
		||||
    END_WIDGET_LIBRARY()
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class WXDLLEXPORT wxDynamicLibrary;
 | 
			
		||||
 | 
			
		||||
typedef int (*wxSendCommandFunc)(wxWindow *wnd, int cmd, const wxString& param);
 | 
			
		||||
 | 
			
		||||
class wxDllWidget : public wxPanel
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    wxDllWidget(wxWindow *parent,
 | 
			
		||||
                wxWindowID id = -1,
 | 
			
		||||
                const wxString& dllName = wxEmptyString,
 | 
			
		||||
                const wxString& className = wxEmptyString,
 | 
			
		||||
                const wxPoint& pos = wxDefaultPosition,
 | 
			
		||||
                const wxSize& size = wxDefaultSize,
 | 
			
		||||
                long style = 0);
 | 
			
		||||
    virtual ~wxDllWidget();
 | 
			
		||||
 | 
			
		||||
    bool Ok() { return m_widget != NULL; }
 | 
			
		||||
 | 
			
		||||
    virtual int SendCommand(int cmd, const wxString& param = wxEmptyString);
 | 
			
		||||
    virtual wxWindow* GetEmbeddedWindow() { return m_widget; }
 | 
			
		||||
 | 
			
		||||
    virtual void AddChild(wxWindowBase *child);
 | 
			
		||||
 | 
			
		||||
    static wxString GetDllExt();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    bool LoadWidget(const wxString& dll, const wxString& className, long style);
 | 
			
		||||
    void UnloadWidget();
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    wxWindow*           m_widget;
 | 
			
		||||
    wxSendCommandFunc   m_cmdFunc;
 | 
			
		||||
    wxDynamicLibrary*   m_lib;
 | 
			
		||||
    bool                m_controlAdded;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    DECLARE_ABSTRACT_CLASS(wxDllWidget)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define DECLARE_DLL_WIDGET(widget) \
 | 
			
		||||
    static int SendCommandTo##widget(wxWindow *wnd, int cmd, const wxString& param) \
 | 
			
		||||
    { \
 | 
			
		||||
        return wxStaticCast(wnd, widget)->HandleCommand(cmd, param); \
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define BEGIN_WIDGET_LIBRARY() \
 | 
			
		||||
    extern "C" WXEXPORT bool DLL_WidgetFactory( \
 | 
			
		||||
                const wxString& className, \
 | 
			
		||||
                wxWindow *parent, \
 | 
			
		||||
                long style, \
 | 
			
		||||
                wxWindow **classInst, \
 | 
			
		||||
                wxSendCommandFunc *cmdFunc) \
 | 
			
		||||
    { \
 | 
			
		||||
        wxClassInfo::CleanUpClasses(); \
 | 
			
		||||
        wxClassInfo::InitializeClasses();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define REGISTER_WIDGET(widget) \
 | 
			
		||||
        if ( className == wxT(#widget) ) \
 | 
			
		||||
        { \
 | 
			
		||||
            *classInst = new widget(parent, style); \
 | 
			
		||||
            *cmdFunc = SendCommandTo##widget; \
 | 
			
		||||
            return TRUE; \
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define END_WIDGET_LIBRARY() \
 | 
			
		||||
       return FALSE; \
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif // __DLLWIDGET_H__
 | 
			
		||||
							
								
								
									
										6
									
								
								wxPython/contrib/dllwidget/dllwidget.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								wxPython/contrib/dllwidget/dllwidget.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
# The SWIG module is named dllwidget_ to avoid name clashes, so
 | 
			
		||||
# this stub just imports everything in it so the firendly module
 | 
			
		||||
# name can be used elsewhere.
 | 
			
		||||
 | 
			
		||||
from dllwidget_ import *
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										501
									
								
								wxPython/contrib/dllwidget/dllwidget_.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										501
									
								
								wxPython/contrib/dllwidget/dllwidget_.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,501 @@
 | 
			
		||||
/*
 | 
			
		||||
 * FILE : contrib/dllwidget/dllwidget_.cpp
 | 
			
		||||
 * 
 | 
			
		||||
 * This file was automatically generated by :
 | 
			
		||||
 * Simplified Wrapper and Interface Generator (SWIG)
 | 
			
		||||
 * Version 1.1 (Build 883)
 | 
			
		||||
 * 
 | 
			
		||||
 * Portions Copyright (c) 1995-1998
 | 
			
		||||
 * The University of Utah and The Regents of the University of California.
 | 
			
		||||
 * Permission is granted to distribute this file in any manner provided
 | 
			
		||||
 * this notice remains intact.
 | 
			
		||||
 * 
 | 
			
		||||
 * Do not make changes to this file--changes will be lost!
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define SWIGCODE
 | 
			
		||||
/* Implementation : PYTHON */
 | 
			
		||||
 | 
			
		||||
#define SWIGPYTHON
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
/* Definitions for Windows/Unix exporting */
 | 
			
		||||
#if defined(__WIN32__)
 | 
			
		||||
#   if defined(_MSC_VER)
 | 
			
		||||
#	define SWIGEXPORT(a) __declspec(dllexport) a
 | 
			
		||||
#   else
 | 
			
		||||
#	if defined(__BORLANDC__)
 | 
			
		||||
#	    define SWIGEXPORT(a) a _export
 | 
			
		||||
#	else
 | 
			
		||||
#	    define SWIGEXPORT(a) a
 | 
			
		||||
#	endif
 | 
			
		||||
#   endif
 | 
			
		||||
#else
 | 
			
		||||
#   define SWIGEXPORT(a) a
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "Python.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
extern void SWIG_MakePtr(char *, void *, char *);
 | 
			
		||||
extern void SWIG_RegisterMapping(char *, char *, void *(*)(void *));
 | 
			
		||||
extern char *SWIG_GetPtr(char *, void **, char *);
 | 
			
		||||
extern char *SWIG_GetPtrObj(PyObject *, void **, char *);
 | 
			
		||||
extern void SWIG_addvarlink(PyObject *, char *, PyObject *(*)(void), int (*)(PyObject *));
 | 
			
		||||
extern PyObject *SWIG_newvarlink(void);
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
#define SWIG_init    initdllwidget_c
 | 
			
		||||
 | 
			
		||||
#define SWIG_name    "dllwidget_c"
 | 
			
		||||
 | 
			
		||||
#include "export.h"
 | 
			
		||||
#include "dllwidget.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static PyObject* t_output_helper(PyObject* target, PyObject* o) {
 | 
			
		||||
    PyObject*   o2;
 | 
			
		||||
    PyObject*   o3;
 | 
			
		||||
 | 
			
		||||
    if (!target) {
 | 
			
		||||
        target = o;
 | 
			
		||||
    } else if (target == Py_None) {
 | 
			
		||||
        Py_DECREF(Py_None);
 | 
			
		||||
        target = o;
 | 
			
		||||
    } else {
 | 
			
		||||
        if (!PyTuple_Check(target)) {
 | 
			
		||||
            o2 = target;
 | 
			
		||||
            target = PyTuple_New(1);
 | 
			
		||||
            PyTuple_SetItem(target, 0, o2);
 | 
			
		||||
        }
 | 
			
		||||
        o3 = PyTuple_New(1);
 | 
			
		||||
        PyTuple_SetItem(o3, 0, o);
 | 
			
		||||
 | 
			
		||||
        o2 = target;
 | 
			
		||||
        target = PySequence_Concat(o2, o3);
 | 
			
		||||
        Py_DECREF(o2);
 | 
			
		||||
        Py_DECREF(o3);
 | 
			
		||||
    }
 | 
			
		||||
    return target;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if PYTHON_API_VERSION >= 1009
 | 
			
		||||
    static char* wxStringErrorMsg = "String or Unicode type required";
 | 
			
		||||
#else
 | 
			
		||||
    static char* wxStringErrorMsg = "String type required";
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
static void *SwigwxDllWidgetTowxPanel(void *ptr) {
 | 
			
		||||
    wxDllWidget *src;
 | 
			
		||||
    wxPanel *dest;
 | 
			
		||||
    src = (wxDllWidget *) ptr;
 | 
			
		||||
    dest = (wxPanel *) src;
 | 
			
		||||
    return (void *) dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *SwigwxDllWidgetTowxWindow(void *ptr) {
 | 
			
		||||
    wxDllWidget *src;
 | 
			
		||||
    wxWindow *dest;
 | 
			
		||||
    src = (wxDllWidget *) ptr;
 | 
			
		||||
    dest = (wxWindow *) src;
 | 
			
		||||
    return (void *) dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *SwigwxDllWidgetTowxEvtHandler(void *ptr) {
 | 
			
		||||
    wxDllWidget *src;
 | 
			
		||||
    wxEvtHandler *dest;
 | 
			
		||||
    src = (wxDllWidget *) ptr;
 | 
			
		||||
    dest = (wxEvtHandler *) src;
 | 
			
		||||
    return (void *) dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *SwigwxDllWidgetTowxObject(void *ptr) {
 | 
			
		||||
    wxDllWidget *src;
 | 
			
		||||
    wxObject *dest;
 | 
			
		||||
    src = (wxDllWidget *) ptr;
 | 
			
		||||
    dest = (wxObject *) src;
 | 
			
		||||
    return (void *) dest;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define new_wxDllWidget(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6) (new wxDllWidget(_swigarg0,_swigarg1,_swigarg2,_swigarg3,_swigarg4,_swigarg5,_swigarg6))
 | 
			
		||||
static PyObject *_wrap_new_wxDllWidget(PyObject *self, PyObject *args, PyObject *kwargs) {
 | 
			
		||||
    PyObject * _resultobj;
 | 
			
		||||
    wxDllWidget * _result;
 | 
			
		||||
    wxWindow * _arg0;
 | 
			
		||||
    wxWindowID  _arg1 = (wxWindowID ) -1;
 | 
			
		||||
    wxString * _arg2 = (wxString *) &wxEmptyString;
 | 
			
		||||
    wxString * _arg3 = (wxString *) &wxEmptyString;
 | 
			
		||||
    wxPoint * _arg4 = (wxPoint *) &wxDefaultPosition;
 | 
			
		||||
    wxSize * _arg5 = (wxSize *) &wxDefaultSize;
 | 
			
		||||
    long  _arg6 = (long ) 0;
 | 
			
		||||
    PyObject * _argo0 = 0;
 | 
			
		||||
    PyObject * _obj2 = 0;
 | 
			
		||||
    PyObject * _obj3 = 0;
 | 
			
		||||
    wxPoint  temp;
 | 
			
		||||
    PyObject * _obj4 = 0;
 | 
			
		||||
    wxSize  temp0;
 | 
			
		||||
    PyObject * _obj5 = 0;
 | 
			
		||||
    char *_kwnames[] = { "parent","id","dllName","className","pos","size","style", NULL };
 | 
			
		||||
    char _ptemp[128];
 | 
			
		||||
 | 
			
		||||
    self = self;
 | 
			
		||||
    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O|iOOOOl:new_wxDllWidget",_kwnames,&_argo0,&_arg1,&_obj2,&_obj3,&_obj4,&_obj5,&_arg6)) 
 | 
			
		||||
        return NULL;
 | 
			
		||||
    if (_argo0) {
 | 
			
		||||
        if (_argo0 == Py_None) { _arg0 = NULL; }
 | 
			
		||||
        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
 | 
			
		||||
            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of new_wxDllWidget. Expected _wxWindow_p.");
 | 
			
		||||
        return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (_obj2)
 | 
			
		||||
{
 | 
			
		||||
#if PYTHON_API_VERSION >= 1009
 | 
			
		||||
    char* tmpPtr; int tmpSize;
 | 
			
		||||
    if (!PyString_Check(_obj2) && !PyUnicode_Check(_obj2)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (PyString_AsStringAndSize(_obj2, &tmpPtr, &tmpSize) == -1)
 | 
			
		||||
        return NULL;
 | 
			
		||||
    _arg2 = new wxString(tmpPtr, tmpSize);
 | 
			
		||||
#else
 | 
			
		||||
    if (!PyString_Check(_obj2)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    _arg2 = new wxString(PyString_AS_STRING(_obj2), PyString_GET_SIZE(_obj2));
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
    if (_obj3)
 | 
			
		||||
{
 | 
			
		||||
#if PYTHON_API_VERSION >= 1009
 | 
			
		||||
    char* tmpPtr; int tmpSize;
 | 
			
		||||
    if (!PyString_Check(_obj3) && !PyUnicode_Check(_obj3)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (PyString_AsStringAndSize(_obj3, &tmpPtr, &tmpSize) == -1)
 | 
			
		||||
        return NULL;
 | 
			
		||||
    _arg3 = new wxString(tmpPtr, tmpSize);
 | 
			
		||||
#else
 | 
			
		||||
    if (!PyString_Check(_obj3)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    _arg3 = new wxString(PyString_AS_STRING(_obj3), PyString_GET_SIZE(_obj3));
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
    if (_obj4)
 | 
			
		||||
{
 | 
			
		||||
    _arg4 = &temp;
 | 
			
		||||
    if (! wxPoint_helper(_obj4, &_arg4))
 | 
			
		||||
        return NULL;
 | 
			
		||||
}
 | 
			
		||||
    if (_obj5)
 | 
			
		||||
{
 | 
			
		||||
    _arg5 = &temp0;
 | 
			
		||||
    if (! wxSize_helper(_obj5, &_arg5))
 | 
			
		||||
        return NULL;
 | 
			
		||||
}
 | 
			
		||||
{
 | 
			
		||||
    wxPy_BEGIN_ALLOW_THREADS;
 | 
			
		||||
        _result = (wxDllWidget *)new_wxDllWidget(_arg0,_arg1,*_arg2,*_arg3,*_arg4,*_arg5,_arg6);
 | 
			
		||||
 | 
			
		||||
    wxPy_END_ALLOW_THREADS;
 | 
			
		||||
}    if (_result) {
 | 
			
		||||
        SWIG_MakePtr(_ptemp, (char *) _result,"_wxDllWidget_p");
 | 
			
		||||
        _resultobj = Py_BuildValue("s",_ptemp);
 | 
			
		||||
    } else {
 | 
			
		||||
        Py_INCREF(Py_None);
 | 
			
		||||
        _resultobj = Py_None;
 | 
			
		||||
    }
 | 
			
		||||
{
 | 
			
		||||
    if (_obj2)
 | 
			
		||||
        delete _arg2;
 | 
			
		||||
}
 | 
			
		||||
{
 | 
			
		||||
    if (_obj3)
 | 
			
		||||
        delete _arg3;
 | 
			
		||||
}
 | 
			
		||||
    return _resultobj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define wxDllWidget_Ok(_swigobj)  (_swigobj->Ok())
 | 
			
		||||
static PyObject *_wrap_wxDllWidget_Ok(PyObject *self, PyObject *args, PyObject *kwargs) {
 | 
			
		||||
    PyObject * _resultobj;
 | 
			
		||||
    bool  _result;
 | 
			
		||||
    wxDllWidget * _arg0;
 | 
			
		||||
    PyObject * _argo0 = 0;
 | 
			
		||||
    char *_kwnames[] = { "self", NULL };
 | 
			
		||||
 | 
			
		||||
    self = self;
 | 
			
		||||
    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDllWidget_Ok",_kwnames,&_argo0)) 
 | 
			
		||||
        return NULL;
 | 
			
		||||
    if (_argo0) {
 | 
			
		||||
        if (_argo0 == Py_None) { _arg0 = NULL; }
 | 
			
		||||
        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDllWidget_p")) {
 | 
			
		||||
            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDllWidget_Ok. Expected _wxDllWidget_p.");
 | 
			
		||||
        return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
{
 | 
			
		||||
    wxPy_BEGIN_ALLOW_THREADS;
 | 
			
		||||
        _result = (bool )wxDllWidget_Ok(_arg0);
 | 
			
		||||
 | 
			
		||||
    wxPy_END_ALLOW_THREADS;
 | 
			
		||||
}    _resultobj = Py_BuildValue("i",_result);
 | 
			
		||||
    return _resultobj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define wxDllWidget_SendCommand(_swigobj,_swigarg0,_swigarg1)  (_swigobj->SendCommand(_swigarg0,_swigarg1))
 | 
			
		||||
static PyObject *_wrap_wxDllWidget_SendCommand(PyObject *self, PyObject *args, PyObject *kwargs) {
 | 
			
		||||
    PyObject * _resultobj;
 | 
			
		||||
    int  _result;
 | 
			
		||||
    wxDllWidget * _arg0;
 | 
			
		||||
    int  _arg1;
 | 
			
		||||
    wxString * _arg2 = (wxString *) &wxEmptyString;
 | 
			
		||||
    PyObject * _argo0 = 0;
 | 
			
		||||
    PyObject * _obj2 = 0;
 | 
			
		||||
    char *_kwnames[] = { "self","cmd","param", NULL };
 | 
			
		||||
 | 
			
		||||
    self = self;
 | 
			
		||||
    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"Oi|O:wxDllWidget_SendCommand",_kwnames,&_argo0,&_arg1,&_obj2)) 
 | 
			
		||||
        return NULL;
 | 
			
		||||
    if (_argo0) {
 | 
			
		||||
        if (_argo0 == Py_None) { _arg0 = NULL; }
 | 
			
		||||
        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDllWidget_p")) {
 | 
			
		||||
            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDllWidget_SendCommand. Expected _wxDllWidget_p.");
 | 
			
		||||
        return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (_obj2)
 | 
			
		||||
{
 | 
			
		||||
#if PYTHON_API_VERSION >= 1009
 | 
			
		||||
    char* tmpPtr; int tmpSize;
 | 
			
		||||
    if (!PyString_Check(_obj2) && !PyUnicode_Check(_obj2)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    if (PyString_AsStringAndSize(_obj2, &tmpPtr, &tmpSize) == -1)
 | 
			
		||||
        return NULL;
 | 
			
		||||
    _arg2 = new wxString(tmpPtr, tmpSize);
 | 
			
		||||
#else
 | 
			
		||||
    if (!PyString_Check(_obj2)) {
 | 
			
		||||
        PyErr_SetString(PyExc_TypeError, wxStringErrorMsg);
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    _arg2 = new wxString(PyString_AS_STRING(_obj2), PyString_GET_SIZE(_obj2));
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
{
 | 
			
		||||
    wxPy_BEGIN_ALLOW_THREADS;
 | 
			
		||||
        _result = (int )wxDllWidget_SendCommand(_arg0,_arg1,*_arg2);
 | 
			
		||||
 | 
			
		||||
    wxPy_END_ALLOW_THREADS;
 | 
			
		||||
}    _resultobj = Py_BuildValue("i",_result);
 | 
			
		||||
{
 | 
			
		||||
    if (_obj2)
 | 
			
		||||
        delete _arg2;
 | 
			
		||||
}
 | 
			
		||||
    return _resultobj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define wxDllWidget_GetEmbeddedWindow(_swigobj)  (_swigobj->GetEmbeddedWindow())
 | 
			
		||||
static PyObject *_wrap_wxDllWidget_GetEmbeddedWindow(PyObject *self, PyObject *args, PyObject *kwargs) {
 | 
			
		||||
    PyObject * _resultobj;
 | 
			
		||||
    wxWindow * _result;
 | 
			
		||||
    wxDllWidget * _arg0;
 | 
			
		||||
    PyObject * _argo0 = 0;
 | 
			
		||||
    char *_kwnames[] = { "self", NULL };
 | 
			
		||||
 | 
			
		||||
    self = self;
 | 
			
		||||
    if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxDllWidget_GetEmbeddedWindow",_kwnames,&_argo0)) 
 | 
			
		||||
        return NULL;
 | 
			
		||||
    if (_argo0) {
 | 
			
		||||
        if (_argo0 == Py_None) { _arg0 = NULL; }
 | 
			
		||||
        else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxDllWidget_p")) {
 | 
			
		||||
            PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxDllWidget_GetEmbeddedWindow. Expected _wxDllWidget_p.");
 | 
			
		||||
        return NULL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
{
 | 
			
		||||
    wxPy_BEGIN_ALLOW_THREADS;
 | 
			
		||||
        _result = (wxWindow *)wxDllWidget_GetEmbeddedWindow(_arg0);
 | 
			
		||||
 | 
			
		||||
    wxPy_END_ALLOW_THREADS;
 | 
			
		||||
}{ _resultobj = wxPyMake_wxObject(_result); }
 | 
			
		||||
    return _resultobj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PyObject *_wrap_wxDllWidget_GetDllExt(PyObject *self, PyObject *args, PyObject *kwargs) {
 | 
			
		||||
    PyObject * _resultobj;
 | 
			
		||||
    wxString * _result;
 | 
			
		||||
    char *_kwnames[] = {  NULL };
 | 
			
		||||
 | 
			
		||||
    self = self;
 | 
			
		||||
    if(!PyArg_ParseTupleAndKeywords(args,kwargs,":wxDllWidget_GetDllExt",_kwnames)) 
 | 
			
		||||
        return NULL;
 | 
			
		||||
{
 | 
			
		||||
    wxPy_BEGIN_ALLOW_THREADS;
 | 
			
		||||
        _result = new wxString (wxDllWidget::GetDllExt());
 | 
			
		||||
 | 
			
		||||
    wxPy_END_ALLOW_THREADS;
 | 
			
		||||
}{
 | 
			
		||||
    _resultobj = PyString_FromStringAndSize(_result->c_str(), _result->Len());
 | 
			
		||||
}
 | 
			
		||||
{
 | 
			
		||||
    delete _result;
 | 
			
		||||
}
 | 
			
		||||
    return _resultobj;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PyMethodDef dllwidget_cMethods[] = {
 | 
			
		||||
	 { "wxDllWidget_GetDllExt", (PyCFunction) _wrap_wxDllWidget_GetDllExt, METH_VARARGS | METH_KEYWORDS },
 | 
			
		||||
	 { "wxDllWidget_GetEmbeddedWindow", (PyCFunction) _wrap_wxDllWidget_GetEmbeddedWindow, METH_VARARGS | METH_KEYWORDS },
 | 
			
		||||
	 { "wxDllWidget_SendCommand", (PyCFunction) _wrap_wxDllWidget_SendCommand, METH_VARARGS | METH_KEYWORDS },
 | 
			
		||||
	 { "wxDllWidget_Ok", (PyCFunction) _wrap_wxDllWidget_Ok, METH_VARARGS | METH_KEYWORDS },
 | 
			
		||||
	 { "new_wxDllWidget", (PyCFunction) _wrap_new_wxDllWidget, METH_VARARGS | METH_KEYWORDS },
 | 
			
		||||
	 { NULL, NULL }
 | 
			
		||||
};
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
/*
 | 
			
		||||
 * This table is used by the pointer type-checker
 | 
			
		||||
 */
 | 
			
		||||
static struct { char *n1; char *n2; void *(*pcnv)(void *); } _swig_mapping[] = {
 | 
			
		||||
    { "_signed_long","_long",0},
 | 
			
		||||
    { "_wxPrintQuality","_wxCoord",0},
 | 
			
		||||
    { "_wxPrintQuality","_int",0},
 | 
			
		||||
    { "_wxPrintQuality","_signed_int",0},
 | 
			
		||||
    { "_wxPrintQuality","_unsigned_int",0},
 | 
			
		||||
    { "_wxPrintQuality","_wxWindowID",0},
 | 
			
		||||
    { "_wxPrintQuality","_uint",0},
 | 
			
		||||
    { "_wxPrintQuality","_EBool",0},
 | 
			
		||||
    { "_wxPrintQuality","_size_t",0},
 | 
			
		||||
    { "_wxPrintQuality","_time_t",0},
 | 
			
		||||
    { "_byte","_unsigned_char",0},
 | 
			
		||||
    { "_long","_unsigned_long",0},
 | 
			
		||||
    { "_long","_signed_long",0},
 | 
			
		||||
    { "_size_t","_wxCoord",0},
 | 
			
		||||
    { "_size_t","_wxPrintQuality",0},
 | 
			
		||||
    { "_size_t","_time_t",0},
 | 
			
		||||
    { "_size_t","_unsigned_int",0},
 | 
			
		||||
    { "_size_t","_int",0},
 | 
			
		||||
    { "_size_t","_wxWindowID",0},
 | 
			
		||||
    { "_size_t","_uint",0},
 | 
			
		||||
    { "_wxPanel","_wxDllWidget",SwigwxDllWidgetTowxPanel},
 | 
			
		||||
    { "_uint","_wxCoord",0},
 | 
			
		||||
    { "_uint","_wxPrintQuality",0},
 | 
			
		||||
    { "_uint","_time_t",0},
 | 
			
		||||
    { "_uint","_size_t",0},
 | 
			
		||||
    { "_uint","_unsigned_int",0},
 | 
			
		||||
    { "_uint","_int",0},
 | 
			
		||||
    { "_uint","_wxWindowID",0},
 | 
			
		||||
    { "_wxChar","_char",0},
 | 
			
		||||
    { "_char","_wxChar",0},
 | 
			
		||||
    { "_struct_wxNativeFontInfo","_wxNativeFontInfo",0},
 | 
			
		||||
    { "_EBool","_wxCoord",0},
 | 
			
		||||
    { "_EBool","_wxPrintQuality",0},
 | 
			
		||||
    { "_EBool","_signed_int",0},
 | 
			
		||||
    { "_EBool","_int",0},
 | 
			
		||||
    { "_EBool","_wxWindowID",0},
 | 
			
		||||
    { "_unsigned_long","_long",0},
 | 
			
		||||
    { "_wxNativeFontInfo","_struct_wxNativeFontInfo",0},
 | 
			
		||||
    { "_signed_int","_wxCoord",0},
 | 
			
		||||
    { "_signed_int","_wxPrintQuality",0},
 | 
			
		||||
    { "_signed_int","_EBool",0},
 | 
			
		||||
    { "_signed_int","_wxWindowID",0},
 | 
			
		||||
    { "_signed_int","_int",0},
 | 
			
		||||
    { "_WXTYPE","_wxDateTime_t",0},
 | 
			
		||||
    { "_WXTYPE","_short",0},
 | 
			
		||||
    { "_WXTYPE","_signed_short",0},
 | 
			
		||||
    { "_WXTYPE","_unsigned_short",0},
 | 
			
		||||
    { "_unsigned_short","_wxDateTime_t",0},
 | 
			
		||||
    { "_unsigned_short","_WXTYPE",0},
 | 
			
		||||
    { "_unsigned_short","_short",0},
 | 
			
		||||
    { "_wxObject","_wxDllWidget",SwigwxDllWidgetTowxObject},
 | 
			
		||||
    { "_signed_short","_WXTYPE",0},
 | 
			
		||||
    { "_signed_short","_short",0},
 | 
			
		||||
    { "_unsigned_char","_byte",0},
 | 
			
		||||
    { "_unsigned_int","_wxCoord",0},
 | 
			
		||||
    { "_unsigned_int","_wxPrintQuality",0},
 | 
			
		||||
    { "_unsigned_int","_time_t",0},
 | 
			
		||||
    { "_unsigned_int","_size_t",0},
 | 
			
		||||
    { "_unsigned_int","_uint",0},
 | 
			
		||||
    { "_unsigned_int","_wxWindowID",0},
 | 
			
		||||
    { "_unsigned_int","_int",0},
 | 
			
		||||
    { "_short","_wxDateTime_t",0},
 | 
			
		||||
    { "_short","_WXTYPE",0},
 | 
			
		||||
    { "_short","_unsigned_short",0},
 | 
			
		||||
    { "_short","_signed_short",0},
 | 
			
		||||
    { "_wxWindowID","_wxCoord",0},
 | 
			
		||||
    { "_wxWindowID","_wxPrintQuality",0},
 | 
			
		||||
    { "_wxWindowID","_time_t",0},
 | 
			
		||||
    { "_wxWindowID","_size_t",0},
 | 
			
		||||
    { "_wxWindowID","_EBool",0},
 | 
			
		||||
    { "_wxWindowID","_uint",0},
 | 
			
		||||
    { "_wxWindowID","_int",0},
 | 
			
		||||
    { "_wxWindowID","_signed_int",0},
 | 
			
		||||
    { "_wxWindowID","_unsigned_int",0},
 | 
			
		||||
    { "_int","_wxCoord",0},
 | 
			
		||||
    { "_int","_wxPrintQuality",0},
 | 
			
		||||
    { "_int","_time_t",0},
 | 
			
		||||
    { "_int","_size_t",0},
 | 
			
		||||
    { "_int","_EBool",0},
 | 
			
		||||
    { "_int","_uint",0},
 | 
			
		||||
    { "_int","_wxWindowID",0},
 | 
			
		||||
    { "_int","_unsigned_int",0},
 | 
			
		||||
    { "_int","_signed_int",0},
 | 
			
		||||
    { "_wxDateTime_t","_unsigned_short",0},
 | 
			
		||||
    { "_wxDateTime_t","_short",0},
 | 
			
		||||
    { "_wxDateTime_t","_WXTYPE",0},
 | 
			
		||||
    { "_time_t","_wxCoord",0},
 | 
			
		||||
    { "_time_t","_wxPrintQuality",0},
 | 
			
		||||
    { "_time_t","_unsigned_int",0},
 | 
			
		||||
    { "_time_t","_int",0},
 | 
			
		||||
    { "_time_t","_wxWindowID",0},
 | 
			
		||||
    { "_time_t","_uint",0},
 | 
			
		||||
    { "_time_t","_size_t",0},
 | 
			
		||||
    { "_wxCoord","_int",0},
 | 
			
		||||
    { "_wxCoord","_signed_int",0},
 | 
			
		||||
    { "_wxCoord","_unsigned_int",0},
 | 
			
		||||
    { "_wxCoord","_wxWindowID",0},
 | 
			
		||||
    { "_wxCoord","_uint",0},
 | 
			
		||||
    { "_wxCoord","_EBool",0},
 | 
			
		||||
    { "_wxCoord","_size_t",0},
 | 
			
		||||
    { "_wxCoord","_time_t",0},
 | 
			
		||||
    { "_wxCoord","_wxPrintQuality",0},
 | 
			
		||||
    { "_wxEvtHandler","_wxDllWidget",SwigwxDllWidgetTowxEvtHandler},
 | 
			
		||||
    { "_wxWindow","_wxDllWidget",SwigwxDllWidgetTowxWindow},
 | 
			
		||||
{0,0,0}};
 | 
			
		||||
 | 
			
		||||
static PyObject *SWIG_globals;
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" 
 | 
			
		||||
#endif
 | 
			
		||||
SWIGEXPORT(void) initdllwidget_c() {
 | 
			
		||||
	 PyObject *m, *d;
 | 
			
		||||
	 SWIG_globals = SWIG_newvarlink();
 | 
			
		||||
	 m = Py_InitModule("dllwidget_c", dllwidget_cMethods);
 | 
			
		||||
	 d = PyModule_GetDict(m);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    wxClassInfo::CleanUpClasses();
 | 
			
		||||
    wxClassInfo::InitializeClasses();
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
   int i;
 | 
			
		||||
   for (i = 0; _swig_mapping[i].n1; i++)
 | 
			
		||||
        SWIG_RegisterMapping(_swig_mapping[i].n1,_swig_mapping[i].n2,_swig_mapping[i].pcnv);
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										111
									
								
								wxPython/contrib/dllwidget/dllwidget_.i
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								wxPython/contrib/dllwidget/dllwidget_.i
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,111 @@
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Name:        dllwidget_.i
 | 
			
		||||
// Purpose:     Load wx widgets from external DLLs
 | 
			
		||||
//
 | 
			
		||||
// Author:      Robin Dunn
 | 
			
		||||
//
 | 
			
		||||
// Created:     04-Dec-2001
 | 
			
		||||
// RCS-ID:      $Id$
 | 
			
		||||
// Copyright:   (c) 2001 by Total Control Software
 | 
			
		||||
// Licence:     wxWindows license
 | 
			
		||||
/////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
%module dllwidget_
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%{
 | 
			
		||||
#include "export.h"
 | 
			
		||||
#include "dllwidget.h"
 | 
			
		||||
%}
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
%include typemaps.i
 | 
			
		||||
%include my_typemaps.i
 | 
			
		||||
 | 
			
		||||
%extern wx.i
 | 
			
		||||
%extern windows.i
 | 
			
		||||
%extern _defs.i
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
wxDllWidget can be used to embed a wxWindow implemented in C++ in your
 | 
			
		||||
wxPython application without the need to write a SWIG interface. Widget's code
 | 
			
		||||
is stored in shared library or DLL that exports DLL_WidgetFactory symbol
 | 
			
		||||
and loaded at runtime. All you have to do is to pass the name of DLL and the class
 | 
			
		||||
to create to wxDllWidget's ctor.
 | 
			
		||||
 | 
			
		||||
Runtime-loadable widget must have HandleCommand method (see the example) that is
 | 
			
		||||
used to communicate with Python app. You call wxDllWidget.SendCommand(cmd,param) from
 | 
			
		||||
Python and it in turn calls HandleCommand of the loaded widget.
 | 
			
		||||
 | 
			
		||||
You must use DECLARE_DLL_WIDGET, BEGIN_WIDGET_LIBRARY, END_WIDGET_LIBRARY and
 | 
			
		||||
REGISTER_WIDGET macros in your C++ module in order to provide all the meat
 | 
			
		||||
wxDllWidget needs.
 | 
			
		||||
 | 
			
		||||
Example of use:
 | 
			
		||||
 | 
			
		||||
    #define CMD_MAKEWHITE     1
 | 
			
		||||
 | 
			
		||||
    class MyWindow : public wxWindow
 | 
			
		||||
    {
 | 
			
		||||
    public:
 | 
			
		||||
        MyWindow(wxWindow *parent, long style)
 | 
			
		||||
            : wxWindow(parent, -1) {}
 | 
			
		||||
 | 
			
		||||
        int HandleCommand(int cmd, const wxString& param)
 | 
			
		||||
        {
 | 
			
		||||
            if (cmd == CMD_MAKEWHITE)
 | 
			
		||||
                SetBackgroundColour(*wxWHITE);
 | 
			
		||||
            return 0;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
    DECLARE_DLL_WIDGET(MyWindow)
 | 
			
		||||
 | 
			
		||||
    class MyCanvasWindow : public wxScrolledWindow
 | 
			
		||||
    {
 | 
			
		||||
        ...
 | 
			
		||||
    };
 | 
			
		||||
    DECLARE_DLL_WIDGET(MyCanvasWindow)
 | 
			
		||||
 | 
			
		||||
    BEGIN_WIDGET_LIBRARY()
 | 
			
		||||
        REGISTER_WIDGET(MyWindow)
 | 
			
		||||
        REGISTER_WIDGET(MyCanvasWindow)
 | 
			
		||||
    END_WIDGET_LIBRARY()
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
class wxDllWidget : public wxPanel
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    wxDllWidget(wxWindow *parent,
 | 
			
		||||
                wxWindowID id = -1,
 | 
			
		||||
                const wxString& dllName = wxEmptyString,
 | 
			
		||||
                const wxString& className = wxEmptyString,
 | 
			
		||||
                const wxPoint& pos = wxDefaultPosition,
 | 
			
		||||
                const wxSize& size = wxDefaultSize,
 | 
			
		||||
                long style = 0);
 | 
			
		||||
 | 
			
		||||
    %pragma(python) addtomethod = "__init__:self._setOORInfo(self)"
 | 
			
		||||
 | 
			
		||||
    bool Ok();
 | 
			
		||||
 | 
			
		||||
    int SendCommand(int cmd, const wxString& param = wxEmptyString);
 | 
			
		||||
    wxWindow* GetEmbeddedWindow();
 | 
			
		||||
 | 
			
		||||
    static wxString GetDllExt();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
%init %{
 | 
			
		||||
 | 
			
		||||
    wxClassInfo::CleanUpClasses();
 | 
			
		||||
    wxClassInfo::InitializeClasses();
 | 
			
		||||
 | 
			
		||||
%}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//---------------------------------------------------------------------------
 | 
			
		||||
							
								
								
									
										76
									
								
								wxPython/contrib/dllwidget/dllwidget_.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								wxPython/contrib/dllwidget/dllwidget_.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
# This file was created automatically by SWIG.
 | 
			
		||||
import dllwidget_c
 | 
			
		||||
 | 
			
		||||
from misc import *
 | 
			
		||||
 | 
			
		||||
from misc2 import *
 | 
			
		||||
 | 
			
		||||
from windows import *
 | 
			
		||||
 | 
			
		||||
from gdi import *
 | 
			
		||||
 | 
			
		||||
from clip_dnd import *
 | 
			
		||||
 | 
			
		||||
from events import *
 | 
			
		||||
 | 
			
		||||
from streams import *
 | 
			
		||||
 | 
			
		||||
from utils import *
 | 
			
		||||
 | 
			
		||||
from mdi import *
 | 
			
		||||
 | 
			
		||||
from frames import *
 | 
			
		||||
 | 
			
		||||
from stattool import *
 | 
			
		||||
 | 
			
		||||
from controls import *
 | 
			
		||||
 | 
			
		||||
from controls2 import *
 | 
			
		||||
 | 
			
		||||
from windows2 import *
 | 
			
		||||
 | 
			
		||||
from cmndlgs import *
 | 
			
		||||
 | 
			
		||||
from windows3 import *
 | 
			
		||||
 | 
			
		||||
from image import *
 | 
			
		||||
 | 
			
		||||
from printfw import *
 | 
			
		||||
 | 
			
		||||
from sizers import *
 | 
			
		||||
 | 
			
		||||
from filesys import *
 | 
			
		||||
class wxDllWidgetPtr(wxPanelPtr):
 | 
			
		||||
    def __init__(self,this):
 | 
			
		||||
        self.this = this
 | 
			
		||||
        self.thisown = 0
 | 
			
		||||
    def Ok(self, *_args, **_kwargs):
 | 
			
		||||
        val = apply(dllwidget_c.wxDllWidget_Ok,(self,) + _args, _kwargs)
 | 
			
		||||
        return val
 | 
			
		||||
    def SendCommand(self, *_args, **_kwargs):
 | 
			
		||||
        val = apply(dllwidget_c.wxDllWidget_SendCommand,(self,) + _args, _kwargs)
 | 
			
		||||
        return val
 | 
			
		||||
    def GetEmbeddedWindow(self, *_args, **_kwargs):
 | 
			
		||||
        val = apply(dllwidget_c.wxDllWidget_GetEmbeddedWindow,(self,) + _args, _kwargs)
 | 
			
		||||
        return val
 | 
			
		||||
    def __repr__(self):
 | 
			
		||||
        return "<C wxDllWidget instance at %s>" % (self.this,)
 | 
			
		||||
class wxDllWidget(wxDllWidgetPtr):
 | 
			
		||||
    def __init__(self,*_args,**_kwargs):
 | 
			
		||||
        self.this = apply(dllwidget_c.new_wxDllWidget,_args,_kwargs)
 | 
			
		||||
        self.thisown = 1
 | 
			
		||||
        self._setOORInfo(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#-------------- FUNCTION WRAPPERS ------------------
 | 
			
		||||
 | 
			
		||||
wxDllWidget_GetDllExt = dllwidget_c.wxDllWidget_GetDllExt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#-------------- VARIABLE WRAPPERS ------------------
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								wxPython/demo/dllwidget/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								wxPython/demo/dllwidget/Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
 | 
			
		||||
CXX = c++
 | 
			
		||||
CXXFLAGS = `wx-config --cxxflags` -fPIC -I.
 | 
			
		||||
LDFLAGS = `wx-config --libs`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
all: test_prg test_dll.so
 | 
			
		||||
 | 
			
		||||
test_prg: dllwidget.o test_prg.o
 | 
			
		||||
	$(CXX) $(LDFLAGS) -o $@ dllwidget.o test_prg.o
 | 
			
		||||
 | 
			
		||||
test_dll.so: test_dll.o
 | 
			
		||||
	$(CXX) $(LDFLAGS) -shared -o $@ $<
 | 
			
		||||
 | 
			
		||||
%.o : %.cpp
 | 
			
		||||
	$(CXX) -c $(CXXFLAGS) -o $@ $<
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -f *.o *.so test_prg
 | 
			
		||||
							
								
								
									
										32
									
								
								wxPython/demo/dllwidget/makefile.vc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								wxPython/demo/dllwidget/makefile.vc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
 | 
			
		||||
WXDIR = $(WXWIN)
 | 
			
		||||
WXUSINGDLL = 1
 | 
			
		||||
 | 
			
		||||
PROGRAM = test_dll
 | 
			
		||||
OBJECTS = test_dll.obj
 | 
			
		||||
 | 
			
		||||
!include $(WXDIR)\src\makevc.env
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$(PROGRAM).dll : $(OBJECTS)
 | 
			
		||||
	$(link) @<<
 | 
			
		||||
-out:$(PROGRAM).dll
 | 
			
		||||
-dll $(LINK_DEBUG_FLAGS) $(WINLINKFLAGS)
 | 
			
		||||
$(OBJECTS)
 | 
			
		||||
$(WXLIB)
 | 
			
		||||
<<
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	del $(OBJECTS)
 | 
			
		||||
	del $(PROGRAM).dll
 | 
			
		||||
	del $(PROGRAM).exp
 | 
			
		||||
	del $(PROGRAM).lib
 | 
			
		||||
	del $(PROGRAM).pdb
 | 
			
		||||
 | 
			
		||||
test:
 | 
			
		||||
	@echo -out:$(PROGRAM).dll
 | 
			
		||||
	@echo -dll $(LINK_DEBUG_FLAGS) $(WINLINKFLAGS)
 | 
			
		||||
	@echo $(OBJECTS)
 | 
			
		||||
	@echo $(WXLIB)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										54
									
								
								wxPython/demo/dllwidget/test_dll.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								wxPython/demo/dllwidget/test_dll.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
 | 
			
		||||
#include <wx/defs.h>
 | 
			
		||||
#include <wx/window.h>
 | 
			
		||||
#include <wx/msgdlg.h>
 | 
			
		||||
 | 
			
		||||
#include "../dllwidget.h"
 | 
			
		||||
 | 
			
		||||
class TestWindow : public wxWindow
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    TestWindow(wxWindow *parent, long style)
 | 
			
		||||
        : wxWindow(parent, -1)
 | 
			
		||||
    {
 | 
			
		||||
        SetBackgroundColour(wxColour("white"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    int HandleCommand(int cmd, const wxString& param)
 | 
			
		||||
    {
 | 
			
		||||
        if (cmd == 1)
 | 
			
		||||
        {
 | 
			
		||||
            SetBackgroundColour(wxColour("red"));
 | 
			
		||||
            Refresh();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (cmd == 2)
 | 
			
		||||
        {
 | 
			
		||||
            SetBackgroundColour(wxColour(param));
 | 
			
		||||
            Refresh();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        else if (cmd == 3)
 | 
			
		||||
        {
 | 
			
		||||
            wxMessageBox("Message from embedded widget:\n\n" + param);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
private:
 | 
			
		||||
    DECLARE_ABSTRACT_CLASS(TestWindow)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
IMPLEMENT_ABSTRACT_CLASS(TestWindow, wxWindow)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//DECLARE_DLL_WIDGET(TestWindow)
 | 
			
		||||
static int SendCommandToTestWindow(wxWindow *wnd, int cmd, const wxString& param)
 | 
			
		||||
{
 | 
			
		||||
    return wxStaticCast(wnd, TestWindow)->HandleCommand(cmd, param);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
BEGIN_WIDGET_LIBRARY()
 | 
			
		||||
    REGISTER_WIDGET(TestWindow)
 | 
			
		||||
END_WIDGET_LIBRARY()
 | 
			
		||||
							
								
								
									
										82
									
								
								wxPython/demo/dllwidget/test_prog.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								wxPython/demo/dllwidget/test_prog.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,82 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
 | 
			
		||||
from wxPython.wx import *
 | 
			
		||||
from wxPython.dllwidget import wxDllWidget, wxDllWidget_GetDllExt
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class TestFrame(wxFrame):
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        wxFrame.__init__(self, None, -1, "Test wxDllWidget")
 | 
			
		||||
 | 
			
		||||
        menu = wxMenu()
 | 
			
		||||
        menu.Append(101, "Send command &1")
 | 
			
		||||
        menu.Append(102, "Send command &2")
 | 
			
		||||
        menu.Append(103, "Send command &3")
 | 
			
		||||
        menu.AppendSeparator()
 | 
			
		||||
        menu.Append(110, "E&xit")
 | 
			
		||||
 | 
			
		||||
        mb = wxMenuBar()
 | 
			
		||||
        mb.Append(menu, "&Test")
 | 
			
		||||
        self.SetMenuBar(mb)
 | 
			
		||||
 | 
			
		||||
        EVT_MENU_RANGE(self, 101, 109, self.OnSendCommand)
 | 
			
		||||
        EVT_MENU(self, 110, self.OnExit)
 | 
			
		||||
 | 
			
		||||
        panel = wxPanel(self, -1)
 | 
			
		||||
        panel.SetFont(wxFont(12, wxSWISS, wxNORMAL, wxBOLD))
 | 
			
		||||
 | 
			
		||||
        st = wxStaticText(panel, -1,
 | 
			
		||||
                          "The widget below was dynamically imported from\n"
 | 
			
		||||
                          "test_dll.dll or test_dll.so with no prior knowledge\n"
 | 
			
		||||
                          "of it's contents or structure by wxPython.")
 | 
			
		||||
 | 
			
		||||
        self.dw = dw = wxDllWidget(panel, -1,
 | 
			
		||||
                                   "test_dll" + wxDllWidget_GetDllExt(),
 | 
			
		||||
                                   "TestWindow",
 | 
			
		||||
                                   size=(250, 150))
 | 
			
		||||
 | 
			
		||||
        # The embedded window is the one exported from the DLL
 | 
			
		||||
        print dw.GetEmbeddedWindow().GetClassName()
 | 
			
		||||
 | 
			
		||||
        # This shows that we can give it a child from this side of things.
 | 
			
		||||
        # You can also call any wxWindow methods on it too.
 | 
			
		||||
        wxStaticText(dw.GetEmbeddedWindow(), -1,
 | 
			
		||||
                     "Loaded from test_dll...", pos=(10,10))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        sizer = wxBoxSizer(wxVERTICAL)
 | 
			
		||||
        sizer.Add(wxStaticLine(panel, -1), 0, wxGROW)
 | 
			
		||||
        sizer.Add(st, 0, wxGROW|wxALL, 5)
 | 
			
		||||
        sizer.Add(dw, 1, wxGROW|wxALL, 5)
 | 
			
		||||
 | 
			
		||||
        panel.SetSizer(sizer)
 | 
			
		||||
        panel.SetAutoLayout(true)
 | 
			
		||||
        sizer.Fit(self)
 | 
			
		||||
        sizer.SetSizeHints(self)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnExit(self, evt):
 | 
			
		||||
        self.Close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    def OnSendCommand(self, evt):
 | 
			
		||||
        ID = evt.GetId() - 100  # use the menu ID as the command
 | 
			
		||||
        param = ""
 | 
			
		||||
        if ID == 2:
 | 
			
		||||
            dlg = wxTextEntryDialog(self, "Enter a colour name to pass to the embedded widget:")
 | 
			
		||||
            if dlg.ShowModal() == wxID_OK:
 | 
			
		||||
                param = dlg.GetValue()
 | 
			
		||||
            dlg.Destroy()
 | 
			
		||||
        self.dw.SendCommand(ID, param)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    app = wxPySimpleApp()
 | 
			
		||||
    frame = TestFrame()
 | 
			
		||||
    frame.Show(true)
 | 
			
		||||
    app.MainLoop()
 | 
			
		||||
@@ -79,6 +79,7 @@ Source: "wxPython\oglc.pyd";                DestDir: "{app}\wxPython"; Component
 | 
			
		||||
Source: "wxPython\stc_c.pyd";               DestDir: "{app}\wxPython"; Components: core
 | 
			
		||||
Source: "wxPython\xrcc.pyd";                DestDir: "{app}\wxPython"; Components: core
 | 
			
		||||
Source: "wxPython\gizmosc.pyd";             DestDir: "{app}\wxPython"; Components: core
 | 
			
		||||
Source: "wxPython\dllwidget.pyd";           DestDir: "{app}\wxPython"; Components: core
 | 
			
		||||
 | 
			
		||||
Source: "wxPython\*.py";                    DestDir: "{app}\wxPython"; Components: core
 | 
			
		||||
Source: "wxPython\lib\*.py";                DestDir: "{app}\wxPython\lib"; Components: core
 | 
			
		||||
@@ -117,6 +118,11 @@ Source: "demo\data\*.wav";                  DestDir: "{app}\wxPython\demo\data";
 | 
			
		||||
Source: "demo\data\*.wdr";                  DestDir: "{app}\wxPython\demo\data"; Components: demo
 | 
			
		||||
Source: "demo\data\*.xrc";                  DestDir: "{app}\wxPython\demo\data"; Components: demo
 | 
			
		||||
 | 
			
		||||
Source: "demo\dllwidget\*.cpp";             DestDir: "{app}\wxPython\demo\dllwidget"; Components: demo
 | 
			
		||||
Source: "demo\dllwidget\*.py";              DestDir: "{app}\wxPython\demo\dllwidget"; Components: demo
 | 
			
		||||
Source: "demo\dllwidget\Makefile";          DestDir: "{app}\wxPython\demo\dllwidget"; Components: demo
 | 
			
		||||
Source: "demo\dllwidget\makefile.*";        DestDir: "{app}\wxPython\demo\dllwidget"; Components: demo
 | 
			
		||||
 | 
			
		||||
Source: "README.txt";                       DestDir: "{app}\wxPython\docs";  Flags: isreadme; Components: core
 | 
			
		||||
Source: "CHANGES.txt";                      DestDir: "{app}\wxPython\docs"; Components: core
 | 
			
		||||
Source: "licence\*.txt";                    DestDir: "{app}\wxPython\docs\licence"; Components: core
 | 
			
		||||
@@ -201,9 +207,6 @@ Type: files; Name: "{app}\wxPython\samples\frogedit\*.pyo";
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
## TODO:  For Python 2.2 wxPython should go into
 | 
			
		||||
#         os.path.join(sys.prefix, 'Lib', 'site-packages')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
IFS_Template = r"""
 | 
			
		||||
program Setup;
 | 
			
		||||
 
 | 
			
		||||
@@ -33,11 +33,13 @@ BUILD_OGL = 1      # If true, build the contrib/ogl extension module
 | 
			
		||||
BUILD_STC = 1      # If true, build the contrib/stc extension module
 | 
			
		||||
BUILD_XRC = 1      # XML based resource system
 | 
			
		||||
BUILD_GIZMOS = 1   # Build a module for the gizmos contrib library
 | 
			
		||||
BUILD_DLLWIDGET = 1# Build a module for the gizmos contrib library
 | 
			
		||||
 | 
			
		||||
BUILD_IEWIN = 0    # Internet Explorer wrapper (experimental)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
CORE_ONLY = 0      # if true, don't build any of the above
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL_ONLY = 0        # Only used when making the -gl RPM.  See the "b" script
 | 
			
		||||
                   # for the ugly details
 | 
			
		||||
 | 
			
		||||
@@ -113,6 +115,7 @@ if bcpp_compiling:
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
for flag in ['BUILD_GLCANVAS', 'BUILD_OGL', 'BUILD_STC', 'BUILD_XRC',
 | 
			
		||||
             'BUILD_GIZMOS', 'BUILD_DLLWIDGET',
 | 
			
		||||
             'CORE_ONLY', 'USE_SWIG', 'IN_CVS_TREE',
 | 
			
		||||
             'FINAL', 'HYBRID', ]:
 | 
			
		||||
    for x in range(len(sys.argv)):
 | 
			
		||||
@@ -554,7 +557,7 @@ if not GL_ONLY and BUILD_STC:
 | 
			
		||||
                            swig_args + ['-I'+STC_H, '-I'+location],
 | 
			
		||||
                            [opj(STC_H, 'stc.h')])
 | 
			
		||||
 | 
			
		||||
    # copy a project specific py module to the main package dir
 | 
			
		||||
    # copy a contrib project specific py module to the main package dir
 | 
			
		||||
    copy_file(opj(location, 'stc.py'), PKGDIR, update=1, verbose=0)
 | 
			
		||||
 | 
			
		||||
    # add some include dirs to the standard set
 | 
			
		||||
@@ -793,6 +796,39 @@ if not GL_ONLY and BUILD_GIZMOS:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
# Define the DLLWIDGET  extension module
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
if not GL_ONLY and BUILD_DLLWIDGET:
 | 
			
		||||
    msg('Preparing DLLWIDGET...')
 | 
			
		||||
    location = 'contrib/dllwidget'
 | 
			
		||||
    swig_files = ['dllwidget_.i']
 | 
			
		||||
 | 
			
		||||
    swig_sources = run_swig(swig_files, location, '', PKGDIR,
 | 
			
		||||
                            USE_SWIG, swig_force, swig_args)
 | 
			
		||||
 | 
			
		||||
    # copy a contrib project specific py module to the main package dir
 | 
			
		||||
    copy_file(opj(location, 'dllwidget.py'), PKGDIR, update=1, verbose=0)
 | 
			
		||||
 | 
			
		||||
    ext = Extension('dllwidget_c', [
 | 
			
		||||
                                '%s/dllwidget.cpp' % location,
 | 
			
		||||
                             ] + swig_sources,
 | 
			
		||||
 | 
			
		||||
                    include_dirs =  includes,
 | 
			
		||||
                    define_macros = defines,
 | 
			
		||||
 | 
			
		||||
                    library_dirs = libdirs,
 | 
			
		||||
                    libraries = libs,
 | 
			
		||||
 | 
			
		||||
                    extra_compile_args = cflags,
 | 
			
		||||
                    extra_link_args = lflags,
 | 
			
		||||
                    )
 | 
			
		||||
 | 
			
		||||
    wxpExtensions.append(ext)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#----------------------------------------------------------------------
 | 
			
		||||
# Do the Setup/Build/Install/Whatever
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user