home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / lisp / stk-3.0 / stk-3 / blt-for-STk-3.0 / blt-1.9 / demos / htext < prev    next >
Encoding:
Text File  |  1995-07-01  |  2.8 KB  |  112 lines

  1. #!../blt_wish -f
  2.  
  3. if [file exists ../library] {
  4.     set blt_library ../library
  5. }
  6.  
  7. option add *Blt_htext.foreground navyblue
  8.  
  9. proc Blt_HtFindPattern { htext } {
  10.     toplevel .search
  11.     wm title .search "Text search"
  12.     label .search.label1 -text "Enter text string"
  13.     entry .search.entry -relief sunken
  14.     label .search.label2 -text "Direction:"
  15.     set varName direction$htext
  16.     radiobutton .search.forward -text "forward" -value "forward" \
  17.     -variable $varName -relief flat
  18.     radiobutton .search.backward -text "backward" -value "backward" \
  19.     -variable $varName -relief flat
  20.     global $varName 
  21.     set $varName "forward"
  22.     button .search.cancel -text "dismiss" \
  23.     -command "destroy .search; focus $htext"
  24.     button .search.search -text "search" -command "Blt_HtSearch&Move $htext"
  25.     bind .search.entry <Return> "Blt_HtSearch&Move $htext"
  26.     blt_table .search \
  27.     .search.label1     0,0 -cspan 3 -padx 4 \
  28.     .search.entry     1,0 -cspan 3 -pady 4 -padx 4 -reqwidth 3i \
  29.     .search.label2  2,0  \
  30.     .search.forward 2,1 -reqwidth 1i -anchor w \
  31.     .search.backward 2,2 -reqwidth 1i -anchor w \
  32.     .search.search  3,0 -reqwidth .75i -anchor w -padx 10 -pady 5  \
  33.     .search.cancel    3,2 -reqwidth .75i -anchor e -padx 10 -pady 5 
  34.     focus .search.entry
  35.     bind .search <Visibility> { raise .search }
  36. }
  37.        
  38.  
  39. proc Blt_HtSearch&Move { htext } {
  40.     set pattern [.search.entry get]
  41.     if { $pattern == "" } {
  42.     return
  43.     }
  44.     set pattern "*$pattern*"
  45.     
  46.     set varName direction$htext
  47.     global $varName
  48.     set curPos [$htext gotoline]
  49.     if { [set $varName] == "forward" } {
  50.     set last end ; set first [expr $curPos+1]
  51.     } else {
  52.     set last 1   ; set first [expr $curPos-1]
  53.     }
  54.     set newPos [$htext search $pattern $first $last]
  55.     if { ($newPos == -1) || ($newPos == $curPos) } {
  56.     blt_bell
  57.     } else {
  58.     $htext gotoline $newPos
  59.     }
  60. }
  61.  
  62. # Create horizonatal and vertical scrollbars
  63. scrollbar .vscroll -command { .htext yview } -orient vertical 
  64. scrollbar .hscroll -command { .htext xview } -orient horizontal
  65.  
  66. # Create the hypertext widget 
  67. blt_htext .htext -file ./htext.txt \
  68.     -yscrollcommand { .vscroll set } \
  69.     -xscrollcommand { .hscroll set } \
  70.     -height 6i \
  71.     -yscrollunits 10m \
  72.     -xscrollunits .25i 
  73.  
  74. blt_table . \
  75.     .htext 0,0 -fill both \
  76.     .vscroll 0,1 -fill y \
  77.     .hscroll 1,0 -fill x 
  78.  
  79. blt_table row . configure 1 -resize none
  80. blt_table column . configure 1 -resize none
  81.  
  82. bind .htext <B2-Motion> {
  83.     %W scan dragto %x %y
  84. }
  85. bind .htext <2> {
  86.     %W scan mark %x %y
  87. }
  88.  
  89. bind .htext <Control-p> { 
  90.     %W gotoline [expr [%W gotoline]-1] 
  91. }
  92. bind .htext <Control-n> { 
  93.     %W gotoline [expr [%W gotoline]+1] 
  94. }
  95.  
  96. bind .htext <Control-v> { 
  97.     %W yview [expr [%W yview]+10]
  98. }
  99. bind .htext <Meta-v> { 
  100.     %W yview [expr [%W yview]-10]
  101. }
  102. bind .htext <Any-q> {
  103.     exit 0
  104. }
  105. bind .htext <Control-s> {
  106.     Blt_HtFindPattern %W
  107. }
  108.  
  109. focus .htext
  110. wm min . 0 0
  111.  
  112.