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
