RE: Help with plugin concept

new topic     » goto parent     » topic index » view thread      » older message » newer message

This is exactly why i wanted "eval" type commands.
http://www.topica.com/lists/EUforum/read/message.html?mid=1715848930&sort=d&start=28405



Derek Parnell wrote:
> 
> 
> > -----Original Message-----
> > From: Judith Evans [mailto:camping at txcyber.com]
> > Sent: Friday, 13 February 2004 9:42 AM
> > To: Eu Forum
> > Subject: Help with plugin concept
> >
> >
> > I've been working on a plugin for IDE as a test of concept.
> > I've worked up
> > the first plugin which will open a window in Code Editor to view code
> > statements for all windows/controls in the order exw would
> > generate them. It
> > all works very nice as long as in IDE.exw I hard-code the
> > statement "include
> > ViewCodeBase.plg". Since I will never know the plugin file
> > names the users
> > write for IDE or even if user is using any, what I wanted to
> > do was place
> > the plugin files in a subfolder named Plugins. After all the include
> > statements in IDE.exw I wanted to read the Plugins folder and
> > add an include
> > statement for each file name found as follows:
> >
> > --get includes from plugin folder
> > object files
> >
> > files=dir(the_current_dir & "//Plugins")
> > if sequence(files) then
> >     if length(files) then
> >         for i=1 to length(files) do
> >             if not equal("d",files[i][D_ATTRIBUTES]) then
> >               include viewCodeBase.plg    <=== gets ex.err
> >             end if
> >         end for
> >     end if
> > end if
> >
> > Ha. I forgot Euphoria would not allow the include statement
> > except at the
> > highest level. So am I out of luck? Any idea how to get
> > around the problem?
> >
> 
> You have some important design considerations to settle on first.
> 
> Do you want a plugin to be 'registered' when the IDE starts (the 
> "include"
> method) or after it starts (via some type of load method)?
> 
> The "include" method means that either someone needs to alter your code 
> or
> must stick to a specific file naming convention so your code can 
> 'hard-code'
> the include file name.
> 
> The "load" method means that the plugin cannot be Euphoria code AND run 
> in
> the same process space as the IDE. If you want it to run in the IDE's
> process, it needs to be a runtime-loadable file such as a DLL. If you 
> want
> it to be interpretred Euphoria code, you could start up a new instance 
> of
> Euphoria to run it in its own process space and then communicate with it 
> via
> Inter-Process-Communications API.
> 
> Each decision has its own good points and bad points. At some stage you 
> need
> to make concessions/trade-offs.
> 
> My choice would be to have plugins run in their own process space and 
> use an
> IPC to pass data between the IDE and the plugin.
> 
> After you have made this decision, you then have to develop a protocol 
> or
> API that the plugin writer can use. The plugin writer needs to know how 
> the
> IDE will communicate etc...
> 
> This is not a trival task. I believe Mario Steele has got some 
> experience
> with making this concept work with Euphoria programs.
> 
> --
> Derek
> 
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu