Spaces:
Running
Running
# -*-mode: tcl; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- | |
# | |
# $Id: AllSampl.tcl,v 1.4 2001/12/09 05:31:07 idiscovery Exp $ | |
# | |
# AllSampl.tcl -- | |
# | |
# This file is a directory of all the sample programs in the | |
# demos/samples subdirectory. | |
# | |
# | |
# 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. | |
# | |
# | |
# The following data structures contains information about the requirements | |
# of the sample programs, as well as the relationship/grouping of the sample | |
# programs. | |
# | |
# Each element in an info list has four parts: type, name, group/filename, and | |
# condition. A group or a file is loaded only if the conditions are met. | |
# | |
# types: "d" directory "f" file | |
# conditions: | |
# "i": an image type must exist | |
# "c": a command must exist | |
# "v": a variable must exist | |
set root { | |
{d "File Selectors" file } | |
{d "Hierachical ListBox" hlist } | |
{d "Tabular ListBox" tlist {c tixTList}} | |
{d "Grid Widget" grid {c tixGrid}} | |
{d "Manager Widgets" manager } | |
{d "Scrolled Widgets" scroll } | |
{d "Miscellaneous Widgets" misc } | |
{d "Image Types" image } | |
} | |
set image { | |
{d "Compound Image" cmpimg } | |
{d "XPM Image" xpm {i pixmap}} | |
} | |
set cmpimg { | |
{f "In Buttons" CmpImg.tcl } | |
{f "In NoteBook" CmpImg2.tcl } | |
{f "Notebook Color Tabs" CmpImg4.tcl } | |
{f "Icons" CmpImg3.tcl } | |
} | |
set xpm { | |
{f "In Button" Xpm.tcl {i pixmap}} | |
{f "In Menu" Xpm1.tcl {i pixmap}} | |
} | |
set file { | |
{f DirList DirList.tcl } | |
{f DirTree DirTree.tcl } | |
{f DirSelectDialog DirDlg.tcl } | |
{f ExFileSelectDialog EFileDlg.tcl } | |
{f FileSelectDialog FileDlg.tcl } | |
{f FileEntry FileEnt.tcl } | |
} | |
set hlist { | |
{f HList HList1.tcl } | |
{f CheckList ChkList.tcl {c tixCheckList}} | |
{f "ScrolledHList (1)" SHList.tcl } | |
{f "ScrolledHList (2)" SHList2.tcl } | |
{f Tree Tree.tcl } | |
{f "Tree (Dynamic)" DynTree.tcl {v win}} | |
} | |
set tlist { | |
{f "ScrolledTList (1)" STList1.tcl {c tixTList}} | |
{f "ScrolledTList (2)" STList2.tcl {c tixTList}} | |
} | |
global tcl_platform | |
# This demo hangs windows | |
if {$tcl_platform(platform) != "windows"} { | |
lappend tlist {f "TList File Viewer" STList3.tcl {c tixTList}} | |
} | |
set grid { | |
{f "Simple Grid" SGrid0.tcl {c tixGrid}} | |
{f "ScrolledGrid" SGrid1.tcl {c tixGrid}} | |
{f "Editable Grid" EditGrid.tcl {c tixGrid}} | |
} | |
set scroll { | |
{f ScrolledListBox SListBox.tcl } | |
{f ScrolledText SText.tcl } | |
{f ScrolledWindow SWindow.tcl } | |
{f "Canvas Object View" CObjView.tcl {c tixCObjView}} | |
} | |
set manager { | |
{f ListNoteBook ListNBK.tcl } | |
{f NoteBook NoteBook.tcl } | |
{f PanedWindow PanedWin.tcl } | |
} | |
set misc { | |
{f Balloon Balloon.tcl } | |
{f ButtonBox BtnBox.tcl } | |
{f ComboBox ComboBox.tcl } | |
{f Control Control.tcl } | |
{f LabelEntry LabEntry.tcl } | |
{f LabelFrame LabFrame.tcl } | |
{f Meter Meter.tcl {c tixMeter}} | |
{f OptionMenu OptMenu.tcl } | |
{f PopupMenu PopMenu.tcl } | |
{f Select Select.tcl } | |
{f StdButtonBox StdBBox.tcl } | |
} | |
# ForAllSamples -- | |
# | |
# Iterates over all the samples that can be run on this platform. | |
# | |
# Arguments: | |
# name: For outside callers, it must be "root" | |
# token: An arbtrary string passed in by the caller. | |
# command: Command prefix to be executed for each node | |
# in the samples hierarchy. It should return the | |
# token of the node that it has just created, if any. | |
# | |
proc ForAllSamples {name token command} { | |
global $name win | |
if {[tix platform] == "windows"} { | |
set win 1 | |
} | |
foreach line [set $name] { | |
set type [lindex $line 0] | |
set text [lindex $line 1] | |
set dest [lindex $line 2] | |
set cond [lindex $line 3] | |
case [lindex $cond 0] { | |
c { | |
set cmd [lindex $cond 1] | |
if {[info command $cmd] != $cmd} { | |
if ![auto_load $cmd] { | |
continue | |
} | |
} | |
} | |
i { | |
if {[lsearch [image types] [lindex $cond 1]] == -1} { | |
continue | |
} | |
} | |
v { | |
set doit 1 | |
foreach var [lrange $cond 1 end] { | |
if [uplevel #0 info exists [list $var]] { | |
set doit 0 | |
break | |
} | |
} | |
if !$doit { | |
continue | |
} | |
} | |
} | |
if {$type == "d"} { | |
set tok [eval $command [list $token] $type [list $text] \ | |
[list $dest]] | |
ForAllSamples $dest $tok $command | |
eval $command [list $tok] done xx xx | |
} else { | |
set tok [eval $command [list $token] $type [list $text] \ | |
[list $dest]] | |
} | |
} | |
} | |
proc DoAll {hlist {path ""}} { | |
catch { | |
set theSample [$hlist info data $path] | |
if {$theSample != {}} { | |
set title [lindex $theSample 0] | |
set prog [lindex $theSample 1] | |
RunProg $title $prog | |
update | |
} | |
} | |
foreach p [$hlist info children $path] { | |
DoAll $hlist $p | |
} | |
} | |