← Back to team overview

kicad-developers team mailing list archive

Re: Patch to fix pcbnew example scripts and SWIG interface

 

On 4/15/2013 5:35 AM, Miguel Angel Ajo wrote:
> Hi Matthew, sorry for my slow response,but finally I could check and
> commit your patch, thanks for the 2nd version too. It's in release 4100
> 
> I found the GetText/TextPosition missing in TEXTE_PCB too,  I think we
> should ask Wayne Stambaugh,
> 
> Wayne, What should we use one to get a TEXTE_PCB position?

GetTextPosition().  The TEXTE_PCB object does not have a GetPosition()
function.  I apologize for breaking the Python scripting support.  In
the future I will try to be more aware of the impact of my changes to
the Python scripting.  To help mitigate the problem int the future,
please avoid directly accessing public member variables and use the
access functions whenever they are available.  I knew encapsulating
EDA_TEXT was going to cause problems but it's been on my personal to do
list for a long long time.  I just couldn't stand it any more so I broke
down an fixed it.  Thank you for your patience and your help.

Best Regards,

Wayne

> 
> Miguel Angel Ajo
> http://www.nbee.es <http://www.nbee.es/>
> +34911407752
> skype: ajoajoajo
> 
> On Wednesday, 10 de April de 2013 at 22:21, Matthew Beckler wrote:
> 
>> Thanks for the feedback, I have prepared a new patch that removes the
>> simple pass-through python-only accessor methods as discussed. I
>> applied the changes to the scripting example files, and tested the
>> createPcb.py and listPcbLibrary.py. There was a problem with the
>> listPcb.py script, in trying to call GetText() and GetPosition() on a
>> TEXTE_PCB object. I am not sure how to fix that one immediately
>> offhand, but I will look into it more in the next days.
>>
>> Thanks,
>> Matthew Beckler
>> Wayne and Layne, LLC
>>
>>
>> On Mon, Apr 8, 2013 at 7:22 PM, Cirilo Bernardo
>> <cirilo_bernardo@xxxxxxxxx <mailto:cirilo_bernardo@xxxxxxxxx>> wrote:
>>> Using 'XXX()' instead of 'GetXXX()' makes more sense if you're
>>> replacing a pair of Get/Set routines, but this is really only a
>>> consistency issue with Python.
>>>
>>> - Cirilo
>>>
>>> PS. Sorry for the top post; goddamned Yahoo doesn't allow a user to
>>> create messages in a sensible fashion anymore.  Stinking google's
>>> screwing things up too.  Is there anyone out there who still gives
>>> you good old plain text and quoting/indentation?
>>>
>>>
>>>
>>> >________________________________
>>> > From: Miguel Angel Ajo <miguelangel@xxxxxxx <mailto:miguelangel@xxxxxxx>>
>>> >To: Matthew Beckler <matthew.beckler@xxxxxxxxx <mailto:matthew.beckler@xxxxxxxxx>>
>>> >Cc: KiCad Developers <kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>>> >Sent: Tuesday, April 9, 2013 6:27 AM
>>> >Subject: Re: [Kicad-developers] Patch to fix pcbnew example scripts and SWIG interface
>>> >
>>> >
>>> >Hey, thanks a lot Matthew, 
>>> >
>>> >
>>> >    This happened because of the ongoing class interface cleanup Wayne is working on, 
>>> >    I will apply the patch as soon as I check it,
>>> >
>>> >
>>> >    I put the GetValue / GetPads, etc in place, to be ready for those changes,
>>> >but then It seems that later I forgot while writing the examples..
>>> >
>>> >
>>> >     I think that it could make sense to change the GetXXX() to XXX() directly, just
>>> >removing the wrappers, and keeping everything else the same way.
>>> >
>>> >
>>> >     What do you think?
>>> >
>>> >
>>> >Greetings,
>>> >Mike.
>>> >
>>> >
>>> >     
>>> >
>>> >
>>> >Miguel Angel Ajo
>>> >http://www.nbee.es/
>>> >+34911407752 <tel:%2B34911407752>
>>> >skype: ajoajoajo
>>> >
>>> >
>>> >On Monday, 8 de April de 2013 at 21:43, Matthew Beckler wrote:
>>> >Hello,
>>> >>
>>> >>
>>> >>I've been trying to explore the python scripting interface for pcbnew. I see that some changes have been made to the pcbnew/class_module.h file, such that GetReference() returns a wxString& and Reference() returns the TEXTE_MODULE& itself.
>>> >>
>>> >>
>>> >>To get the scripting examples to work again, I made a few small changes in pcbnew/scripting/module.i :
>>> >>
>>> >>
>>> >>=== modified file 'pcbnew/scripting/module.i'
>>> >>--- pcbnew/scripting/module.i2012-05-16 09:35:18 +0000
>>> >>+++ pcbnew/scripting/module.i2013-04-08 19:27:00 +0000
>>> >>@@ -33,10 +33,10 @@
>>> >>   %pythoncode
>>> >>   {
>>> >>      
>>> >>-    def GetPads(self):      return self.m_Pads
>>> >>-    def GetDrawings(self):            return self.m_Drawings
>>> >>-    def GetReferenceObj(self):      return self.m_Reference
>>> >>-    def GetValueObj(self):      return self.m_Value
>>> >>+    def GetPads(self):                return self.Pads()
>>> >>+    def GetDrawings(self):            return self.GraphicalItems()
>>> >>+    def GetReferenceObj(self):        return self.Reference()
>>> >>+    def GetValueObj(self):            return self.Value()
>>> >>      
>>> >>     #def SaveToLibrary(self,filename):
>>> >>     #  return SaveModuleToLibrary(filename,self)
>>> >>@@ -52,10 +52,10 @@
>>> >>     
>>> >>     if type(itemC) is D_PAD:
>>> >>     item.thisown=0
>>> >>-    self.m_Pads.PushBack(itemC)
>>> >>+    self.GetPads().PushBack(itemC)
>>> >>     elif type(itemC) in [ TEXTE_PCB, DIMENSION, TEXTE_MODULE, DRAWSEGMENT,EDGE_MODULE]:
>>> >>     item.thisown = 0
>>> >>-    self.m_Drawings.PushBack(item)
>>> >>+    self.GetDrawings().PushBack(item)
>>> >>   }
>>> >>   
>>> >> }
>>> >>
>>> >>
>>> >>I also made some changes to two of the example scripts in pcbnew/scripting/examples/ to work with these new functions instead of accessing e.g. m_Reference directly (as that member is now Private).
>>> >>
>>> >>
>>> >>Hopefully I have prepared the patch correctly and followed all coding standards. Please let me know if I need to fix the patch in any way.
>>> >>
>>> >>
>>> >>Thanks much,
>>> >>Matthew Beckler
>>> >>
>>> >>Wayne and Layne, LLC
>>> >>_______________________________________________
>>> >>Mailing list: https://launchpad.net/~kicad-developers
>>> >>Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> >>Unsubscribe : https://launchpad.net/~kicad-developers
>>> >>More help   : https://help.launchpad.net/ListHelp
>>> >>
>>> >>Attachments:
>>> >>- mbeckler_patch_pcbnew_scripting_module_createPcb_createFPC40.py
>>> >
>>> >
>>> >_______________________________________________
>>> >Mailing list: https://launchpad.net/~kicad-developers
>>> >Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>>> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>>> >Unsubscribe : https://launchpad.net/~kicad-developers
>>> >More help   : https://help.launchpad.net/ListHelp
>>> >
>>> >
>>> >
>>
>>
>> Attachments:
>> - mbeckler_pcbnew_scripting_unencapsulate.patch
> 



Follow ups

References