# File tk/lib/tkextlib/tile/style.rb, line 35
def __define_wrapper_proc_for_compatibility__!
__define_themes_and_setTheme_proc__!
unless Tk.info(:commands, '::ttk::style').empty?
# fail RuntimeError,
# "can't define '::ttk::style' command (already exist)"
# do nothing !!!
warn "Warning: can't define '::ttk::style' command (already exist)" if $DEBUG
return
end
TkCore::INTERP.add_tk_procs('::ttk::style', 'args', if [string equal [lrange $args 0 1] {element create}] { if [string equal [lindex $args 3] image] { set spec [lindex $args 4] set map [lrange $spec 1 end] if [llength $map] { # return [eval [concat [list ::style element create [lindex $args 2] image [lindex $spec 0] -map $map] [lrange $args 5 end]]] return [uplevel 1 [list ::style element create [lindex $args 2] image [lindex $spec 0] -map $map] [lrange $args 5 end]] } } } # return [eval "::style $args"] return [uplevel 1 ::style $args])
#########################
end
# File tk/lib/tkextlib/tile/style.rb, line 159
def configure(style=nil, keys=nil)
if style.kind_of?(Hash)
keys = style
style = nil
end
style = '.' unless style
if Tk::Tile::TILE_SPEC_VERSION_ID < 7
sub_cmd = 'default'
else
sub_cmd = 'configure'
end
if keys && keys != None
tk_call(TkCommandNames[0], sub_cmd, style, *hash_kv(keys))
else
tk_call(TkCommandNames[0], sub_cmd, style)
end
end
# File tk/lib/tkextlib/tile/style.rb, line 233
def element_create(name, type, *args)
if type == 'image' || type == :image
element_create_image(name, *args)
elsif type == 'vsapi' || type == :vsapi
element_create_vsapi(name, *args)
else
tk_call(TkCommandNames[0], 'element', 'create', name, type, *args)
end
end
# File tk/lib/tkextlib/tile/style.rb, line 243
def element_create_image(name, *args)
fail ArgumentError, 'Must supply a base image' unless (spec = args.shift)
if (opts = args.shift)
if opts.kind_of?(Hash)
opts = _symbolkey2str(opts)
else
fail ArgumentError, 'bad option'
end
end
fail ArgumentError, 'too many arguments' unless args.empty?
if spec.kind_of?(Array)
# probably, command format is tile 0.8+ (Tcl/Tk8.5+) style
if Tk::Tile::TILE_SPEC_VERSION_ID >= 8
if opts
tk_call(TkCommandNames[0],
'element', 'create', name, 'image', spec, opts)
else
tk_call(TkCommandNames[0], 'element', 'create', name, 'image', spec)
end
else
fail ArgumentError, 'illegal arguments' if opts.key?('map')
base = spec.shift
opts['map'] = spec
tk_call(TkCommandNames[0],
'element', 'create', name, 'image', base, opts)
end
else
# probably, command format is tile 0.7.8 or older style
if Tk::Tile::TILE_SPEC_VERSION_ID >= 8
spec = [spec, *(opts.delete('map'))] if opts.key?('map')
end
if opts
tk_call(TkCommandNames[0],
'element', 'create', name, 'image', spec, opts)
else
tk_call(TkCommandNames[0], 'element', 'create', name, 'image', spec)
end
end
end
# File tk/lib/tkextlib/tile/style.rb, line 284
def element_create_vsapi(name, class_name, part_id, *args)
# supported on Tcl/Tk 8.6 or later
# argument check
if (state_map = args.shift || None)
if state_map.kind_of?(Hash)
opts = _symbolkey2str(state_map)
state_map = None
end
end
opts = args.shift || None
fail ArgumentError, "too many arguments" unless args.empty?
# define a Microsoft Visual Styles element
tk_call(TkCommandNames[0], 'element', 'create', name, 'vsapi',
class_name, part_id, state_map, opts)
end
# File tk/lib/tkextlib/tile/style.rb, line 302
def element_names()
list(tk_call(TkCommandNames[0], 'element', 'names'))
end
# File tk/lib/tkextlib/tile/style.rb, line 306
def element_options(elem)
simplelist(tk_call(TkCommandNames[0], 'element', 'options', elem))
end
# File tk/lib/tkextlib/tile/style.rb, line 219
def layout(style=nil, spec=nil)
if style.kind_of?(Hash)
spec = style
style = nil
end
style = '.' unless style
if spec
tk_call(TkCommandNames[0], 'layout', style, spec)
else
_style_layout(list(tk_call(TkCommandNames[0], 'layout', style)))
end
end
# File tk/lib/tkextlib/tile/style.rb, line 212
def lookup(style, opt, state=None, fallback_value=None)
tk_call(TkCommandNames[0], 'lookup', style,
'-' << opt.to_s, state, fallback_value)
end
# File tk/lib/tkextlib/tile/style.rb, line 180
def map(style=nil, keys=nil)
if style.kind_of?(Hash)
keys = style
style = nil
end
style = '.' unless style
if keys && keys != None
if keys.kind_of?(Hash)
tk_call(TkCommandNames[0], 'map', style, *hash_kv(keys))
else
simplelist(tk_call(TkCommandNames[0], 'map', style, '-' << keys.to_s))
end
else
ret = {}
Hash[*(simplelist(tk_call(TkCommandNames[0], 'map', style)))].each{|k, v|
ret[k[1..-1]] = list(v)
}
ret
end
end
# File tk/lib/tkextlib/tile/style.rb, line 203
def map_configinfo(style=nil, key=None)
style = '.' unless style
map(style, key)
end
# File tk/lib/tkextlib/tile/style.rb, line 208
def map_default_configinfo(key=None)
map('.', key)
end
# File tk/lib/tkextlib/tile/style.rb, line 310
def theme_create(name, keys=nil)
name = name.to_s
if keys && keys != None
tk_call(TkCommandNames[0], 'theme', 'create', name, *hash_kv(keys))
else
tk_call(TkCommandNames[0], 'theme', 'create', name)
end
name
end
# File tk/lib/tkextlib/tile/style.rb, line 327
def theme_names()
list(tk_call(TkCommandNames[0], 'theme', 'names'))
end