mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	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
					
				
					 3 changed files with 28 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue