# # text (tag bindings) widget demo (called by 'widget') # # toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë if defined?($bind_demo) && $bind_demo $bind_demo.destroy $bind_demo = nil end # demo ÍѤΠtoplevel widget ¤òÀ¸À® $bind_demo = TkToplevel.new {|w| title("Text Demonstration - Tag Bindings") iconname("bind") positionWindow(w) } # frame À¸À® TkFrame.new($bind_demo) {|frame| TkButton.new(frame) { #text 'λ²ò' text 'ÊĤ¸¤ë' command proc{ tmppath = $bind_demo $bind_demo = nil tmppath.destroy } }.pack('side'=>'left', 'expand'=>'yes') TkButton.new(frame) { text '¥³¡¼¥É»²¾È' command proc{showCode 'bind'} }.pack('side'=>'left', 'expand'=>'yes') }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m') # bind Íѥ᥽¥Ã¥É def tag_binding_for_bind_demo(tag, enter_style, leave_style) tag.bind('Any-Enter', proc{tag.configure enter_style}) tag.bind('Any-Leave', proc{tag.configure leave_style}) end # text À¸À® TkText.new($bind_demo){|t| # À¸À® setgrid 'true' width 60 height 24 font $font wrap 'word' TkScrollbar.new($bind_demo) {|s| pack('side'=>'right', 'fill'=>'y') command proc{|*args| t.yview(*args)} t.yscrollcommand proc{|first,last| s.set first,last} } pack('expand'=>'yes', 'fill'=>'both') # ¥¹¥¿¥¤¥ëÀßÄê if TkWinfo.depth($root).to_i > 1 tagstyle_bold = {'background'=>'#43ce80', 'relief'=>'raised', 'borderwidth'=>1} tagstyle_normal = {'background'=>'', 'relief'=>'flat'} else tagstyle_bold = {'foreground'=>'white', 'background'=>'black'} tagstyle_normal = {'foreground'=>'', 'background'=>''} end # ¥Æ¥¥¹¥ÈÁÞÆþ insert 'insert', "¥Æ¥¥¹¥Èwidget¤Îɽ¼¨¥¹¥¿¥¤¥ë¤òÀ©¸æ¤¹¤ë¤Î¤ÈƱ¤¸¥¿¥°¤Î¥á¥«¥Ë¥º¥à¤ò»È¤Ã¤Æ¡¢¥Æ¥¥¹¥È¤ËTcl¤Î¥³¥Þ¥ó¥É¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥Þ¥¦¥¹¤ä¥¡¼¥Ü¡¼¥É¤Î¥¢¥¯¥·¥ç¥ó¤ÇÆÃÄê¤ÎTcl¤Î¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢²¼¤Î¥¥ã¥ó¥Ð¥¹¤Î¥Ç¥â¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀʸ¤Ë¤Ï¤½¤Î¤è¤¦¤Ê¥¿¥°¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£¥Þ¥¦¥¹¤òÀâÌÀʸ¤Î¾å¤Ë»ý¤Ã¤Æ¤¤¤¯¤ÈÀâÌÀʸ¤¬¸÷¤ê¡¢¥Ü¥¿¥ó1¤ò²¡¤¹¤È¤½¤ÎÀâÌÀ¤Î¥Ç¥â¤¬»Ï¤Þ¤ê¤Þ¤¹¡£ " insert('end', '1. ¥¥ã¥ó¥Ð¥¹ widget ¤Ëºî¤ë¤³¤È¤Î¤Ç¤¤ë¥¢¥¤¥Æ¥à¤Î¼ïÎàÁ´¤Æ¤Ë´Ø¤¹¤ë¥µ¥ó¥×¥ë¡£', (d1 = TkTextTag.new(t)) ) insert('end', "\n\n") insert('end', '2. ´Êñ¤Ê 2¼¡¸µ¤Î¥×¥í¥Ã¥È¡£¥Ç¡¼¥¿¤òɽ¤¹ÅÀ¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤¤ë¡£', (d2 = TkTextTag.new(t)) ) insert('end', "\n\n") insert('end', '3. ¥Æ¥¥¹¥È¥¢¥¤¥Æ¥à¤Î¥¢¥ó¥«¡¼¤È¹Ô·¤¨¡£', (d3 = TkTextTag.new(t)) ) insert('end', "\n\n") insert('end', '4. ¥é¥¤¥ó¥¢¥¤¥Æ¥à¤Î¤¿¤á¤ÎÌð°õ¤ÎƬ¤Î·Á¤Î¥¨¥Ç¥£¥¿¡£', (d4 = TkTextTag.new(t)) ) insert('end', "\n\n") insert('end', '5. ¥¿¥Ö¥¹¥È¥Ã¥×¤òÊѹ¹¤¹¤ë¤¿¤á¤Îµ¡Ç½¤Ä¤¤Î¥ë¡¼¥é¡¼¡£', (d5 = TkTextTag.new(t)) ) insert('end', "\n\n") insert('end', '6. ¥¥ã¥ó¥Ð¥¹¤¬¤É¤¦¤ä¤Ã¤Æ¥¹¥¯¥í¡¼¥ë¤¹¤ë¤Î¤«¤ò¼¨¤¹¥°¥ê¥Ã¥É¡£', (d6 = TkTextTag.new(t)) ) # binding [d1, d2, d3, d4, d5, d6].each{|tag| tag_binding_for_bind_demo(tag, tagstyle_bold, tagstyle_normal) } d1.bind('1', proc{ eval(`cat #{[$demo_dir,'items.rb'].join(File::Separator)}`, _null_binding) }) d2.bind('1', proc{ eval(`cat #{[$demo_dir,'plot.rb'].join(File::Separator)}`, _null_binding) }) d3.bind('1', proc{ eval(`cat #{[$demo_dir,'ctext.rb'].join(File::Separator)}`, _null_binding) }) d4.bind('1', proc{ eval(`cat #{[$demo_dir,'arrow.rb'].join(File::Separator)}`, _null_binding) }) d5.bind('1', proc{ eval(`cat #{[$demo_dir,'ruler.rb'].join(File::Separator)}`, _null_binding) }) d6.bind('1', proc{ eval(`cat #{[$demo_dir,'cscroll.rb'].join(File::Separator)}`, _null_binding) }) TkTextMarkInsert.new(t, '0.0') configure('state','disabled') }