#!/bin/sh# the next line restarts using wish \exec wish "$0" ${1+"$@"} proc createEditor {} { text .editor pack .editor } proc createMenubar {} { menu .menuBar -tearoff 0 .menuBar add cascade -menu .menuBar.file -label "File" -underline 0 menu .menuBar.file -tearoff 0 .menuBar.file add command -label New -command new -underline 0 .menuBar.file add command -label Open -command openFile -underline 0 .menuBar.file add command -label Save -command saveFile -underline 0 .menuBar.file add command -label SaveAs -command saveAs -underline 4 .menuBar.file add sep .menuBar.file add command -label Quit -command exit -underline 0 . configure -menu .menuBar } proc new {} { .editor delete 1.0 end } proc openFile {} { setFilename tk_getOpenFile new set fp [open $::filename] .editor insert end [read $fp] close $fp } proc saveFile {} { if {{} == $::filename} { tk_messageBox -icon error -type ok -title Message \ -parent . \ -message "You need to choose a valid filename." return } set fp [open $::filename w] puts $fp [.editor get 1.0 end] close $fp } proc saveAs {} { setFilename tk_getSaveFile saveFile } proc setFilename proc { set new [$proc] if {{} == $new} { return } set ::filename $new wm title . "Editing file '$new" } ############################################################### eval destroy [winfo child .] wm title . "Text Demonstration" set font {Helvetica 14} set filename {} createMenubar createEditor