;;;;
;;;; E x a m p l e 1 .  s t k
;;;;
;;;; Copyright (C) 1993,1994,1995 Erick Gallesio - I3S-CNRS/ESSI <eg@unice.fr>
;;;; 
;;;; Permission to use, copy, and/or distribute this software and its
;;;; documentation for any purpose and without fee is hereby granted, provided
;;;; that both the above copyright notice and this permission notice appear in
;;;; all copies and derived works.  Fees for distribution or use of this
;;;; software or derived works may only be charged with express written
;;;; permission of the copyright holder.  
;;;; This software is provided ``as is'' without express or implied warranty.
;;;;
;;;;           Author: Erick Gallesio [eg@kaolin.unice.fr]
;;;;    Creation date:  5-Aug-1994 11:11
;;;; Last file update:  5-Aug-1994 16:41 


(require "Canvas")

;;;; Create canvas
(define c (make <Canvas>))
(pack c)

;;;; Create items
(define r1 (make <Rectangle> :parent c :coords '(  0   0  50  50) :fill "blue"))
(define r2 (make <Rectangle> :parent c :coords '( 50  50 100 100) :fill "red"))
(define o1 (make <Oval>      :parent c :coords '(100 100 150 150) :fill "blue"))
(define o2 (make <Oval>      :parent c :coords '(150 150 200 200) :fill "red"))


;;; Define some families
(define rectangles (make <Canvas-group> :parent c))
(define ovals      (make <Canvas-group> :parent c))
(define blue	   (make <Canvas-group> :parent c))
(define red	   (make <Canvas-group> :parent c))

;;;; And add members of these families
(add-to-group rectangles r1 r2)
(add-to-group ovals      o1 o2)
(add-to-group blue       r1 o1)
(add-to-group red        r2 o2)

;;;; Work with group
(move rectangles 100 100)
(move ovals -100 -100)
(move blue 100 0)
(destroy red)

;;;; Find the items of a group
(format #t "items of group blue ~s\n" (items-of-group blue))

;;;; delete an item of a group
(delete-from-group blue r1)
(format #t "items of group blue ~s\n" (items-of-group blue))
(destroy blue)

;;; Only the blue square (r1) is alive....

