1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* ext/tk/lib/tk.rb (_callback_entry_class?): add for checking whether

a class is available for a callback entry.
* ext/tk/lib/tk.rb (after_cancel): add Tk.after_cancel(afterID) method.
* ext/tk/lib/tk.rb (array2tk_list): change from private module method
  of TkComm to public module method.
* ext/tk/lib/tk.rb (cget): add check that slot argument is not empty string.
* ext/tk/lib/tk.rb (configinfo): ditto.
* ext/tk/lib/tk/itemconfig.rb (itemcget): add check that slot argument
  is not empty string.
* ext/tk/lib/tk/itemconfig.rb (itemconfiginfo): ditto.
* ext/tk/lib/tk/entry.rb: add TkEntry#icursor and icursor= (alias of
  cursor and cursor= method).
* ext/tk/lib/tk/font.rb: improve font treatment when the font name is
  empty string.
* ext/tk/lib/tk/variable.rb: add :variable, :window and :procedure type.
* ext/tk/lib/tk/variable.rb: improve treatment of array-type tkvariable.
* ext/tk/lib/tkextlib/blt.rb: add commands for zooming.
* ext/tk/lib/tkextlib/blt/*: bug fix.
* ext/tk/lib/tkextlib/treectrl/tktreectrl.rb: bug fix and add methods
  to call TreeCtrl commands for bindings.
* ext/tk/sample/tkextlib/blt/*: new sample scritps.
* ext/tk/sample/tkextlib/treectrl/*: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nagai 2005-03-26 13:58:11 +00:00
parent e3c98febde
commit 334325f72a
95 changed files with 5898 additions and 209 deletions

View file

@ -17,6 +17,8 @@ TkPackage.require('treectrl')
module Tk
class TreeCtrl < TkWindow
BindTag_FileList = TkBindTag.new_by_name('TreeCtrlFileList')
def self.package_version
begin
TkPackage.require('treectrl')
@ -25,6 +27,9 @@ module Tk
end
end
HasColumnCreateCommand =
(TkPackage.vcompare(self.package_version, '1.1') >= 0)
# dummy ::
# pkgIndex.tcl of TreeCtrl-1.0 doesn't support auto_load for
# 'loupe' command (probably it is bug, I think).
@ -146,7 +151,7 @@ module Tk::TreeCtrl::ConfigMethod
None
when 'dragimage'
obj
None
when 'element'
obj
@ -155,7 +160,7 @@ module Tk::TreeCtrl::ConfigMethod
obj
when 'marquee'
obj
None
when 'notify'
obj
@ -171,6 +176,10 @@ module Tk::TreeCtrl::ConfigMethod
def tagid(mixed_id)
if mixed_id == 'debug'
['debug', None]
elsif mixed_id == 'dragimage'
['dragimage', None]
elsif mixed_id == 'marquee'
['marquee', None]
elsif mixed_id.kind_of?(Array)
[mixed_id[0], treectrl_tagid(*mixed_id)]
else
@ -237,6 +246,17 @@ module Tk::TreeCtrl::ConfigMethod
end
private :__item_configinfo_struct
def __item_font_optkeys(id)
if id.kind_of?(Array) && (id[0] == 'element' ||
(id[0].kind_of?(Array) && id[0][1] == 'element'))
[]
else
['font']
end
end
private :__item_font_optkeys
def __item_numstrval_optkeys(id)
if id == 'debug'
['displaydelay']
@ -249,14 +269,28 @@ module Tk::TreeCtrl::ConfigMethod
def __item_boolval_optkeys(id)
if id == 'debug'
['data', 'display', 'enable']
elsif id == 'dragimage'
['visible']
elsif id == 'marquee'
['visible']
elsif id.kind_of?(Array)
case id[0]
when 'item'
['button', 'visible']
when 'column'
['button', 'expand', 'squeeze', 'sunken', 'visible', 'widthhack']
when 'element'
['filled', 'showfocus']
when 'notify'
['active']
when 'style'
['detach']
else
super(id)
if id[0].kind_of?(Array) && id[0][1] == 'element'
['filled', 'showfocus']
else
super(id)
end
end
else
super(id)
@ -280,8 +314,14 @@ module Tk::TreeCtrl::ConfigMethod
['itembackground']
when 'element'
['relief']
when 'style'
['union']
else
[]
if id[0].kind_of?(Array) && id[0][1] == 'element'
['relief']
else
[]
end
end
else
[]
@ -328,17 +368,17 @@ module Tk::TreeCtrl::ConfigMethod
current_itemconfiginfo('debug', slot)
end
def dragimage_cget(tagOrId, option)
itemcget(['dragimage', tagOrId], option)
def dragimage_cget(option)
itemcget('dragimage', option)
end
def dragimage_configure(tagOrId, slot, value=None)
itemconfigure(['dragimage', tagOrId], slot, value)
def dragimage_configure(slot, value=None)
itemconfigure('dragimage', slot, value)
end
def dragimage_configinfo(tagOrId, slot=nil)
itemconfiginfo(['dragimage', tagOrId], slot)
def dragimage_configinfo(slot=nil)
itemconfiginfo('dragimage', slot)
end
def current_dragimage_configinfo(tagOrId, slot=nil)
current_itemconfiginfo(['dragimage', tagOrId], slot)
def current_dragimage_configinfo(slot=nil)
current_itemconfiginfo('dragimage', slot)
end
def element_cget(tagOrId, option)
@ -380,17 +420,17 @@ module Tk::TreeCtrl::ConfigMethod
current_itemconfiginfo([['item', 'element'], [item, column, elem]], slot)
end
def marquee_cget(tagOrId, option)
itemcget(['marquee', tagOrId], option)
def marquee_cget(option)
itemcget('marquee', option)
end
def marquee_configure(tagOrId, slot, value=None)
itemconfigure(['marquee', tagOrId], slot, value)
def marquee_configure(slot, value=None)
itemconfigure('marquee', slot, value)
end
def marquee_configinfo(tagOrId, slot=nil)
itemconfiginfo(['marquee', tagOrId], slot)
def marquee_configinfo(slot=nil)
itemconfiginfo('marquee', slot)
end
def current_marquee_configinfo(tagOrId, slot=nil)
current_itemconfiginfo(['marquee', tagOrId], slot)
def current_marquee_configinfo(slot=nil)
current_itemconfiginfo('marquee', slot)
end
def notify_cget(win, pattern, option)
@ -757,17 +797,20 @@ class Tk::TreeCtrl
end
alias item_first_child item_firstchild
def item_hashbutton(item, st=None)
def item_hasbutton(item, st=None)
if st == None
bool(tk_send('item', 'hashbutton'))
bool(tk_send('item', 'hasbutton'))
else
tk_send('item', 'hashbutton', st)
tk_send('item', 'hasbutton', st)
self
end
end
def item_hashbutton?(item)
item_hashbutton(item)
alias item_has_button item_hasbutton
def item_hasbutton?(item)
item_hasbutton(item)
end
alias item_has_button? item_hasbutton?
def item_index(item)
list(tk_send('item', 'index', item))
@ -811,8 +854,8 @@ class Tk::TreeCtrl
end
alias item_next_sibling item_nextsibling
def item_numchildren()
number(tk_send('item', 'numchildren'))
def item_numchildren(item)
number(tk_send('item', 'numchildren', item))
end
alias item_num_children item_numchildren
alias item_children_size item_numchildren
@ -850,10 +893,10 @@ class Tk::TreeCtrl
opts = opts.collect{|param|
if param.kind_of?(Hash)
param = _symbolkey2str(param)
if param.key('column')
if param.key?('column')
key = '-column'
desc = param.delete('column')
elsif param.key('element')
elsif param.key?('element')
key = '-element'
desc = param.delete('element')
else
@ -863,7 +906,7 @@ class Tk::TreeCtrl
if param.empty?
param = None
else
param = __conv_item_keyonly_opts(item, param).to_a
param = hash_kv(__conv_item_keyonly_opts(item, param))
end
if key
@ -874,7 +917,7 @@ class Tk::TreeCtrl
elsif param.kind_of?(Array)
if param[2].kind_of?(Hash)
param[2] = __conv_item_keyonly_opts(item, param[2]).to_a
param[2] = hash_kv(__conv_item_keyonly_opts(item, param[2]))
end
param
@ -898,17 +941,15 @@ class Tk::TreeCtrl
end
private :_item_sort_core
def item_sort(item, *opts)
_item_sort_core(true, item, *opts)
end
def item_sort_not_really(item, *opts)
_item_sort_core(false, item, *opts)
end
def item_sort(item, *opts)
_item_sort_core(true, item, *opts)
end
def item_state_forcolumn(item, column, *args)
tk_send('item', 'state', 'forcolumn', item, column, *args)
self
end
alias item_state_for_column item_state_forcolumn
@ -922,7 +963,6 @@ class Tk::TreeCtrl
def item_state_set(item, *args)
tk_send('item', 'state', 'set', item, *args)
self
end
def item_style_elements(item, column)
@ -1230,7 +1270,8 @@ class Tk::TreeCtrl
def _conv_style_layout_val(sty, val)
case sty.to_s
when 'padx', 'pady', 'ipadx', 'ipady'
number(val)
lst = list(val)
(lst.size == 1)? lst[0]: lst
when 'detach'
bool(val)
when 'union'
@ -1256,6 +1297,7 @@ class Tk::TreeCtrl
else
ret = Hash.new
Hash[*simplelist(tk_send('style', 'layout', style, elem))].each{|k, v|
k = k[1..-1]
ret[k] = _conv_style_layout_val(k, v)
}
ret
@ -1599,18 +1641,20 @@ class Tk::TreeCtrl::Item < TkObject
end
alias first_child firstchild
def hashbutton(st=None)
def hasbutton(st=None)
if st == None
@tree.item_hashbutton(@id)
@tree.item_hasbutton(@id)
else
@tree.item_hashbutton(@id, st)
@tree.item_hasbutton(@id, st)
self
end
end
alias has_button hasbutton
def hashbutton?
@tree.item_hashbutton(@id)
def hasbutton?
@tree.item_hasbutton(@id)
end
alias has_button? hasbutton?
def index
@tree.item_index(@id)
@ -1685,6 +1729,10 @@ class Tk::TreeCtrl::Item < TkObject
def sort(*opts)
@tree.item_sort(@id, *opts)
end
def sort_not_really(*opts)
@tree.item_sort_not_really(@id, *opts)
self
end
def state_forcolumn(column, *args)
@tree.item_state_forcolumn(@id, column, *args)
@ -1829,3 +1877,149 @@ class Tk::TreeCtrl::Style < TkObject
end
end
end
module Tk::TreeCtrl::BindCallback
include Tk
extend Tk
end
class << Tk::TreeCtrl::BindCallback
def cursorCheck(w, x, y)
tk_call('::TreeCtrl::CursorCheck', w, x, y)
end
def cursorCheckAux(w)
tk_call('::TreeCtrl::CursorCheckAux', w)
end
def cursorCancel(w)
tk_call('::TreeCtrl::CursorCancel', w)
end
def buttonPress1(w, x, y)
tk_call('::TreeCtrl::ButtonPress1', w, x, y)
end
def doubleButton1(w, x, y)
tk_call('::TreeCtrl::DoubleButton1', w, x, y)
end
def motion1(w, x, y)
tk_call('::TreeCtrl::Motion1', w, x, y)
end
def leave1(w, x, y)
tk_call('::TreeCtrl::Leave1', w, x, y)
end
def release1(w, x, y)
tk_call('::TreeCtrl::Release1', w, x, y)
end
def beginSelect(w, el)
tk_call('::TreeCtrl::BeginSelect', w, el)
end
def motion(w, le)
tk_call('::TreeCtrl::Motion', w, el)
end
def beginExtend(w, el)
tk_call('::TreeCtrl::BeginExtend', w, el)
end
def beginToggle(w, el)
tk_call('::TreeCtrl::BeginToggle', w, el)
end
def cancelRepeat
tk_call('::TreeCtrl::CancelRepeat')
end
def autoScanCheck(w, x, y)
tk_call('::TreeCtrl::AutoScanCheck', w, x, y)
end
def autoScanCheckAux(w)
tk_call('::TreeCtrl::AutoScanCheckAux', w)
end
def autoScanCancel(w)
tk_call('::TreeCtrl::AutoScanCancel', w)
end
def up_down(w, n)
tk_call('::TreeCtrl::UpDown', w, n)
end
def left_right(w, n)
tk_call('::TreeCtrl::LeftRight', w, n)
end
def setActiveItem(w, idx)
tk_call('::TreeCtrl::SetActiveItem', w, idx)
end
def extendUpDown(w, amount)
tk_call('::TreeCtrl::ExtendUpDown', w, amount)
end
def dataExtend(w, el)
tk_call('::TreeCtrl::DataExtend', w, el)
end
def cancel(w)
tk_call('::TreeCtrl::Cancel', w)
end
def selectAll(w)
tk_call('::TreeCtrl::selectAll', w)
end
def marqueeBegin(w, x, y)
tk_call('::TreeCtrl::MarqueeBegin', w, x, y)
end
def marqueeUpdate(w, x, y)
tk_call('::TreeCtrl::MarqueeUpdate', w, x, y)
end
def marqueeEnd(w, x, y)
tk_call('::TreeCtrl::MarqueeEnd', w, x, y)
end
def scanMark(w, x, y)
tk_call('::TreeCtrl::ScanMark', w, x, y)
end
def scanDrag(w, x, y)
tk_call('::TreeCtrl::ScanDrag', w, x, y)
end
# filelist-bindings
def fileList_button1(w, x, y)
tk_call('::TreeCtrl::FileListButton1', w, x, y)
end
def fileList_motion1(w, x, y)
tk_call('::TreeCtrl::FileListMotion1', w, x, y)
end
def fileList_motion(w, x, y)
tk_call('::TreeCtrl::FileListMotion', w, x, y)
end
def fileList_leave1(w, x, y)
tk_call('::TreeCtrl::FileListLeave1', w, x, y)
end
def fileList_release1(w, x, y)
tk_call('::TreeCtrl::FileListRelease1', w, x, y)
end
def fileList_edit(w, i, s, e)
tk_call('::TreeCtrl::FileListEdit', w, i, s, e)
end
def fileList_editCancel(w)
tk_call('::TreeCtrl::FileListEditCancel', w)
end
def fileList_autoScanCheck(w, x, y)
tk_call('::TreeCtrl::FileListAutoScanCheck', w, x, y)
end
def fileList_autoScanCheckAux(w)
tk_call('::TreeCtrl::FileListAutoScanCheckAux', w)
end
def entryOpen(w, item, col, elem)
tk_call('::::TreeCtrl::EntryOpen', w, item, col, elem)
end
def entryExpanderOpen(w, item, col, elem)
tk_call('::TreeCtrl::EntryExpanderOpen', w, item, col, elem)
end
def entryClose(w, accept)
tk_call('::TreeCtrl::EntryClose', w, accept)
end
def entryExpanderKeypress(w)
tk_call('::TreeCtrl::EntryExpanderKeypress', w)
end
def textOpen(w, item, col, elem, width=0, height=0)
tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width, height)
end
def textExpanderOpen(w, item, col, elem, width)
tk_call('::TreeCtrl::TextOpen', w, item, col, elem, width)
end
def textClose(w, accept)
tk_call('::TreeCtrl::TextClose', w, accept)
end
def textExpanderKeypress(w)
tk_call('::TreeCtrl::TextExpanderKeypress', w)
end
end