[GUI] Re: Gtk and Object I/O

seth@cql.com seth@cql.com
Fri, 24 Jan 2003 09:39:52 -0700 (MST)


Daan,

I didn't know about your code.  I will definitely try it.  Don't keep it a
secret.  :)

On 24-Jan-2003 Daan Leijen wrote:
> Dear gui list members,
> 
> The discussions on this list seem to diverge rather quickly.
> Most importantly for the Haskell community right now is the
> short-term availability of a *some* middle-ground portable gui
> library: worse is better.
> 
> In the past months, Krasimir has worked very hard on creating
> a low-level portable C interface that is implemented for
> both GTK and Windows -- an amazing piece of work, thanks Krasimir!
> In the past weeks, I have put a small Haskell marshalling layer on
> top of the C interface -- the resulting library is called "Graphics.UI.Port"
> (and is available (and haddock documented) from the HToolkit sourceforge
> cvs.)
> 
> Allthough it is not 'complete', the interface is already fairly substantial
> and
> I think it embodies a great *concrete* proposal for a low-level, portable
> GUI interface in Haskell. I really hope that people will give this a good
> look
> and I think we should seriously consider adapting this interface as the
> new standard low-level portable gui interface for Haskell.
> 
> Haddock documentation can be viewed online at:
> http://www.cs.uu.nl/~daan/doc/port
> 
> 
> 
> ------------
> Furthermore, on top of the Port library, I have written a middle-ground
> GUI library to test the suitability of the Port interface. This library is
> called
> "Graphics.UI.GIO", for graphical IO. The name is not without reason,
> the library is middle-ground and all operations are still in the IO monad,
> there is no explicit structure for modelling state.
> 
> The interface is extremely similar to Yahu and TkGofer
> (see http://www.cs.chalmers.se/Cs/Grundutb/Kurser/afp/yahu.html )
> and I have attached some (working!) source code of the famous bouncing
> balls demo to give an impression.
> 
> GIO is still just a skeleton and not yet public, but again, it may be the
> basis
> of a concrete proposal towards a middle ground GUI library. On top of this,
> people
> can build their own fancy interfaces, like FranTk, Fruit, or even ObjectIO.
> (see "Structuring graphical paradigms in TkGofer").
> 
> Haddock documentation can be viewed online at:
> http://www.cs.uu.nl/~daan/doc/gio
> 
> All the best,
>     Daan.
> 
> 
> ------------------
> module Main where
> 
> import Graphics.UI.GIO
> 
> main
>   = start balls
> 
> balls
>   = do vballs <- newVar []
>           w <- window [title =: "Bouncing balls", resizeable =: False, view
> =: sz maxX maxY]
>           set w [ on paint =: paintBalls  vballs
>                    , on click =: dropBall w vballs ]
>           timer [interval =: 20, on command =: nextBalls w vballs]
>   where
>     nextBalls w vballs
>       = do updateVar vballs (filter (not.null) . map (drop 1))
>               repaint w
> 
>     dropBall w vballs pt
>       = do updateVar vballs (bouncing pt:)
>               repaint w
> 
>     bouncing (Point x y)
>       = map (\h -> Point x (maxH-h)) (bounce (maxH-y) 0)
> 
>     bounce h v
>       | h <= 0 && v == 0     = []
>       | h <= 0 && v  < 0     = bounce 0 ((-v)-2)
>       | otherwise            = h : bounce (h+v) (v-1)
> 
> 
>     paintBalls vballs can updframe updareas
>       = do box updframe [color =: lightgrey] can
>               balls <- getVar vballs
>               mapM_ (drawBall can) (map head (filter (not.null) balls))
> 
>     drawBall can pt
>       = do oval pt radius radius [color =: red] can
>                ellipse pt radius radius [] can
> 
> 
> -- radius the ball, and the maximal x and y coordinates
> radius, maxX, maxY :: Int
> maxY   = 300
> maxX   = 300
> radius = 10
> 
> -- the max. height is at most max. y minus the radius of a ball.
> maxH :: Int
> maxH   = maxY - radius
> 
> 
> 
> 
> _______________________________________________
> GUI mailing list
> GUI@haskell.org
> http://www.haskell.org/mailman/listinfo/gui

-- 
----------------------------------
Seth Kurtzberg
M. I. S. Corp.
E-Mail: seth@cql.com
Date: 24-Jan-2003
Time: 09:39:34

This message was sent by XFMail
----------------------------------