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:
parent
e3c98febde
commit
334325f72a
95 changed files with 5898 additions and 209 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue