# File tk/lib/tkextlib/iwidgets/tabset.rb, line 66
def add(keys={})
window(tk_call(@path, 'add', *hash_kv(keys)))
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 70
def delete(idx1, idx2=nil)
if idx2
tk_call(@path, 'delete', index(idx1), index(idx2))
else
tk_call(@path, 'delete', index(idx1))
end
self
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 79
def index(idx)
number(tk_call(@path, 'index', tagid(idx)))
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 83
def insert(idx, keys={})
window(tk_call(@path, 'insert', index(idx), *hash_kv(keys)))
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 87
def next
tk_call(@path, 'next')
self
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 92
def prev
tk_call(@path, 'prev')
self
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 97
def select(idx)
tk_call(@path, 'select', index(idx))
self
end
# File tk/lib/tkextlib/iwidgets/tabset.rb, line 102
def show_tab(idx)
if index(idx) == 0
self.start = 0
return
end
reutrn unless @canvas ||= self.winfo_children[0]
delta = 1 if (delta = cget(:gap)) == 'overlap' ||
(delta = self.winfo_pixels(delta) + 1) <= 0
case cget(:tabpos)
when 's', 'n'
if (head = tabcget(idx, :left)) < 0
self.start -= head
return
end
tabs_size = @canvas.winfo_width
tab_start, tab_end = @canvas .
find_overlapping(head, 0, head + delta, @canvas.winfo_height) .
find_all{|id| @canvas.itemtype(id) == TkcPolygon} .
map!{|id| bbox = @canvas.bbox(id); [bbox[0], bbox[2]]} . max
when 'e', 'w'
if (head = tabcget(idx, :top)) < 0
self.start -= head
return
end
tabs_size = @canvas.winfo_height
tab_start, tab_end = @canvas .
find_overlapping(0, head, @canvas.winfo_width, head + delta) .
find_all{|id| @canvas.itemtype(id) == TkcPolygon} .
map!{|id| bbox = @canvas.bbox(id); [bbox[1], bbox[3]]} . max
end
if (size = tab_end - tab_start + 1) > tabs_size
self.start -= tab_start
elsif head + size > tabs_size
self.start -= head + size - tabs_size
end
self
end
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.