# # tkballoonhelp.rb : simple balloon help widget # by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) # # Add a balloon help to a widget. # This widget has only poor featureas. If you need more useful features, # please try to use the Tix extension of Tcl/Tk under Ruby/Tk. # # The interval time to display a balloon help is defined 'interval' option # (default is 1000ms). # require 'tk' class TkBalloonHelp'bisque').pack @label.configure(_symbolkey2str(keys)) unless keys.empty? @path = @label end def epath @epath end def interval(val) if val @timer.interval(val) else @interval end end def show x = TkWinfo.pointerx(@parent) y = TkWinfo.pointery(@parent) @frame.geometry("+#{x+1}+#{y+1}") @frame.deiconify @frame.raise @org_cursor = @parent['cursor'] @parent.cursor('crosshair') end def erase @parent.cursor(@org_cursor) @frame.withdraw end def destroy @frame.destroy end end ################################################ # test ################################################ if __FILE__ == $0 TkButton.new('text'=>'This button has a balloon help') {|b| pack('fill'=>'x') TkBalloonHelp.new(b, 'text'=>' Message ') } TkButton.new('text'=>'This button has another balloon help') {|b| pack('fill'=>'x') TkBalloonHelp.new(b, 'text'=>'configured message', 'interval'=>200, 'font'=>'courier', 'background'=>'gray', 'foreground'=>'red') } Tk.mainloop end