OSDN Git Service

ruby-1.9.1-rc1
[splhack/AndroidRuby.git] / lib / ruby-1.9.1-rc1 / ext / tk / lib / tk / panedwindow.rb
1 #
2 # tk/panedwindow.rb : treat panedwindow
3 #
4 require 'tk'
5
6 class Tk::PanedWindow<TkWindow
7   TkCommandNames = ['panedwindow'.freeze].freeze
8   WidgetClassName = 'Panedwindow'.freeze
9   WidgetClassNames[WidgetClassName] = self
10   #def create_self(keys)
11   #  if keys and keys != None
12   #    tk_call_without_enc('panedwindow', @path, *hash_kv(keys, true))
13   #  else
14   #    tk_call_without_enc('panedwindow', @path)
15   #  end
16   #end
17   #private :create_self
18
19   def add(*args)
20     keys = args.pop
21     fail ArgumentError, "no window in arguments" unless keys
22     if keys && keys.kind_of?(Hash)
23       fail ArgumentError, "no window in arguments" if args == []
24       # args = args.collect{|w| (w.kind_of?(TkObject))? w.epath: w }
25       args = args.collect{|w| _epath(w) }
26       #args.push(hash_kv(keys))
27       args.concat(hash_kv(keys))
28     else
29       args.push(keys) if keys
30       # args = args.collect{|w| (w.kind_of?(TkObject))? w.epath: w }
31       args = args.collect{|w| _epath(w) }
32     end
33     tk_send_without_enc('add', *args)
34     self
35   end
36
37   def forget(win, *wins)
38     wins.unshift(win)
39     # tk_send_without_enc('forget', *((w.kind_of?(TkObject))? w.epath: w))
40     tk_send_without_enc('forget', *(wins.collect{|w| _epath(w)}))
41     self
42   end
43   alias del forget
44   alias delete forget
45   alias remove forget
46
47   def identify(x, y)
48     list(tk_send_without_enc('identify', x, y))
49   end
50
51   def proxy_coord
52     list(tk_send_without_enc('proxy', 'coord'))
53   end
54   def proxy_forget
55     tk_send_without_enc('proxy', 'forget')
56     self
57   end
58   def proxy_place(x, y)
59     tk_send_without_enc('proxy', 'place', x, y)
60     self
61   end
62
63   def sash_coord(index)
64     list(tk_send('sash', 'coord', index))
65   end
66   def sash_dragto(index, x, y)
67     tk_send('sash', 'dragto', index, x, y)
68     self
69   end
70   def sash_mark(index, x, y)
71     tk_send('sash', 'mark', index, x, y)
72     self
73   end
74   def sash_place(index, x, y)
75     tk_send('sash', 'place', index, x, y)
76     self
77   end
78
79   def panecget_strict(win, key)
80     # win = win.epath if win.kind_of?(TkObject)
81     win = _epath(win)
82     tk_tcl2ruby(tk_send_without_enc('panecget', win, "-#{key}"))
83   end
84   def panecget(win, key)
85     unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
86       panecget_strict(win, key)
87     else
88       begin
89         panecget_strict(win, key)
90       rescue => e
91         begin
92           if current_paneconfiginfo(win).has_key?(option.to_s)
93             # not tag error & option is known -> error on known option
94             fail e
95           else
96             # not tag error & option is unknown
97             nil
98           end
99         rescue
100           fail e  # tag error
101         end
102       end
103     end
104   end
105
106   def paneconfigure(win, key, value=nil)
107     # win = win.epath if win.kind_of?(TkObject)
108     win = _epath(win)
109     if key.kind_of? Hash
110       params = []
111       key.each{|k, v|
112         params.push("-#{k}")
113         # params.push((v.kind_of?(TkObject))? v.epath: v)
114         params.push(_epath(v))
115       }
116       tk_send_without_enc('paneconfigure', win, *params)
117     else
118       # value = value.epath if value.kind_of?(TkObject)
119       value = _epath(value)
120       tk_send_without_enc('paneconfigure', win, "-#{key}", value)
121     end
122     self
123   end
124   alias pane_config paneconfigure
125
126   def paneconfiginfo(win, key=nil)
127     if TkComm::GET_CONFIGINFO_AS_ARRAY
128       # win = win.epath if win.kind_of?(TkObject)
129       win = _epath(win)
130       if key
131         #conf = tk_split_list(tk_send_without_enc('paneconfigure', 
132         #                                         win, "-#{key}"))
133         conf = tk_split_list(tk_send_without_enc('paneconfigure', 
134                                                  win, "-#{key}"), 
135                              false, true)
136         conf[0] = conf[0][1..-1]
137         if conf[0] == 'hide'
138           conf[3] = bool(conf[3]) unless conf[3].empty?
139           conf[4] = bool(conf[4]) unless conf[4].empty?
140         end
141         conf
142       else
143         #tk_split_simplelist(tk_send_without_enc('paneconfigure', 
144         #                                        win)).collect{|conflist|
145         #  conf = tk_split_simplelist(conflist)
146         tk_split_simplelist(tk_send_without_enc('paneconfigure', win), 
147                             false, false).collect{|conflist|
148           conf = tk_split_simplelist(conflist, false, true)
149           conf[0] = conf[0][1..-1]
150           if conf[3]
151             if conf[0] == 'hide'
152               conf[3] = bool(conf[3]) unless conf[3].empty?
153             elsif conf[3].index('{')
154               conf[3] = tk_split_list(conf[3]) 
155             else
156               conf[3] = tk_tcl2ruby(conf[3]) 
157             end
158           end
159           if conf[4]
160             if conf[0] == 'hide'
161               conf[4] = bool(conf[4]) unless conf[4].empty?
162             elsif conf[4].index('{')
163               conf[4] = tk_split_list(conf[4]) 
164             else
165               conf[4] = tk_tcl2ruby(conf[4]) 
166             end
167           end
168           conf[1] = conf[1][1..-1] if conf.size == 2 # alias info
169           conf
170         }
171       end
172     else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
173       # win = win.epath if win.kind_of?(TkObject)
174       win = _epath(win)
175       if key
176         #conf = tk_split_list(tk_send_without_enc('paneconfigure', 
177         #                                         win, "-#{key}"))
178         conf = tk_split_list(tk_send_without_enc('paneconfigure', 
179                                                  win, "-#{key}"), 
180                              false, true)
181         key = conf.shift[1..-1]
182         if key == 'hide'
183           conf[2] = bool(conf[2]) unless conf[2].empty?
184           conf[3] = bool(conf[3]) unless conf[3].empty?
185         end
186         { key => conf }
187       else
188         ret = {}
189         #tk_split_simplelist(tk_send_without_enc('paneconfigure', 
190         #                                        win)).each{|conflist|
191         #  conf = tk_split_simplelist(conflist)
192         tk_split_simplelist(tk_send_without_enc('paneconfigure', win), 
193                             false, false).each{|conflist|
194           conf = tk_split_simplelist(conflist, false, true)
195           key = conf.shift[1..-1]
196           if key
197             if key == 'hide'
198               conf[2] = bool(conf[2]) unless conf[2].empty?
199             elsif conf[2].index('{')
200               conf[2] = tk_split_list(conf[2]) 
201             else
202               conf[2] = tk_tcl2ruby(conf[2]) 
203             end
204           end
205           if conf[3]
206             if key == 'hide'
207               conf[3] = bool(conf[3]) unless conf[3].empty?
208             elsif conf[3].index('{')
209               conf[3] = tk_split_list(conf[3]) 
210             else
211               conf[3] = tk_tcl2ruby(conf[3]) 
212             end
213           end
214           if conf.size == 1
215             ret[key] = conf[0][1..-1]  # alias info
216           else
217             ret[key] = conf
218           end
219         }
220         ret
221       end
222     end
223   end
224   alias pane_configinfo paneconfiginfo
225
226   def current_paneconfiginfo(win, key=nil)
227     if TkComm::GET_CONFIGINFO_AS_ARRAY
228       if key
229         conf = paneconfiginfo(win, key)
230         {conf[0] => conf[4]}
231       else
232         ret = {}
233         paneconfiginfo(win).each{|conf|
234           ret[conf[0]] = conf[4] if conf.size > 2
235         }
236         ret
237       end
238     else # ! TkComm::GET_CONFIGINFO_AS_ARRAY
239       ret = {}
240       paneconfiginfo(win, key).each{|k, conf|
241         ret[k] = conf[-1] if conf.kind_of?(Array)
242       }
243       ret
244     end
245   end
246
247   alias current_pane_configinfo current_paneconfiginfo
248
249   def panes
250     list(tk_send_without_enc('panes'))
251   end
252 end
253
254 Tk::Panedwindow = Tk::PanedWindow
255 #TkPanedWindow = Tk::PanedWindow unless Object.const_defined? :TkPanedWindow
256 #TkPanedwindow = Tk::Panedwindow unless Object.const_defined? :TkPanedwindow
257 Tk.__set_toplevel_aliases__(:Tk, Tk::PanedWindow, 
258                             :TkPanedWindow, :TkPanedwindow)