[Gambas-user] Proposal: Add-Ins for the Gambas3 IDE

Bruce bbruen at ...2308...
Tue Aug 14 07:10:39 CEST 2012


Dear folks,

I hope you can forgive the long post and manage to wade through the
following.

Introduction
------------
This (the attached) project is a "proof of concept" (herafter "POC") for
a means to add a capability to the Gambas3 IDE to allow add-in programs
to be called directly from within the IDE.  As a POC, there are many
unimplemented features and requirements but it suffices to demonstrate
the concept at a minimal level of complexity.

It has been distributed by Paddys-Hill dot Net in order to guage whether
there is an initial level of interest in the idea within the Gambas
community and to garner any feedback regarding the concept or its
current vision for deployment.

Disclaimer
----------
Subject to the level of interest displayed, Paddys-Hill dot Net may at
its own discretion continue the development of the concept with view to
having it included in the public Gambas 3 product.  There is no
guarantee, express or implied in that, that the concept will be
developed further by Paddys-Hill dot Net.

Background
----------
Over the last years, Paddys-Hill dot Net has developed a set of utility
programs that assist the Gambas programmer. We imagine the same has
occurred in other Gambas 3 development organizations and even in the
case of single developers who use Gambas 3 for their own private
programming purposes.
However, our utilities (and we imagine, yours) are not integrated into
the Gambas IDE and so are not readliy accessible from within the IDE.
In short, they are stand alone programs (developed mainly in Gambas)
that are started when needed from menus, desktop icons etc etc.
Some time ago, (Gambas 2.19??) I started looking into how these utilites
could be incorporated into the IDE and yet remain outside the core
Gambas product.  In other words, how to "add something in" to the IDE
without affecting it. I had little success under Gambas 2 and put the
idea, and work on it, on hold.  Recently, I have revitalised the idea
and we have progressed it to a much more stable base under Gambas 3.
There is still a lot of work to be done yet though!

Concepts, Requirements and Principals
-------------------------------------
1) The entire management and administration of add-ins should be
encapsulated and separate from the main IDE code, i.e. in short, it
should all reside in a Gambas 3 Component.
2) The interaction of the IDE with the component must be kept at an
absolute minimum in order to preserve the stability of the Gambas IDE.
3) No add-in should require direct support from the IDE.  That is, there
should be no code changes to the IDE necessary to support a specific
add-in.
4) Add-ins (i.e. the payload part) could be any executable.  To expand
that, I foresee three general types of addins: utilities written in
Gambas code and run as a normal executable; utilities based on external
code that are "wrapped" in a Gambas framework to provide the add-in
infrastructure; and "simple" external utilities/programs where it may be
"handy" to invoke from within the IDE.  
5) There "may be" information flow from the IDE to the add-in when it is
started (handled by the "manager" component) but initially and for some
forseeable future, there will be no information flow back from the
add-in to the IDE.  This is again so there is no impact on the IDE.
6) Add-in management should persist between invocations of the IDE on a
per user basis. That is, if the user enables an add-in during an IDE
session, then it should be enabled again automatically when another IDE
session is started.  (In other words, the manager will use the Settings
component and the users gambas3.config file to store the enabled
add-ins.)
7) Closing the IDE should close all instances of add-ins started and
running for that session.

The POC project
---------------
The POC is contained in a single source archive attached "addinmeta1".
It consists of a simple main form (FTest) that emulates the IDE in a
@@very rudimentary@@ way.  (Note: It does contain extraneous matter due
to where it came from. These other "features" should be ignored.) 
The other major contents are the FAIManager form, which provides the
administration of add-ins and is the only thing "visible" to our "IDE". 

The "IDE" form (FTest) shows that the only changes that would be needed
in the Gambas IDE. These are :
        * addition of the "Add Ins" menu item in the Tools menu
        * addition of a private global variable "$addinmgr" to reference
        the manager
        * instantiation of the $addinmgr when the IDE form is first
        opened, and
        * a call to the $addinmgr.CloseAll method issued when the IDE is
        closed.
        
In order to demonstrate the concept, we have also attached a simple
addin that opens a virtual terminal (woohoo!) Not very useful I know,
but we are POC'ing here! It is in the "runterminal_simple" autotools
archive.

To have a look at the demonstration:
------------------------------------
1) Unpack and install the runterminal_simple app somewhere handy.
2) Unpack the addinmeta archive somewhere and open the contained project
in the Gambas3 IDE. (This is important!)
3) Run the project from within the Gambas IDE
        a) Select the File|Open menu item and load one of the source
        files (just to give a feeling of the fake IDE, hereafter called
        the Add-Ins POC)
        b) Select Tools|Add Ins|Manager menu item, this will open the
        Manager 
        c) Click on the blue "+" button (Register a new add-in),
        navigate to where you placed the runterminal_simple executable
        and select it (the .gambas file!) and click OK
        d) This registers the addd-in and automatically activates it.
        e) Click the OK button in the Manager form (saves the Settings
        for the add-in, if you click Cancel the add-in is active for the
        current "Add-Ins POC" session only!)
        f) You should now have a new menu item in the Add Ins menu
        "runterm_simple" and clicking on it should (hopefully !) open
        the default terminal for your desktop.
        g) Leave the terminal running and close the "Add-Ins POC". The
        terminal should also close.
        h) IMPORTANT.  The POC process will not terminate properly. This
        is because of Issue #306. Just use the "stop run" button in the
        Gambas IDE.
        i) Have a play around with the POC.
        
Outstanding Items/Bugs/etc
--------------------------
Apart from issue #306, there are some other problems evident in the POC.
Sometimes the terminal will not close, it loses connection with the POC
somehow. The Manager form is incomplete if you look at the full set of
properties that need to be massaged to complete the add-in profile.  etc
etc.  It's just a POC!

Next Steps
----------
Ours
----
We will be continuing the development of the POC for our own use and if
people are interested we will release a stable component version for
Benoit to consider for inclusion.

Yours
-----
Please let me know if you think this might be a valuable feature for the
IDE
Please let me know if you'd like to help!!!!


Thanks for you patience in reading this rather long and large posting
best regards
Bruce
-------------- next part --------------
A non-text attachment was scrubbed...
Name: addinmeta1-0.0.6.tar.gz
Type: application/x-compressed-tar
Size: 25520 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20120814/4295e15a/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: paddys-hill-runterm_simple-0.0.4.tar.gz
Type: application/x-compressed-tar
Size: 60558 bytes
Desc: not available
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20120814/4295e15a/attachment-0001.bin>


More information about the User mailing list