← Back to team overview

kicad-developers team mailing list archive

Re: About Scripting and object interface changes,

 

On 3/14/2013 11:45 AM, Miguel Angel Ajo Pelayo wrote:
> First and important: Encapsultion must go first, I'm not against it but the opposite. Read what follows for clarification:
> 
> 
> My concern is about the scripts that build functionality on kicad objects, scripts that people will build and
> should be maintained separately to KiCad. Now it's not important at all because the scripting base is tiny-0,
> when it grows, and we make changes to scriptable object interfaces, we will have to take care about this.
> 
> So the earlier we encapsulate, the better.

This is a work in progress.  I think we are getting to the point where
there is not too much encapsulation work left.  However, this is only
the first step in the process.  One of the proposed changes is to create
a standard geometric model for all base objects in Pcbnew and Eeschema
which means there will likely be some substantial changes to the base
objects.  Once the encapsulation work is complete, there should be an
effort made to clean up the some of the low object interfaces to make
them more coherent.

> 
> And in the future, if we change method names, we should (in the script side) provide some fallback/translation 
> methods with deprecation warning.
> 
> * Automated testing:
> 
> , I think the scripting to-do should contain the making of a good bunch of test cases that cover all possible
> object operations that we are willing to support. I talked with Adam Wolf about that, it could be great
> to get them automatically checked on every commit, we can also extend this to check internal KiCad behaviors 
> in an automated way :)
> 
> 
> * About build dependencies & swig:
> 
> 
> 
> Compilation must always work, at this moment, cmake isn't able to fetch dependencies from .i files to .h files, 
> or at least, I wasn't able to set it up.
> 
> In my case I just remove the pcbnew_wrapper.cpp and scripting/pcbnew_wrapper.cxx and called
> make again, so it compiled gracefully.  
> 
> Getting dependencies for that automatically would be highly desired, and must be in my todo list at any point.
> 
> 
> 
> 
> 
> 
> Miguel Angel Ajo
> http://www.nbee.es
> +34911407752
> skype: ajoajoajo
> 
> On 14/03/2013, at 16:37, Wayne Stambaugh <stambaughw@xxxxxxxxxxx> wrote:
> 
>> On 3/14/2013 11:07 AM, Miguel Angel Ajo Pelayo wrote:
>>> http://bazaar.launchpad.net/~kicad-testing-committers/kicad/testing/revision/4001
>>>
>>> Hehe, nice cleanup, it's something that must be done.
>>>
>>> Anyway, interface changes to core objects, should be tracked carefully
>>> once we have scripting published, 
>>> a change like this could break scripts working on the field:
>>>
>>> 151
>>>
>>>    void SetPos( const wxPoint& aPoint ) { m_Pos = aPoint; }
>>> 152
>>>
>>>    const wxPoint GetPos() const { return m_Pos; }
>>>
>>> 174
>>>    void SetPosition( const wxPoint& aPoint ) { m_Pos = aPoint; }
>>>
>>> 175
>>>    const wxPoint GetPosition() const { return m_Pos; }
>>>
>>>
>>> My opinion is, these changes need to be done, the cleaner, the better,
>>> but once scripting is widely deployed,
>>> we must provide some (scripting side wrappers) for compatibility, for
>>> example redirecting SetPos to SetPosition on scripting,
>>> and sending an "deprecated" warning for some set of releases.
>>
>> Sorry about that.  I forgot rebuild the Python scripting support to see
>> if I broke anything.  I'm still getting used to the idea that it is now
>> part of KiCad.
>>
>> Doesn't this kind of code automatically get updated the next time the
>> scripting code is reSWIGged or is this something that has to be hand
>> tweaked every time?  I am familiar with SWIG so if need be, I will fix
>> the SWIG stuff from now on.  I'm thinking the python scripting is going
>> to have to closely track the compiled KiCad code for the foreseeable
>> future.  The will be a great of upheaval with the forthcoming footprint
>> library table stuff.  The last thing I want to do is stop the
>> encapsulation work just to support Python scripting.
>>
>>>
>>>
>>>
>>>
>>> Miguel Angel Ajo
>>> http://www.nbee.es
>>> +34911407752
>>> skype: ajoajoajo
>>>
>>
> 
> 



Follow ups

References