129 lines
4.3 KiB
Tcl
129 lines
4.3 KiB
Tcl
|
# mkStyles w
|
||
|
#
|
||
|
# Create a top-level window with a text widget that demonstrates the
|
||
|
# various display styles that are available in texts.
|
||
|
#
|
||
|
# Arguments:
|
||
|
# w - Name to use for new top-level window.
|
||
|
|
||
|
proc mkStyles {{w .styles}} {
|
||
|
catch {destroy $w}
|
||
|
toplevel $w
|
||
|
dpos $w
|
||
|
wm title $w "Text Demonstration - Display Styles"
|
||
|
wm iconname $w "Text Styles"
|
||
|
|
||
|
button $w.ok -text OK -command "destroy $w"
|
||
|
text $w.t -relief raised -bd 2 -yscrollcommand "$w.s set" -setgrid true \
|
||
|
-width 70 -height 28
|
||
|
scrollbar $w.s -relief flat -command "$w.t yview"
|
||
|
pack $w.ok -side bottom -fill x
|
||
|
pack $w.s -side right -fill y
|
||
|
pack $w.t -expand yes -fill both
|
||
|
|
||
|
# Set up display styles
|
||
|
|
||
|
$w.t tag configure bold -font -Adobe-Courier-Bold-O-Normal-*-120-*
|
||
|
$w.t tag configure big -font -Adobe-Courier-Bold-R-Normal-*-140-*
|
||
|
$w.t tag configure verybig -font -Adobe-Helvetica-Bold-R-Normal-*-240-*
|
||
|
if {[tk colormodel $w] == "color"} {
|
||
|
$w.t tag configure color1 -background #eed5b7
|
||
|
$w.t tag configure color2 -foreground red
|
||
|
$w.t tag configure raised -background #eed5b7 -relief raised \
|
||
|
-borderwidth 1
|
||
|
$w.t tag configure sunken -background #eed5b7 -relief sunken \
|
||
|
-borderwidth 1
|
||
|
} else {
|
||
|
$w.t tag configure color1 -background black -foreground white
|
||
|
$w.t tag configure color2 -background black -foreground white
|
||
|
$w.t tag configure raised -background white -relief raised \
|
||
|
-borderwidth 1
|
||
|
$w.t tag configure sunken -background white -relief sunken \
|
||
|
-borderwidth 1
|
||
|
}
|
||
|
$w.t tag configure bgstipple -background black -borderwidth 0 \
|
||
|
-bgstipple gray25
|
||
|
$w.t tag configure fgstipple -fgstipple gray50
|
||
|
$w.t tag configure underline -underline on
|
||
|
|
||
|
$w.t insert 0.0 {\
|
||
|
Text widgets like this one allow you to display information in a
|
||
|
variety of styles. Display styles are controlled using a mechanism
|
||
|
called }
|
||
|
insertWithTags $w.t tags bold
|
||
|
insertWithTags $w.t {. Tags are just textual names that you can apply to one
|
||
|
or more ranges of characters within a text widget. You can configure
|
||
|
tags with various display styles. If you do this, then the tagged
|
||
|
characters will be displayed with the styles you chose. The
|
||
|
available display styles are:
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
1. Font.} big
|
||
|
insertWithTags $w.t { You can choose any X font, }
|
||
|
insertWithTags $w.t large verybig
|
||
|
insertWithTags $w.t { or }
|
||
|
insertWithTags $w.t {small.
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
2. Color.} big
|
||
|
insertWithTags $w.t { You can change either the }
|
||
|
insertWithTags $w.t background color1
|
||
|
insertWithTags $w.t { or }
|
||
|
insertWithTags $w.t foreground color2
|
||
|
insertWithTags $w.t {
|
||
|
color, or }
|
||
|
insertWithTags $w.t both color1 color2
|
||
|
insertWithTags $w.t {.
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
3. Stippling.} big
|
||
|
insertWithTags $w.t { You can cause either the }
|
||
|
insertWithTags $w.t background bgstipple
|
||
|
insertWithTags $w.t { or }
|
||
|
insertWithTags $w.t foreground fgstipple
|
||
|
insertWithTags $w.t {
|
||
|
information to be drawn with a stipple fill instead of a solid fill.
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
4. Underlining.} big
|
||
|
insertWithTags $w.t { You can }
|
||
|
insertWithTags $w.t underline underline
|
||
|
insertWithTags $w.t { ranges of text.
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
5. 3-D effects.} big
|
||
|
insertWithTags $w.t { You can arrange for the background to be drawn
|
||
|
with a border that makes characters appear either }
|
||
|
insertWithTags $w.t raised raised
|
||
|
insertWithTags $w.t { or }
|
||
|
insertWithTags $w.t sunken sunken
|
||
|
insertWithTags $w.t {.
|
||
|
}
|
||
|
insertWithTags $w.t {
|
||
|
6. Yet to come.} big
|
||
|
insertWithTags $w.t { More display effects will be coming soon, such
|
||
|
as the ability to change line justification and perhaps line spacing.}
|
||
|
|
||
|
$w.t mark set insert 0.0
|
||
|
bind $w <Any-Enter> "focus $w.t"
|
||
|
}
|
||
|
|
||
|
# The procedure below inserts text into a given text widget and
|
||
|
# applies one or more tags to that text. The arguments are:
|
||
|
#
|
||
|
# w Window in which to insert
|
||
|
# text Text to insert (it's inserted at the "insert" mark)
|
||
|
# args One or more tags to apply to text. If this is empty
|
||
|
# then all tags are removed from the text.
|
||
|
|
||
|
proc insertWithTags {w text args} {
|
||
|
set start [$w index insert]
|
||
|
$w insert insert $text
|
||
|
foreach tag [$w tag names $start] {
|
||
|
$w tag remove $tag $start insert
|
||
|
}
|
||
|
foreach i $args {
|
||
|
$w tag add $i $start insert
|
||
|
}
|
||
|
}
|