Hi, I'm trying to implement a toy graphical list editor program to get a feel for GUI programming in racket. Basic idea is a graphical representation of a list with text-field%s alternated with buttons to insert items and on the side of each text-field% a button to remove that item. When the program is destroyed it should print the constructed list on the console (when started from one). My understanding so far calls for a doubly-linked list to hold the items (and their graphical manifestation), although this seems very unlispy... Is there a better way?
Sample code showing graphical layout and rudimentary functioning of the program is attached. Side-question: why does pressing an insert-button resize the top-level frame%? Any help appreciated, Marijn
#lang racket/gui (define f (new frame% [label "List Editor"])) (define items (new vertical-pane% (parent f))) (define (create-item val parent) (define v (new vertical-panel% (parent parent))) (define ins (new button% (parent v) (label "insert") (callback (λ (b e) (create-item "" items))) )) (define h (new horizontal-pane% (parent v))) (define t (new text-field% (parent h) (label "") (init-value val))) (define del (new button% (parent h) (label "del") (callback (λ (b e) (send parent delete-child v))) )) v) (for-each (λ (v) (create-item v items)) '("1" "2" "3")) (new button% (parent f) (label "append") (callback (λ (b e) (create-item "" items)))) (send f show #t)
signature.asc
Description: OpenPGP digital signature
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users