diff -r 000000000000 -r ae805ac0140d python-2.5.2/win32/tcl/tix8.4/demos/tixwidgets.tcl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python-2.5.2/win32/tcl/tix8.4/demos/tixwidgets.tcl Fri Apr 03 17:19:34 2009 +0100 @@ -0,0 +1,344 @@ +# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- +# +# tixDemo -- +# +# This is a demo program of all the available Tix widgets. If +# have installed Tix properly, you can execute this program +# by changing to this directory and executing +# the following in csh +# +# % env TIX_LIBRARY=../library tixwish tixwidgets.tcl +# +# Or this in sh +# +# $ TIX_LIBRARY=../library tixwish tixwidgets.tcl +# +#---------------------------------------------------------------------- +# +# This file has not been properly documented. It is NOT intended +# to be used as an introductory demo program about Tix +# programming. For such demos, please see the files in the +# demos/samples directory or go to the "Samples" page in the +# "widget demo" +# +# +# Copyright (c) 1996, Expert Interface Technologies +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# + +package require Tix +tix initstyle + +tk appname "TixDemo#[pid]" + +proc tixDemo:MkMainWindow {w} { + global demo auto_path demo_dir + + # add this directory to the auto_path + lappend auto_path $demo_dir + tix addbitmapdir [file join $demo_dir bitmaps] + + toplevel $w + wm title $w "Tix Widget Demonstration" + wm geometry $w 830x566+100+100 + + set demo(balloon) [tixBalloon .demos_balloon] + + set menu [tixDemo:MkMainMenu $w] + set frame2 [tixDemo:MkMainNoteBook $w] + set frame3 [tixDemo:MkMainStatus $w] + + $w configure -menu $menu + + pack $frame3 -side bottom -fill x + pack $frame2 -side top -expand yes -fill both -padx 4 -pady 4 + + $demo(balloon) config -statusbar $demo(statusbar) + set demo(notebook) $frame2 +} + +proc tixDemo:MkMainMenu {top} { + global useBallons + + set m [menu $top.menu -tearoff 0] + $m add cascade -label "File" -menu $m.file -underline 0 + $m add cascade -label "Help" -menu $m.help -underline 0 + + menu $m.file -tearoff 0 + $m.file add command -label "Open ... " -command tixDemo:FileOpen \ + -underline 1 -accelerator "Ctrl+O" + $m.file add sep + $m.file add command -label "Exit " -command tixDemo:Exit \ + -underline 1 -accelerator "Ctrl+X" + + menu $m.help -tearoff 0 + $m.help add checkbutton -under 0 -label "Balloon Help " \ + -variable useBallons -onvalue 1 -offvalue 0 + + trace variable useBallons w tixDemo:BalloonHelp + + set useBallons 1 + + return $m +} + +# Create the main display area of the widget programm. This area should +# utilize the "tixNoteBook" widget once it is available. But now +# we use the cheap substitute "tixStackWindow" +# +proc tixDemo:MkMainNoteBook {top} { + global demo + set hasGL 0 + + option add *TixNoteBook.tagPadX 6 + option add *TixNoteBook.tagPadY 4 + option add *TixNoteBook.borderWidth 2 + + set w [tixNoteBook $top.f2 -ipadx 5 -ipady 5] + + $w add wel -createcmd [list tixDemo:CreatePage tixDemo:MkWelcome $w wel] \ + -label "Welcome" -under 0 + $w add cho -createcmd [list tixDemo:CreatePage MkChoosers $w cho] \ + -label "Choosers" -under 0 + $w add scr -createcmd [list tixDemo:CreatePage MkScroll $w scr] \ + -label "Scrolled Widgets" -under 0 +# There currently is no MkManag.tcl that this expects ?!? - JH +# $w add mgr -createcmd [list tixDemo:CreatePage MkManager $w mgr] \ +# -label "Manager Widgets" -under 0 + $w add dir -createcmd [list tixDemo:CreatePage MkDirList $w dir] \ + -label "Directory List" -under 0 + $w add exp -createcmd [list tixDemo:CreatePage MkSample $w exp] \ + -label "Run Sample Programs" -under 0 + + if {$hasGL} { + $w add glw -createcmd [list MkGL $w glw] -tag "GL Widgets" + } + + return $w +} + +proc tixDemo:CreatePage {command w name} { + tixBusy $w on + set code [catch {$command $w $name} err] + tixBusy $w off + return -code $code $err +} + +proc tixDemo:MkMainStatus {top} { + global demo demo_dir + + set w [frame $top.f3 -relief raised -bd 1] + set demo(statusbar) \ + [label $w.status -relief sunken -bd 1] + + tixForm $demo(statusbar) -padx 3 -pady 3 -left 0 -right %70 + $w.status configure -text [file native $demo_dir] + return $w +} + +proc tixDemo:Status {msg} { + global demo + + $demo(statusbar) configure -text $msg +} + + +proc tixDemo:MkWelcome {nb page} { + set w [$nb subwidget $page] + + set bar [tixDemo:MkWelcomeBar $w] + set text [tixDemo:MkWelcomeText $w] + + pack $bar -side top -fill x -padx 2 -pady 2 + pack $text -side top -fill both -expand yes +} + +proc tixDemo:MkWelcomeBar {top} { + global demo + + set w [frame $top.bar -bd 2 -relief groove] + + # Create and configure comboBox 1 + # + tixComboBox $w.cbx1 -command [list tixDemo:MainTextFont $top] \ + -options { + entry.width 15 + listbox.height 3 + } + tixComboBox $w.cbx2 -command [list tixDemo:MainTextFont $top] \ + -options { + entry.width 4 + listbox.height 3 + } + set demo(welfont) $w.cbx1 + set demo(welsize) $w.cbx2 + + $w.cbx1 insert end "Courier" + $w.cbx1 insert end "Helvetica" + $w.cbx1 insert end "Lucida" + $w.cbx1 insert end "Times Roman" + + $w.cbx2 insert end 8 + $w.cbx2 insert end 10 + $w.cbx2 insert end 12 + $w.cbx2 insert end 14 + $w.cbx2 insert end 18 + + $w.cbx1 pick 1 + $w.cbx2 pick 3 + + # Pack the comboboxes together + # + pack $w.cbx1 $w.cbx2 -side left -padx 4 -pady 4 + + $demo(balloon) bind $w.cbx1\ + -msg "Choose\na font" -statusmsg "Choose a font for this page" + $demo(balloon) bind $w.cbx2\ + -msg "Point size" -statusmsg "Choose the font size for this page" + + + tixDoWhenIdle tixDemo:MainTextFont $top + return $w +} + +proc tixDemo:MkWelcomeText {top} { + global demo tix_version + + set w [tixScrolledWindow $top.f3 -scrollbar auto] + set win [$w subwidget window] + + label $win.title -font [list times -18 bold] \ + -bd 0 -width 30 -anchor n\ + -text "Welcome to TIX version $tix_version" + + message $win.msg -font [list helvetica -14 bold] \ + -bd 0 -width 400 -anchor n\ + -text "\ +Tix $tix_version is a library of mega-widgets based on TK. This program \ +demonstrates the widgets in the Tix widget. You can choose the pages \ +in this window to look at the corresponding widgets. \ +To quit this program, choose the \"File | Exit\" command." + + + pack $win.title -expand yes -fill both -padx 10 -pady 10 + pack $win.msg -expand yes -fill both -padx 10 -pady 10 + set demo(welmsg) $win.msg + return $w +} + +proc tixDemo:MainTextFont {w args} { + global demo + + if {![info exists demo(welmsg)]} { + return + } + + set font [$demo(welfont) cget -value] + set point [$demo(welsize) cget -value] + + case $font { + "Courier" { + set f courier + } + "Helvetica" { + set f helvetica + } + "Lucida" { + set f lucida + } + default { + set f times + } + } + + set xfont [list $f -$point] + if [catch {$demo(welmsg) config -font $xfont} err] { + puts \a$err + } +} + +proc tixDemo:FileOpen {} { + global demo demo_dir + set filedlg [tix filedialog tixExFileSelectDialog] + if {![info exists demo(filedialog)]} { + $filedlg subwidget fsbox config -pattern *.tcl + $filedlg subwidget fsbox config -directory [file join $demo_dir samples] + $filedlg config -command tixDemo:FileOpen:Doit + set demo(filedialog) $filedlg + } + $filedlg config -title "Open Tix Sample Programs" + wm transient $filedlg "" + wm deiconify $filedlg + after idle raise $filedlg + $filedlg popup + tixPushGrab $filedlg +} + +proc tixDemo:FileOpen:Doit {filename} { + global demo + + tixPopGrab + LoadFile $filename + $demo(filedialog) popdown +} + +#---------------------------------------------------------------------- +# Balloon Help +#---------------------------------------------------------------------- +proc tixDemo:BalloonHelp {args} { + global demo useBallons + + if {$useBallons} { + $demo(balloon) config -state "both" + } else { + $demo(balloon) config -state "none" + } +} + +#---------------------------------------------------------------------- +# Self-testing +# +# The following code are called by the Tix test suite. It opens +# every page in the demo program. +#---------------------------------------------------------------------- +proc tixDemo:SelfTest {} { + global demo testConfig + + if ![info exists testConfig] { + return + } + + tixDemo:MkMainWindow .widget + + update + foreach p [$demo(notebook) pages] { + $demo(notebook) raise $p + update + } + + destroy .widget +} + +proc tixDemo:Exit {} { + destroy .widget +} + +#---------------------------------------------------------------------- +# Start! +#---------------------------------------------------------------------- + +if {![info exists testConfig]} { + # + # If the testConfig variable exists, we are driven by the regression + # test. In that case, don't open the main window. The test program will + # call Widget:SelfTest + # + set kids [winfo children .] + wm withdraw . + set ::demo_dir [file normalize [file dirname [info script]]] + tixDemo:MkMainWindow .widget + wm transient .widget "" + if {[llength $kids] < 1} {bind .widget "exit"} +}