mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
287a34ae0d
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22784 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
552 lines
15 KiB
Ruby
552 lines
15 KiB
Ruby
#
|
|
# tk/wm.rb : methods for wm command
|
|
#
|
|
require 'tk'
|
|
|
|
module Tk
|
|
module Wm
|
|
#include TkComm
|
|
extend TkCore
|
|
|
|
TkCommandNames = ['wm'.freeze].freeze
|
|
|
|
TOPLEVEL_METHODCALL_OPTKEYS = {}
|
|
|
|
def Wm.aspect(win, *args)
|
|
if args.length == 0
|
|
list(tk_call_without_enc('wm', 'aspect', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call('wm', 'aspect', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def aspect(*args)
|
|
Wm.aspect(self, *args)
|
|
end
|
|
alias wm_aspect aspect
|
|
TOPLEVEL_METHODCALL_OPTKEYS['aspect'] = 'aspect'
|
|
|
|
def Wm.attributes(win, slot=nil,value=TkComm::None)
|
|
if slot == nil
|
|
lst = tk_split_list(tk_call('wm', 'attributes', win.epath))
|
|
info = {}
|
|
while key = lst.shift
|
|
info[key[1..-1]] = lst.shift
|
|
end
|
|
info
|
|
elsif slot.kind_of? Hash
|
|
tk_call('wm', 'attributes', win.epath, *hash_kv(slot))
|
|
win
|
|
elsif value == TkComm::None
|
|
tk_call('wm', 'attributes', win.epath, "-#{slot}")
|
|
else
|
|
tk_call('wm', 'attributes', win.epath, "-#{slot}", value)
|
|
win
|
|
end
|
|
end
|
|
def attributes(slot=nil,value=TkComm::None)
|
|
Wm.attributes(self, slot, value)
|
|
end
|
|
alias wm_attributes attributes
|
|
TOPLEVEL_METHODCALL_OPTKEYS['attributes'] = 'attributes'
|
|
|
|
def Wm.client(win, name=TkComm::None)
|
|
if name == TkComm::None
|
|
tk_call('wm', 'client', win.epath)
|
|
else
|
|
name = '' if name == nil
|
|
tk_call('wm', 'client', win.epath, name)
|
|
win
|
|
end
|
|
end
|
|
def client(name=TkComm::None)
|
|
Wm.client(self, name)
|
|
end
|
|
alias wm_client client
|
|
TOPLEVEL_METHODCALL_OPTKEYS['client'] = 'client'
|
|
|
|
def Wm.colormapwindows(win, *args)
|
|
if args.size == 0
|
|
list(tk_call_without_enc('wm', 'colormapwindows', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'colormapwindows', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def colormapwindows(*args)
|
|
Wm.colormapwindows(self, *args)
|
|
end
|
|
alias wm_colormapwindows colormapwindows
|
|
TOPLEVEL_METHODCALL_OPTKEYS['colormapwindows'] = 'colormapwindows'
|
|
|
|
def Wm.command(win, value=nil)
|
|
if value
|
|
tk_call('wm', 'command', epath, value)
|
|
win
|
|
else
|
|
#procedure(tk_call('wm', 'command', epath))
|
|
tk_call('wm', 'command', epath)
|
|
end
|
|
end
|
|
def wm_command(value=nil)
|
|
Wm.command(self, value)
|
|
end
|
|
TOPLEVEL_METHODCALL_OPTKEYS['wm_command'] = 'wm_command'
|
|
|
|
def Wm.deiconify(win, ex = true)
|
|
if ex
|
|
tk_call_without_enc('wm', 'deiconify', win.epath)
|
|
else
|
|
Wm.iconify(win)
|
|
end
|
|
win
|
|
end
|
|
def deiconify(ex = true)
|
|
Wm.deiconify(self, ex)
|
|
end
|
|
alias wm_deiconify deiconify
|
|
|
|
def Wm.focusmodel(win, mode = nil)
|
|
if mode
|
|
tk_call_without_enc('wm', 'focusmodel', win.epath, mode)
|
|
win
|
|
else
|
|
tk_call_without_enc('wm', 'focusmodel', win.epath)
|
|
end
|
|
end
|
|
def focusmodel(mode = nil)
|
|
Wm.focusmodel(self, mode)
|
|
end
|
|
alias wm_focusmodel focusmodel
|
|
TOPLEVEL_METHODCALL_OPTKEYS['focusmodel'] = 'focusmodel'
|
|
|
|
def Wm.forget(win)
|
|
# Tcl/Tk 8.5+
|
|
# work with dockable frames
|
|
tk_call_without_enc('wm', 'forget', win.epath)
|
|
win
|
|
end
|
|
def wm_forget
|
|
Wm.forget(self)
|
|
end
|
|
|
|
def Wm.frame(win)
|
|
tk_call_without_enc('wm', 'frame', win.epath)
|
|
end
|
|
def frame
|
|
Wm.frame(self)
|
|
end
|
|
alias wm_frame frame
|
|
|
|
def Wm.geometry(win, geom=nil)
|
|
if geom
|
|
tk_call_without_enc('wm', 'geometry', win.epath, geom)
|
|
win
|
|
else
|
|
tk_call_without_enc('wm', 'geometry', win.epath)
|
|
end
|
|
end
|
|
def geometry(geom=nil)
|
|
Wm.geometry(self, geom)
|
|
end
|
|
alias wm_geometry geometry
|
|
TOPLEVEL_METHODCALL_OPTKEYS['geometry'] = 'geometry'
|
|
|
|
def Wm.grid(win, *args)
|
|
if args.size == 0
|
|
list(tk_call_without_enc('wm', 'grid', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'grid', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def wm_grid(*args)
|
|
Wm.grid(self, *args)
|
|
end
|
|
TOPLEVEL_METHODCALL_OPTKEYS['wm_grid'] = 'wm_grid'
|
|
|
|
def Wm.group(win, leader = nil)
|
|
if leader
|
|
tk_call('wm', 'group', win.epath, leader)
|
|
win
|
|
else
|
|
window(tk_call('wm', 'group', win.epath))
|
|
end
|
|
end
|
|
def group(leader = nil)
|
|
Wm.group(self, leader)
|
|
end
|
|
alias wm_group group
|
|
TOPLEVEL_METHODCALL_OPTKEYS['group'] = 'group'
|
|
|
|
def Wm.iconbitmap(win, bmp=nil)
|
|
if bmp
|
|
tk_call_without_enc('wm', 'iconbitmap', win.epath, bmp)
|
|
win
|
|
else
|
|
image_obj(tk_call_without_enc('wm', 'iconbitmap', win.epath))
|
|
end
|
|
end
|
|
def iconbitmap(bmp=nil)
|
|
Wm.iconbitmap(self, bmp)
|
|
end
|
|
alias wm_iconbitmap iconbitmap
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconbitmap'] = 'iconbitmap'
|
|
|
|
def Wm.iconphoto(win, *imgs)
|
|
if imgs.empty?
|
|
win.instance_eval{
|
|
@wm_iconphoto = nil unless defined? @wm_iconphoto
|
|
return @wm_iconphoto
|
|
}
|
|
end
|
|
|
|
imgs = imgs[0] if imgs.length == 1 && imgs[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'iconphoto', win.epath, *imgs)
|
|
win.instance_eval{ @wm_iconphoto = imgs }
|
|
win
|
|
end
|
|
def iconphoto(*imgs)
|
|
Wm.iconphoto(self, *imgs)
|
|
end
|
|
alias wm_iconphoto iconphoto
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconphoto'] = 'iconphoto'
|
|
|
|
def Wm.iconphoto_default(win, *imgs)
|
|
imgs = imgs[0] if imgs.length == 1 && imgs[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'iconphoto', win.epath, '-default', *imgs)
|
|
win
|
|
end
|
|
def iconphoto_default(*imgs)
|
|
Wm.iconphoto_default(self, *imgs)
|
|
end
|
|
alias wm_iconphoto_default iconphoto_default
|
|
|
|
def Wm.iconify(win, ex = true)
|
|
if ex
|
|
tk_call_without_enc('wm', 'iconify', win.epath)
|
|
else
|
|
Wm.deiconify(win)
|
|
end
|
|
win
|
|
end
|
|
def iconify(ex = true)
|
|
Wm.iconify(self, ex)
|
|
end
|
|
alias wm_iconify iconify
|
|
|
|
def Wm.iconmask(win, bmp=nil)
|
|
if bmp
|
|
tk_call_without_enc('wm', 'iconmask', win.epath, bmp)
|
|
win
|
|
else
|
|
image_obj(tk_call_without_enc('wm', 'iconmask', win.epath))
|
|
end
|
|
end
|
|
def iconmask(bmp=nil)
|
|
Wm.iconmask(self, bmp)
|
|
end
|
|
alias wm_iconmask iconmask
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconmask'] = 'iconmask'
|
|
|
|
def Wm.iconname(win, name=nil)
|
|
if name
|
|
tk_call('wm', 'iconname', win.epath, name)
|
|
win
|
|
else
|
|
tk_call('wm', 'iconname', win.epath)
|
|
end
|
|
end
|
|
def iconname(name=nil)
|
|
Wm.iconname(self, name)
|
|
end
|
|
alias wm_iconname iconname
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconname'] = 'iconname'
|
|
|
|
def Wm.iconposition(win, *args)
|
|
if args.size == 0
|
|
list(tk_call_without_enc('wm', 'iconposition', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'iconposition', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def iconposition(*args)
|
|
Wm.iconposition(self, *args)
|
|
end
|
|
alias wm_iconposition iconposition
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconposition'] = 'iconposition'
|
|
|
|
def Wm.iconwindow(win, iconwin = nil)
|
|
if iconwin
|
|
tk_call_without_enc('wm', 'iconwindow', win.epath, iconwin)
|
|
win
|
|
else
|
|
w = tk_call_without_enc('wm', 'iconwindow', win.epath)
|
|
(w == '')? nil: window(w)
|
|
end
|
|
end
|
|
def iconwindow(iconwin = nil)
|
|
Wm.iconwindow(self, iconwin)
|
|
end
|
|
alias wm_iconwindow iconwindow
|
|
TOPLEVEL_METHODCALL_OPTKEYS['iconwindow'] = 'iconwindow'
|
|
|
|
def Wm.manage(win)
|
|
# Tcl/Tk 8.5+ feature
|
|
tk_call_without_enc('wm', 'manage', win.epath)
|
|
win
|
|
end
|
|
def wm_manage
|
|
Wm.manage(self)
|
|
end
|
|
=begin
|
|
def Wm.manage(win, use_id = nil)
|
|
# Tcl/Tk 8.5+ feature
|
|
# --------------------------------------------------------------
|
|
# In the future release, I want to support to embed the 'win'
|
|
# into the container which has window-id 'use-id'.
|
|
# It may give users frexibility on controlling their GUI.
|
|
# However, it may be difficult for current Tcl/Tk (Tcl/Tk8.5.1),
|
|
# because it seems to require to modify Tcl/Tk's source code.
|
|
# --------------------------------------------------------------
|
|
if use_id
|
|
tk_call_without_enc('wm', 'manage', win.epath, '-use', use_id)
|
|
else
|
|
tk_call_without_enc('wm', 'manage', win.epath)
|
|
end
|
|
win
|
|
end
|
|
=end
|
|
|
|
def Wm.maxsize(win, *args)
|
|
if args.size == 0
|
|
list(tk_call_without_enc('wm', 'maxsize', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'maxsize', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def maxsize(*args)
|
|
Wm.maxsize(self, *args)
|
|
end
|
|
alias wm_maxsize maxsize
|
|
TOPLEVEL_METHODCALL_OPTKEYS['maxsize'] = 'maxsize'
|
|
|
|
def Wm.minsize(win, *args)
|
|
if args.size == 0
|
|
list(tk_call_without_enc('wm', 'minsize', win.epath))
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'minsize', win.path, *args)
|
|
win
|
|
end
|
|
end
|
|
def minsize(*args)
|
|
Wm.minsize(self, *args)
|
|
end
|
|
alias wm_minsize minsize
|
|
TOPLEVEL_METHODCALL_OPTKEYS['minsize'] = 'minsize'
|
|
|
|
def Wm.overrideredirect(win, mode=TkComm::None)
|
|
if mode == TkComm::None
|
|
bool(tk_call_without_enc('wm', 'overrideredirect', win.epath))
|
|
else
|
|
tk_call_without_enc('wm', 'overrideredirect', win.epath, mode)
|
|
win
|
|
end
|
|
end
|
|
def overrideredirect(mode=TkComm::None)
|
|
Wm.overrideredirect(self, mode)
|
|
end
|
|
alias wm_overrideredirect overrideredirect
|
|
TOPLEVEL_METHODCALL_OPTKEYS['overrideredirect'] = 'overrideredirect'
|
|
|
|
def Wm.positionfrom(win, who=TkComm::None)
|
|
if who == TkComm::None
|
|
r = tk_call_without_enc('wm', 'positionfrom', win.epath)
|
|
(r == "")? nil: r
|
|
else
|
|
tk_call_without_enc('wm', 'positionfrom', win.epath, who)
|
|
win
|
|
end
|
|
end
|
|
def positionfrom(who=TkComm::None)
|
|
Wm.positionfrom(self, who)
|
|
end
|
|
alias wm_positionfrom positionfrom
|
|
TOPLEVEL_METHODCALL_OPTKEYS['positionfrom'] = 'positionfrom'
|
|
|
|
def Wm.protocol(win, name=nil, cmd=nil, &b)
|
|
if cmd
|
|
tk_call_without_enc('wm', 'protocol', win.epath, name, cmd)
|
|
win
|
|
elsif b
|
|
tk_call_without_enc('wm', 'protocol', win.epath, name, proc(&b))
|
|
win
|
|
elsif name
|
|
result = tk_call_without_enc('wm', 'protocol', win.epath, name)
|
|
(result == "")? nil : tk_tcl2ruby(result)
|
|
else
|
|
tk_split_simplelist(tk_call_without_enc('wm', 'protocol', win.epath))
|
|
end
|
|
end
|
|
def protocol(name=nil, cmd=nil, &b)
|
|
Wm.protocol(self, name, cmd, &b)
|
|
end
|
|
alias wm_protocol protocol
|
|
|
|
def Wm.protocols(win, kv=nil)
|
|
unless kv
|
|
ret = {}
|
|
Wm.protocol(win).each{|name|
|
|
ret[name] = Wm.protocol(win, name)
|
|
}
|
|
return ret
|
|
end
|
|
|
|
unless kv.kind_of?(Hash)
|
|
fail ArgumentError, 'expect a hash of protocol=>command'
|
|
end
|
|
kv.each{|k, v| Wm.protocol(win, k, v)}
|
|
win
|
|
end
|
|
def protocols(kv=nil)
|
|
Wm.protocols(self, kv)
|
|
end
|
|
alias wm_protocols protocols
|
|
TOPLEVEL_METHODCALL_OPTKEYS['protocols'] = 'protocols'
|
|
|
|
def Wm.resizable(win, *args)
|
|
if args.length == 0
|
|
list(tk_call_without_enc('wm', 'resizable', win.epath)).map!{|e| bool(e)}
|
|
else
|
|
args = args[0] if args.length == 1 && args[0].kind_of?(Array)
|
|
tk_call_without_enc('wm', 'resizable', win.epath, *args)
|
|
win
|
|
end
|
|
end
|
|
def resizable(*args)
|
|
Wm.resizable(self, *args)
|
|
end
|
|
alias wm_resizable resizable
|
|
TOPLEVEL_METHODCALL_OPTKEYS['resizable'] = 'resizable'
|
|
|
|
def Wm.sizefrom(win, who=TkComm::None)
|
|
if who == TkComm::None
|
|
r = tk_call_without_enc('wm', 'sizefrom', win.epath)
|
|
(r == "")? nil: r
|
|
else
|
|
tk_call_without_enc('wm', 'sizefrom', win.epath, who)
|
|
win
|
|
end
|
|
end
|
|
def sizefrom(who=TkComm::None)
|
|
Wm.sizefrom(self, who)
|
|
end
|
|
alias wm_sizefrom sizefrom
|
|
TOPLEVEL_METHODCALL_OPTKEYS['sizefrom'] = 'sizefrom'
|
|
|
|
def Wm.stackorder(win)
|
|
list(tk_call('wm', 'stackorder', win.epath))
|
|
end
|
|
def stackorder
|
|
Wm.stackorder(self)
|
|
end
|
|
alias wm_stackorder stackorder
|
|
|
|
def Wm.stackorder_isabove(win, target)
|
|
bool(tk_call('wm', 'stackorder', win.epath, 'isabove', target))
|
|
end
|
|
def Wm.stackorder_is_above(win, target)
|
|
Wm.stackorder_isabove(win, target)
|
|
end
|
|
def stackorder_isabove(target)
|
|
Wm.stackorder_isabove(self, target)
|
|
end
|
|
alias stackorder_is_above stackorder_isabove
|
|
alias wm_stackorder_isabove stackorder_isabove
|
|
alias wm_stackorder_is_above stackorder_isabove
|
|
|
|
def Wm.stackorder_isbelow(win, target)
|
|
bool(tk_call('wm', 'stackorder', win.epath, 'isbelow', target))
|
|
end
|
|
def Wm.stackorder_is_below(win, target)
|
|
Wm.stackorder_isbelow(win, target)
|
|
end
|
|
def stackorder_isbelow(target)
|
|
Wm.stackorder_isbelow(self, target)
|
|
end
|
|
alias stackorder_is_below stackorder_isbelow
|
|
alias wm_stackorder_isbelow stackorder_isbelow
|
|
alias wm_stackorder_is_below stackorder_isbelow
|
|
|
|
def Wm.state(win, st=nil)
|
|
if st
|
|
tk_call_without_enc('wm', 'state', win.epath, st)
|
|
win
|
|
else
|
|
tk_call_without_enc('wm', 'state', win.epath)
|
|
end
|
|
end
|
|
def state(st=nil)
|
|
Wm.state(self, st)
|
|
end
|
|
alias wm_state state
|
|
TOPLEVEL_METHODCALL_OPTKEYS['state'] = 'state'
|
|
|
|
def Wm.title(win, str=nil)
|
|
if str
|
|
tk_call('wm', 'title', win.epath, str)
|
|
win
|
|
else
|
|
tk_call('wm', 'title', win.epath)
|
|
end
|
|
end
|
|
def title(str=nil)
|
|
Wm.title(self, str)
|
|
end
|
|
alias wm_title title
|
|
TOPLEVEL_METHODCALL_OPTKEYS['title'] = 'title'
|
|
|
|
def Wm.transient(win, master=nil)
|
|
if master
|
|
tk_call_without_enc('wm', 'transient', win.epath, master)
|
|
win
|
|
else
|
|
window(tk_call_without_enc('wm', 'transient', win.epath))
|
|
end
|
|
end
|
|
def transient(master=nil)
|
|
Wm.transient(self, master)
|
|
end
|
|
alias wm_transient transient
|
|
TOPLEVEL_METHODCALL_OPTKEYS['transient'] = 'transient'
|
|
|
|
def Wm.withdraw(win, ex = true)
|
|
if ex
|
|
tk_call_without_enc('wm', 'withdraw', win.epath)
|
|
else
|
|
Wm.deiconify(win)
|
|
end
|
|
win
|
|
end
|
|
def withdraw(ex = true)
|
|
Wm.withdraw(self, ex)
|
|
end
|
|
alias wm_withdraw withdraw
|
|
end
|
|
|
|
module Wm_for_General
|
|
Wm.instance_methods.each{|m|
|
|
if (m = m.to_s) =~ /^wm_(.*)$/
|
|
eval "def #{m}(*args, &b); Tk::Wm.#{$1}(self, *args, &b); end"
|
|
end
|
|
}
|
|
end
|
|
end
|