aboutsummaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorlecoanet2003-03-27 09:59:54 +0000
committerlecoanet2003-03-27 09:59:54 +0000
commit7e1e205385b44e8d20173af2fc725c1c78e14725 (patch)
tree43c9d003a5e1fdb9aa4e08b1cee625cad1dda649 /demos
parent3ab451bd0dcc59373c333e6374c5daec91e42a3f (diff)
downloadtkzinc-7e1e205385b44e8d20173af2fc725c1c78e14725.zip
tkzinc-7e1e205385b44e8d20173af2fc725c1c78e14725.tar.gz
tkzinc-7e1e205385b44e8d20173af2fc725c1c78e14725.tar.bz2
tkzinc-7e1e205385b44e8d20173af2fc725c1c78e14725.tar.xz
Premi�re int�gration
Diffstat (limited to 'demos')
-rw-r--r--demos/images/zinc.gifbin0 -> 1461 bytes
-rw-r--r--demos/zinc-widget305
2 files changed, 305 insertions, 0 deletions
diff --git a/demos/images/zinc.gif b/demos/images/zinc.gif
new file mode 100644
index 0000000..4d1cda9
--- /dev/null
+++ b/demos/images/zinc.gif
Binary files differ
diff --git a/demos/zinc-widget b/demos/zinc-widget
new file mode 100644
index 0000000..edc57e8
--- /dev/null
+++ b/demos/zinc-widget
@@ -0,0 +1,305 @@
+#!/bin/sh
+# the next line restarts using wish \
+ exec wish8.3 "$0" "$@"
+
+#
+# Locate the zinc top level directory.
+#
+set zincRoot [file join [file dirname [info script]] ..]
+
+#
+# And adjust the paths accordingly.
+#
+lappend auto_path $zincRoot
+set tk_library $zincRoot
+
+package require Tkzinc 3.2
+
+eval destroy [winfo child .]
+wm title . "Zinc Widget Demonstration"
+set zincDemo 1
+
+set font {Helvetica 14}
+
+menu .menuBar -tearoff 0
+.menuBar add cascade -menu .menuBar.file -label File -underline 0
+menu .menuBar.file -tearoff 0
+
+.menuBar.file add command -label Quit -command exit -underline 0 \
+ -accelerator Meta-Q
+. configure -menu .menuBar
+
+frame .statusBar
+label .statusBar.lab -text " " -relief sunken -bd 1 \
+ -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
+label .statusBar.foo -width 8 -relief sunken -bd 1 \
+ -font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
+pack .statusBar.lab -side left -padx 2 -expand yes -fill both
+pack .statusBar.foo -side left -padx 2
+pack .statusBar -side bottom -fill x -pady 2
+
+frame .textFrame
+scrollbar .s -orient vertical -command {.t yview} -highlightthickness 0 \
+ -takefocus 1
+pack .s -in .textFrame -side right -fill y
+text .t -yscrollcommand {.s set} -wrap word -width 60 -height 30 -font $font \
+ -setgrid 1 -highlightthickness 0 -padx 4 -pady 2 -takefocus 0
+pack .t -in .textFrame -expand y -fill both -padx 1
+pack .textFrame -expand yes -fill both
+
+# Create a bunch of tags to use in the text widget, such as those for
+# section titles and demo descriptions. Also define the bindings for
+# tags.
+
+.t tag configure title -font {Helvetica 18 bold}
+
+# We put some "space" characters to the left and right of each demo description
+# so that the descriptions are highlighted only when the mouse cursor
+# is right over them (but not when the cursor is to their left or right)
+#
+.t tag configure demospace -lmargin1 1c -lmargin2 1c
+
+
+if {[winfo depth .] == 1} {
+ .t tag configure demo -lmargin1 1c -lmargin2 1c -underline 1
+ .t tag configure visited -lmargin1 1c -lmargin2 1c \
+ -underline 1
+ .t tag configure hot -background black -foreground white
+} else {
+ .t tag configure demo -lmargin1 1c -lmargin2 1c \
+ -foreground blue -underline 1
+ .t tag configure visited -lmargin1 1c -lmargin2 1c \
+ -foreground #303080 -underline 1
+ .t tag configure hot -foreground red -underline 1
+}
+.t tag bind demo <ButtonRelease-1> {
+ invoke [.t index {@%x,%y}]
+}
+set lastLine ""
+.t tag bind demo <Enter> {
+ set lastLine [.t index {@%x,%y linestart}]
+ .t tag add hot "$lastLine +1 chars" "$lastLine lineend -1 chars"
+ .t config -cursor hand2
+ showStatus [.t index {@%x,%y}]
+}
+.t tag bind demo <Leave> {
+ .t tag remove hot 1.0 end
+ .t config -cursor xterm
+ .statusBar.lab config -text ""
+}
+.t tag bind demo <Motion> {
+ set newLine [.t index {@%x,%y linestart}]
+ if {[string compare $newLine $lastLine] != 0} {
+ .t tag remove hot 1.0 end
+ set lastLine $newLine
+
+ set tags [.t tag names {@%x,%y}]
+ set i [lsearch -glob $tags demo-*]
+ if {$i >= 0} {
+ .t tag add hot "$lastLine +1 chars" "$lastLine lineend -1 chars"
+ }
+ }
+ showStatus [.t index {@%x,%y}]
+}
+
+# Create the text for the text widget.
+
+.t insert end "Zinc/Tk Widget Demonstrations\n" title
+.t insert end {
+ This application provides a front end for several short scripts in Tcl/Tk that demonstrate what you can do with the TkZinc widget. Each of the numbered lines below describes a demonstration; you can click on it to invoke the demonstration. Once the demonstration window appears, you can click the "See Code" button to see the Tcl/Tk code that created the demonstration.
+}
+.t insert end " \n " {}
+.t insert end "All Items\n" title
+.t insert end "1. Exemples of all items.\n" {demo demo-items}
+.t insert end "2. All items options (and their types).\n" {demo demo-all_options}
+.t insert end "3. Examples of line style and line termination.\n" {demo demo-lines}
+.t insert end "4. Curves with multiple contours.\n" {demo demo-contours}
+.t insert end "5. Examples of labelformat.\n" {demo demo-labelformat}
+.t insert end "6. Use of mapinfos.\n" {demo demo-mapinfo}
+.t insert end "7. Curves with cubic bezier control points.\n" {demo demo-curve_bezier}
+.t insert end "8. Curves with multiple contours and various fillrule.\n" {demo demo-fillrule}
+
+.t insert end \n {} "Groups, Priority, Clipping and PathTags\n" title
+.t insert end "1. Groups and Priorities.\n" {demo demo-groups_priority}
+.t insert end "2. Clipping examples (with simple or multiple contours).\n" {demo demo-clipping}
+.t insert end "3. Group atomicity.\n" {demo demo-atomic-groups}
+.t insert end "4. \"Windows\" with four glasses using curve with multiple contours.\n" {demo demo-window-contours}
+
+.t insert end \n {} "Interactions\n" title
+.t insert end "1. Simple interaction on a track.\n" {demo demo-simple_interaction_track}
+.t insert end "2. Text input in a text item and a track item.\n" {demo demo-textInput}
+
+.t insert end \n {} "Transformation\n" title
+.t insert end "1. Translating.\n" {demo demo-translation}
+.t insert end "2. Rotating.\n" {demo demo-rotation}
+.t insert end "3. Zooming.\n" {demo demo-zoom}
+.t insert end "4. Transformation testbed.\n" {demo demo-transforms}
+
+.t insert end \n {} "Use of open GL\n" title
+#.t insert end "1. The TkZinc Logo (requires openGL).\n" {demo demo-tkZincLogo}
+.t insert end "1. Axial color variation on the X axis (requires openGL).\n" {demo demo-color-x}
+.t insert end "2. Axial color variation on the Y axis (requires openGL).\n" {demo demo-color-y}
+.t insert end "3. Circular color variation (requires openGL).\n" {demo demo-color-circular}
+.t insert end "4. The triangles item (requires openGL).\n" {demo demo-triangles}
+
+.t configure -state disabled
+focus .s
+
+# positionWindow --
+# This procedure is invoked by most of the demos to position a
+# new demo window.
+#
+# Arguments:
+# w - The name of the window to position.
+
+proc positionWindow w {
+ wm geometry $w +300+300
+}
+
+# showVars --
+# Displays the values of one or more variables in a window, and
+# updates the display whenever any of the variables changes.
+#
+# Arguments:
+# w - Name of new window to create for display.
+# args - Any number of names of variables.
+
+proc showVars {w args} {
+ catch {destroy $w}
+ toplevel $w
+ wm title $w "Variable values"
+ label $w.title -text "Variable values:" -width 20 -anchor center \
+ -font {Helvetica 18}
+ pack $w.title -side top -fill x
+ set len 1
+ foreach i $args {
+ if {[string length $i] > $len} {
+ set len [string length $i]
+ }
+ }
+ foreach i $args {
+ frame $w.$i
+ label $w.$i.name -text "$i: " -width [expr $len + 2] -anchor w
+ label $w.$i.value -textvar $i -anchor w
+ pack $w.$i.name -side left
+ pack $w.$i.value -side left -expand 1 -fill x
+ pack $w.$i -side top -anchor w -fill x
+ }
+ button $w.ok -text OK -command "destroy $w" -default active
+ bind $w <Return> "tkButtonInvoke $w.ok"
+ pack $w.ok -side bottom -pady 2
+}
+
+# invoke --
+# This procedure is called when the user clicks on a demo description.
+# It is responsible for invoking the demonstration.
+#
+# Arguments:
+# index - The index of the character that the user clicked on.
+
+proc invoke index {
+ global tk_library
+
+ set tags [.t tag names $index]
+ set i [lsearch -glob $tags demo-*]
+ if {$i < 0} {
+ return
+ }
+ set cursor [.t cget -cursor]
+ .t configure -cursor watch
+ update
+ set demo [string range [lindex $tags $i] 5 end]
+ uplevel [list source [file join $tk_library demos $demo.tcl]]
+ update
+ .t configure -cursor $cursor
+
+ .t tag add visited "$index linestart +1 chars" "$index lineend -1 chars"
+}
+
+# showStatus --
+#
+# Show the name of the demo program in the status bar. This procedure
+# is called when the user moves the cursor over a demo description.
+#
+proc showStatus index {
+ global tk_library
+ set tags [.t tag names $index]
+ set i [lsearch -glob $tags demo-*]
+ set cursor [.t cget -cursor]
+ if {$i < 0} {
+ .statusBar.lab config -text " "
+ set newcursor xterm
+ } else {
+ set demo [string range [lindex $tags $i] 5 end]
+ .statusBar.lab config -text "Run the \"$demo\" sample program"
+ set newcursor hand2
+ }
+ if [string compare $cursor $newcursor] {
+ .t config -cursor $newcursor
+ }
+}
+
+
+# showCode --
+# This procedure creates a toplevel window that displays the code for
+# a demonstration and allows it to be edited and reinvoked.
+#
+# Arguments:
+# w - The name of the demonstration's window, which can be
+# used to derive the name of the file containing its code.
+
+proc showCode w {
+ global tk_library
+ set file [string range $w 1 end].tcl
+ if ![winfo exists .code] {
+ toplevel .code
+ frame .code.buttons
+ pack .code.buttons -side bottom -fill x
+ button .code.buttons.dismiss -text Dismiss \
+ -default active -command "destroy .code"
+ button .code.buttons.rerun -text "Rerun Demo" -command {
+ eval [.code.text get 1.0 end]
+ }
+ pack .code.buttons.dismiss .code.buttons.rerun -side left \
+ -expand 1 -pady 2
+ frame .code.frame
+ pack .code.frame -expand yes -fill both -padx 1 -pady 1
+ text .code.text -height 40 -wrap word\
+ -xscrollcommand ".code.xscroll set" \
+ -yscrollcommand ".code.yscroll set" \
+ -setgrid 1 -highlightthickness 0 -pady 2 -padx 3
+ scrollbar .code.xscroll -command ".code.text xview" \
+ -highlightthickness 0 -orient horizontal
+ scrollbar .code.yscroll -command ".code.text yview" \
+ -highlightthickness 0 -orient vertical
+
+ grid .code.text -in .code.frame -padx 1 -pady 1 \
+ -row 0 -column 0 -rowspan 1 -columnspan 1 -sticky news
+ grid .code.yscroll -in .code.frame -padx 1 -pady 1 \
+ -row 0 -column 1 -rowspan 1 -columnspan 1 -sticky news
+ # grid .code.xscroll -in .code.frame -padx 1 -pady 1 \
+ # -row 1 -column 0 -rowspan 1 -columnspan 1 -sticky news
+ grid rowconfig .code.frame 0 -weight 1 -minsize 0
+ grid columnconfig .code.frame 0 -weight 1 -minsize 0
+ } else {
+ wm deiconify .code
+ raise .code
+ }
+ wm title .code "Demo code: [file join $tk_library demos $file]"
+ wm iconname .code $file
+ set id [open [file join $tk_library demos $file]]
+ .code.text delete 1.0 end
+ .code.text insert 1.0 [read $id]
+ .code.text mark set insert 1.0
+ close $id
+}
+
+# aboutBox --
+#
+# Pops up a message box with an "about" message
+#
+proc aboutBox {} {
+ tk_messageBox -icon info -type ok -title "About Widget Demo" -message \
+ "Tk widget demonstration\n\n\
+Copyright (c) 1996-1997 Sun Microsystems, Inc."
+ }