home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / cbfindclas.tcl < prev    next >
Text File  |  1996-09-03  |  4KB  |  130 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)cbfindclas.tcl    /main/hindenburg/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)cbfindclas.tcl    /main/hindenburg/2   3 Sep 1996 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class CBFindClassDialog : {TemplateDialog} {
  16.     constructor
  17.     method destructor
  18.     method handleCaseSensitiveChanged
  19.     method handleOkPressed
  20.     method handleNextPressed
  21.     method findMatchingClass
  22.     method initialisedView
  23.     attribute nextClassIndex
  24.     attribute classNameWildCard
  25. }
  26.  
  27. constructor CBFindClassDialog {class this name} {
  28.     set this [TemplateDialog::constructor $class $this $name]
  29.     $this nextClassIndex 0
  30.     $this classNameWildCard ""
  31.     # Start constructor user section
  32.     $this config -title "Find Class" \
  33.         -okPressed "%this handleOkPressed" \
  34.         -helpPressed "$classBrowser helpOnName findClass"
  35.  
  36.     interface DlgColumn $this.c {
  37.         Label message {text "Class Name:"}
  38.         SingleLineText classNameWildCard {columnCount 15}
  39.         CheckButton findCaseSensitive {label "Case Sensitive"}
  40.     }
  41.     $this.c.findCaseSensitive config \
  42.         -state [expr {([m4_var get M4_find_case_sensitive] == "1") \
  43.             ? "yes" : "no"}] \
  44.         -stateChanged "$this handleCaseSensitiveChanged"
  45.  
  46.     PushButton new $this.next -label Next \
  47.         -activated "$this handleNextPressed"
  48.  
  49.     # End constructor user section
  50.     return $this
  51. }
  52.  
  53. method CBFindClassDialog::destructor {this} {
  54.     # Start destructor user section
  55.     # End destructor user section
  56. }
  57.  
  58. method CBFindClassDialog::handleCaseSensitiveChanged {this} {
  59.     catch {m4_var set M4_find_case_sensitive \
  60.          [$this.c.findCaseSensitive state]}
  61. }
  62.  
  63. method CBFindClassDialog::handleOkPressed {this} {
  64.     busy {
  65.         wmtkmessage "Finding first matching class ..."
  66.         $this nextClassIndex 0
  67.         $this classNameWildCard [$this.c.classNameWildCard text]
  68.         if {[$this findMatchingClass]} {
  69.             wmtkmessage ""
  70.         }
  71.     }
  72. }
  73.  
  74. method CBFindClassDialog::handleNextPressed {this} {
  75.     if {[$this.c.classNameWildCard text] != [$this classNameWildCard]} {
  76.         $this handleOkPressed
  77.     } else {
  78.         busy {
  79.             wmtkmessage "Finding next matching class ..."
  80.             if {[$this findMatchingClass]} {
  81.                 wmtkmessage ""
  82.             }
  83.         }
  84.     }
  85. }
  86.  
  87. method CBFindClassDialog::findMatchingClass {this} {
  88.     if {[string length [$this classNameWildCard]] == 0} {
  89.         wmtkmessage "No match found for ''"
  90.         return 0
  91.     }
  92.     set classList [[[$classBrowser classTL] textListEntrySet] contents]
  93.     set idx [$this nextClassIndex]
  94.     set found 0
  95.     while {$idx < [llength $classList]} {
  96.         set class [lindex $classList $idx]
  97.         if {[$this.c.findCaseSensitive state]} {
  98.             set found [string match [$this classNameWildCard] \
  99.                 [$class name]]
  100.         } else {
  101.             set found [string match \
  102.                 [string tolower [$this classNameWildCard]] \
  103.                 [string tolower [$class name]]]
  104.         }
  105.         if {$found} {
  106.             $this nextClassIndex [expr {$idx + 1}]
  107.             $class open
  108.             break
  109.         }
  110.         incr idx
  111.     }
  112.     if {!$found} {
  113.         if {[$this nextClassIndex] == 0} {
  114.             set classNameWildCard [$this classNameWildCard]
  115.             wmtkmessage "No match found for '$classNameWildCard'"
  116.         } else {
  117.             $this nextClassIndex 0
  118.             return [$this findMatchingClass]
  119.         }
  120.     }
  121.     return $found
  122. }
  123.  
  124. method CBFindClassDialog::initialisedView {this} {
  125.     $this nextClassIndex 0
  126. }
  127.  
  128. # Do not delete this line -- regeneration end marker
  129.  
  130.