URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [insight/] [itcl/] [itk/] [examples/] [TextDisplay.itk] - Rev 1781
Go to most recent revision | Compare with Previous | Blame | View Log
# ----------------------------------------------------------------------
# EXAMPLE: TextDisplay widget
# ----------------------------------------------------------------------
# COURSE: Object-Oriented Programming with [incr Tcl]
# AUTHOR: Michael J. McLennan, Bell Labs Innovations
# ======================================================================
# Copyright (c) 1996 Lucent Technologies
# ======================================================================
option add *TextDisplay.width 3i widgetDefault
option add *TextDisplay.height 2i widgetDefault
option add *TextDisplay.scrollbar auto widgetDefault
option add *TextDisplay.wrap none widgetDefault
option add *TextDisplay.textBackground ivory widgetDefault
class TextDisplay {
inherit itk::Widget
constructor {args} {
itk_option add hull.width hull.height
itk_component add text {
text $itk_interior.info -state disabled -width 1 -height 1 \
-yscrollcommand [code $itk_interior.sbar set]
} {
usual
keep -wrap -tabs
rename -background -textbackground textBackground Background
}
pack $itk_component(text) -side left -expand yes -fill both
itk_component add scrollbar {
scrollbar $itk_interior.sbar \
-command [code $itk_interior.info yview]
}
pack $itk_component(scrollbar) -side right -fill y
eval itk_initialize $args
pack propagate $itk_component(hull) 0
fixScrollbar
bind $itk_component(text) <Configure> [code $this fixScrollbar]
$itk_component(text) tag configure bold \
-font -*-courier-bold-r-normal--*-120-*
$itk_component(text) tag configure italic \
-font -*-courier-medium-o-normal--*-120-*
}
public method display {info}
public method append {info}
public method substitute {word newword}
itk_option define -scrollbar scrollbar Scrollbar "on" {
switch -- $itk_option(-scrollbar) {
on - off - auto {
fixScrollbar
}
default {
error "bad value \"$itk_option(-scollbar)\""
}
}
}
protected method fixScrollbar {}
private variable sbvisible 1
}
body TextDisplay::display {args} {
$itk_component(text) configure -state normal
$itk_component(text) delete 1.0 end
eval $itk_component(text) insert 1.0 $args
$itk_component(text) configure -state disabled
fixScrollbar
}
body TextDisplay::append {args} {
$itk_component(text) configure -state normal
eval $itk_component(text) insert end $args
$itk_component(text) configure -state disabled
fixScrollbar
}
body TextDisplay::substitute {word newword} {
$itk_component(text) configure -state normal
set index 1.0
while {1} {
set index [$itk_component(text) search -count len $word $index]
if {$index != ""} {
$itk_component(text) delete $index "$index + $len chars"
$itk_component(text) insert $index $newword
} else {
break
}
}
$itk_component(text) configure -state disabled
fixScrollbar
}
body TextDisplay::fixScrollbar {} {
switch $itk_option(-scrollbar) {
on { set sbstate 1 }
off { set sbstate 0 }
auto {
if {[$itk_component(text) bbox 1.0] == "" ||
[$itk_component(text) bbox end-1char] == ""} {
set sbstate 1
} else {
set sbstate 0
}
}
}
if {$sbstate != $sbvisible} {
if {$sbstate} {
pack $itk_component(scrollbar) -side right -fill y
} else {
pack forget $itk_component(scrollbar)
}
set sbvisible $sbstate
}
}
usual TextDisplay {
keep -background -cursor -foreground -font
keep -activebackground -activerelief
keep -highlightcolor -highlightthickness
keep -insertbackground -insertborderwidth -insertwidth
keep -insertontime -insertofftime
keep -selectbackground -selectborderwidth -selectforeground
keep -textbackground -troughcolor
}
Go to most recent revision | Compare with Previous | Blame | View Log