set dessin(tool) "carre"
set dessin(col1) "white"
set dessin(col2) "black"

menu .menu
menu .menu.fichier -tearoff 0
.menu add cascade -label "Fichier" -menu .menu.fichier
.menu.fichier add command -label "Quit" -accelerator "Control-q" -command {exit}

menu .menu.tools -tearoff 0
.menu add cascade -label "Outils" -menu .menu.tools

.menu.tools add radio -label "Droite" -variable dessin(tool) -value "droite" 
.menu.tools add radio -label "carre" -variable dessin(tool) -value "carre"
.menu.tools add radio -label "ovale" -variable dessin(tool) -value "oval"

. configure -menu .menu

frame .tool
button .tool.eff -text "Effacer" -command {.canv delete all}
button .tool.col1 -bg $dessin(col1) -command "chCol col1" -text "   "
button .tool.col2 -bg $dessin(col2) -command "chCol col2" -text "   "

pack .tool.eff .tool.col1 .tool.col2 -side left -padx 2
canvas .canv -width 200 -height 200 -bg white
pack .tool .canv

bind .canv <Button-1> {buttonPress %x %y}
bind .canv <B1-Motion> {buttonDeplace %x %y}

proc buttonPress {x y} {
  global dessin
  set dessin(x1) $x
  set dessin(y1) $y
  switch $dessin(tool) {
    "droite" {set dessin(tag) [.canv create line $dessin(x1) $dessin(y1) $x $y -fill $dessin(col1) -outline $dessin(col2)]}
  
  "carre" {set dessin(tag) [.canv create rectangle $dessin(x1) $dessin(y1) $x $y -fill $dessin(col1) -outline $dessin(col2)]}
  "oval" {set dessin(tag) [.canv create oval $dessin(x1) $dessin(y1) $x $y -fill $dessin(col1) -outline $dessin(col2)]}
  }
}

proc buttonDeplace {x y} {
  global dessin
  .canv coords $dessin(tag) $dessin(x1) $dessin(y1) $x $y
}

proc chCol {n} {
  global dessin
  set dessin($n) [tk_chooseColor]
  
    eval ".tool.$n configure -bg $dessin($n)"
  
}
