Get Action Plugins working with Python 3, fix some unicode string errors
This commit is contained in:
parent
8805706ccb
commit
88d04f3bcb
|
@ -136,7 +136,7 @@ wxString* newWxStringFromPy( PyObject* src )
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
else if( !PyBytes_Check( src ) )
|
else if( !PyUnicode_Check( src ) )
|
||||||
#else
|
#else
|
||||||
else if( !PyString_Check( src ) ) // if it's not a string, str(obj)
|
else if( !PyString_Check( src ) ) // if it's not a string, str(obj)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -108,7 +108,15 @@ wxString PYTHON_ACTION_PLUGIN::CallRetStrMethod( const char* aMethod, PyObject*
|
||||||
if( result )
|
if( result )
|
||||||
{
|
{
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
const char* str_res = PyBytes_AS_STRING( result );
|
const char* str_res = NULL;
|
||||||
|
PyObject* temp_bytes = PyUnicode_AsEncodedString( result, "UTF-8", "strict" );
|
||||||
|
if ( temp_bytes != NULL ) {
|
||||||
|
str_res = PyBytes_AS_STRING( temp_bytes );
|
||||||
|
str_res = strdup( str_res );
|
||||||
|
Py_DECREF( temp_bytes );
|
||||||
|
} else {
|
||||||
|
wxLogMessage( "cannot encode unicode python string" );
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
const char* str_res = PyString_AsString( result );
|
const char* str_res = PyString_AsString( result );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -102,7 +102,15 @@ wxString PYTHON_FOOTPRINT_WIZARD::CallRetStrMethod( const char* aMethod, PyObjec
|
||||||
if( result )
|
if( result )
|
||||||
{
|
{
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
const char* str_res = PyBytes_AS_STRING( result );
|
const char* str_res = NULL;
|
||||||
|
PyObject* temp_bytes = PyUnicode_AsEncodedString( result, "UTF-8", "strict" );
|
||||||
|
if ( temp_bytes != NULL ) {
|
||||||
|
str_res = PyBytes_AS_STRING( temp_bytes );
|
||||||
|
str_res = strdup( str_res );
|
||||||
|
Py_DECREF( temp_bytes );
|
||||||
|
} else {
|
||||||
|
wxLogMessage( "cannot encode unicode python string" );
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
const char* str_res = PyString_AsString( result );
|
const char* str_res = PyString_AsString( result );
|
||||||
#endif
|
#endif
|
||||||
|
@ -209,7 +217,15 @@ wxString PYTHON_FOOTPRINT_WIZARD::GetParameterPageName( int aPage )
|
||||||
if( result )
|
if( result )
|
||||||
{
|
{
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
const char* str_res = PyBytes_AS_STRING( result );
|
const char* str_res = NULL;
|
||||||
|
PyObject* temp_bytes = PyUnicode_AsEncodedString( result, "UTF-8", "strict" );
|
||||||
|
if ( temp_bytes != NULL ) {
|
||||||
|
str_res = PyBytes_AS_STRING( temp_bytes );
|
||||||
|
str_res = strdup( str_res );
|
||||||
|
Py_DECREF( temp_bytes );
|
||||||
|
} else {
|
||||||
|
wxLogMessage( "cannot encode unicode python string" );
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
const char* str_res = PyString_AsString( result );
|
const char* str_res = PyString_AsString( result );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -249,7 +249,17 @@ static void pcbnewRunPythonMethodWithReturnedString( const char* aMethodName, wx
|
||||||
{
|
{
|
||||||
PyObject* str = PyDict_GetItemString(localDict, "result" );
|
PyObject* str = PyDict_GetItemString(localDict, "result" );
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
const char* str_res = str ? PyBytes_AS_STRING( str ) : 0;
|
const char* str_res = NULL;
|
||||||
|
if(str) {
|
||||||
|
PyObject* temp_bytes = PyUnicode_AsEncodedString( str, "UTF-8", "strict" );
|
||||||
|
if ( temp_bytes != NULL ) {
|
||||||
|
str_res = PyBytes_AS_STRING( temp_bytes );
|
||||||
|
str_res = strdup( str_res );
|
||||||
|
Py_DECREF( temp_bytes );
|
||||||
|
} else {
|
||||||
|
wxLogMessage( "cannot encode unicode python string" );
|
||||||
|
}
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
const char* str_res = str ? PyString_AsString( str ) : 0;
|
const char* str_res = str ? PyString_AsString( str ) : 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -404,7 +414,16 @@ wxArrayString PyArrayStringToWx( PyObject* aArrayString )
|
||||||
if( element )
|
if( element )
|
||||||
{
|
{
|
||||||
#if PY_MAJOR_VERSION >= 3
|
#if PY_MAJOR_VERSION >= 3
|
||||||
ret.Add( FROM_UTF8( PyBytes_AS_STRING( element ) ), 1 );
|
const char* str_res = NULL;
|
||||||
|
PyObject* temp_bytes = PyUnicode_AsEncodedString( element, "UTF-8", "strict" );
|
||||||
|
if ( temp_bytes != NULL ) {
|
||||||
|
str_res = PyBytes_AS_STRING( temp_bytes );
|
||||||
|
str_res = strdup( str_res );
|
||||||
|
Py_DECREF( temp_bytes );
|
||||||
|
ret.Add( FROM_UTF8( str_res ), 1 );
|
||||||
|
} else {
|
||||||
|
wxLogMessage( "cannot encode unicode python string" );
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
ret.Add( FROM_UTF8( PyString_AsString( element ) ), 1 );
|
ret.Add( FROM_UTF8( PyString_AsString( element ) ), 1 );
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -102,7 +102,7 @@ def LoadOnePlugin(Dirname, ModuleName):
|
||||||
try: # If there is an error loading the script, skip it
|
try: # If there is an error loading the script, skip it
|
||||||
mtime = os.path.getmtime(module_filename)
|
mtime = os.path.getmtime(module_filename)
|
||||||
|
|
||||||
if KICAD_PLUGINS.has_key(ModuleName):
|
if ModuleName in KICAD_PLUGINS:
|
||||||
plugin = KICAD_PLUGINS[ModuleName]
|
plugin = KICAD_PLUGINS[ModuleName]
|
||||||
|
|
||||||
if not plugin["modification_time"] == mtime:
|
if not plugin["modification_time"] == mtime:
|
||||||
|
|
Loading…
Reference in New Issue