diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-12 22:13:13 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-06-12 22:13:13 +0000 |
commit | cc588e492cb9e5ffb5a7291ce4bcd3e281c228f2 (patch) | |
tree | 84346c413e2b49c3e9e42fbd431345c172191169 /ext/tk/lib | |
parent | eb7937012c8171a9355b8b46dac34fcae1b1c4bf (diff) | |
download | ruby-cc588e492cb9e5ffb5a7291ce4bcd3e281c228f2.tar.gz ruby-cc588e492cb9e5ffb5a7291ce4bcd3e281c228f2.tar.xz ruby-cc588e492cb9e5ffb5a7291ce4bcd3e281c228f2.zip |
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: http://svn.ruby-lang.org/repos/ruby/trunk@3939 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib')
-rw-r--r-- | ext/tk/lib/README | 2 | ||||
-rw-r--r-- | ext/tk/lib/tk.rb | 32 |
2 files changed, 26 insertions, 8 deletions
diff --git a/ext/tk/lib/README b/ext/tk/lib/README index 87b59f497..2d9e72bce 100644 --- a/ext/tk/lib/README +++ b/ext/tk/lib/README @@ -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 diff --git a/ext/tk/lib/tk.rb b/ext/tk/lib/tk.rb index 8463e370a..ec1ee8f8c 100644 --- a/ext/tk/lib/tk.rb +++ b/ext/tk/lib/tk.rb @@ -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 |