On 02/01/2012 04:36 PM, Wayne Stambaugh wrote:
> On 1/31/2012 3:32 PM, Dick Hollenbeck wrote:
>> On 01/31/2012 12:49 PM, jean-pierre charras wrote:
>>> Le 30/01/2012 19:06, Dick Hollenbeck a écrit :
>>>> Jean-Pierre and Tom,
>>>>
>>>>
>>>> Wayne came to stay at our house this weekend.  He is a great guy, even 
>>>> classier than he
>>>> comes across in his emails.
>>>>
>>> I believe it easily.
>>>
>>>> During our visit we talked about many things, one of which was an idea 
>>>> that came in from
>>>> Tom last year.
>>>>
>>>> Attached is a sketch of a class would be compiled multiple times to remove 
>>>> the drawing
>>>> code from the graphical objects, isolating it into a single class.  The  
>>>> advantage is that
>>>> we can use alternative output devices (and graphical or plotting 
>>>> libraries), without
>>>> constantly adding member functions.  The member functions we assume will 
>>>> cause problems
>>>> linking these container objects as DLL/DSOs, in a way that we can put 
>>>> scripting and
>>>> command line processors up on top of them.
>>>>
>>>> I sketched this out this morning, and it provides the basic idea.  We 
>>>> sacrifice
>>>> polymorphism in BOARD_ITEM::Draw(), but the overhead of PAINTER::Draw() is 
>>>> minimal
>>>> relative to other bottlenecks.  It will simply mean you call 
>>>> PAINTER::Draw() almost
>>>> everywhere.
>>>>
>>>> To interpret the context of the code, we are assuming the following:
>>>>
>>>> 1) bottom end (data model) PCBNEW code will be linked into a DLL/DSO
>>>>
>>>> 2) bottom end (data model) EESCHEMA code will be linked into a DLL/DSO.
>>>>
>>>> 3) they will never be linked together, but might operate together under 
>>>> one process.
>>>>
>>>>
>>>> This means we can multiply compile class PAINTER with either
>>>>
>>>> -DEESCHEMA or
>>>> -DPCBNEW
>>>>
>>>> There is no reason to have an inheritance tree in class PAINTER, since it 
>>>> is multiply
>>>> compiled, separately linked.  When and if we ever change
>>>> graphical libraries, we REPLACE it at compile time, not runtime.
>>>>
>>>> Please let me know if you have any questions, and what you guys think.  
>>>> Tom since this was
>>>> originally your idea, I wanted to bounce this off you also.
>> Seems Tom is no longer following the KiCad project :(
>>
>> (or is too busy to even read and reply to his personal email, because I sent 
>> a separate
>> one to him personally.)
>>
>>
>>> I agree.
>>> This approach has some advantages.
>>> And graphical libraries will certainly change in the future.
>> Thanks Jean-Pierre.
>>
>> I guess we can keep this in mind as we free up man-hours.
>>
>> It may be that building DLL/DSOs will require a number of fragments, not 
>> just one
>> horizontal cut per application.  I roughly see:
>>
>> 1) a lower level cut for data model without actions other than load, save 
>> and add and
>> delete elements.  This allows automatic document generation and manipulation 
>> from scripts.
>>
>> 2) a higher level cut for existing actions (without GUI).  This argues for 
>> using some of
>> the actionable "verb" type operations.  The current difficulty is that they 
>> are tied to
>> the wxFrame and I'm not sure this is OK or not yet.  I still think at this 
>> "verb" layer
>> you want no GUI in the actions, because the scripting upper layers would not 
>> need or want
>> them.
> I think most of what is in the wxFrame objects are the settings used for
> printing, plotting, etc.  These settings could easily be passed to the
> appropriate verb operation via parameters or a class to encapsulate
> them.  I don't think that wxFrame derived objects are actually used to
> perform any of the action operations although I could be wrong.
>
> Wayne

Wayne,

That sounds like a good idea.  As you say, if need be, maybe add a controller 
class for
these UI-less portions.

Then you could use multiple inheritance at the PCB_EDIT_FRAME level to 
re-introduce the
controller back into the frame, except that you have it separate from the UI 
when
you need it as such for scripting.

Dick



_______________________________________________
Mailing list: https://launchpad.net/~kicad-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to