|
|
1.1 ! root 1: # mkStyles w ! 2: # ! 3: # Create a top-level window with a text widget that demonstrates the ! 4: # various display styles that are available in texts. ! 5: # ! 6: # Arguments: ! 7: # w - Name to use for new top-level window. ! 8: ! 9: proc mkStyles {{w .styles}} { ! 10: catch {destroy $w} ! 11: toplevel $w ! 12: dpos $w ! 13: wm title $w "Text Demonstration - Display Styles" ! 14: wm iconname $w "Text Styles" ! 15: button $w.ok -text OK -command "destroy $w" ! 16: text $w.t -relief raised -bd 2 -yscrollcommand "$w.s set" -setgrid true \ ! 17: -width 70 -height 28 ! 18: scrollbar $w.s -relief flat -command "$w.t yview" ! 19: pack append $w $w.ok {bottom fillx} $w.s {right filly} $w.t {expand fill} ! 20: ! 21: # Set up display styles ! 22: ! 23: $w.t tag configure bold -font -Adobe-Courier-Bold-O-Normal-*-120-* ! 24: $w.t tag configure big -font -Adobe-Courier-Bold-R-Normal-*-140-* ! 25: $w.t tag configure verybig -font -Adobe-Helvetica-Bold-R-Normal-*-240-* ! 26: if {[winfo screendepth $w] > 4} { ! 27: $w.t tag configure color1 -background #eed5b7 ! 28: $w.t tag configure color2 -foreground red ! 29: $w.t tag configure raised -background #eed5b7 -relief raised \ ! 30: -borderwidth 1 ! 31: $w.t tag configure sunken -background #eed5b7 -relief sunken \ ! 32: -borderwidth 1 ! 33: } else { ! 34: $w.t tag configure color1 -background black -foreground white ! 35: $w.t tag configure color2 -background black -foreground white ! 36: $w.t tag configure raised -background white -relief raised \ ! 37: -borderwidth 1 ! 38: $w.t tag configure sunken -background white -relief sunken \ ! 39: -borderwidth 1 ! 40: } ! 41: $w.t tag configure bgstipple -background black -borderwidth 0 \ ! 42: -bgstipple gray25 ! 43: $w.t tag configure fgstipple -fgstipple gray50 ! 44: $w.t tag configure underline -underline on ! 45: ! 46: $w.t insert 0.0 {\ ! 47: Text widgets like this one allow you to display information in a ! 48: variety of styles. Display styles are controlled using a mechanism ! 49: called } ! 50: insertWithTags $w.t tags bold ! 51: insertWithTags $w.t {. Tags are just textual names that you can apply to one ! 52: or more ranges of characters within a text widget. You can configure ! 53: tags with various display styles. If you do this, then the tagged ! 54: characters will be displayed with the styles you chose. The ! 55: available display styles are: ! 56: } ! 57: insertWithTags $w.t { ! 58: 1. Font.} big ! 59: insertWithTags $w.t { You can choose any X font, } ! 60: insertWithTags $w.t large verybig ! 61: insertWithTags $w.t { or } ! 62: insertWithTags $w.t {small. ! 63: } ! 64: insertWithTags $w.t { ! 65: 2. Color.} big ! 66: insertWithTags $w.t { You can change either the } ! 67: insertWithTags $w.t background color1 ! 68: insertWithTags $w.t { or } ! 69: insertWithTags $w.t foreground color2 ! 70: insertWithTags $w.t { ! 71: color, or } ! 72: insertWithTags $w.t both color1 color2 ! 73: insertWithTags $w.t {. ! 74: } ! 75: insertWithTags $w.t { ! 76: 3. Stippling.} big ! 77: insertWithTags $w.t { You can cause either the } ! 78: insertWithTags $w.t background bgstipple ! 79: insertWithTags $w.t { or } ! 80: insertWithTags $w.t foreground fgstipple ! 81: insertWithTags $w.t { ! 82: information to be drawn with a stipple fill instead of a solid fill. ! 83: } ! 84: insertWithTags $w.t { ! 85: 4. Underlining.} big ! 86: insertWithTags $w.t { You can } ! 87: insertWithTags $w.t underline underline ! 88: insertWithTags $w.t { ranges of text. ! 89: } ! 90: insertWithTags $w.t { ! 91: 5. 3-D effects.} big ! 92: insertWithTags $w.t { You can arrange for the background to be drawn ! 93: with a border that makes characters appear either } ! 94: insertWithTags $w.t raised raised ! 95: insertWithTags $w.t { or } ! 96: insertWithTags $w.t sunken sunken ! 97: insertWithTags $w.t {. ! 98: } ! 99: insertWithTags $w.t { ! 100: 6. Yet to come.} big ! 101: insertWithTags $w.t { More display effects will be coming soon, such ! 102: as the ability to change line justification and perhaps line spacing.} ! 103: ! 104: $w.t mark set insert 0.0 ! 105: bind $w <Any-Enter> "focus $w.t" ! 106: } ! 107: ! 108: # The procedure below inserts text into a given text widget and ! 109: # applies one or more tags to that text. The arguments are: ! 110: # ! 111: # w Window in which to insert ! 112: # text Text to insert (it's inserted at the "insert" mark) ! 113: # args One or more tags to apply to text. If this is empty ! 114: # then all tags are removed from the text. ! 115: ! 116: proc insertWithTags {w text args} { ! 117: set start [$w index insert] ! 118: $w insert insert $text ! 119: foreach tag [$w tag names $start] { ! 120: $w tag remove $tag $start insert ! 121: } ! 122: foreach i $args { ! 123: $w tag add $i $start insert ! 124: } ! 125: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.