# bind.tcl --
#
# This demonstration script creates a text widget with bindings set
# up for hypertext-like effects.
#
# RCS: @(#) $Id: bind.tcl,v 1.1 1999/03/31 15:08:25 m-hirano Exp $

if {![info exists widgetDemo]} {
    error "This script should be run from the \"widget\" demo."
}

set w .bind
catch {destroy $w}
toplevel $w
wm title $w "Text Demonstration - Tag Bindings"
wm iconname $w "bind"
positionWindow $w

frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text [langSel Dismiss 了解] -command "destroy $w"
button $w.buttons.code -text [langSel "See Code" "コード参照"] -command "showCode $w"
pack $w.buttons.dismiss $w.buttons.code -side left -expand 1

text $w.text -yscrollcommand "$w.scroll set" -setgrid true \
	-width 60 -height 24 -font $font -wrap word
scrollbar $w.scroll -command "$w.text yview"
pack $w.scroll -side right -fill y
pack $w.text -expand yes -fill both

# Set up display styles.

if {[winfo depth $w] > 1} {
    set bold "-background #43ce80 -relief raised -borderwidth 1"
    set normal "-background {} -relief flat"
} else {
    set bold "-foreground white -background black"
    set normal "-foreground {} -background {}"
}

# Add text to widget.

$w.text insert 0.0 [langSel {\
The same tag mechanism that controls display styles in text widgets can also be used to associate Tcl commands with regions of text, so that mouse or keyboard actions on the text cause particular Tcl commands to be invoked.  For example, in the text below the descriptions of the canvas demonstrations have been tagged.  When you move the mouse over a demo description the description lights up, and when you press button 1 over a description then that particular demonstration is invoked.

} {\
テキストwidgetの表示スタイルを制御するのと同じタグのメカニズムを使って、テキストにTclのコマンドを割り当てることができます。これにより、マウスやキーボードのアクションで特定のTclのコマンドが実行されるようになります。例えば、下のキャンバスのデモプログラムについての説明文にはそのようなタグがついています。マウスを説明文の上に持っていくと説明文が光り、ボタン1を押すとその説明のデモが始まります。

}]
$w.text insert end \
[langSel {1. Samples of all the different types of items that can be created in canvas widgets.} \
{1. キャンバス widget に作ることのできるアイテムの種類全てに関するサンプル。}] d1
$w.text insert end \n\n
$w.text insert end \
[langSel {2. A simple two-dimensional plot that allows you to adjust the positions of the data points.} \
{2. 簡単な 2次元のプロット。データを表す点を動かすことができる。}] d2
$w.text insert end \n\n
$w.text insert end \
[langSel {3. Anchoring and justification modes for text items.} \
{3. テキストアイテムのアンカーと行揃え。}] d3
$w.text insert end \n\n
$w.text insert end \
[langSel {4. An editor for arrow-head shapes for line items.} \
{4. ラインアイテムのための矢印の頭の形のエディタ。}] d4
$w.text insert end \n\n
$w.text insert end \
[langSel {5. A ruler with facilities for editing tab stops.} \
{5. タブストップを変更するための機能つきのルーラー。}] d5
$w.text insert end \n\n
$w.text insert end \
[langSel {6. A grid that demonstrates how canvases can be scrolled.} \
{6. キャンバスがどうやってスクロールするのかを示すグリッド。}] d6

# Create bindings for tags.

foreach tag {d1 d2 d3 d4 d5 d6} {
    $w.text tag bind $tag <Any-Enter> "$w.text tag configure $tag $bold"
    $w.text tag bind $tag <Any-Leave> "$w.text tag configure $tag $normal"
}
$w.text tag bind d1 <1> {source [file join $tk_library demos.jp items.tcl]}
$w.text tag bind d2 <1> {source [file join $tk_library demos.jp plot.tcl]}
$w.text tag bind d3 <1> {source [file join $tk_library demos.jp ctext.tcl]}
$w.text tag bind d4 <1> {source [file join $tk_library demos.jp arrow.tcl]}
$w.text tag bind d5 <1> {source [file join $tk_library demos.jp ruler.tcl]}
$w.text tag bind d6 <1> {source [file join $tk_library demos.jp cscroll.tcl]}

$w.text mark set insert 0.0
$w.text configure -state disabled
