SWIG Improvements
*) Extend SWIG support deeper into the BOARD class.
*) Move swig *.i files into a directory identified for SWIG, in preparation
for a parallel universe involving Phoenix's SIP.
*) Move swig files which will be common to both eeschema and pcbnew into
common/swig.
*) Sketch out a "common" python module, and plan on dovetailing that into a
libkicad_shared.{dll,so}
*) Add common/swig/ki_exceptions.i and define a macro HANDLE_EXCEPTIONS()
which is to be applied to any function which needs C++ to python
exception translation.
*) Move the test for SWIG tool into top level CMakeLists.txt file for use
in all python modules beyond pcbnew, i.e. eeschema and common.
*) Add SWIG_MODULE_pcbnew_EXTRA_DEPS which generates a better Makefile, one
which rebuilds the swig generated *.cxx file when one of its dependencies
change.
*) Re-architect the board.i file so that it can be split into multiple *.i
files easily.
*) Make some KIWAY from python progress, in preparation for Modular KiCad
phase III.
This commit is contained in:
committed by
Wayne Stambaugh
parent
964b5a1830
commit
7311f07eaf
@@ -1,62 +0,0 @@
|
||||
#ifndef __PYTHON_SCRIPTING_H
|
||||
#define __PYTHON_SCRIPTING_H
|
||||
|
||||
// undefs explained here: https://bugzilla.redhat.com/show_bug.cgi?id=427617
|
||||
|
||||
#ifdef _POSIX_C_SOURCE
|
||||
#undef _POSIX_C_SOURCE
|
||||
#endif
|
||||
#ifdef _XOPEN_SOURCE
|
||||
#undef _XOPEN_SOURCE
|
||||
#endif
|
||||
|
||||
#include <Python.h>
|
||||
#ifndef NO_WXPYTHON_EXTENSION_HEADERS
|
||||
#ifdef KICAD_SCRIPTING_WXPYTHON
|
||||
#include <wx/wxPython/wxPython.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <wx/string.h>
|
||||
#include <wx/arrstr.h>
|
||||
|
||||
/* Function pcbnewInitPythonScripting
|
||||
* Initializes the Python engine inside pcbnew
|
||||
*/
|
||||
|
||||
bool pcbnewInitPythonScripting( const char * aUserScriptingPath );
|
||||
void pcbnewFinishPythonScripting();
|
||||
|
||||
|
||||
#ifdef KICAD_SCRIPTING_WXPYTHON
|
||||
|
||||
void RedirectStdio();
|
||||
wxWindow* CreatePythonShellWindow( wxWindow* parent, const wxString& aFramenameId );
|
||||
|
||||
class PyLOCK
|
||||
{
|
||||
wxPyBlock_t b;
|
||||
public:
|
||||
|
||||
// @todo, find out why these are wxPython specific. We need the GIL regardless.
|
||||
// Should never assume python will only have one thread calling it.
|
||||
PyLOCK() { b = wxPyBeginBlockThreads(); }
|
||||
~PyLOCK() { wxPyEndBlockThreads( b ); }
|
||||
};
|
||||
|
||||
|
||||
#else
|
||||
class PyLOCK
|
||||
{
|
||||
PyGILState_STATE gil_state;
|
||||
public:
|
||||
PyLOCK() { gil_state = PyGILState_Ensure(); }
|
||||
~PyLOCK() { PyGILState_Release( gil_state ); }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
wxArrayString PyArrayStringToWx( PyObject* arr );
|
||||
wxString PyErrStringWithTraceback();
|
||||
|
||||
#endif // __PYTHON_SCRIPTING_H
|
||||
Reference in New Issue
Block a user