Window es una instancia de Paint, nos permite definir nuestra propia rutina paint para todo tipo de ventanas (incluyendo botones y cajas de texto).
set f [on paint := drawObjects]
Visión genérica. Diseño (Layout) Administra el posicionamiento y dimensionamiento de los artilugios de un contenedor widget. wxHaskell utiliza combinadores layout que permite un estilo más declarativo para especificar la disposiciónEl tipo de retorno de un combinador de layout es siempre Layout Permite un control preciso del comportamiento cuando la ventana cambia de tamaño (o para evitar el cambio de tamaño) Los tipos de combinadores de layout son: diseños (widgets, contenedores, pegamento, separadores) y transformadores (estiramiento, ampliar márgenes, alineación) 12
Atributos y propiedades en WxHaskell Los atributos se transforman en propiedades con(:=) La función set asigna una lista de propiedades a un objeto
Prop (Button a) Prop (Button a) / / set btn [text := “Parar”, on command := función] | | | | Attr String Event IO () (Button a) (Button a) String (IO ()) 13
Aplicaciones importantes de WxHaskell Dazzle: Editor gráfico para redes bayesianas. Desarrollado por la universidad de Utrecht. Dazzle usa la librería Smile y algoritmos en C++. Presenta datos estadísticos multidimensionales. Última versión del 15 de octubre de 2005 14
Aplicaciones importantes de WxHaskell Simulador de colonias de hormigas. Usado en la resolución de pistas para la resolución de pistas.
La interfaz se desarrolló en un solo día. Ganaron el concurso ICFP Programming Contest 2003 y 2004
Usa fragmentos de código C para programar sobre wxWidgets. 15
Ejemplo main = start gui gui :: IO () gui = do f ? frame [text := "Example"] lab ? label f [text := "Hello wxHaskell"] ok button f [text := "Ok"] can ? button f [text := "Cancel"] set ok [on command := close f ] set can [on command := set lab [text := "Goodbye?"]] set f [layout := column 5 [floatCenter (widget lab) ,floatCenter $ row 5 [widget ok,widget can]]] 16
Ap.Gui Fue realizada por Pepe Gallardo, profesor de la universidad de Málaga.
Conserva la misma filosofía que wxHaskell y HToolkit
Usada en la docencia.
Trabaja sobre GHC
Programación más intuitiva.
No trabaja sobre winhugs
17
Atributos Cada uno de los atributos se separan por comas.
Las asignaciones de cada atributo se hace usando el operador =: button [ text =: "Button" ] w
Se suprime el uso de la directiva get y set
Las rutinas se especifican igualmente con «on»: b4 ? button [ text =: "Quit", on action =: quit
18
Layout El layout se declara de una forma más intuitiva
Para tener a un widget que aparezca con alineamiento horizontal de otro se declara de la siguiente forma:
w!:layout =: b1 <.< b2 <.< b3 <.< b4
Para tener a un widget que aparezca con alineamiento vertical de otro se declara de la siguiente forma: w!:layout =: b1 ^.^ b2 ^.^ b3 ^.^ b4
Es posible combinar ambos alineamientos: w!:layout =: b1 <.< b2 ^.^ b3 <.< b4
19
Layout Cada widget puede ser dimensionado de forma individual usando size: c ? canvas [ size =: 400 400, bgColor =: white ] w
Cada widget tiene su propio contenedor, salvo la ventana: w ? window [ title =: "window"] ; b1 ? button [ text =: "Button" , bgColor =: blue] w
20
Comparativa 21
Página anterior | Volver al principio del trabajo | Página siguiente |