balloon.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (C) 2000 by USC/ISI
  3. # All rights reserved.                                            
  4. #                                                                
  5. # Redistribution and use in source and binary forms are permitted
  6. # provided that the above copyright notice and this paragraph are
  7. # duplicated in all such forms and that any documentation, advertising
  8. # materials, and other materials related to such distribution and use
  9. # acknowledge that the software was developed by the University of
  10. # Southern California, Information Sciences Institute.  The name of the
  11. # University may not be used to endorse or promote products derived from
  12. # this software without specific prior written permission.
  13. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. # $Header: /cvsroot/nsnam/nam-1/tcl/balloon.tcl,v 1.1 2000/02/18 18:07:31 haoboy Exp $
  17. #
  18. # Generic balloon help for an Animator
  19. Class BalloonHelp
  20. BalloonHelp instproc init { tlw } {
  21. $self instvar balloon_
  22. set balloon_ $tlw-bal
  23.         toplevel $balloon_ -class Balloon -borderwidth 1 -relief groove 
  24. -background black
  25.         label $balloon_.info
  26.         pack $balloon_.info -side left -fill y
  27.         wm overrideredirect $balloon_ 1
  28.         wm withdraw $balloon_
  29. }
  30. BalloonHelp instproc destroy {} {
  31. $self balloon_cancel
  32. }
  33. # By default show the balloon after the mouse stayed for 500ms.
  34. BalloonHelp instproc balloon_for {win mesg {delay 500}} {
  35. $self instvar balloon_ bhInfo_ balloon_delay_
  36. # If we do not know about this window, do the event binding,
  37. # otherwise just change the message and delay.
  38. if {![info exists bhInfo_($win)]} {
  39. set bhInfo_($win) $mesg
  40. set balloon_delay_ $delay
  41. bind $win <Enter> "$self balloon_pending %W"
  42. bind $win <Leave> "$self balloon_cancel"
  43. } else {
  44. set bhInfo_($win) $mesg
  45. set balloon_delay_ $delay
  46. }
  47. }
  48. BalloonHelp instproc balloon_pending {win} {
  49. $self instvar bhInfo_ balloon_ balloon_delay_
  50. $self balloon_cancel
  51. set bhInfo_(pending) [after $balloon_delay_ 
  52. "$self balloon_show $win"]
  53. }
  54. BalloonHelp instproc balloon_cancel {} {
  55. $self instvar bhInfo_ balloon_
  56. if [info exists bhInfo_(pending)] {
  57. after cancel $bhInfo_(pending)
  58. unset bhInfo_(pending)
  59. }
  60. wm withdraw $balloon_
  61. }
  62. BalloonHelp instproc balloon_show {win} {
  63. $self instvar bhInfo_ balloon_
  64. set bhInfo_(active) 1
  65. if { $bhInfo_(active) } {
  66. $balloon_.info configure -text $bhInfo_($win)
  67. set x [expr [winfo rootx $win]+[winfo width $win]+5]
  68. set y [expr [winfo rooty $win]+10]
  69. wm geometry $balloon_ +$x+$y
  70. wm deiconify $balloon_
  71. raise $balloon_
  72. }
  73. unset bhInfo_(pending)
  74. }