1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
#
# tnotebook widget
# by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
#
require 'tk'
require 'tkextlib/tile.rb'
module Tk
module Tile
class TNotebook < TkWindow
end
Notebook = TNotebook
end
end
class Tk::Tile::TNotebook < TkWindow
################################
include TkItemConfigMethod
def __item_cget_cmd(id)
[self.path, 'tab', id]
end
private :__item_cget_cmd
def __item_config_cmd(id)
[self.path, 'tab', id]
end
private :__item_config_cmd
def __item_listval_optkeys(id)
[]
end
private :__item_listval_optkeys
def __item_methodcall_optkeys(id) # { key=>method, ... }
{}
end
private :__item_methodcall_optkeys
#alias tabcget itemcget
#alias tabcget_strict itemcget_strict
alias tabconfigure itemconfigure
alias tabconfiginfo itemconfiginfo
alias current_tabconfiginfo current_itemconfiginfo
def tabcget_tkstring(tagOrId, option)
tk_split_simplelist(tk_call_without_enc(*(__item_confinfo_cmd(tagid(tagOrId)) << "-#{option}")), false, true)[-1]
end
def tabcget_strict(tagOrId, option)
tabconfiginfo(tagOrId, option)[-1]
end
def tabcget(tagOrId, option)
unless TkItemConfigMethod.__IGNORE_UNKNOWN_CONFIGURE_OPTION__
tabcget_strict(tagOrId, option)
else
begin
tabcget_strict(tagOrId, option)
rescue => e
begin
if current_tabconfiginfo(tagOrId).has_key?(option.to_s)
# not tag error & option is known -> error on known option
fail e
else
# not tag error & option is unknown
nil
end
rescue
fail e # tag error
end
end
end
end
################################
include Tk::Tile::TileWidget
if Tk::Tile::USE_TTK_NAMESPACE
TkCommandNames = ['::ttk::notebook'.freeze].freeze
else
TkCommandNames = ['::tnotebook'.freeze].freeze
end
WidgetClassName = 'TNotebook'.freeze
WidgetClassNames[WidgetClassName] ||= self
def self.style(*args)
[self::WidgetClassName, *(args.map!{|a| _get_eval_string(a)})].join('.')
end
def enable_traversal()
if Tk::Tile::TILE_SPEC_VERSION_ID < 5
tk_call_without_enc('::tile::enableNotebookTraversal', @path)
elsif Tk::Tile::TILE_SPEC_VERSION_ID < 7
tk_call_without_enc('::tile::notebook::enableTraversal', @path)
else
tk_call_without_enc('::ttk::notebook::enableTraversal', @path)
end
self
end
def add(child, keys=nil)
if keys && keys != None
tk_send('add', _epath(child), *hash_kv(keys))
else
tk_send('add', _epath(child))
end
self
end
def forget(idx)
tk_send('forget', idx)
self
end
def hide(idx)
tk_send('hide', idx)
end
def index(idx)
number(tk_send('index', idx))
end
def insert(idx, subwin, keys=nil)
if keys && keys != None
tk_send('insert', idx, subwin, *hash_kv(keys))
else
tk_send('insert', idx, subwin)
end
self
end
def select(idx)
tk_send('select', idx)
self
end
def selected
window(tk_send_without_enc('select'))
end
def tabs
list(tk_send('tabs'))
end
end
#Tk.__set_toplevel_aliases__(:Ttk, Tk::Tile::Notebook, :TkNotebook)
Tk.__set_loaded_toplevel_aliases__('tkextlib/tile/tnotebook.rb',
:Ttk, Tk::Tile::Notebook, :TkNotebook)
|