home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / browsviewd.tcl < prev    next >
Text File  |  1997-06-25  |  4KB  |  166 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)browsviewd.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)browsviewd.tcl    /main/titanic/1   25 Jun 1997 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. require "dlgbrowsob.tcl"
  13. require "wmt_util.tcl"
  14. # End user added include file section
  15.  
  16.  
  17. Class BrowsViewDialog : {TemplateDialog} {
  18.     constructor
  19.     method destructor
  20.     method display
  21.     method handleHelp
  22.     method handleSelectionChanged
  23.     method popUp
  24.     method sort
  25.     method view
  26.     attribute objectSpecList
  27.     attribute headerSpecList
  28.     attribute objectList
  29.     attribute message
  30. }
  31.  
  32. constructor BrowsViewDialog {class this name} {
  33.     set this [TemplateDialog::constructor $class $this $name]
  34.     # Start constructor user section
  35.  
  36.     interface DlgColumn $this.top {
  37.         Label message {}
  38.         BrowsView view {
  39.         rowCount 5
  40.         mode DETAIL
  41.         selectionPolicy EXTENDED
  42.         }
  43.     }
  44.     $this config \
  45.         -modal yes \
  46.         -helpPressed "$this handleHelp"
  47.     [$this view] selectionChanged "$this handleSelectionChanged"
  48.  
  49.     # End constructor user section
  50.     return $this
  51. }
  52.  
  53. method BrowsViewDialog::destructor {this} {
  54.     # Start destructor user section
  55.     # End destructor user section
  56. }
  57.  
  58. method BrowsViewDialog::display {this} {
  59.     $this.top.message text [$this message]
  60.  
  61.     # clear the view
  62.     foreach object [[$this view] objectSet] {
  63.     $object delete
  64.     }
  65.     foreach header [[$this view] headerSet] {
  66.     $header delete
  67.     }
  68.  
  69.     # create headers
  70.     set count 0
  71.     set columnCount 0
  72.     foreach headerSpec [$this headerSpecList] {
  73.     BrowsHeader new [$this view].header$count \
  74.         -label "[lindex $headerSpec 0]" \
  75.         -width [lindex $headerSpec 1]
  76.     if {$count < 2} {
  77.         incr columnCount [lindex $headerSpec 1]
  78.     }
  79.     incr count 1
  80.     }
  81.     [$this view] columnCount $columnCount
  82.  
  83.     #create objects
  84.     set count 0
  85.     foreach objectSpec [$this objectSpecList] {
  86.     set dlgBrowsObject [$this view].object$count
  87.     DlgBrowsObject new $dlgBrowsObject \
  88.         -object [lindex [$this objectList] $count] \
  89.         -label [lindex $objectSpec 1] \
  90.         -details [lrange $objectSpec 2 end] \
  91.         -activated "$this popDown; eval \[$this okPressed\]"
  92.     if {"[lindex $objectSpec 0]" != ""} {
  93.         $dlgBrowsObject smallIcon [lindex $objectSpec 0]
  94.     }
  95.     incr count 1
  96.     }
  97.  
  98.     $this sort
  99.  
  100.     # select if one entry
  101.     if {$count == 1} {
  102.         [$this view].object0 selectState 1
  103.     }
  104. }
  105.  
  106. method BrowsViewDialog::handleHelp {this} {
  107.     [getParent $this] helpOnName [nt_get_type $this]
  108. }
  109.  
  110. method BrowsViewDialog::handleSelectionChanged {this} {
  111.     if {[llength [[$this view] selectedSet]] == 0} {
  112.     set selected 0
  113.     } else {
  114.     set selected 1
  115.     }
  116.     $this okSensitive $selected
  117.     $this okDefault $selected
  118.     $this cancelDefault [expr 1 - $selected]
  119. }
  120.  
  121. method BrowsViewDialog::popUp {this} {
  122.     $this display
  123.  
  124.     $this handleSelectionChanged
  125.     $this TemplateDialog::popUp
  126. }
  127.  
  128. method BrowsViewDialog::sort {this} {
  129.     if [lempty [[$this view] objectSet]] {
  130.     return
  131.     }
  132.  
  133.     set count -1
  134.     foreach headerSpec [$this headerSpecList] {
  135.     incr count 1
  136.     if {[llength $headerSpec] < 4} continue
  137.     set type [lindex $headerSpec 2]
  138.     set sortPolicy [lindex [lindex $headerSpec 3] 0]
  139.     if {"$sortPolicy" == "" || "$sortPolicy" == "none"} continue
  140.     set index [lindex [lindex $headerSpec 3] 1]
  141.     if {"$index" == "" || $index < 1} continue
  142.     set sortSpec($index) \
  143.         "-column {[$this view].header$count $type $sortPolicy}"
  144.     }
  145.  
  146.     set sortSpecList ""
  147.     if {! [catch {set indices [lsort -integer [array names sortSpec]]}]} {
  148.     foreach index $indices {
  149.         append sortSpecList " $sortSpec($index)"
  150.     }
  151.     }
  152.  
  153.     if [lempty $sortSpecList] {
  154.     return
  155.     }
  156.  
  157.     eval [$this view] sort $sortSpecList
  158. }
  159.  
  160. method BrowsViewDialog::view {this} {
  161.     return $this.top.view
  162. }
  163.  
  164. # Do not delete this line -- regeneration end marker
  165.  
  166.