# ----------------------------------------------------------------------
#  DEMO: mainwindow in [incr Widgets]
# ----------------------------------------------------------------------
package require Iwidgets 4.0

wm withdraw .
iwidgets::mainwindow .mw

set imagedir [file join ${iwidgets::library} demos images]

#
# Add a File menubutton
#
.mw menubar add menubutton file -text "File" -underline 0 -padx 8 -pady 2 \
    -menu {options -tearoff no
	   command new -label "New" -underline 0 \
	       -helpstr "Create a new file"
	   command open -label "Open ..." -underline 0 \
	       -helpstr "Open an existing file"
	   command save -label "Save" -underline 0 \
	       -helpstr "Save the current file"
	   command saveas -label "Save As ..." -underline 5 \
	       -helpstr "Save the file as a differnet name"
	   command print -label "Print" -underline 0 \
	       -helpstr "Print the file"
           separator sep1
	   command close -label "Close" -underline 0 \
	       -helpstr "Close the file"
	   separator sep2
	   command exit -label "Exit" -underline 1 \
	       -helpstr "Exit this application" 
    }

#
# Add the Edit menubutton.
#
.mw menubar add menubutton edit -text "Edit" -underline 0 -padx 8 -pady 2 \
    -menu {options -tearoff no
	   command cut -label "Cut" -underline 2 \
	       -helpstr "Cut the selection into the clipboard"
           command copy -label "Copy" -underline 0 \
	       -helpstr "Copy the selection to the clipboard"
           command paste -label "Paste" -underline 0 \
	       -helpstr "Paste the clipboard to the current point"
           separator sep3
           command find -label "Find" -underline 2 \
	       -helpstr "Search the text"
           separator sep4
           command clear -label "Clear" -underline 2 \
	       -helpstr "Clear the selection"
    }

#
# Add the Help menubutton.
#
.mw menubar add menubutton help -text "Help" -underline 0 -padx 8 -pady 2 \
    -menu {options -tearoff no
	   command onwindow -label "On Window" -underline 3 \
	       -helpstr "Obtain help on the window"
           command onkeys -label "On Keys" -underline 3 \
	       -helpstr "Obtain help on the keys"
           command index -label "Index" -underline 0 \
	       -helpstr "View the help index"
           command onhelp -label "On Help" -underline 2 \
	       -helpstr "Obtain help on help"
           command onversion -label "On Version" -underline 2 \
	       -helpstr "View the version information"
    }

#
# Add items to the toolbar.
#
.mw toolbar add frame filler1 -width 108 -relief raised -borderwidth 2

.mw toolbar add button new \
    -image [image create photo -file [file join $imagedir new.gif]] \
    -helpstr "Create a new file" \
    -balloonstr "New"

.mw toolbar add button open \
    -image [image create photo -file [file join $imagedir open.gif]] \
    -helpstr "Open an existing file" \
    -balloonstr "Open"

.mw toolbar add button close \
    -image [image create photo -file [file join $imagedir close.gif]] \
    -helpstr "Close the file" \
    -balloonstr "Close"

.mw toolbar add frame filler2 -width 20 -relief raised -borderwidth 2

.mw toolbar add button cut \
    -image [image create photo -file [file join $imagedir cut.gif]] \
    -helpstr "Cut the selection into the cut buffer" \
    -balloonstr "Cut"

.mw toolbar add button copy \
    -image [image create photo -file [file join $imagedir copy.gif]] \
    -helpstr "Copy the selection to the cut buffer" \
    -balloonstr "Copy"

.mw toolbar add button paste \
    -image [image create photo -file [file join $imagedir paste.gif]] \
    -helpstr "Paste the cut buffer to the current point" \
    -balloonstr "Paste"

.mw toolbar add button clear \
    -image [image create photo -file [file join $imagedir clear.gif]] \
    -helpstr "Clear the selection" \
    -balloonstr "Clear"

.mw toolbar add frame filler3 -relief raised -borderwidth 2

#
# Add items to the menubar.
#
.mw mousebar add button save \
    -image [image create photo -file [file join $imagedir save.gif]] \
    -helpstr "Save the current file"

.mw mousebar add button print \
    -image [image create photo -file [file join $imagedir print.gif]] \
    -helpstr "Print the file"

.mw mousebar add button find \
    -image [image create photo -file [file join $imagedir find.gif]] \
    -helpstr "Search the text"

.mw mousebar add frame filler1 -height 20 -relief raised -borderwidth 2

.mw mousebar add button help \
    -image [image create photo -file [file join $imagedir help.gif]] \
    -helpstr "Obtain help for this window"

.mw mousebar add frame filler2 -relief raised -borderwidth 2

.mw mousebar add button exit \
    -image [image create photo -file [file join $imagedir exit.gif]] \
    -helpstr "Exit this application"

.mw mousebar add frame filler3 -height 5

#
# Change the packing of the last fillers in the tool and mouse bar
# so that it expands across and down the rest of the mainwindow.
#
pack [.mw toolbar component filler3] -expand yes -fill both
pack [.mw mousebar component filler2] -expand yes -fill both


#
# Install a scrolledtext widget in the childsite.
#
iwidgets::scrolledtext [.mw childsite].st -visibleitems 40x8
pack [.mw childsite].st -fill both -expand yes

#
# Activate the main window.
#
.mw activate



