Disable scripting and warn when wxPython version doesn't match
This commit is contained in:
parent
07b4f88e6b
commit
0a044656e3
|
@ -50,6 +50,7 @@
|
|||
#include <kiplatform/environment.h>
|
||||
|
||||
#include <wx/app.h>
|
||||
#include <wx/utils.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
|
@ -83,6 +84,39 @@ SCRIPTING::~SCRIPTING()
|
|||
bool SCRIPTING::IsWxAvailable()
|
||||
{
|
||||
#ifdef KICAD_SCRIPTING_WXPYTHON
|
||||
PyLOCK lock;
|
||||
using namespace pybind11::literals;
|
||||
|
||||
pybind11::dict locals;
|
||||
|
||||
pybind11::exec( R"(
|
||||
from wx import version
|
||||
wx_version = version()
|
||||
)", pybind11::globals(), locals );
|
||||
|
||||
// e.g. "4.0.7 gtk3 (phoenix) wxWidgets 3.0.4"
|
||||
wxString version( locals["wx_version"].cast<std::string>().c_str(), wxConvUTF8 );
|
||||
|
||||
int idx = version.Find( wxT( "wxWidgets " ) );
|
||||
|
||||
if( idx == wxNOT_FOUND )
|
||||
{
|
||||
wxLogError( wxT( "Could not determine wxPython version. "
|
||||
"Python plugins will not be available." ) );
|
||||
return false;
|
||||
}
|
||||
|
||||
version = version.Mid( idx + 10 );
|
||||
wxString wxVersion = wxGetLibraryVersionInfo().GetVersionString();
|
||||
|
||||
if( wxVersion.Cmp( version ) != 0 )
|
||||
{
|
||||
wxString msg = wxT( "The wxPython library was compiled against wxWidgets %s but KiCad is "
|
||||
"using %s. Python plugins will not be available." );
|
||||
wxLogError( wxString::Format( msg, version, wxVersion ) );
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
|
|
Loading…
Reference in New Issue