Commit 42fad8a7 authored by Miguel Angel Ajo's avatar Miguel Angel Ajo
Browse files

Exceptions handled on board Load/Save

parent 55c0eafd
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@
%ignore BOARD_ITEM::ZeroOffset;
%ignore D_PAD::m_PadSketchModePenSize;

// rename the Add method of classes to Add native, so we will handle
// the Add method in python 

%rename(AddNative) *::Add;

// this is what it must be included in the wrapper .cxx code to compile
@@ -102,6 +105,8 @@
%include <pcbnew_scripting_helpers.h>

#ifdef BUILD_WITH_PLUGIN
  // ignore RELEASER as nested classes are still unsupported by swig
  %ignore IO_MGR::RELEASER;
  %include <io_mgr.h>
  %include <kicad_plugin.h>
#endif
+14 −5
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
 * @brief Scripting helper functions for pcbnew functionality
 */

#include <Python.h>

#include <pcbnew_scripting_helpers.h>
#include <pcbnew.h>
@@ -35,6 +36,8 @@
#include <class_board.h>
#include <kicad_string.h>
#include <io_mgr.h>
#include <macros.h>
#include <stdlib.h>

static PCB_EDIT_FRAME *PcbEditFrame=NULL;

@@ -56,11 +59,14 @@ BOARD* LoadBoard(wxString& aFileName)

BOARD* LoadBoard(wxString& aFileName,IO_MGR::PCB_FILE_T aFormat)
{
	static char ExceptionError[256];
#ifdef USE_NEW_PCBNEW_LOAD
	try{
	   return IO_MGR::Load(aFormat,aFileName);	
	} catch (IO_ERROR)
	} catch (IO_ERROR e)
	{
		sprintf(ExceptionError, "%s\n", TO_UTF8(e.errorText) );
		PyErr_SetString(PyExc_IOError,ExceptionError);
		return NULL;
	}
#else
@@ -77,7 +83,7 @@ bool SaveBoard(wxString& aFilename, BOARD* aBoard)
bool SaveBoard(wxString& aFileName, BOARD* aBoard,
                IO_MGR::PCB_FILE_T aFormat)
{

  static char ExceptionError[256];
#ifdef USE_NEW_PCBNEW_LOAD
  aBoard->m_Status_Pcb &= ~CONNEXION_OK;
  aBoard->SynchronizeNetsAndNetClasses();
@@ -101,8 +107,11 @@ bool SaveBoard(wxString& aFileName, BOARD* aBoard,
     IO_MGR::Save( aFormat, aFileName, aBoard, &props );
     return true;
  } 
  catch (IO_ERROR)
  catch (IO_ERROR e)
  {
	sprintf(ExceptionError, "%s\n", TO_UTF8(e.errorText) );
	PyErr_SetString(PyExc_IOError,ExceptionError);

        return false;
  }

+2 −1
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@
/* exception handling */

/* the IO_ERROR exception handler, not working yet... */
/*
%exception
{
  try {
@@ -92,7 +93,7 @@
    return NULL;
  }
}

*/


%include <dlist.h>