home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 December / PCWorld_2000-12_cd.bin / Komunikace / Comanche / BWidget-1.2 / demo / manager.tcl < prev    next >
Text File  |  2000-11-02  |  5KB  |  142 lines

  1.  
  2.  
  3. namespace eval DemoManager {
  4.     variable _progress 0
  5.     variable _afterid  ""
  6.     variable _status "Compute in progress..."
  7.     variable _homogeneous 0
  8. }
  9.  
  10.  
  11. proc DemoManager::create { nb } {
  12.     set frame [$nb insert end demoManager -text "Manager"]
  13.  
  14.     set topf  [frame $frame.topf]
  15.     set titf1 [TitleFrame $topf.titf1 -text "MainFrame"]
  16.     set titf2 [TitleFrame $topf.titf2 -text "NoteBook"]
  17.     set titf3 [TitleFrame $frame.titf3 -text "Paned & ScrolledWindow"]
  18.  
  19.     _mainframe [$titf1 getframe]
  20.     _notebook  [$titf2 getframe]
  21.     _paned     [$titf3 getframe]
  22.  
  23.     pack $titf1 $titf2 -padx 4 -side left -fill both -expand yes
  24.     pack $topf -fill x -pady 2
  25.     pack $titf3 -pady 2 -padx 4 -fill both -expand yes
  26.  
  27.     return $frame
  28. }
  29.  
  30.  
  31. proc DemoManager::_mainframe { parent } {
  32.     set labf1 [LabelFrame $parent.labf1 -text "Toolbar" -side top -anchor w \
  33.                    -relief sunken -borderwidth 2]
  34.     set subf  [$labf1 getframe]
  35.     checkbutton $subf.chk1 -text "View toolbar 1" -variable Demo::toolbar1 \
  36.         -command {$Demo::mainframe showtoolbar 0 $Demo::toolbar1}
  37.     checkbutton $subf.chk2 -text "View toolbar 2" -variable Demo::toolbar2 \
  38.         -command {$Demo::mainframe showtoolbar 1 $Demo::toolbar2}
  39.     pack $subf.chk1 $subf.chk2 -anchor w -fill x
  40.     pack $labf1 -fill both
  41.  
  42.     set labf2 [LabelFrame $parent.labf2 -text "Status bar" -side top -anchor w \
  43.                    -relief sunken -borderwidth 2]
  44.     set subf  [$labf2 getframe]
  45.     checkbutton $subf.chk1 -text "Show Progress\nindicator" -justify left \
  46.         -variable DemoManager::_progress \
  47.         -command  {DemoManager::_show_progress}
  48.     pack $subf.chk1 -anchor w -fill x
  49.  
  50.     pack $labf1 $labf2 -side left -padx 4 -fill both
  51. }
  52.  
  53.  
  54. proc DemoManager::_notebook { parent } {
  55.     checkbutton $parent.chk1 -text "Homogeneous label" \
  56.         -variable DemoManager::_homogeneous \
  57.         -command  {$Demo::notebook configure -homogeneous $DemoManager::_homogeneous}
  58.     pack $parent.chk1 -side left -anchor n -fill x
  59. }
  60.  
  61.  
  62.  
  63. proc DemoManager::_paned { parent } {
  64.     set pw1   [PanedWindow $parent.pw -side top]
  65.     set pane  [$pw1 add -minsize 100]
  66.  
  67.     set pw2    [PanedWindow $pane.pw -side left]
  68.     set pane1  [$pw2 add -minsize 100]
  69.     set pane2  [$pw2 add -minsize 100]
  70.     set pane3  [$pw1 add -minsize 100]
  71.  
  72.     foreach pane [list $pane1 $pane2] {
  73.         set sw    [ScrolledWindow $pane.sw]
  74.         set lb    [listbox $sw.lb -height 8 -width 20 -highlightthickness 0]
  75.         for {set i 1} {$i <= 8} {incr i} {
  76.             $lb insert end "Value $i"
  77.         }
  78.         $sw setwidget $lb
  79.         pack $sw -fill both -expand yes
  80.     }
  81.  
  82.     set sw [ScrolledWindow $pane3.sw -relief sunken -borderwidth 2]
  83.     set sf [ScrollableFrame $sw.f]
  84.     $sw setwidget $sf
  85.     set subf [$sf getframe]
  86.     set lab [label $subf.lab -text "This is a ScrollableFrame"]
  87.     set chk [checkbutton $subf.chk -text "Constrained width" \
  88.                  -variable DemoManager::_constw \
  89.                  -command  "$sf configure -constrainedwidth \$DemoManager::_constw"]
  90.     pack $lab
  91.     pack $chk -anchor w
  92.     bind $chk <FocusIn> "$sf see $chk"
  93.     for {set i 0} {$i <= 20} {incr i} {
  94.         pack [entry $subf.ent$i -width 50]  -fill x -pady 4
  95.     bind $subf.ent$i <FocusIn> "$sf see $subf.ent$i"
  96.         $subf.ent$i insert end "Text field $i"
  97.     }
  98.  
  99.     pack $sw $pw2 $pw1 -fill both -expand yes
  100. }
  101.  
  102.  
  103. proc DemoManager::_show_progress { } {
  104.     variable _progress
  105.     variable _afterid
  106.     variable _status
  107.  
  108.     if { $_progress } {
  109.         set Demo::status   "Compute in progress..."
  110.         set Demo::prgindic 0
  111.         $Demo::mainframe showstatusbar progression
  112.         if { $_afterid == "" } {
  113.             set _afterid [after 30 DemoManager::_update_progress]
  114.         }
  115.     } else {
  116.         set Demo::status ""
  117.         $Demo::mainframe showstatusbar status
  118.         set _afterid ""
  119.     }
  120. }
  121.  
  122.  
  123. proc DemoManager::_update_progress { } {
  124.     variable _progress
  125.     variable _afterid
  126.  
  127.     if { $_progress } {
  128.         if { $Demo::prgindic < 100 } {
  129.             incr Demo::prgindic 5
  130.             set _afterid [after 30 DemoManager::_update_progress]
  131.         } else {
  132.             set _progress 0
  133.             $Demo::mainframe showstatusbar status
  134.             set Demo::status "Done"
  135.             set _afterid ""
  136.             after 500 {set Demo::status ""}
  137.         }
  138.     } else {
  139.         set _afterid ""
  140.     }
  141. }
  142.