Newest Viewed Downloaded

Interfaces gráficas en HaskellWxHaskell y AP.GUI 1

Interfaces gráficas en Haskell

WxHaskell y AP.GUI 1

Índice

1. WxHaskell 1.1. Introducción a WxHaskell ¿Por qué usar wxHaskell? 1.2. Visión genérica de wxHaskell. 1.3. Ejemplos 2. Ap.GUI 2.1. Introducción a Ap.GUI 2.2. Ejemplos 2

Introducción a WxHaskell

Es una librería de interfaces gráficas para Haskell de código abierto Construída sobre la librería wxWidgets(plataforma GUI desarrollada para C++). Soporta el 75% de su funcionalidad. Comenzó su desarrollo en el año 1992 declarada código abierto en el año 2009. Es una librería derivada de wxEiffel. Ofrece un alto nivel de abstracción, polimorfismo paramétrico 3

¿Por qué usar WxHaskell?

4

Seguridad en WxHaskell

5

Visión genérica de WxHaskell

6

Visión genérica. Paquetes WxHaskell

7 wxWidgets Graphics.UI.WXCore Graphics.UI.WX

Controles

p <- panel [] txt <- textEntry p AlignLeft [text := “your name here”] cb <- comboBox p true [“NSW”, “ACT”, “VIC”, “WA”] [] rd <- radioBox p Horizontal [“one”, “two”] [on select := logSelection] Otras: Choice, ListBox, Slider, Toolbar 8

Tipos y herencia en WxHaskell

Codifica relación de herencia entre tipos diferentes usando TAD Object (Ptr) |- .. |- Window |- Frame |- Control |- Button |- RadioBox Button a === Ptr (... (CWindow (CControl (CButton a))) ...) 9

Visión genérica. Atributos en WxHaskell

10

Visión genérica. Atributos en WxHaskell

Type Frame a = Window (CFrame a) Frame es instancia de HasImage, Form, Closable, y de cualquier otra instancia de Window Window es una instancia Textual,Literate,Dimensions,... La clase HasImage define el atributo ‘image’, La clase Textual define the atributo ‘text’. Entonces, podremos hacer lo siguiente: f <- frame [] set f [text := “Window Title”, image := “/some/image.ico”] 11

Eventos en WxHaskell

Se organizan en clases. Un widget que instancia de una clase evento significa que puede recibir eventos de esa clase. Los manejadores de eventos pueden ser definidos en un atributo usando la función «on»: 12 paint :: (Paint w) => Event w (DC () -> Rect -> IO ()) 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ón El 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) 13

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 ()) 14

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 15

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. 16

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]]] 17

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 18

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 19

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 20

Showing 1 - 20 of 23 items Details

Name: 
GUIsHaskell
Author: 
.
Company: 
N/A
Description: 
Interfaces gráficas en HaskellWxHaskell y AP.GUI 1
Tags: 
wxhaskell | button | gui | text | layout | set | widget | window
Created: 
5/16/2010 12:12:12 PM
Slides: 
23
Views: 
1
Downloads: 
0
Rating: 
0


> Comment



Share this presentation
|

Comments

Share this presentation:

|
Sitemap