help.tcl
上传用户:kellyonhid
上传日期:2013-10-12
资源大小:932k
文件大小:5k
源码类别:

3D图形编程

开发平台:

Visual C++

  1. # Make binding so when we mouse over a menu
  2. # it sets that to the current help file
  3. proc help_bindHelpToMenus {} {
  4.     bind Menu <<MenuSelect>> {
  5. help_menuSelectHelper %W
  6.     }
  7. }
  8. # make bindings to that when we mouse over buttons
  9. # those become the current help file
  10. proc help_bindHelpToButtons {} {
  11.     set oldScript [bind Button <Enter>]
  12.     bind Button <Enter> " 
  13.         $oldScript
  14. help_buttonSelectHelper %W"
  15.     set oldScript [bind Checkbutton <Enter>]
  16.     bind Checkbutton <Enter> " 
  17.         $oldScript
  18. help_buttonSelectHelper %W"
  19.   
  20.     set oldScript [bind Radiobutton <Enter>]
  21.     bind Radiobutton <Enter> " 
  22.         $oldScript
  23. help_buttonSelectHelper %W"
  24. }
  25. proc help_menuSelectHelper {curMenu} {
  26.     help_globalVars
  27.     if {$help_onoff} {
  28. set itemIndex [$curMenu index active] 
  29. set typeName [$curMenu type active]
  30. # puts "$curMenu $itemIndex $typeName :"
  31. # Only change help on menu entries. not on leave menu event
  32. if { $typeName != "tearoff" && $itemIndex != "none" } {
  33.     set dot "."
  34.     set filename "help$curMenu$dot$itemIndex"
  35.     #puts $filename
  36.     help_setCurrentFile $filename
  37. }
  38.     }
  39. }
  40. proc help_buttonSelectHelper {curButton} {
  41.     help_globalVars
  42.     if {$help_onoff} {
  43. # Explicitly ignore save button on help window
  44. if {$curButton != ".helpWindow.b.save" && $curButton != ".helpWindow.b.sync" } {
  45.     #puts "button$curButton"
  46.     set filename help.button$curButton
  47.     help_setCurrentFile $filename
  48. }
  49.     }
  50. }
  51. # Set the directory that all these help files get stored in
  52. proc help_setHelpDirectory {dirname} {
  53.     help_globalVars
  54.     set help_sourceDirectory $dirname
  55. }
  56. # set the current help file
  57. # to associate help with some event
  58. # you want to call help_setCurrentFile <some_unique_event_name>
  59. proc help_setCurrentFile {filename} {
  60.     help_globalVars
  61.     set help_currentFile $filename
  62.     help_updateWindow
  63. }
  64. # show the help window
  65. proc help_showWindow {} {
  66.     help_globalVars
  67.     # Scanalyze window management
  68.     if { [window_Activate .helpWindow] } return
  69.     if { ![winfo exists .helpWindow] } {
  70. set helpWindow [toplevel .helpWindow]
  71. wm title $helpWindow "Help Window"
  72. #scanalyze window management
  73. window_Register $helpWindow
  74. #frame for buttons
  75. frame $helpWindow.b
  76. button $helpWindow.b.save -text "Save" 
  77.     -command {help_setHelpText [.helpWindow.tb.text get 1.0 end ]}
  78. button $helpWindow.b.sync -text "Sync CVS Versions" 
  79.     -command {help_syncCVS}
  80. label $helpWindow.b.label -text "Help File: "
  81. label $helpWindow.b.filename -textvariable help_currentFile
  82. packchildren $helpWindow.b -side left -anchor w 
  83. # textbox
  84. frame $helpWindow.tb
  85. text $helpWindow.tb.text -relief raised -bd 2 
  86.     -yscrollcommand "$helpWindow.tb.scroll set"
  87. scrollbar $helpWindow.tb.scroll -command "$helpWindow.tb.text yview"
  88. pack $helpWindow.tb.scroll -side right -fill y
  89. pack $helpWindow.tb.text -side left -fill x -fill y
  90. #pack
  91. packchildren $helpWindow -side bottom -anchor w -fill x -fill y
  92.     }
  93.     
  94.  
  95. }
  96. # hide the help window
  97. proc help_hideWindow {} {
  98.      help_globalVars
  99.     if { [winfo exists .helpWindow] } {
  100. destroy $helpWindow
  101. set helpWindow ""
  102.     }
  103. }
  104. # update the contents of the help window
  105. proc help_updateWindow {} {
  106.     help_globalVars
  107.     if { [winfo exists .helpWindow] } {
  108. .helpWindow.tb.text delete 1.0 end
  109. .helpWindow.tb.text insert end [help_getHelpText]
  110.     }
  111. }
  112. # get the help text stored in the current file
  113. proc help_getHelpText {} {
  114.     help_globalVars
  115.     # set up vars
  116.     set slash "/"
  117.     set fullpath $help_sourceDirectory$slash$help_currentFile
  118.     set buf ""
  119.     # load file
  120.     if { [file exists $fullpath] } {
  121. #puts "File exits"
  122. set f [open $fullpath]
  123. while {![eof $f]} {
  124.     append buf [read $f 1000]
  125. }
  126. close $f
  127.     }
  128.     return $buf;
  129. }
  130. # set the help text stored in the current file
  131. proc help_setHelpText {savetext} {
  132.     help_globalVars
  133.     set slash "/"
  134.     set fullpath $help_sourceDirectory$slash$help_currentFile
  135.     set buf ""
  136.     # Check if file previously existed
  137.     set oldFile [file exists $fullpath]
  138.     # puts $oldFile
  139.     # save file
  140.     set f [open $fullpath w]
  141.     puts $f $savetext
  142.     close $f
  143.     
  144.     # change the mode to be readable
  145.     exec chmod a+rw $fullpath
  146.     # add to cvs repositroy if new
  147.     if { $oldFile == "0" } {
  148. exec cvs add -m "New help file" $fullpath >& /dev/null
  149.     } 
  150. #puts "saving"
  151. #puts $savetext
  152. }
  153. # Sync the current help files with the repository
  154. proc help_syncCVS {} {
  155.     help_globalVars
  156.     set allfiles [glob $help_sourceDirectory/*]
  157.     # Add every file
  158.     foreach f $allfiles {
  159. puts "Adding File: $f"
  160. catch {exec cvs add $f >& /dev/null}
  161.     }
  162.     #catch {exec cvs add $allfiles >& /dev/null}
  163.     # Update from the CVS repository
  164.     exec cvs update $help_sourceDirectory >& /dev/null
  165.     
  166.     # commit all the new files
  167.     exec cvs commit -m "log" $help_sourceDirectory >& /dev/null
  168.     #foreach f $allfiles {
  169. # puts "Commiting File: $f"
  170. # catch {exec cvs commit $allfiles >& /dev/null}
  171.    # }
  172.     
  173.     
  174. }
  175. proc help_toggleOnOff {} {
  176.     help_globalVars
  177.     set help_onoff [expr 1 - $help_onoff]
  178. }
  179. # some global variables used in this module
  180. proc help_globalVars {} {
  181.     uplevel {
  182. globalinit help_sourceDirectory
  183. globalinit help_currentFile
  184. globalinit helpWindow
  185. globalinit help_onoff 1
  186.     }
  187. }