tk.rb : add 'no_create' option to widget initialize method.
It allows to create ruby objects for widgets created on Tcl/Tk. (e.g. TkButton.new('widgetname'=>'.bbb', 'no_create'=>true) ) It is useful for some Tcl/Tk Mega Widgets. MANIFEST, README : forgot to commit when added tkmacpkg.rb and tkwinpkg.rb git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
598e993018
commit
2850b7c481
|
@ -11,12 +11,14 @@ lib/tkclass.rb
|
|||
lib/tkdialog.rb
|
||||
lib/tkentry.rb
|
||||
lib/tkfont.rb
|
||||
lib/tkmacpkg.rb
|
||||
lib/tkmenubar.rb
|
||||
lib/tkmngfocus.rb
|
||||
lib/tkpalette.rb
|
||||
lib/tkscrollbox.rb
|
||||
lib/tktext.rb
|
||||
lib/tkvirtevent.rb
|
||||
lib/tkwinpkg.rb
|
||||
sample/tkbiff.rb
|
||||
sample/tkbrowse.rb
|
||||
sample/tkdialog.rb
|
||||
|
|
|
@ -7,9 +7,11 @@ tkclass.rb provides generic names for Tk classes
|
|||
tkdialog.rb Tk dialog class
|
||||
tkentry.rb Tk entry class
|
||||
tkfont.rb Tk font support
|
||||
tkmacpkg.rb Mac resource support
|
||||
tkmenubar.rb TK menubar utility
|
||||
tkmngfocus.rb focus manager
|
||||
tkpalette.rb pallete support
|
||||
tkscrollbox.rb scroll box, also example of compound widget
|
||||
tktext.rb text classes
|
||||
tkvirtevent.rb virtual event support
|
||||
tkwinpkg.rb Win DDE and registry support
|
||||
|
|
|
@ -282,7 +282,9 @@ module TkComm
|
|||
name = format("w%.4d", Tk_IDs[1])
|
||||
Tk_IDs[1] += 1
|
||||
end
|
||||
if !ppath or ppath == "."
|
||||
if name[0] == ?.
|
||||
@path = name.dup
|
||||
elsif !ppath or ppath == "."
|
||||
@path = format(".%s", name);
|
||||
else
|
||||
@path = format("%s.%s", ppath, name)
|
||||
|
@ -2596,29 +2598,43 @@ class TkWindow<TkObject
|
|||
parent = keys.delete('parent')
|
||||
widgetname = keys.delete('widgetname')
|
||||
install_win(if parent then parent.path end, widgetname)
|
||||
no_create = keys.delete('no_create')
|
||||
if no_create && !widgetname
|
||||
fail ArgumentError,
|
||||
"if 'no_create' option set true, need to define 'widgetname'"
|
||||
end
|
||||
elsif keys
|
||||
keys = _symbolkey2str(keys)
|
||||
widgetname = keys.delete('widgetname')
|
||||
install_win(if parent then parent.path end, widgetname)
|
||||
no_create = keys.delete('no_create')
|
||||
if no_create && !widgetname
|
||||
fail ArgumentError,
|
||||
"if 'no_create' option set true, need to define 'widgetname'"
|
||||
end
|
||||
else
|
||||
install_win(if parent then parent.path end)
|
||||
end
|
||||
if self.method(:create_self).arity == 0
|
||||
p 'create_self has no arg' if $DEBUG
|
||||
create_self
|
||||
create_self unless no_create
|
||||
if keys
|
||||
# tk_call @path, 'configure', *hash_kv(keys)
|
||||
configure(keys)
|
||||
# tk_call @path, 'configure', *hash_kv(keys)
|
||||
configure(keys)
|
||||
end
|
||||
else
|
||||
p 'create_self has args' if $DEBUG
|
||||
fontkeys = {}
|
||||
if keys
|
||||
['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
|
||||
fontkeys[key] = keys.delete(key) if keys.key?(key)
|
||||
}
|
||||
['font', 'kanjifont', 'latinfont', 'asciifont'].each{|key|
|
||||
fontkeys[key] = keys.delete(key) if keys.key?(key)
|
||||
}
|
||||
end
|
||||
if no_create && keys
|
||||
configure(keys)
|
||||
else
|
||||
create_self(keys)
|
||||
end
|
||||
create_self(keys)
|
||||
font_configure(fontkeys) unless fontkeys.empty?
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue