Annotation of micropolis/src/tk/library/demos/mkStyles.tcl, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.