OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / ext / tk / sample / demos-jp / bind.rb
1 # -*- coding: euc-jp -*-
2 #
3 # text (tag bindings) widget demo (called by 'widget')
4 #
5
6 # toplevel widget ¤¬Â¸ºß¤¹¤ì¤Ðºï½ü¤¹¤ë
7 if defined?($bind_demo) && $bind_demo
8   $bind_demo.destroy 
9   $bind_demo = nil
10 end
11
12 # demo ÍѤΠtoplevel widget ¤òÀ¸À®
13 $bind_demo = TkToplevel.new {|w|
14   title("Text Demonstration - Tag Bindings")
15   iconname("bind")
16   positionWindow(w)
17 }
18
19 base_frame = TkFrame.new($bind_demo).pack(:fill=>:both, :expand=>true)
20
21 # frame À¸À®
22 TkFrame.new(base_frame) {|frame|
23   TkButton.new(frame) {
24     #text 'λ²ò'
25     text 'ÊĤ¸¤ë'
26     command proc{
27       tmppath = $bind_demo
28       $bind_demo = nil
29       tmppath.destroy
30     }
31   }.pack('side'=>'left', 'expand'=>'yes')
32
33   TkButton.new(frame) {
34     text '¥³¡¼¥É»²¾È'
35     command proc{showCode 'bind'}
36   }.pack('side'=>'left', 'expand'=>'yes')
37 }.pack('side'=>'bottom', 'fill'=>'x', 'pady'=>'2m')
38
39 # bind Íѥ᥽¥Ã¥É
40 def tag_binding_for_bind_demo(tag, enter_style, leave_style)
41   tag.bind('Any-Enter', proc{tag.configure enter_style})
42   tag.bind('Any-Leave', proc{tag.configure leave_style})
43 end
44
45 # text À¸À®
46 txt = TkText.new(base_frame){|t|
47   # À¸À®
48   setgrid 'true'
49   #width  60
50   #height 24
51   font $font
52   wrap 'word'
53   TkScrollbar.new(base_frame) {|s|
54     pack('side'=>'right', 'fill'=>'y')
55     command proc{|*args| t.yview(*args)}
56     t.yscrollcommand proc{|first,last| s.set first,last}
57   }
58   pack('expand'=>'yes', 'fill'=>'both')
59
60   # ¥¹¥¿¥¤¥ëÀßÄê
61   if TkWinfo.depth($root).to_i > 1
62     tagstyle_bold = {'background'=>'#43ce80', 'relief'=>'raised', 
63                      'borderwidth'=>1}
64     tagstyle_normal = {'background'=>'', 'relief'=>'flat'}
65   else
66     tagstyle_bold = {'foreground'=>'white', 'background'=>'black'}
67     tagstyle_normal = {'foreground'=>'', 'background'=>''}
68   end
69
70   # ¥Æ¥­¥¹¥ÈÁÞÆþ
71   insert 'insert', "¥Æ¥­¥¹¥Èwidget¤Îɽ¼¨¥¹¥¿¥¤¥ë¤òÀ©¸æ¤¹¤ë¤Î¤ÈƱ¤¸¥¿¥°¤Î¥á¥«¥Ë¥º¥à¤ò»È¤Ã¤Æ¡¢¥Æ¥­¥¹¥È¤ËTcl¤Î¥³¥Þ¥ó¥É¤ò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¤³¤ì¤Ë¤è¤ê¡¢¥Þ¥¦¥¹¤ä¥­¡¼¥Ü¡¼¥É¤Î¥¢¥¯¥·¥ç¥ó¤ÇÆÃÄê¤ÎTcl¤Î¥³¥Þ¥ó¥É¤¬¼Â¹Ô¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£Î㤨¤Ð¡¢²¼¤Î¥­¥ã¥ó¥Ð¥¹¤Î¥Ç¥â¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀʸ¤Ë¤Ï¤½¤Î¤è¤¦¤Ê¥¿¥°¤¬¤Ä¤¤¤Æ¤¤¤Þ¤¹¡£¥Þ¥¦¥¹¤òÀâÌÀʸ¤Î¾å¤Ë»ý¤Ã¤Æ¤¤¤¯¤ÈÀâÌÀʸ¤¬¸÷¤ê¡¢¥Ü¥¿¥ó1¤ò²¡¤¹¤È¤½¤ÎÀâÌÀ¤Î¥Ç¥â¤¬»Ï¤Þ¤ê¤Þ¤¹¡£
72
73 "
74   insert('end', '1. ¥­¥ã¥ó¥Ð¥¹ widget ¤Ëºî¤ë¤³¤È¤Î¤Ç¤­¤ë¥¢¥¤¥Æ¥à¤Î¼ïÎàÁ´¤Æ¤Ë´Ø¤¹¤ë¥µ¥ó¥×¥ë¡£', (d1 = TkTextTag.new(t)) )
75   insert('end', "\n\n")
76   insert('end', '2. ´Êñ¤Ê 2¼¡¸µ¤Î¥×¥í¥Ã¥È¡£¥Ç¡¼¥¿¤òɽ¤¹ÅÀ¤òÆ°¤«¤¹¤³¤È¤¬¤Ç¤­¤ë¡£', (d2 = TkTextTag.new(t)) )
77   insert('end', "\n\n")
78   insert('end', '3. ¥Æ¥­¥¹¥È¥¢¥¤¥Æ¥à¤Î¥¢¥ó¥«¡¼¤È¹Ô·¤¨¡£', 
79          (d3 = TkTextTag.new(t)) )
80   insert('end', "\n\n")
81   insert('end', '4. ¥é¥¤¥ó¥¢¥¤¥Æ¥à¤Î¤¿¤á¤ÎÌð°õ¤ÎƬ¤Î·Á¤Î¥¨¥Ç¥£¥¿¡£', 
82          (d4 = TkTextTag.new(t)) )
83   insert('end', "\n\n")
84   insert('end', '5. ¥¿¥Ö¥¹¥È¥Ã¥×¤òÊѹ¹¤¹¤ë¤¿¤á¤Îµ¡Ç½¤Ä¤­¤Î¥ë¡¼¥é¡¼¡£', 
85          (d5 = TkTextTag.new(t)) )
86   insert('end', "\n\n")
87   insert('end', 
88          '6. ¥­¥ã¥ó¥Ð¥¹¤¬¤É¤¦¤ä¤Ã¤Æ¥¹¥¯¥í¡¼¥ë¤¹¤ë¤Î¤«¤ò¼¨¤¹¥°¥ê¥Ã¥É¡£', 
89          (d6 = TkTextTag.new(t)) )
90
91   # binding
92   [d1, d2, d3, d4, d5, d6].each{|tag|
93     tag_binding_for_bind_demo(tag, tagstyle_bold, tagstyle_normal)
94   }
95   d1.bind('1', 
96           proc{
97             eval_samplecode(`cat #{[$demo_dir,'items.rb'].join(File::Separator)}`, 'items.rb')
98           })
99   d2.bind('1', 
100           proc{
101             eval_samplecode(`cat #{[$demo_dir,'plot.rb'].join(File::Separator)}`, 'plot.rb')
102           })
103   d3.bind('1', 
104           proc{
105             eval_samplecode(`cat #{[$demo_dir,'ctext.rb'].join(File::Separator)}`, 'ctext.rb')
106           })
107   d4.bind('1', 
108           proc{
109             eval_samplecode(`cat #{[$demo_dir,'arrow.rb'].join(File::Separator)}`, 'arrow.rb')
110           })
111   d5.bind('1', 
112           proc{
113             eval_samplecode(`cat #{[$demo_dir,'ruler.rb'].join(File::Separator)}`, 'ruler.rb')
114           })
115   d6.bind('1', 
116           proc{
117             eval_samplecode(`cat #{[$demo_dir,'cscroll.rb'].join(File::Separator)}`, 'cscroll.rb')
118           })
119
120   TkTextMarkInsert.new(t, '0.0')
121   configure('state','disabled')
122 }
123
124 txt.width  60
125 txt.height 24