David, Thank you so much! I really appreciate your help with this. Your
sample below builds fine with polyc on my system (PolyML 5.5.2). I am using
a minimal Linux distribution named TinyCore (
http://distro.ibiblio.org/tinycorelinux/) which comes with OpenMotif 2.3.3
 It runs in a virtual machine within another computer only taking up a few
hundred MBs!

I am going to use it to help my students explore Discrete Math next
semester (this textbook uses SML for that purpose:
http://cs.wheaton.edu/~tvandrun/dmfp/).

I also found a reasonably current project using PolyML and Motif here:
http://www.lemma-one.com/ProofPower/index/

...however it was built on PolyML 4 and has not yet been ported to the
newer version (e.g. depends on PolyML.commit which no longer seems to be
supported).

Happy Holidays to everyone in the PolyML community!

-David Topham


>    Re: GUI Interface (David Matthews)
>
> I've experimented with building a stand-alone executable with Motif and
> succeeded in getting it to work for me using polyc.  (It required
> building Poly/ML with --with-x).  I took the example from
> http://www.polyml.org/docs/Motif.html and wrapped it up in a function.
> I did find a problem, though.  It looks as though the function has to
> suspend itself with something like Posix.Process.pause otherwise nothing
> happens.  I seem to recall that the Motif stuff is handled on a separate
> thread to allow the REPL to continue to accept commands.  With a
> stand-alone application there isn't a REPL so without the "pause" it
> terminates immediately.
>
> David
>
> open XWindows ;
> open Motif ;
>
> fun main() =
> let
> val shell =
>      XtAppInitialise "" "xed" "Editor" [] [XmNwidth 400, XmNheight 400] ;
>
> val main = XmCreateMainWindow shell "main" [] ;
>
> val bar = XmCreateMenuBar main "bar" [] ;
>
> val fileMenu = XmCreateCascadeButton bar "file" [XmNlabelString "File"] ;
> val editMenu = XmCreateCascadeButton bar "edit" [XmNlabelString "Edit"] ;
> val viewMenu = XmCreateCascadeButton bar "view" [XmNlabelString "View"] ;
> val helpMenu = XmCreateCascadeButton bar "help" [XmNlabelString "Help"] ;
>
> val command = XmCreateText main "command" [XmNeditMode XmSINGLE_LINE_EDIT]
> ;
>
> val hscroll = XmCreateScrollBar main "hscroll" [XmNorientation
> XmHORIZONTAL] ;
> val vscroll = XmCreateScrollBar main "vscroll" [XmNorientation XmVERTICAL]
> ;
>
> val work = XmCreateDrawingArea main "work" [] ;
> in
>
> XtManageChildren [fileMenu, editMenu, viewMenu, helpMenu] ;
> XtManageChildren [bar, command, hscroll, vscroll, work] ;
>
> XmMainWindowSetAreas main bar command hscroll vscroll work ;
>
> XtManageChild main ;
> XtRealizeWidget shell;
> Posix.Process.pause()
> end;
>
>
> ------------------------------
>
> _______________________________________________
> polyml mailing list
> [email protected]
> http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
>
> End of polyml Digest, Vol 110, Issue 12
> ***************************************
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
>
_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to