← Back to team overview

kicad-developers team mailing list archive

Re: Ideas for kicad

 

I need to spend some time understanding your idea of design, right now I'm
a little bit lost,
but I started by the "simple" part, which was building the swig-js branch,
and it seems
that I managed to do it (it was only ready for WIN32) but I have a patch
for swig-js that
seems to work in linux (partially)...

I was able to generate the example for:

https://github.com/oliver----/swig-js/blob/master/src/Examples/jsv8/class/example.h

and it seems to link to standard libv8 from ubuntu, and run. (It compiled
it's own v8, but it was standard one, no patches).

I think I will try to cleanup the build, and then publishing it.

The swig-js is built using CMake (I'm quite experienced on it) so I could
need some help ':-)




2012/2/22 Dick Hollenbeck <dick@xxxxxxxxxxx>

> On 02/22/2012 09:11 AM, Miguel Angel Ajo Pelayo wrote:
> > I think I could put some efforts on testing it, and see how well the
> "JS" branch of swig
> > does work.
> >
> > Do we have an idea of which interface we may want to give to the
> scripting layers?,
> > access to PCB objects, modules, tracks, etc?
>
> To keep it simple, let me talk about PCBNEW only *for now* (duplicate the
> discussion in
> your mind for EESCHEMA).
>
> class BOARD, and the needed significant objects contained within it.  I
> say needed,
> because I think there is some flexibility as to where you build this
> bridge, either in the
> class BOARD by accessor augmentation in C++ go give access to everything
> there, or by
> SWIGing out the contained classes.
>
> We also talked about moving the non-UI member functions that are now in
> PCB_BASE_FRAME,
> PCB_EDIT_FRAME, into a class which is purely for significant actions but
> with NO UI, like
> plotting, annotating, etc.  The UI portion (meaning the preceding dialog
> invocation) would
> stay out of this class.  conceptually lets call this class BOARD_ACTIONS.
>  All the
> functions in BOARD_ACTIONS take enough parameters to operation *without
> any UI*, by
> definition.
>
>
>
> BOARD_ACTIONS could then be transported into two realms:
>
> a) back into PCB_*_FRAME by multiple inheritance, so you are back to where
> you started
> from with respect to PCB_EDIT_FRAME.
>
> b) into the top of a scripting entry point DLL/DSO.
>
>
> Along with this, it might be useful to try and build a PCBNEW DLL/DSO that
> has the public
> BOARD_ACTIONS, and BOARD entry points exposed.
> The actual PCBNEW program (where main() is), could be a thin layer with
> linked with the UI
> (mostly dialogs and wxFrames).
>
> The plotting and drawing functions themselves might have to be yet a
> separate DLL/DSO.
> Since your BOARD_ACTIONS might actually have to plot or print.
>
> We are finally getting in a position to be able to do this, reduction of
> globals has been
> an enabler in this effort.  There is some more work to do.  We still have
> a number of
> globals, and getting the separation into BOARD_ACTIONS would be some work.
>
> This design I think deals with both the paradigms:
>
> a) scripting calls C++ actions, and
> b) C++ calls scripting, since these calls from C++ would be from the upper
> main() area,
> and you could still call BOARD_ACTIONS and BOARD from the script.
>
> It just does not however deal with the letting the script control the UI.
>  I think that is
> significantly more work, and is probably best done in C++ forever.
>
> I don't anticipate that this would take under two days to do.
>
> :) read carefully now.
>
> Dick
>
>
>
> >
> >
> >
> > 2012/2/22 Dick Hollenbeck <dick@xxxxxxxxxxx <mailto:dick@xxxxxxxxxxx>>
> >
> >     On 02/17/2012 08:56 AM, Miguel Angel Ajo Pelayo wrote:
> >     > Hi Dick,
> >     >
> >     >    Thanks for your feedback on the ideas, it's really appreciated,
> I fully understand
> >     > all of your points, as I'm on the same situation with some open
> projects and my little
> >     > company. I supposed that most of the ideas were already in your
> mind, but if I didn't
> >     > share them I wouldn't know now where do they converge with yours
> :-)
> >     >
> >     >     I really love the V8 engine, just played a little bit on
> embedded systems, and it
> >     > works incredibly fast (it does JIT of the code and you get all the
> flexibility of
> >     > javascript), and nodeJS gives all the functionality needed to
> access the underlaying OS
> >     > and network, although I'm not sure if it's internal design makes
> it suitable to get
> >     > integrated in other apps.
> >     >
> >     >      I'm also using SWIG to build interfaces to many languages,
> and it works incredibly
> >     > well. I must test the swig-js and see how mature is.
> >
> >     We will be interested in finding out what you learn.  JavaScript
> seems to have a lot of
> >     momentum now, and it needs to be looked at in detail.
> >
> >     With HTML5 giving it new life on the client, NodeJS giving it
> further life on the
> >     server,
> >     its C++ like syntax, its standardization by a standards body, it has
> a lot going for it.
> >
> >     And for any one not already knowing a language, one is comforted by
> the fact that
> >     learning
> >     it might serve a real purpose in other areas, (like when you go
> design your next
> >     webpage.)
> >
> >     Dick
> >
> >
> >     >
> >     >     Personally, I'd like to give "some blood" on the project as
> soon as I can and get
> >     > familiar with kicad's code/design :-)
> >     >
> >     >     Cheers,
> >     > Mike
> >
> >
> >     > Two weeks ago I looked into adding support for V8.  V8 is google's
> javascript
> >     engine and
> >     >
> >     >     they use it under the chrome browser.  (You may already have a
> copy on your disk
> >     >     now.)  V8
> >     >     is very fast.  There is another project that sits on top of V8
> called node.js.
> >     >      node.js is
> >     >     great at writing asynchronous webservers, and has been shown
> to actually be
> >     faster than
> >     >     apache in some circumstances.
> >     >
> >     >     My measurement of doing it manually said that it is a lot of
> work.  However
> >     since then I
> >     >     see some folks are trying to add the binding generation
> functionality to SWIG.
> >      SWIG can
> >     >     generate bindings for a number of languages, in theory.
> >     >
> >     >
> >     >
> http://comments.gmane.org/gmane.comp.programming.swig.devel/20373
> >     >     https://github.com/oliver----/swig-js
> >     >
> >     >     This is an ancillary project, and not integrated into core
> SWIG from what I can
> >     tell.
> >     >
> >     >     node.js has gathered so much momentum that it is actually
> changing the choice of
> >     >     languages
> >     >     used on the server side for many web applications.  There are
> two reasons for this
> >     >     that I
> >     >     can see:  a) node.js on top of V8 is fast.  b) being able to
> use javascript
> >     both on the
> >     >     client side and server side is attractive to many developers.
> >     >
> >
> >
> >
> >
> >
> > --
> >
> > Miguel Angel Ajo Pelayo
> > http://www.nbee.es
> > +34 636 52 25 69
> > skype: ajoajoajo
>
>


-- 

Miguel Angel Ajo Pelayo
http://www.nbee.es
+34 636 52 25 69
skype: ajoajoajo

Follow ups

References