home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / tls / tls085.solintel.Z / tls085.solintel / lib / vtcl / tests / optmenu2.tcl < prev    next >
Encoding:
Text File  |  1995-07-20  |  2.7 KB  |  131 lines

  1. # CVS $Id: optmenu2.tcl,v 1.3 1995/02/03 16:55:07 zibi Exp $
  2.  
  3. #
  4. # Test program for dynamic option menus
  5. #
  6. global mediaMenu densityMenu
  7. global m_but0 m_but1 m_but2
  8. global d_but0 d_but1 d_but2 d_but3 d_but4 d_but5
  9. global numDensityButtons
  10.  
  11. proc quitCB {cbs} {
  12.        VtClose
  13.        exit 0
  14. }
  15.  
  16.  
  17. proc mediaCB {cbs} {
  18.     global mediaMenu densityMenu
  19.     global m_but0 m_but1 m_but2
  20.  
  21.     set selectedWidget [VtGetValues $mediaMenu -selectedWidget]
  22.  
  23.     #floppy
  24.     if {$selectedWidget == $m_but0} {
  25.         ChangeDensityMenu {1440K 720K 100K}
  26.     }
  27.  
  28.     #tape
  29.     if {$selectedWidget == $m_but1} {
  30.         ChangeDensityMenu {600MB 1000MB}
  31.     }
  32.  
  33.     #harddisk
  34.     if {$selectedWidget == $m_but2} {
  35.         ChangeDensityMenu {10MB 20MB 30MB 40MB}
  36.     }
  37. }
  38.  
  39. proc ChangeDensityMenu {pb} {
  40.     global densityMenu
  41.     global d_but0 d_but1 d_but2 d_but3 d_but4 d_but5
  42.     global numDensityButtons
  43.  
  44.     VtSetValues $densityMenu -selectedWidget $d_but0
  45.  
  46.     #
  47.     # How many buttons are there?
  48.     set numButtons [llength $pb]
  49.  
  50.     #
  51.     # if the same replace labels
  52.     if {$numButtons == $numDensityButtons} {
  53.         set i 0
  54.         foreach buttonLabel $pb {
  55.             VtSetValues [set d_but$i] -label [lindex $pb $i]
  56.             VtShow [set d_but$i]
  57.             incr i
  58.         }
  59.     }
  60.  
  61.     #
  62.     # if less 
  63.     # replace labels, 
  64.     # unmanage remaining widgets
  65.     if {$numButtons < $numDensityButtons} {
  66.         set i 0
  67.         foreach buttonLabel $pb {
  68.             VtSetValues [set d_but$i] -label [lindex $pb $i]
  69.             VtShow [set d_but$i]
  70.             incr i
  71.         }
  72.         while {$i < $numDensityButtons} {
  73.             VtHide [set d_but$i]
  74.             incr i
  75.         }
  76.     }
  77.  
  78.     # if more
  79.     # replace labels
  80.     # add more buttons
  81.     if {$numButtons > $numDensityButtons} {
  82.         set i 0
  83.         foreach buttonLabel $pb {
  84.             if {$i < $numDensityButtons} {
  85.                 VtSetValues [set d_but$i] -label [lindex $pb $i]
  86.                 VtShow [set d_but$i]
  87.             } else {
  88.                 set d_but$i [VtPushButton $densityMenu.d_but$i \
  89.                              -label [lindex $pb $i]]
  90.             }
  91.             incr i
  92.         }
  93.         set numDensityButtons $numButtons
  94.     }
  95.  
  96.     VtSetValues $densityMenu -selectedWidget $d_but0
  97.  
  98. }
  99.  
  100. #
  101. # Start Program
  102. #
  103. set app [VtOpen optionMenu]
  104.  
  105. set fn [VtStartForm $app.form -title "Option Menus"]
  106.  
  107.  
  108. set mediaMenu [VtOptionMenu $fn.mediaMenu -label "Media:" -callback mediaCB]
  109. set m_but0 [VtPushButton $mediaMenu.mbut0  -label floppy]
  110. set m_but1 [VtPushButton $mediaMenu.mbut1  -label tape]
  111. set m_but2 [VtPushButton $mediaMenu.mbut2 -label  hardDisk]
  112. VtSetValues $mediaMenu -selectedWidget $m_but0
  113.  
  114. set densityMenu [VtOptionMenu $fn.densityMenu -label "Density:"]
  115. set d_but0 [VtPushButton $densityMenu.d_but0 ]
  116. set d_but1 [VtPushButton $densityMenu.d_but1 ]
  117. set d_but2 [VtPushButton $densityMenu.d_but2 ]
  118. set numDensityButtons 3
  119.  
  120. mediaCB {}
  121.  
  122.  
  123. set quit [VtPushButton $fn.quit -callback quitCB \
  124.                                 -leftSide FORM \
  125.                 -rightSide FORM \
  126.                 -bottomSide FORM]
  127.  
  128. VtShow $fn
  129. VtMainLoop
  130.  
  131.