PageRenderTime 32ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/addons/Tooltip.py

http://pyjamas.googlecode.com/
Python | 107 lines | 86 code | 17 blank | 4 comment | 6 complexity | e374404e499415fba1c392d5181ed2b3 MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
  1. # Tooltip component for Pyjamas
  2. # Ported by Willie Gollino from Tooltip component for GWT - Originally by Alexei Sokolov http://gwt.components.googlepages.com/
  3. from ui import PopupPanel, HTML, RootPanel
  4. from Timer import Timer
  5. tooltip_hide_timer = None
  6. class Tooltip(PopupPanel):
  7. def __init__(self, sender, offsetX, offsetY, text, show_delay, hide_delay, styleName):
  8. global tooltip_hide_timer
  9. PopupPanel.__init__(self, True)
  10. self.show_delay = show_delay
  11. self.hide_delay = hide_delay
  12. contents = HTML(text)
  13. self.add(contents)
  14. left = sender.getAbsoluteLeft() + offsetX
  15. top = sender.getAbsoluteTop() + offsetY
  16. self.setPopupPosition(left, top)
  17. self.setStyleName(styleName)
  18. if tooltip_hide_timer:
  19. self.tooltip_show_timer = Timer(1, self)
  20. else:
  21. self.tooltip_show_timer = Timer(self.show_delay, self)
  22. def show(self):
  23. global tooltip_hide_timer
  24. # activate fast tooltips
  25. tooltip_hide_timer=Timer(self.hide_delay, self)
  26. PopupPanel.show(self)
  27. def hide(self):
  28. self.tooltip_show_timer.cancel()
  29. PopupPanel.hide(self)
  30. def onTimer(self, id):
  31. global tooltip_hide_timer
  32. # deactivate fast tooltips on last timer
  33. if tooltip_hide_timer and id == tooltip_hide_timer.getID():
  34. tooltip_hide_timer = None
  35. if id == self.tooltip_show_timer.getID():
  36. self.show()
  37. else:
  38. self.hide()
  39. class TooltipListener:
  40. DEFAULT_TOOLTIP_STYLE = "TooltipPopup"
  41. DEFAULT_OFFSET_X = 10
  42. DEFAULT_OFFSET_Y = 35
  43. def __init__(self, text, show_delay = 1000, hide_delay = 5000, styleName = ""):
  44. if not styleName:
  45. styleName = TooltipListener.DEFAULT_TOOLTIP_STYLE
  46. self.tooltip = None
  47. self.text = text
  48. self.styleName = styleName
  49. self.show_delay = show_delay
  50. self.hide_delay = hide_delay
  51. self.offsetX = TooltipListener.DEFAULT_OFFSET_X
  52. self.offsetY = TooltipListener.DEFAULT_OFFSET_Y
  53. def onMouseEnter(self, sender):
  54. if self.tooltip != None:
  55. self.tooltip.hide()
  56. self.tooltip = Tooltip(sender, self.offsetX, self.offsetY, self.text, self.show_delay, self.hide_delay, self.styleName)
  57. def onMouseLeave(self, sender):
  58. if self.tooltip != None:
  59. self.tooltip.hide()
  60. def onMouseMove(self, sender, x, y):
  61. pass
  62. def onMouseDown(self, sender, x, y):
  63. pass
  64. def onMouseUp(self, sender, x, y):
  65. pass
  66. def getStyleName(self):
  67. return self.styleName
  68. def setStyleName(self, styleName):
  69. self.styleName = styleName
  70. def getOffsetX(self):
  71. return self.offsetX
  72. def setOffsetX(self, offsetX):
  73. self.offsetX = offsetX
  74. def getOffsetY(self):
  75. return self.offsetY
  76. def setOffsetY(self, offsetY):
  77. self.offsetY = offsetY