1# 2# tkextlib/tcllib/tooltip.rb 3# by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) 4# 5# * Part of tcllib extension 6# * Provides tooltips, a small text message that is displayed when the 7# mouse hovers over a widget. 8# 9 10require 'tk' 11require 'tkextlib/tcllib.rb' 12 13# TkPackage.require('tooltip', '1.1') 14TkPackage.require('tooltip') 15 16module Tk::Tcllib 17 module Tooltip 18 PACKAGE_NAME = 'tooltip'.freeze 19 def self.package_name 20 PACKAGE_NAME 21 end 22 23 def self.package_version 24 begin 25 TkPackage.require('tooltip') 26 rescue 27 '' 28 end 29 end 30 end 31end 32 33module Tk::Tcllib::Tooltip 34 extend TkCore 35 36 WidgetClassName = 'Tooltip'.freeze 37 WidgetClassNames[WidgetClassName] ||= self 38 39 def self.database_classname 40 self::WidgetClassName 41 end 42 def self.database_class 43 WidgetClassNames[self::WidgetClassName] 44 end 45 46 def self.clear(glob_path_pat = None) 47 self.clear_glob(glob_path_pat) 48 end 49 50 def self.clear_glob(glob_path_pat) 51 tk_call_without_enc('::tooltip::tooltip', 'clear', glob_path_pat) 52 end 53 54 def self.clear_widgets(*args) 55 self.clear_glob("{#{args.collect{|w| _get_eval_string(w)}.join(',')}}") 56 end 57 58 def self.clear_children(*args) 59 self.clear_glob("{#{args.collect{|w| s = _get_eval_string(w); "#{s},#{s}.*"}.join(',')}}") 60 end 61 62 def self.delay(millisecs=None) 63 number(tk_call_without_enc('::tooltip::tooltip', 'delay', millisecs)) 64 end 65 def self.delay=(millisecs) 66 self.delay(millisecs) 67 end 68 69 def self.fade? 70 bool(tk_call_without_enc('::tooltip::tooltip', 'fade')) 71 end 72 def self.fade(mode) 73 tk_call_without_enc('::tooltip::tooltip', 'fade', mode) 74 end 75 76 def self.disable 77 tk_call_without_enc('::tooltip::tooltip', 'disable') 78 false 79 end 80 def self.off 81 self.disable 82 end 83 84 def self.enable 85 tk_call_without_enc('::tooltip::tooltip', 'enable') 86 true 87 end 88 def self.on 89 self.enable 90 end 91 92 def self.register(widget, msg, keys=nil) 93 if keys.kind_of?(Hash) 94 args = hash_kv(keys) << msg 95 else 96 args = msg 97 end 98 tk_call('::tooltip::tooltip', widget.path, *args) 99 end 100 101 def self.erase(widget) 102 tk_call_without_enc('::tooltip::tooltip', widget.path, '') 103 end 104end 105