diff --git a/pcbnew/scripting/pcbnew.i b/pcbnew/scripting/pcbnew.i index bda640a789..32baad7083 100644 --- a/pcbnew/scripting/pcbnew.i +++ b/pcbnew/scripting/pcbnew.i @@ -36,6 +36,7 @@ %{ #include #include + #include #include #include #include @@ -43,12 +44,17 @@ #include #include #include + #include + #include + #include + #include #include #include #include #include #include #include + BOARD *GetBoard(); /* get current editor board */ %} @@ -61,6 +67,7 @@ #endif %include +%include %include %include %include @@ -68,12 +75,17 @@ %include %include %include +%include +%include +%include +%include %include %include %include %include %include + /* the IO_ERROR exception handler, not working yet... */ %exception { @@ -86,6 +98,64 @@ } } +/* Cast downs from EDA_ITEM/BOARD_ITEM to childs */ + + +%inline +{ + BOARD_ITEM* Cast_to_BOARD_ITEM(EDA_ITEM* base) { return dynamic_cast(base); } +} + +%extend BOARD_ITEM +{ + TEXTE_PCB* Cast_to_TEXTE_PCB() { return dynamic_cast(self); } + DIMENSION* Cast_to_DIMENSION() { return dynamic_cast(self); } + MODULE* Cast_to_MODULE() { return dynamic_cast(self); } + TEXTE_MODULE* Cast_to_TEXTE_MODULE(){ return dynamic_cast(self); } + DRAWSEGMENT* Cast_to_DRAWSEGMENT() { return dynamic_cast(self); } + MARKER_PCB* Cast_to_MARKER_PCB() { return dynamic_cast(self); } + BOARD* Cast_to_BOARD() { return dynamic_cast(self); } + EDGE_MODULE* Cast_to_EDGE_MODULE() { return dynamic_cast(self); } + D_PAD* Cast_to_D_PAD() { return dynamic_cast(self); } + TRACK* Cast_to_TRACK() { return dynamic_cast(self); } + SEGZONE* Cast_to_SEGZONE() { return dynamic_cast(self); } + SEGVIA* Cast_to_SEGVIA() { return dynamic_cast(self); } + + + + %pythoncode + { + def Cast(self): + ct = self.GetClass() + if ct=="PTEXT": + return self.Cast_to_TEXTE_PCB() + elif ct=="BOARD": + return self.Cast_to_BOARD() + elif ct=="DIMENSION": + return self.Cast_to_DIMENSION() + elif ct=="DRAWSEGMENT": + return self.Cast_to_DRAWSEGMENT() + elif ct=="MGRAPHIC": + return self.Cast_to_EDGE_MODULE() + elif ct=="MODULE": + return self.Cast_to_MODULE() + elif ct=="PAD": + return self.Cast_to_D_PAD() + elif ct=="MTEXT": + return self.Cast_to_TEXTE_MODULE() + elif ct=="ZONE": + return self.Cast_to_SEGZONE() + elif ct=="VIA": + return self.Cast_to_SEGVIA() + elif ct=="TRACK": + return self.Cast_to_TRACK() + else: + return None + } +} + + + %include #ifdef BUILD_WITH_PLUGIN