From: Guy Footring
Subject: Advice sought:  LWW and GUI development.
Date: 
Message-ID: <wtemt5ogig.fsf@thcsv01.trafford.ford.com>
If anyone could offer me some advice on building good GUIs for the PC using
LWW I'd be grateful to receive any ideas going or comments of other people's
experience in this domain.

Background:
I am part way through porting an application from Solaris to the PC.  The
program under Unix is architected a Lisp engine (already ported) with the
Motif GUI being a separate process written in a combination of C and a
script language that came with the GUI builder used.  The GUI and the Lisp
engine talked using RPC with an interface between the two of about 60
different functions.  One of the GUI requirements is a very flexible table
widget, something like Excel spreadsheets, with resizable columns and the
ability to (un)hide individual columns.

Problems with a native Lisp GUI for the PC:
1. There is some management reservation about moving more of the product
   into Lisp. This could be overcome if the lisp tools were technically
   advanced enough that the timesaving was overwhelming.
2. LWW doesn't have a table widget to do Excel-like spreadsheets (either in 
   CAPI or CLIM).  Coding one using their CAPI interface looks to be a major 
   headache, in part due to the overly terse documentation.

Current ideas:
1. Write the GUI in VB and dump the Lisp engine as a DLL that is called
   from the VB side (I need to look into any issues around Lisp as a DLL
   since that isn't available until LWW 4.1).
2. Write the GUI in VB and dump that as an "ActiveX DLL", and call the
   GUI from Lisp as a COM component (VB doesn't seem able to dump true DLLs).
   Problems:  LWW doesn't have native COM support, so I'd need to write this 
              myself.  I'd need to use Connectable Objects to get the GUI 
              events fielded back to the Lisp engine, I don't know how hard 
              this is from VB, or how the callbacks would be fielded from the
              Lisp side.
3. Write the GUI in VC++ and dump the GUI as a DLL called from Lisp.
   Problems:  None really, but VC++ seems harder to use than VB.


Management has a fairly strong preference to use VB rather VC++ if possible,
but VC++ is acceptable.  A native Lisp solution might be possible if the
benefits were strong, but lack of a good table widget is the major blocker
at the moment.

Thanks for advice going.
Guy Footring

From: Francis Leboutte
Subject: Re: Advice sought: LWW and GUI development.
Date: 
Message-ID: <360896a4.1466288@192.168.1.250>
Guy Footring <········@thcsv01.trafford.ford.com> wrote:

>If anyone could offer me some advice on building good GUIs for the PC using
>LWW I'd be grateful to receive any ideas going or comments of other people's
>experience in this domain.
>
>Background:
>I am part way through porting an application from Solaris to the PC.  The
>program under Unix is architected a Lisp engine (already ported) with the
>Motif GUI being a separate process written in a combination of C and a
>script language that came with the GUI builder used.  The GUI and the Lisp
>engine talked using RPC with an interface between the two of about 60
>different functions.  One of the GUI requirements is a very flexible table
>widget, something like Excel spreadsheets, with resizable columns and the
>ability to (un)hide individual columns.
>
>Problems with a native Lisp GUI for the PC:
>1. There is some management reservation about moving more of the product
>   into Lisp. This could be overcome if the lisp tools were technically
>   advanced enough that the timesaving was overwhelming.
>2. LWW doesn't have a table widget to do Excel-like spreadsheets (either in 
>   CAPI or CLIM).  Coding one using their CAPI interface looks to be a major 
>   headache, in part due to the overly terse documentation.
>

Are you to tied to LWW? There is a grid-widget in Common Graphics (ACL5 -
MSWindows only, at present time), which maybe matches your requirements.
Here is an excerpt from the documentation:

grid-widget
Package: common-graphics 
Class 

The class of a grid-widget control. This is a control containing an inner
grid and acting much like a spreadsheet or table.

Control

An instance of the :grid-widget class. This is a rather complex control. It
displays as a rectangular array of cells and can be used to implement
applications such as spreadsheets. 
A grid can have multiple sections of rows and columns, where each section
may be independently scrolled and resized by dragging its border. The rows
or columns within each section can also be resized as well as moved,
selected, deleted and so on whenever each is specified to have those
features. Rows and columns are collectively called subsections. Subsections
may be added and removed programmatically at runtime.

Each section and subsection is implemented as a standard-object. An
individual cell does not have a Lisp object to represent it, since these
objects would increase quadratically, and is instead accessed via
multimethods that specialize on the row and column whose intersection
defines the cell.
Several predefined column classes implement pseudo-widgets such as
check-boxes, combo-boxes, and editable-text fields within their cells.
Custom behavior can be implemented in other cells by writing cell-click and
draw-cell methods.

Typically, an application will associate a domain data object with each row
of a grid. Each grid column will then have accessor methods that know how
to access the particular attribute of a domain object that is displayed in
that column. A framework for this is provided by the default column
classes.
Adding a grid-widget control to your form
Click the grid-widget tool on the Component toolbar. Move the mouse cursor
to the part of the form where you want to place the control, and click
again. The control will appear with colored resizing handles. 

Resizing and moving the control
Controls can only be resized and moved on forms during the design stage;
the size and location of everything is fixed on a running form.
Resize the control by clicking the mouse cursor and dragging one of the
handles to the new size-point. Release the mouse key when you are satisfied
with the new size.  
Resizing this control will change the size of the bounding box, i.e., the
space in which the cells can be viewed. Resizing does not alter the height
and width of the rows and columns as it sometimes does in a spreadsheet
application.

Move the control by clicking anywhere on it except a resizing handle and
dragging it to a new location on the form. Release the mouse key when you
are ready to place the control.
Customizing the grid-widget
..

FL.
--
Francis Leboutte
··········@skynet.be ········@acm.org  http://users.skynet.be/algo
From: Guy Footring
Subject: Re: Advice sought: LWW and GUI development.
Date: 
Message-ID: <wtd88nndd7.fsf@thcsv01.trafford.ford.com>
··········@skynet.be (Francis Leboutte) writes:

> 
> Guy Footring <········@thcsv01.trafford.ford.com> wrote:
> 
> >If anyone could offer me some advice on building good GUIs for the PC using
> >LWW I'd be grateful to receive any ideas going or comments of other people's
> >experience in this domain.

  [...]

> Are you to tied to LWW? There is a grid-widget in Common Graphics (ACL5 -
> MSWindows only, at present time), which maybe matches your requirements.
> Here is an excerpt from the documentation:
> 

  [...]

I'm hoping to get my own copy of ACL5 soon, so I'll be able to check this
out for my own interest.  From the documentation you posted it looks like
the ACL table widget might be just the thing.  Unfortunately the Franz
pricing has made it a non-option for the project I'm working on, despite
probably being the better option technically :-( The Franz product is about
4 or 5 times the price of Harlequin's LWW, enough to buy LWW and Visual
Studio, AND have significant change...  and that's before worrying about
whether the project would need a copy of the ACL Enterprise Edition.  I've
talked to the project manager about ACL 5.0, but the discussion stops at the
price.  If the costs were comparable I might have been able to swing doing
the UI in lisp - but I guess you get what you pay for...

Marc Hoffman suggested tcl/tk as another alternative, and I seem to remember
seeing a Lisp binding for that in one of the code archives so I'll look into
whether that's a better option than the MS tools.

Thanks for the comments,
Guy.

> 
> FL.
> --
> Francis Leboutte
> ··········@skynet.be ········@acm.org  http://users.skynet.be/algo
From: Francis Leboutte
Subject: Re: Advice sought: LWW and GUI development.
Date: 
Message-ID: <360c3b7a.6748874@192.168.1.250>
Guy Footring <········@thcsv01.trafford.ford.com> wrote:


> ...
>I'm hoping to get my own copy of ACL5 soon, so I'll be able to check this
>out for my own interest.  From the documentation you posted it looks like
>the ACL table widget might be just the thing.  Unfortunately the Franz
>pricing has made it a non-option for the project I'm working on, despite
>probably being the better option technically :-( The Franz product is about
>4 or 5 times the price of Harlequin's LWW, enough to buy LWW and Visual
>Studio, AND have significant change...  and that's before worrying about
>whether the project would need a copy of the ACL Enterprise Edition.  I've
>talked to the project manager about ACL 5.0, but the discussion stops at the
>price.  If the costs were comparable I might have been able to swing doing
>the UI in lisp - but I guess you get what you pay for...

The cost doesn't stop at the price of the software. How many hours are you
going to spend about to find a "cheap" tool, learn it, implement the UI and
maintain it? I am afraid the use of Tcl/tk or something else will be a
source of difficulty and increase the cost of maintenance.

>
>Thanks for the comments,

C'�tait avec plaisir,

Francis
--
Francis Leboutte
··········@skynet.be ········@acm.org  http://users.skynet.be/algo
From: Bill House
Subject: Re: Advice sought: LWW and GUI development.
Date: 
Message-ID: <M5EO1.80148$K35.25754521@news.rdc2.occa.home.com>
FWIW, I've done lots of work using VB/Lisp, doing the GUI in VB and talking
to the Lisp engine as a DLL or an ActiveX DLL (not ACL or LWW, but another
Lisp engine called AgentServer.   The combination worked really well for me.
As a table widget, check out Far Point's Spread OCX. This spreadsheet
control includes a ClipText property that automagically parses a
tab-delimited string into rows and columns. Also, the virtual memory mode
provides events that let you navigate an enormous virtual table by feeding
the cliptext property screen-sized chunks of tab-delimited text.  So, if
your Lisp dll can return results as tabbed strings (or other Variant) from
an Eval() function, life is easy. <g>

Bill House

Guy Footring wrote in message ...
>··········@skynet.be (Francis Leboutte) writes:
>
>>
>> Guy Footring <········@thcsv01.trafford.ford.com> wrote:
>>
>> >If anyone could offer me some advice on building good GUIs for the PC
using
>> >LWW I'd be grateful to receive any ideas going or comments of other
people's
>> >experience in this domain.
>
>  [...]
>
>> Are you to tied to LWW? There is a grid-widget in Common Graphics (ACL5 -
>> MSWindows only, at present time), which maybe matches your requirements.
>> Here is an excerpt from the documentation:
>>
>
>  [...]
>
>I'm hoping to get my own copy of ACL5 soon, so I'll be able to check this
>out for my own interest.  From the documentation you posted it looks like
>the ACL table widget might be just the thing.  Unfortunately the Franz
>pricing has made it a non-option for the project I'm working on, despite
>probably being the better option technically :-( The Franz product is about
>4 or 5 times the price of Harlequin's LWW, enough to buy LWW and Visual
>Studio, AND have significant change...  and that's before worrying about
>whether the project would need a copy of the ACL Enterprise Edition.  I've
>talked to the project manager about ACL 5.0, but the discussion stops at
the
>price.  If the costs were comparable I might have been able to swing doing
>the UI in lisp - but I guess you get what you pay for...
>
>Marc Hoffman suggested tcl/tk as another alternative, and I seem to
remember
>seeing a Lisp binding for that in one of the code archives so I'll look
into
>whether that's a better option than the MS tools.
>
>Thanks for the comments,
>Guy.
>
>>
>> FL.
>> --
>> Francis Leboutte
>> ··········@skynet.be ········@acm.org  http://users.skynet.be/algo
From: Tim Bradshaw
Subject: Re: Advice sought: LWW and GUI development.
Date: 
Message-ID: <ey3ww6suro1.fsf@todday.aiai.ed.ac.uk>
* Guy Footring wrote:

> I'm hoping to get my own copy of ACL5 soon, so I'll be able to check this
> out for my own interest.  From the documentation you posted it looks like
> the ACL table widget might be just the thing.  Unfortunately the Franz
> pricing has made it a non-option for the project I'm working on, despite
> probably being the better option technically :-( The Franz product is about
> 4 or 5 times the price of Harlequin's LWW, enough to buy LWW and Visual
> Studio, AND have significant change...  and that's before worrying about
> whether the project would need a copy of the ACL Enterprise Edition.  I've
> talked to the project manager about ACL 5.0, but the discussion stops at the
> price.  If the costs were comparable I might have been able to swing doing
> the UI in lisp - but I guess you get what you pay for...

How much are these actual figures?  If it's 10s of k I can see a
problem, but if it's something like 2k versus 400, then if it saves
you even a few days work it's paid for itself.  Of course your project
manager may not appreciate that point...

--tim
From: see.signature
Subject: Re: Advice sought:  LWW and GUI development.
Date: 
Message-ID: <slrn70hitj.5j.anyone@Flex111.dNWL.WAU.NL>
>Background:
>I am part way through porting an application from Solaris to the PC.  The
>program under Unix is architected a Lisp engine (already ported) with the
>Motif GUI being a separate process written in a combination of C and a
>script language that came with the GUI builder used.  The GUI and the Lisp
>engine talked using RPC with an interface between the two of about 60
>different functions.  One of the GUI requirements is a very flexible table
>widget, something like Excel spreadsheets, with resizable columns and the
>ability to (un)hide individual columns.
>
>Current ideas:
>1. Write the GUI in VB and dump the Lisp engine as a DLL that is called
>   from the VB side (I need to look into any issues around Lisp as a DLL
>   since that isn't available until LWW 4.1).
>2. Write the GUI in VB and dump that as an "ActiveX DLL", and call the
>   GUI from Lisp as a COM component (VB doesn't seem able to dump true DLLs).
>   Problems:  LWW doesn't have native COM support, so I'd need to write this 
>              myself.  I'd need to use Connectable Objects to get the GUI 
>              events fielded back to the Lisp engine, I don't know how hard 
>              this is from VB, or how the callbacks would be fielded from the
>              Lisp side.
>3. Write the GUI in VC++ and dump the GUI as a DLL called from Lisp.
>   Problems:  None really, but VC++ seems harder to use than VB.
>
You could use also tcl/tk as your front end. Besides it is cross platform
(UNIX, win). There are also table widgets.

-- 
------------------------------------------------------------------------------
email: marc dot hoffmann at users dot whh dot wau dot nl
------------------------------------------------------------------------------