mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ext/tk/lib : improve framework of developping Tcl/Tk extension wrappers
* BWidget extension support on Ruby/Tk git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									d9034d23ce
								
							
						
					
					
						commit
						eb6571a860
					
				
					 138 changed files with 8458 additions and 426 deletions
				
			
		|  | @ -1,3 +1,9 @@ | |||
| Tue Jul  6 18:38:45 2004  Hidetoshi NAGAI  <nagai@ai.kyutech.ac.jp> | ||||
| 
 | ||||
| 	* ext/tk/lib : improve framework of developping Tcl/Tk extension  | ||||
| 	  wrappers | ||||
| 
 | ||||
| 
 | ||||
| Mon Jul  5 23:56:42 2004  Kouhei Sutou  <kou@cozmixng.org> | ||||
| 
 | ||||
| 	* lib/rss/{trackback,syndication,dublincore,content}.rb: worked | ||||
|  |  | |||
|  | @ -24,16 +24,23 @@ For example, when you install ActiveTcl-8.4.x to '/usr/local/ActiveTcl', | |||
|              --enable-tcltk-stubs | ||||
| 
 | ||||
| It depends on your environment that you have to add the directory of  | ||||
| ActiveTcl's dynamic link libraries to your library path when execute  | ||||
| Ruby/Tk.  | ||||
| ActiveTcl's libraries to your library path when execute Ruby/Tk.  | ||||
| One of the way is to add entries to TCLLIBPATH environment variable,  | ||||
| and one of the others add to LD_LIBRARY_PATH environment variable | ||||
| 
 | ||||
| # For example, on Linux, one of the ways is to use LD_LIBRARY_PATH  | ||||
| # environment variable.  | ||||
| #  | ||||
| #   [bash]$ LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH \ | ||||
| #           ruby your-Ruby/Tk-script | ||||
| # | ||||
| #   [bash]$ LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH irb | ||||
| Probably, using TCLLIBPATH is better. The value is appended at the  | ||||
| head of Tcl's 'auto_path' variable. You can see the value of the  | ||||
| variable by using 'Tk::AUTO_PATH.value' or 'Tk::AUTO_PATH.list'. | ||||
| 
 | ||||
| For example, on Linux, one of the ways is to use LD_LIBRARY_PATH  | ||||
| environment variable.  | ||||
| ------------------------------------------------------------------------- | ||||
|  [bash]$ LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH \ | ||||
|          ruby your-Ruby/Tk-script | ||||
| 
 | ||||
|  [bash]$ LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH irb | ||||
| ------------------------------------------------------------------------- | ||||
| Based on it, the Tcl interpreter changes auto_path variable's value. | ||||
| 
 | ||||
| Then, you'll be able to use Tcl/Tk extension libraries included in the | ||||
| ActiveTcl package (e.g. call TkPackage.require('BWidget'), and then, | ||||
|  |  | |||
|  | @ -1,3 +1,13 @@ | |||
| 2004-07-06  Hidetoshi NAGAI  <nagai@ai.kyutech.ac.jp> | ||||
| 
 | ||||
| 	* support BWidget extension | ||||
| 
 | ||||
| 	* add BWidget extension demo | ||||
| 
 | ||||
| 	* add ICONS extension demo | ||||
| 
 | ||||
| 	* many bug fix  | ||||
| 
 | ||||
| 2004-07-01  Hidetoshi NAGAI  <nagai@ai.kyutech.ac.jp> | ||||
| 
 | ||||
| 	* 1st release of tkextlib ( to support Tcl/Tk extensions ) | ||||
|  |  | |||
|  | @ -96,6 +96,40 @@ lib/tkextlib/setup.rb | |||
| lib/tkextlib/ICONS.rb | ||||
| lib/tkextlib/ICONS/icons.rb | ||||
| lib/tkextlib/ICONS/setup.rb | ||||
| lib/tkextlib/bwidget.rb | ||||
| lib/tkextlib/bwidget/arrowbutton.rb | ||||
| lib/tkextlib/bwidget/bitmap.rb | ||||
| lib/tkextlib/bwidget/button.rb | ||||
| lib/tkextlib/bwidget/buttonbox.rb | ||||
| lib/tkextlib/bwidget/combobox.rb | ||||
| lib/tkextlib/bwidget/dialog.rb | ||||
| lib/tkextlib/bwidget/dragsite.rb | ||||
| lib/tkextlib/bwidget/dropsite.rb | ||||
| lib/tkextlib/bwidget/dynamichelp.rb | ||||
| lib/tkextlib/bwidget/entry.rb | ||||
| lib/tkextlib/bwidget/label.rb | ||||
| lib/tkextlib/bwidget/labelentry.rb | ||||
| lib/tkextlib/bwidget/labelframe.rb | ||||
| lib/tkextlib/bwidget/listbox.rb | ||||
| lib/tkextlib/bwidget/mainframe.rb | ||||
| lib/tkextlib/bwidget/messagedlg.rb | ||||
| lib/tkextlib/bwidget/notebook.rb | ||||
| lib/tkextlib/bwidget/pagesmanager.rb | ||||
| lib/tkextlib/bwidget/panedwindow.rb | ||||
| lib/tkextlib/bwidget/passwddlg.rb | ||||
| lib/tkextlib/bwidget/progressbar.rb | ||||
| lib/tkextlib/bwidget/progressdlg.rb | ||||
| lib/tkextlib/bwidget/scrollableframe.rb | ||||
| lib/tkextlib/bwidget/scrolledwindow.rb | ||||
| lib/tkextlib/bwidget/scrollview.rb | ||||
| lib/tkextlib/bwidget/selectcolor.rb | ||||
| lib/tkextlib/bwidget/selectfont.rb | ||||
| lib/tkextlib/bwidget/separator.rb | ||||
| lib/tkextlib/bwidget/setup.rb | ||||
| lib/tkextlib/bwidget/spinbox.rb | ||||
| lib/tkextlib/bwidget/titleframe.rb | ||||
| lib/tkextlib/bwidget/tree.rb | ||||
| lib/tkextlib/bwidget/widget.rb | ||||
| lib/tkextlib/tcllib.rb | ||||
| lib/tkextlib/tcllib/README | ||||
| lib/tkextlib/tcllib/autoscroll.rb | ||||
|  | @ -382,6 +416,22 @@ sample/msgs_tk/ja.msg | |||
| sample/msgs_tk/nl.msg | ||||
| sample/msgs_tk/pl.msg | ||||
| sample/msgs_tk/ru.msg | ||||
| sample/tkextlib/ICONS/LICENSE.orig | ||||
| sample/tkextlib/ICONS/viewIcons.rb | ||||
| sample/tkextlib/ICONS/tkIcons | ||||
| sample/tkextlib/ICONS/tkIcons-sample.kde | ||||
| sample/tkextlib/ICONS/tkIcons.kde | ||||
| sample/tkextlib/bwidget/LICENSE.orig | ||||
| sample/tkextlib/bwidget/basic.rb | ||||
| sample/tkextlib/bwidget/bwidget.xbm | ||||
| sample/tkextlib/bwidget/demo.rb | ||||
| sample/tkextlib/bwidget/dnd.rb | ||||
| sample/tkextlib/bwidget/manager.rb | ||||
| sample/tkextlib/bwidget/select.rb | ||||
| sample/tkextlib/bwidget/tmpldlg.rb | ||||
| sample/tkextlib/bwidget/tree.rb | ||||
| sample/tkextlib/bwidget/x1.xbm | ||||
| sample/tkextlib/tcllib/LICENSE.orig | ||||
| sample/tkextlib/tcllib/datefield.rb | ||||
| sample/tkextlib/tcllib/plotdemos1.rb | ||||
| sample/tkextlib/tcllib/plotdemos2.rb | ||||
|  | @ -470,6 +520,7 @@ sample/tkextlib/tkHTML/page4/image7 | |||
| sample/tkextlib/tkHTML/page4/image8 | ||||
| sample/tkextlib/tkHTML/page4/image9 | ||||
| sample/tkextlib/tkHTML/page4/index.html | ||||
| sample/tkextlib/vu/LICENSE.orig | ||||
| sample/tkextlib/vu/README.txt | ||||
| sample/tkextlib/vu/canvItems.rb | ||||
| sample/tkextlib/vu/canvSticker.rb | ||||
|  |  | |||
|  | @ -807,8 +807,39 @@ module TkComm | |||
|       } | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def _bind_core_for_event_class(klass, mode, what, context, cmd, args=nil) | ||||
|     id = install_bind_for_event_class(klass, cmd, args) if cmd | ||||
|     begin | ||||
|       tk_call_without_enc(*(what + ["<#{tk_event_sequence(context)}>",  | ||||
| 			      mode + id])) | ||||
|     rescue | ||||
|       uninstall_cmd(id) if cmd | ||||
|       fail | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def _bind_for_event_class(klass, what, context, cmd, args=nil) | ||||
|     _bind_core_for_event_class(klass, '', what, context, cmd, args) | ||||
|   end | ||||
| 
 | ||||
|   def _bind_append_for_event_class(klass, what, context, cmd, args=nil) | ||||
|     _bind_core_for_event_class(klass, '+', what, context, cmd, args) | ||||
|   end | ||||
| 
 | ||||
|   def _bind_remove_for_event_class(klass, what, context) | ||||
|     _bind_remove(what, context) | ||||
|   end | ||||
| 
 | ||||
|   def _bindinfo_for_event_class(klass, what, context=nil) | ||||
|     _bindinfo(what, context) | ||||
|   end | ||||
| 
 | ||||
|   private :tk_event_sequence | ||||
|   private :_bind_core, :_bind, :_bind_append, :_bind_remove, :_bindinfo | ||||
|   private :_bind_core_for_event_class, :_bind_for_event_class,  | ||||
|           :_bind_append_for_event_class, :_bind_remove_for_event_class,  | ||||
|           :_bindinfo_for_event_class | ||||
| 
 | ||||
|   def bind(tagOrClass, context, cmd=Proc.new, args=nil) | ||||
|     _bind(["bind", tagOrClass], context, cmd, args) | ||||
|  | @ -1437,28 +1468,34 @@ module Tk | |||
|   def Tk.const_missing(sym) | ||||
|     case(sym) | ||||
|     when :TCL_LIBRARY | ||||
|       INTERP._invoke_without_enc('global', 'tcl_library') | ||||
|       INTERP._invoke("set", "tcl_library").freeze | ||||
| 
 | ||||
|     when :TK_LIBRARY | ||||
|       INTERP._invoke_without_enc('global', 'tk_library') | ||||
|       INTERP._invoke("set", "tk_library").freeze | ||||
| 
 | ||||
|     when :LIBRARY | ||||
|       INTERP._invoke("info", "library").freeze | ||||
| 
 | ||||
|     #when :PKG_PATH, :PACKAGE_PATH, :TCL_PACKAGE_PATH | ||||
|     #  INTERP._invoke_without_enc('global', 'tcl_pkgPath') | ||||
|     #  tk_split_simplelist(INTERP._invoke('set', 'tcl_pkgPath')) | ||||
| 
 | ||||
|     #when :LIB_PATH, :LIBRARY_PATH, :TCL_LIBRARY_PATH | ||||
|     #  INTERP._invoke_without_enc('global', 'tcl_libPath') | ||||
|     #  tk_split_simplelist(INTERP._invoke('set', 'tcl_libPath')) | ||||
| 
 | ||||
|     when :PLATFORM, :TCL_PLATFORM | ||||
|       if $SAFE >= 4 | ||||
| 	fail SecurityError, "can't get #{sym} when $SAFE >= 4" | ||||
|       end | ||||
|       INTERP._invoke_without_enc('global', 'tcl_platform') | ||||
|       Hash[*tk_split_simplelist(INTERP._invoke_without_enc('array', 'get',  | ||||
| 							   'tcl_platform'))] | ||||
| 
 | ||||
|     when :ENV | ||||
|       INTERP._invoke_without_enc('global', 'env') | ||||
|       Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'env'))] | ||||
| 
 | ||||
|     #when :AUTO_PATH   #<===  | ||||
|  | @ -1468,6 +1505,7 @@ module Tk | |||
|     #  tk_split_simplelist(INTERP._invoke('set', 'auto_oldpath')) | ||||
| 
 | ||||
|     when :AUTO_INDEX | ||||
|       INTERP._invoke_without_enc('global', 'auto_index') | ||||
|       Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', 'auto_index'))] | ||||
| 
 | ||||
|     when :PRIV, :PRIVATE, :TK_PRIV | ||||
|  | @ -1477,6 +1515,7 @@ module Tk | |||
|       else | ||||
| 	var_nam = 'tkPriv' | ||||
|       end | ||||
|       INTERP._invoke_without_enc('global', var_nam) | ||||
|       Hash[*tk_split_simplelist(INTERP._invoke('array', 'get',  | ||||
| 					       var_nam))].each{|k,v| | ||||
| 	k.freeze | ||||
|  | @ -2302,6 +2341,15 @@ module TkConfigMethod | |||
| 
 | ||||
|   ################################ | ||||
| 
 | ||||
|   def [](id) | ||||
|     cget(id) | ||||
|   end | ||||
| 
 | ||||
|   def []=(id, val) | ||||
|     configure(id, val) | ||||
|     val | ||||
|   end | ||||
| 
 | ||||
|   def cget(slot) | ||||
|     slot = slot.to_s | ||||
| 
 | ||||
|  | @ -3031,6 +3079,7 @@ class TkObject<TkKernel | |||
|     end | ||||
|   end | ||||
| 
 | ||||
| =begin | ||||
|   def [](id) | ||||
|     cget(id) | ||||
|   end | ||||
|  | @ -3039,6 +3088,7 @@ class TkObject<TkKernel | |||
|     configure(id, val) | ||||
|     val | ||||
|   end | ||||
| =end | ||||
| 
 | ||||
|   def event_generate(context, keys=nil) | ||||
|     if keys | ||||
|  |  | |||
|  | @ -8,14 +8,14 @@ class TkButton<TkLabel | |||
|   TkCommandNames = ['button'.freeze].freeze | ||||
|   WidgetClassName = 'Button'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('button', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('button', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('button', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('button', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def invoke | ||||
|     _fromUTF8(tk_send_without_enc('invoke')) | ||||
|  |  | |||
|  | @ -40,20 +40,21 @@ class TkCanvas<TkWindow | |||
|     TkcItem::CItemID_TBL.delete(@path) | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('canvas', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('canvas', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('canvas', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('canvas', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def tagid(tag) | ||||
|     if tag.kind_of?(TkcItem) || tag.kind_of?(TkcTag) | ||||
|       tag.id | ||||
|     else | ||||
|       tag | ||||
|       # tag | ||||
|       _get_eval_string(tag) | ||||
|     end | ||||
|   end | ||||
|   private :tagid | ||||
|  |  | |||
|  | @ -316,7 +316,8 @@ end | |||
| 
 | ||||
| class TkcGroup<TkcTag | ||||
|   Tk_cGroup_ID = ['tkcg'.freeze, '00000'.taint].freeze | ||||
|   def create_self(parent, *args) | ||||
|   #def create_self(parent, *args) | ||||
|   def initialize(parent, *args) | ||||
|     unless parent.kind_of?(TkCanvas) | ||||
|       fail ArguemntError, "expect TkCanvas for 1st argument" | ||||
|     end | ||||
|  | @ -329,7 +330,7 @@ class TkcGroup<TkcTag | |||
|     Tk_cGroup_ID[1].succ! | ||||
|     add(*args) if args != [] | ||||
|   end | ||||
|   private :create_self | ||||
|   #private :create_self | ||||
|    | ||||
|   def include(*tags) | ||||
|     for i in tags | ||||
|  |  | |||
|  | @ -8,14 +8,14 @@ class TkCheckButton<TkRadioButton | |||
|   TkCommandNames = ['checkbutton'.freeze].freeze | ||||
|   WidgetClassName = 'Checkbutton'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('checkbutton', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('checkbutton', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('checkbutton', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('checkbutton', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def toggle | ||||
|     tk_send_without_enc('toggle') | ||||
|  |  | |||
|  | @ -162,8 +162,11 @@ class TkDialog2 < TkWindow | |||
|     #	       @path+" "+@title+" {#{@message}} "+@bitmap+" "+ | ||||
|     #	       String(default_button)+" "+@buttons.join(' ')+']}') | ||||
|     Tk.ip_eval(@config) | ||||
|     @val = Tk.ip_eval('tk_dialog ' + @path + ' ' + @title +  | ||||
| 		      ' {' + @message + '} ' + @bitmap + ' ' +  | ||||
|     # @val = Tk.ip_eval('tk_dialog ' + @path + ' ' + @title +  | ||||
|     #		      ' {' + @message + '} ' + @bitmap + ' ' +  | ||||
|     #		      String(default_button) + ' ' + @buttons.join(' ')).to_i | ||||
|     @val = Tk.ip_eval(self.class::TkCommandNames[0] + ' ' + @path + ' ' +  | ||||
| 		      @title + ' {' + @message + '} ' + @bitmap + ' ' +  | ||||
| 		      String(default_button) + ' ' + @buttons.join(' ')).to_i | ||||
|   end | ||||
| 
 | ||||
|  |  | |||
|  | @ -16,14 +16,13 @@ class TkEntry<TkLabel | |||
|   WidgetClassName = 'Entry'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     tk_call_without_enc('entry', @path) | ||||
|     if keys and keys != None | ||||
|       configure(keys) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  tk_call_without_enc('entry', @path) | ||||
|   #  if keys and keys != None | ||||
|   #    configure(keys) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def bbox(index) | ||||
|     list(tk_send_without_enc('bbox', index)) | ||||
|  |  | |||
|  | @ -117,9 +117,21 @@ module TkEvent | |||
|     #     that is generated by _get_subst_key() or _get_all_subst_keys().  | ||||
|     # | ||||
|     _setup_subst_table(KEY_TBL, PROC_TBL); | ||||
| 
 | ||||
| 
 | ||||
|     # If you need support extra arguments given by Tcl/Tk,  | ||||
|     # please override _get_extra_args_tbl | ||||
|     # | ||||
|     #def self._get_extra_args_tbl | ||||
|     #  # return an array of convert procs | ||||
|     #  [] | ||||
|     #end | ||||
| 
 | ||||
|   end | ||||
| 
 | ||||
|   def install_bind_for_event_class(klass, cmd, *args) | ||||
|     extra_args_tbl = klass._get_extra_args_tbl | ||||
| 
 | ||||
|     if args.compact.size > 0 | ||||
|       args = args.join(' ') | ||||
|       keys = klass._get_subst_key(args) | ||||
|  | @ -130,7 +142,9 @@ module TkEvent | |||
| 	id = install_cmd(cmd) | ||||
|       else | ||||
| 	id = install_cmd(proc{|*arg| | ||||
| 	  TkUtil.eval_cmd(cmd, *klass.scan_args(keys, arg)) | ||||
| 	  ex_args = [] | ||||
| 	  extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)} | ||||
| 	  TkUtil.eval_cmd(cmd, *(ex_args.concat(klass.scan_args(keys, arg)))) | ||||
|         }) | ||||
|       end | ||||
|       id + ' ' + args | ||||
|  | @ -143,7 +157,10 @@ module TkEvent | |||
| 	id = install_cmd(cmd) | ||||
|       else | ||||
|         id = install_cmd(proc{|*arg| | ||||
| 	  TkUtil.eval_cmd(cmd, klass.new(*klass.scan_args(keys, arg))) | ||||
| 	  ex_args = [] | ||||
| 	  extra_args_tbl.reverse_each{|conv| ex_args << conv.call(arg.pop)} | ||||
| 	  TkUtil.eval_cmd(cmd,  | ||||
| 			  *(ex_args << klass.new(*klass.scan_args(keys, arg)))) | ||||
|         }) | ||||
|       end | ||||
|       id + ' ' + args | ||||
|  | @ -151,7 +168,7 @@ module TkEvent | |||
|   end | ||||
| 
 | ||||
|   def install_bind(cmd, *args) | ||||
|     install_bind_for_event_class(Event, cmd, *args) | ||||
|     install_bind_for_event_class(TkEvent::Event, cmd, *args) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
|  |  | |||
|  | @ -197,7 +197,7 @@ class TkFont | |||
| 
 | ||||
|   def TkFont.init_widget_font(pathname, *args) | ||||
|     win, tag, key = pathname.split(';') | ||||
|     key = 'font' unless key | ||||
|     key = 'font' if key == nil || key == '' | ||||
|     path = [win, tag, key].join(';') | ||||
| 
 | ||||
|     case (Tk::TK_VERSION) | ||||
|  | @ -868,7 +868,7 @@ class TkFont | |||
| 	begin | ||||
| 	  if w.include?(';') | ||||
| 	    win, tag, optkey = w.split(';') | ||||
| 	    optkey = 'font' unless optkey | ||||
| 	    optkey = 'font' if optkey == nil || optkey == '' | ||||
| 	    winobj = tk_tcl2ruby(win) | ||||
| #	    winobj.tagfont_configure(tag, {'font'=>@latinfont}) | ||||
| 	    if winobj.kind_of? TkText | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ class TkFrame<TkWindow | |||
| 
 | ||||
|   def initialize(parent=nil, keys=nil) | ||||
|     my_class_name = nil | ||||
|     if self.class < WidgetClassNames[WidgetClassName] | ||||
|     if self.class < WidgetClassNames[self.class::WidgetClassName] | ||||
|       my_class_name = self.class.name | ||||
|       my_class_name = nil if my_class_name == '' | ||||
|     end | ||||
|  | @ -68,14 +68,14 @@ class TkFrame<TkWindow | |||
|     super(keys) | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('frame', @path, *hash_kv(keys)) | ||||
|     else | ||||
|       tk_call_without_enc( 'frame', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('frame', @path, *hash_kv(keys)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc( 'frame', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def database_classname | ||||
|     @classname | ||||
|  |  | |||
|  | @ -105,6 +105,13 @@ module TkItemConfigMethod | |||
| 
 | ||||
|   ################################################ | ||||
| 
 | ||||
|   def tagid(tagOrId) | ||||
|     # maybe need to override | ||||
|     tagOrId | ||||
|   end | ||||
| 
 | ||||
|   ################################################ | ||||
| 
 | ||||
|   def itemcget(tagOrId, option) | ||||
|     option = option.to_s | ||||
| 
 | ||||
|  |  | |||
|  | @ -28,7 +28,7 @@ module TkTreatItemFont | |||
|       fail ArgumentError, "unknown font option name `#{key}'" | ||||
|     end | ||||
| 
 | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(':') | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(';') | ||||
| 
 | ||||
|     if key | ||||
|       pathname = [win, tag, key].join(';') | ||||
|  | @ -130,7 +130,7 @@ module TkTreatItemFont | |||
|       fail ArgumentError, "unknown font option name `#{key}'" | ||||
|     end | ||||
| 
 | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(':') | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(';') | ||||
| 
 | ||||
|     optkeys = [key] if key | ||||
| 
 | ||||
|  | @ -181,7 +181,7 @@ module TkTreatItemFont | |||
|       fail ArgumentError, "unknown font option name `#{key}'" | ||||
|     end | ||||
| 
 | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(':') | ||||
|     win, tag = __item_pathname(tagid(tagOrId)).split(';') | ||||
| 
 | ||||
|     optkeys = [key] if key | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,14 +7,14 @@ class TkLabel<TkWindow | |||
|   TkCommandNames = ['label'.freeze].freeze | ||||
|   WidgetClassName = 'Label'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('label', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('label', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('label', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('label', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def textvariable(v) | ||||
|     configure 'textvariable', tk_trace_variable(v) | ||||
|  |  | |||
|  | @ -8,13 +8,13 @@ class TkLabelFrame<TkFrame | |||
|   TkCommandNames = ['labelframe'.freeze].freeze | ||||
|   WidgetClassName = 'Labelframe'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('labelframe', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('labelframe', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('labelframe', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('labelframe', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| end | ||||
| TkLabelframe = TkLabelFrame | ||||
|  |  | |||
|  | @ -23,17 +23,18 @@ class TkListbox<TkTextWin | |||
|   WidgetClassName = 'Listbox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('listbox', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('listbox', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('listbox', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('listbox', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def tagid(id) | ||||
|     id.to_s | ||||
|     #id.to_s | ||||
|     _get_eval_string(id) | ||||
|   end | ||||
| 
 | ||||
|   def activate(y) | ||||
|  |  | |||
|  | @ -38,17 +38,18 @@ class TkMenu<TkWindow | |||
|   WidgetClassName = 'Menu'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('menu', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('menu', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('menu', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('menu', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def tagid(id) | ||||
|     id.to_s | ||||
|     #id.to_s | ||||
|     _get_eval_string(id) | ||||
|   end | ||||
| 
 | ||||
|   def activate(index) | ||||
|  |  | |||
|  | @ -8,12 +8,12 @@ class TkMessage<TkLabel | |||
|   TkCommandNames = ['message'.freeze].freeze | ||||
|   WidgetClassName = 'Message'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('message', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('message', @path) | ||||
|     end | ||||
|   end | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('message', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('message', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   private :create_self | ||||
| end | ||||
|  |  | |||
|  | @ -34,7 +34,8 @@ module TkOptionDB | |||
|   def readfile(file, pri=None) | ||||
|     tk_call('option', 'readfile', file, pri) | ||||
|   end | ||||
|   module_function :add, :clear, :get, :readfile | ||||
|   alias read_file readfile | ||||
|   module_function :add, :clear, :get, :readfile, :read_file | ||||
| 
 | ||||
|   def read_entries(file, f_enc=nil) | ||||
|     if TkCore::INTERP.safe? | ||||
|  |  | |||
|  | @ -7,14 +7,14 @@ class TkPanedWindow<TkWindow | |||
|   TkCommandNames = ['panedwindow'.freeze].freeze | ||||
|   WidgetClassName = 'Panedwindow'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('panedwindow', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('panedwindow', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('panedwindow', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('panedwindow', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def add(*args) | ||||
|     keys = args.pop | ||||
|  |  | |||
|  | @ -8,14 +8,14 @@ class TkRadioButton<TkButton | |||
|   TkCommandNames = ['radiobutton'.freeze].freeze | ||||
|   WidgetClassName = 'Radiobutton'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('radiobutton', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('radiobutton', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('radiobutton', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('radiobutton', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def deselect | ||||
|     tk_send_without_enc('deselect') | ||||
|  |  | |||
|  | @ -10,13 +10,16 @@ class TkScale<TkWindow | |||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       if keys.key?('command') | ||||
|       if keys.key?('command') && ! keys['command'].kind_of?(String) | ||||
| 	cmd = keys.delete('command') | ||||
| 	keys['command'] = proc{|val| cmd.call(val.to_f)} | ||||
|       end | ||||
|       tk_call_without_enc('scale', @path, *hash_kv(keys, true)) | ||||
|       #tk_call_without_enc('scale', @path, *hash_kv(keys, true)) | ||||
|       tk_call_without_enc(self.class::TkCommandNames[0], @path,  | ||||
| 			  *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('scale', @path) | ||||
|       #tk_call_without_enc('scale', @path) | ||||
|       tk_call_without_enc(self.class::TkCommandNames[0], @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|  |  | |||
|  | @ -52,8 +52,8 @@ module Tk | |||
| 	@xscrollbar.orient 'horizontal' | ||||
| 	self.xscrollcommand {|*arg| @xscrollbar.set(*arg)} | ||||
| 	@xscrollbar.command {|*arg| self.xview(*arg)} | ||||
| 	Tk.update  # avoid scrollbar trouble | ||||
|       end | ||||
|       Tk.update  # avoid scrollbar trouble | ||||
|       @xscrollbar | ||||
|     end | ||||
|     def yscrollbar(bar=nil) | ||||
|  | @ -62,8 +62,8 @@ module Tk | |||
| 	@yscrollbar.orient 'vertical' | ||||
| 	self.yscrollcommand {|*arg| @yscrollbar.set(*arg)} | ||||
| 	@yscrollbar.command {|*arg| self.yview(*arg)} | ||||
| 	Tk.update  # avoid scrollbar trouble | ||||
|       end | ||||
|       Tk.update  # avoid scrollbar trouble | ||||
|       @yscrollbar | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -19,9 +19,12 @@ class TkScrollbar<TkWindow | |||
|     } | ||||
| 
 | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('scrollbar', @path, *hash_kv(keys, true)) | ||||
|       #tk_call_without_enc('scrollbar', @path, *hash_kv(keys, true)) | ||||
|       tk_call_without_enc(self.class::TkCommandNames[0], @path,  | ||||
| 			  *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('scrollbar', @path) | ||||
|       #tk_call_without_enc('scrollbar', @path) | ||||
|       tk_call_without_enc(self.class::TkCommandNames[0], @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|  |  | |||
|  | @ -11,13 +11,13 @@ class TkSpinbox<TkEntry | |||
|   WidgetClassName = 'Spinbox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     tk_call_without_enc('spinbox', @path) | ||||
|     if keys and keys != None | ||||
|       configure(keys) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  tk_call_without_enc('spinbox', @path) | ||||
|   #  if keys and keys != None | ||||
|   #    configure(keys) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def identify(x, y) | ||||
|     tk_send_without_enc('identify', x, y) | ||||
|  |  | |||
|  | @ -88,11 +88,15 @@ class TkText<TkTextWin | |||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('text', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('text', @path) | ||||
|     end | ||||
|     #if keys and keys != None | ||||
|     #  #tk_call_without_enc('text', @path, *hash_kv(keys, true)) | ||||
|     #  tk_call_without_enc(self.class::TkCommandNames[0], @path,  | ||||
|     #			  *hash_kv(keys, true)) | ||||
|     #else | ||||
|     #  #tk_call_without_enc('text', @path) | ||||
|     #  tk_call_without_enc(self.class::TkCommandNames[0], @path) | ||||
|     #end | ||||
|     super(keys) | ||||
|     init_instance_variable | ||||
|   end | ||||
|   private :create_self | ||||
|  | @ -131,7 +135,8 @@ class TkText<TkTextWin | |||
|       || tag.kind_of?(TkTextWindow) | ||||
|       tag.id | ||||
|     else | ||||
|       tag | ||||
|       # tag | ||||
|       _get_eval_string(tag) | ||||
|     end | ||||
|   end | ||||
|   private :tagid | ||||
|  |  | |||
|  | @ -158,14 +158,14 @@ class TkToplevel<TkWindow | |||
|     } | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc('toplevel', @path, *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc('toplevel', @path) | ||||
|     end | ||||
|   end | ||||
|   private :create_self | ||||
|   #def create_self(keys) | ||||
|   #  if keys and keys != None | ||||
|   #    tk_call_without_enc('toplevel', @path, *hash_kv(keys, true)) | ||||
|   #  else | ||||
|   #    tk_call_without_enc('toplevel', @path) | ||||
|   #  end | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def specific_class | ||||
|     @classname | ||||
|  |  | |||
|  | @ -4,10 +4,11 @@ | |||
| require 'tk' | ||||
| 
 | ||||
| class TkTextWin<TkWindow | ||||
|   def create_self | ||||
|     fail RuntimeError, "TkTextWin is an abstract class" | ||||
|   end | ||||
|   private :create_self | ||||
|   TkCommnadNames = [].freeze | ||||
|   #def create_self | ||||
|   #  fail RuntimeError, "TkTextWin is an abstract class" | ||||
|   #end | ||||
|   #private :create_self | ||||
| 
 | ||||
|   def bbox(index) | ||||
|     list(tk_send_without_enc('bbox', index)) | ||||
|  |  | |||
|  | @ -158,6 +158,15 @@ module TkValidation | |||
|       ] | ||||
| 
 | ||||
|       _setup_subst_table(KEY_TBL, PROC_TBL); | ||||
| 
 | ||||
|       def self.ret_val(val) | ||||
| 	(val)? '1': '0' | ||||
|       end | ||||
| 
 | ||||
|       #def self._get_extra_args_tbl | ||||
|       #  # return an array of convert procs | ||||
|       #  [] | ||||
|       #end | ||||
|     end | ||||
| 
 | ||||
|     ############################## | ||||
|  | @ -168,6 +177,8 @@ module TkValidation | |||
|     end | ||||
| 
 | ||||
|     def _initialize_for_cb_class(klass, cmd = Proc.new, *args) | ||||
|       extra_args_tbl = klass._get_extra_args_tbl | ||||
| 
 | ||||
|       if args.compact.size > 0 | ||||
| 	args = args.join(' ') | ||||
| 	keys = klass._get_subst_key(args) | ||||
|  | @ -177,7 +188,11 @@ module TkValidation | |||
| 	  @id = install_cmd(cmd) | ||||
| 	else | ||||
| 	  @id = install_cmd(proc{|*arg| | ||||
| 	     (cmd.call(*klass.scan_args(keys, arg)))? '1':'0' | ||||
| 	     ex_args = [] | ||||
| 	     extra_args_tbl.reverse_each{|conv| ex_args << conv.call(args.pop)} | ||||
| 	     klass.ret_val(cmd.call( | ||||
|                *(ex_args.concat(klass.scan_args(keys, arg))) | ||||
|              )) | ||||
| 	  }) + ' ' + args | ||||
| 	end | ||||
|       else | ||||
|  | @ -188,9 +203,11 @@ module TkValidation | |||
| 	  @id = install_cmd(cmd) | ||||
| 	else | ||||
| 	  @id = install_cmd(proc{|*arg| | ||||
| 	     (cmd.call( | ||||
|                 klass.new(*klass.scan_args(keys,arg))) | ||||
|              )? '1': '0' | ||||
| 	     ex_args = [] | ||||
| 	     extra_args_tbl.reverse_each{|conv| ex_args << conv.call(args.pop)} | ||||
| 	     klass.ret_val(cmd.call( | ||||
|                *(ex_args << klass.new(*klass.scan_args(keys,arg))) | ||||
| 	     )) | ||||
| 	  }) + ' ' + args | ||||
| 	end | ||||
|       end | ||||
|  |  | |||
|  | @ -197,8 +197,13 @@ TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL') | |||
|     @id | ||||
|   end | ||||
| 
 | ||||
|   def ref(*idxs) | ||||
|     "#{@id}(#{idxs.collect{|idx| _get_eval_string(idx)}.join(',')})" | ||||
|   end | ||||
| 
 | ||||
|   def is_hash? | ||||
|     #ITNERP._eval("global #{@id}; array exist #{@id}") == '1' | ||||
|     INTERP._invoke_without_enc('global', @id) | ||||
|     INTERP._invoke_without_enc('array', 'exist', @id) == '1' | ||||
|   end | ||||
| 
 | ||||
|  | @ -211,6 +216,7 @@ TkCore::INTERP.add_tk_procs('rb_var', 'args', <<-'EOL') | |||
|       fail RuntimeError, 'cannot get keys from a scalar variable' | ||||
|     end | ||||
|     #tk_split_simplelist(INTERP._eval("global #{@id}; array get #{@id}")) | ||||
|     INTERP._invoke_without_enc('global', @id) | ||||
|     tk_split_simplelist(INTERP._fromUTF8(INTERP._invoke_without_enc('array', 'names', @id))) | ||||
|   end | ||||
| 
 | ||||
|  | @ -242,6 +248,7 @@ if USE_TCLs_SET_VARIABLE_FUNCTIONS | |||
| 
 | ||||
|   def value | ||||
|     #if INTERP._eval("global #{@id}; array exist #{@id}") == '1' | ||||
|     INTERP._invoke_without_enc('global', @id) | ||||
|     if INTERP._invoke('array', 'exist', @id) == '1' | ||||
|       #Hash[*tk_split_simplelist(INTERP._eval("global #{@id}; array get #{@id}"))] | ||||
|       Hash[*tk_split_simplelist(INTERP._invoke('array', 'get', @id))] | ||||
|  | @ -277,16 +284,21 @@ if USE_TCLs_SET_VARIABLE_FUNCTIONS | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def [](index) | ||||
|   def [](*idxs) | ||||
|     index = idxs.collect{|idx| _get_eval_string(idx, true)}.join(',') | ||||
|     _fromUTF8(INTERP._get_global_var2(@id, index)) | ||||
|     #_fromUTF8(INTERP._get_global_var2(@id, _toUTF8(_get_eval_string(index)))) | ||||
|     _fromUTF8(INTERP._get_global_var2(@id, _get_eval_string(index, true))) | ||||
|     #_fromUTF8(INTERP._get_global_var2(@id, _get_eval_string(index, true))) | ||||
|   end | ||||
| 
 | ||||
|   def []=(index,val) | ||||
|   def []=(*args) | ||||
|     val = args.pop | ||||
|     index = args.collect{|idx| _get_eval_string(idx, true)}.join(',') | ||||
|     _fromUTF8(INTERP._set_global_var2(@id, index, _get_eval_string(val, true))) | ||||
|     #_fromUTF8(INTERP._set_global_var2(@id, _toUTF8(_get_eval_string(index)),  | ||||
|     #				      _toUTF8(_get_eval_string(val)))) | ||||
|     _fromUTF8(INTERP._set_global_var2(@id, _get_eval_string(index, true),  | ||||
| 				      _get_eval_string(val, true))) | ||||
|     #_fromUTF8(INTERP._set_global_var2(@id, _get_eval_string(index, true),  | ||||
|     #				      _get_eval_string(val, true))) | ||||
|   end | ||||
| 
 | ||||
|   def unset(elem=nil) | ||||
|  | @ -371,16 +383,22 @@ else | |||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def [](index) | ||||
|     INTERP._eval(Kernel.format('global %s; set %s(%s)',  | ||||
|                                @id, @id, _get_eval_string(index))) | ||||
|   def [](*idxs) | ||||
|     index = idxs.collect{|idx| _get_eval_string(idx)}.join(',') | ||||
|     INTERP._eval(Kernel.format('global %s; set %s(%s)', @id, @id, index)) | ||||
|     #INTERP._eval(Kernel.format('global %s; set %s(%s)',  | ||||
|     #                           @id, @id, _get_eval_string(index))) | ||||
|     #INTERP._eval(Kernel.format('set %s(%s)', @id, _get_eval_string(index))) | ||||
|     #INTERP._eval('set ' + @id + '(' + _get_eval_string(index) + ')') | ||||
|   end | ||||
| 
 | ||||
|   def []=(index,val) | ||||
|   def []=(*args) | ||||
|     val = args.pop | ||||
|     index = args.collect{|idx| _get_eval_string(idx)}.join(',') | ||||
|     INTERP._eval(Kernel.format('global %s; set %s(%s) %s', @id, @id,  | ||||
|                               _get_eval_string(index), _get_eval_string(val))) | ||||
|                               index, _get_eval_string(val))) | ||||
|     #INTERP._eval(Kernel.format('global %s; set %s(%s) %s', @id, @id,  | ||||
|     #                          _get_eval_string(index), _get_eval_string(val))) | ||||
|     #INTERP._eval(Kernel.format('set %s(%s) %s', @id,  | ||||
|     #			       _get_eval_string(index), _get_eval_string(val))) | ||||
|     #INTERP._eval('set ' + @id + '(' + _get_eval_string(index) + ') ' +  | ||||
|  | @ -869,6 +887,7 @@ class TkVarAccess<TkVariable | |||
| 
 | ||||
|   def self.new_hash(name, *args) | ||||
|     return TkVar_ID_TBL[name] if TkVar_ID_TBL[name] | ||||
|     INTERP._invoke_without_enc('global', name) | ||||
|     if args.empty? && INTERP._invoke_without_enc('array', 'exist', name) == '0' | ||||
|       self.new(name, {})  # force creating | ||||
|     else | ||||
|  |  | |||
|  | @ -178,10 +178,13 @@ module Tk | |||
| 	self | ||||
|       end | ||||
|     end | ||||
|     def protocol(name=nil, cmd=nil) | ||||
|     def protocol(name=nil, cmd=nil, &b) | ||||
|       if cmd | ||||
| 	tk_call_without_enc('wm', 'protocol', path, name, cmd) | ||||
| 	self | ||||
|       elsif b | ||||
| 	tk_call_without_enc('wm', 'protocol', path, name, proc(&b)) | ||||
| 	self | ||||
|       elsif name | ||||
| 	result = tk_call_without_enc('wm', 'protocol', path, name) | ||||
| 	(result == "")? nil : tk_tcl2ruby(result) | ||||
|  |  | |||
|  | @ -6,11 +6,8 @@ | |||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/ICONS/setup.rb' | ||||
| 
 | ||||
| # load library | ||||
| require File.join(dir, 'icons') | ||||
| require 'tkextlib/ICONS/icons' | ||||
|  |  | |||
|  | @ -9,39 +9,63 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/ICONS/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('icons', '1.0') | ||||
| TkPackage.require('icons') | ||||
| 
 | ||||
| module Tk | ||||
|   class ICONS < TkImage | ||||
|     def self.create(*args)  # icon, icon, ..., keys | ||||
|     extend Tk | ||||
| 
 | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('icons') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     def self.create(*args)  # icon, icon, ..., ?option=>value, ...? | ||||
|       if args[-1].kind_of?(Hash) | ||||
| 	keys = args.pop | ||||
| 	icons = simplelist(tk_call('::icons::icons', 'create',  | ||||
| 				   *(hash_kv(keys).concat(args.flatten)))) | ||||
| 				   *(hash_kv(keys) << (args.flatten)))) | ||||
|       else | ||||
| 	icons = simplelist(tk_call('::icons::icons', 'create',  | ||||
| 				   *(args.flatten))) | ||||
| 				   args.flatten)) | ||||
|       end | ||||
| 
 | ||||
|       icons.collect{|icon| self.new(icon, :without_creating=>true)} | ||||
|     end | ||||
| 
 | ||||
|     def self.delete(*icons) | ||||
|     def self.delete(*icons)  # icon, icon, ... | ||||
|       icons = icons.flatten | ||||
|       return if icons.empty? | ||||
|       icons.map!{|icon| | ||||
| 	if icon.kind_of?(Tk::ICONS) | ||||
| 	  Tk_IMGTBL.delete(icon.path) | ||||
| 	  icon.name | ||||
| 	elsif icon.to_s =~ /^::icon::(.*)/ | ||||
| 	  name = $1 | ||||
| 	  Tk_IMGTBL.delete(icon) | ||||
| 	  name | ||||
| 	else | ||||
| 	  Tk_IMGTBL.delete("::icon::#{icon}") | ||||
| 	  icon | ||||
| 	end | ||||
|       } | ||||
|       tk_call('::icons::icons', 'delete', icons) | ||||
|     end | ||||
| 
 | ||||
|     def self.query(*args) | ||||
|     def self.query(*args)  # icon, icon, ..., ?option=>value, ...? | ||||
|       if args[-1].kind_of?(Hash) | ||||
| 	keys = args.pop | ||||
| 	list(tk_call('::icons::icons', 'query',  | ||||
| 		     *(hash_kv(keys).concat(args.flatten)))) | ||||
| 	simplelist(tk_call('::icons::icons', 'query',  | ||||
| 			   *(hash_kv(keys) << (args.flatten)))) | ||||
|       else | ||||
| 	list(tk_call('::icons::icons', 'query', *(args.flatten))) | ||||
|       end | ||||
| 	simplelist(tk_call('::icons::icons', 'query', args.flatten)) | ||||
|       end . map{|inf| list(inf) } | ||||
|     end | ||||
| 
 | ||||
|     ########################################## | ||||
|  | @ -75,7 +99,7 @@ module Tk | |||
|       self | ||||
|     end | ||||
| 
 | ||||
|     def query(keys) | ||||
|     def query(keys={}) | ||||
|       list(simplelist(tk_call('::icons::icons', 'query',  | ||||
| 			       *(hash_kv(keys) << @name)) | ||||
| 		      )[0]) | ||||
|  |  | |||
|  | @ -47,33 +47,35 @@ script may give you some hints about that. | |||
| ===< support with some examples (may be beta quality) >======================= | ||||
| 
 | ||||
| Tcllib      http://sf.net/projects/tcllib | ||||
|               ==>  tcllib  (partial support; Tklib part only) | ||||
|               ==> tcllib  (partial support; Tklib part only) | ||||
| 
 | ||||
| BWidgets    http://sf.net/projects/tcllib               ==> bwidget | ||||
| 
 | ||||
| vu          http://tktable.sourceforge.net              ==> vu | ||||
| 
 | ||||
| TkHTML      http://www.hwaci.com/sw/tkhtml/index.html   ==>  tkHTML | ||||
| TkHTML      http://www.hwaci.com/sw/tkhtml/index.html   ==> tkHTML | ||||
| 
 | ||||
| ICONS       http://www.satisoft.com/tcltk/icons/        ==> ICONS | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ===< support (may be alpha or beta quality) >================================= | ||||
| 
 | ||||
| TkImg       http://sf.net/projects/tkimg   ==>  tkimg | ||||
| TkImg       http://sf.net/projects/tkimg                ==>  tkimg | ||||
| 
 | ||||
| TkTreeCtrl  http://tktreectrl.sourceforge.net/          ==>  treectrl | ||||
| TkTreeCtrl  http://tktreectrl.sourceforge.net/          ==> treectrl | ||||
| 
 | ||||
| Tile        http://tktable.sourceforge.net/tile/        ==>  tile | ||||
| Tile        http://tktable.sourceforge.net/tile/        ==> tile | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ===< possibly support (not tested; alpha quality) >=========================== | ||||
| ===< possibly available (not tested; alpha quality) >========================= | ||||
| 
 | ||||
| TkTrans     http://www2.cmp.uea.ac.uk/~fuzz/tktrans/default.html | ||||
|                ==>  tktrans (win32 only) | ||||
| 
 | ||||
| TkDND       http://sourceforge.net/projects/tkdnd  ==> tkDND | ||||
| 
 | ||||
| ICONS       http://www.satisoft.com/tcltk/icons/   ==> ICONS | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| ===< plan to support (alpha quality libraries may be included) >============== | ||||
|  | @ -87,8 +89,6 @@ IWidgets    http://sf.net/projects/incrTcl | |||
| TkTable     http://sf.net/projects/tktable | ||||
|                 * see http://www.korus.hu/~fery/ruby/tktable.rb | ||||
| 
 | ||||
| BWidgets    http://sf.net/projects/tcllib | ||||
| 
 | ||||
| winico      http://tktable.sourceforge.net | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										144
									
								
								ext/tk/lib/tkextlib/bwidget.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								ext/tk/lib/tkextlib/bwidget.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,144 @@ | |||
| # | ||||
| #  BWidget extension support | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require 'tkextlib/bwidget/setup.rb' | ||||
| 
 | ||||
| # load all image format handlers | ||||
| #TkPackage.require('BWidget', '1.7') | ||||
| TkPackage.require('BWidget') | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     extend TkCore | ||||
| 
 | ||||
|     LIBRARY = tk_call('set', '::BWIDGET::LIBRARY') | ||||
| 
 | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('BWidget') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     def self.XLFDfont(cmd, *args) | ||||
|       if args[-1].kind_of?(Hash) | ||||
| 	keys = args.pop | ||||
| 	args.concat(hash_kv(keys)) | ||||
|       end | ||||
|       tk_call('BWidget::XLFDfont', cmd, *args) | ||||
|     end | ||||
| 
 | ||||
|     def self.assert(exp, msg=None) | ||||
|       tk_call('BWidget::assert', exp, msg) | ||||
|     end | ||||
| 
 | ||||
|     def self.badOptionString(type, value, list) | ||||
|       tk_call('BWidget::badOptionString', type, value, list) | ||||
|     end | ||||
| 
 | ||||
|     def self.bindMouseWheel(widget) | ||||
|       tk_call('BWidget::bindMouseWheel', widget) | ||||
|     end | ||||
| 
 | ||||
|     def self.classes(klass) | ||||
|       list(tk_call('BWidget::classes', klass)) | ||||
|     end | ||||
| 
 | ||||
|     def self.clonename(menu) | ||||
|       tk_call('BWidget::clonename', menu) | ||||
|     end | ||||
| 
 | ||||
|     def self.focus(opt, path) | ||||
|       tk_call('BWidget::focus', opt, path) | ||||
|     end | ||||
| 
 | ||||
|     def self.get3dcolor(path, bgcolor) | ||||
|       tk_call('BWidget::get3dcolor', path, bgcolor) | ||||
|     end | ||||
| 
 | ||||
|     def self.getname(name) | ||||
|       tk_call('BWidget::getname', name) | ||||
|     end | ||||
| 
 | ||||
|     def self.grab(opt, path) | ||||
|       tk_call('BWidget::', opt, path) | ||||
|     end | ||||
| 
 | ||||
|     def self.inuse(klass) | ||||
|       bool(tk_call('BWidget::inuse', klass)) | ||||
|     end | ||||
| 
 | ||||
|     def self.library(klass, *klasses) | ||||
|       tk_call('BWidget::library', klass, *klasses) | ||||
|     end | ||||
| 
 | ||||
|     def self.lreorder(list, neworder) | ||||
|       tk_call('BWidget::lreorder', list, neworder) | ||||
|     end | ||||
| 
 | ||||
|     def self.parsetext(text) | ||||
|       tk_call('BWidget::parsetext', text) | ||||
|     end | ||||
| 
 | ||||
|     def self.place(path, w, h, *args) | ||||
|       if args[-1].kind_of?(Hash) | ||||
| 	keys = args.pop | ||||
| 	args.concat(hash_kv(keys)) | ||||
|       end | ||||
|       tk_call('BWidget::place', path, w, h, *(args.flatten)) | ||||
|     end | ||||
| 
 | ||||
|     def self.write(file, mode=None) | ||||
|       tk_call('BWidget::write', file, mode) | ||||
|     end | ||||
| 
 | ||||
|     def self.wrongNumArgsString(str) | ||||
|       tk_call('BWidget::wrongNumArgsString', str) | ||||
|     end | ||||
| 
 | ||||
|     #################################################### | ||||
| 
 | ||||
|     autoload :ArrowButton,     'tkextlib/bwidget/arrowbutton' | ||||
|     autoload :Bitmap,          'tkextlib/bwidget/bitmap' | ||||
|     autoload :Button,          'tkextlib/bwidget/button' | ||||
|     autoload :ButtonBox,       'tkextlib/bwidget/buttonbox' | ||||
|     autoload :ComboBox,        'tkextlib/bwidget/combobox' | ||||
|     autoload :Dialog,          'tkextlib/bwidget/dialog' | ||||
|     autoload :DragSite,        'tkextlib/bwidget/dragsite' | ||||
|     autoload :DropSite,        'tkextlib/bwidget/dropsite' | ||||
|     autoload :DynamicHelp,     'tkextlib/bwidget/dynamichelp' | ||||
|     autoload :Entry,           'tkextlib/bwidget/entry' | ||||
|     autoload :Label,           'tkextlib/bwidget/label' | ||||
|     autoload :LabelEntry,      'tkextlib/bwidget/labelentry' | ||||
|     autoload :LabelFrame,      'tkextlib/bwidget/labelframe' | ||||
|     autoload :ListBox,         'tkextlib/bwidget/listbox' | ||||
|     autoload :MainFrame,       'tkextlib/bwidget/mainframe' | ||||
|     autoload :MessageDlg,      'tkextlib/bwidget/messagedlg' | ||||
|     autoload :NoteBook,        'tkextlib/bwidget/notebook' | ||||
|     autoload :PagesManager,    'tkextlib/bwidget/pagesmanager' | ||||
|     autoload :PanedWindow,     'tkextlib/bwidget/panedwindow' | ||||
|     autoload :PasswdDlg,       'tkextlib/bwidget/passwddlg' | ||||
|     autoload :ProgressBar,     'tkextlib/bwidget/progressbar' | ||||
|     autoload :ProgressDlg,     'tkextlib/bwidget/progressdlg' | ||||
|     autoload :ScrollableFrame, 'tkextlib/bwidget/scrollableframe' | ||||
|     autoload :ScrolledWindow,  'tkextlib/bwidget/scrolledwindow' | ||||
|     autoload :ScrollView,      'tkextlib/bwidget/scrollview' | ||||
|     autoload :SelectColor,     'tkextlib/bwidget/selectcolor' | ||||
|     autoload :SelectFont,      'tkextlib/bwidget/selectfont' | ||||
|     autoload :Separator,       'tkextlib/bwidget/separator' | ||||
|     autoload :SpinBox,         'tkextlib/bwidget/spinbox' | ||||
|     autoload :TitleFrame,      'tkextlib/bwidget/titleframe' | ||||
|     autoload :Tree,            'tkextlib/bwidget/tree' | ||||
|     autoload :Widget,          'tkextlib/bwidget/widget' | ||||
| 
 | ||||
|   end | ||||
| end | ||||
							
								
								
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/arrowbutton.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/arrowbutton.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| # | ||||
| #  tkextlib/bwidget/arrowbutton.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/button' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ArrowButton < Tk::BWidget::Button | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ArrowButton | ||||
|   TkCommandNames = ['ArrowButton'.freeze].freeze | ||||
|   WidgetClassName = 'ArrowButton'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| end | ||||
							
								
								
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/bitmap.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/bitmap.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| # | ||||
| #  tkextlib/bwidget/bitmap.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tk/image' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Bitmap < TkPhotoImage | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Bitmap | ||||
|   def initialize(name) | ||||
|     @path = tk_call_without_enc('Bitmap::get', name) | ||||
|     Tk_IMGTBL[@path] = self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/button.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								ext/tk/lib/tkextlib/bwidget/button.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| # | ||||
| #  tkextlib/bwidget/button.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/button' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Button < TkButton | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Button | ||||
|   TkCommandNames = ['Button'.freeze].freeze | ||||
|   WidgetClassName = 'Button'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| end | ||||
							
								
								
									
										73
									
								
								ext/tk/lib/tkextlib/bwidget/buttonbox.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								ext/tk/lib/tkextlib/bwidget/buttonbox.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | |||
| # | ||||
| #  tkextlib/bwidget/buttonbox.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/button' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ButtonBox < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ButtonBox | ||||
|   TkCommandNames = ['ButtonBox'.freeze].freeze | ||||
|   WidgetClassName = 'ButtonBox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   include TkItemConfigMethod | ||||
| 
 | ||||
|   def tagid(tagOrId) | ||||
|     if tagOrId.kind_of?(Tk::BWidget::Button) | ||||
|       name = tagOrId[:name] | ||||
|       return index(name) unless name.empty? | ||||
|     end | ||||
|     if tagOrId.kind_of?(TkButton) | ||||
|       return index(tagOrId[:text]) | ||||
|     end | ||||
|     # index(tagOrId.to_s) | ||||
|     index(_get_eval_string(tagOrId)) | ||||
|   end | ||||
| 
 | ||||
|   def add(keys={}, &b) | ||||
|     win = window(tk_send('add', *hash_kv(keys))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def delete(idx) | ||||
|     tk_send('delete', tagid(idx)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def index(idx) | ||||
|     if idx.kind_of?(Tk::BWidget::Button) | ||||
|       name = idx[:name] | ||||
|       idx = name unless name.empty? | ||||
|     end | ||||
|     if idx.kind_of?(TkButton) | ||||
|       idx = idx[:text] | ||||
|     end | ||||
|     number(tk_send('index', idx.to_s)) | ||||
|   end | ||||
| 
 | ||||
|   def insert(idx, keys={}, &b) | ||||
|     win = window(tk_send('insert', tagid(idx), *hash_kv(keys))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def invoke(idx) | ||||
|     tk_send('invoke', tagid(idx)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def set_focus(idx) | ||||
|     tk_send('setfocus', tagid(idx)) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/combobox.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/combobox.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| # | ||||
| #  tkextlib/bwidget/combobox.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/entry' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/listbox' | ||||
| require 'tkextlib/bwidget/spinbox' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ComboBox < Tk::BWidget::SpinBox | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ComboBox | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['ComboBox'.freeze].freeze | ||||
|   WidgetClassName = 'ComboBox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def get_listbox(&b) | ||||
|     win = window(tk_send_without_enc('getlistbox')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def icursor(idx) | ||||
|     tk_send_without_enc('icursor', idx) | ||||
|   end | ||||
| 
 | ||||
|   def post | ||||
|     tk_send_without_enc('post') | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def unpost | ||||
|     tk_send_without_enc('unpost') | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										147
									
								
								ext/tk/lib/tkextlib/bwidget/dialog.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								ext/tk/lib/tkextlib/bwidget/dialog.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,147 @@ | |||
| # | ||||
| #  tkextlib/bwidget/dialog.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/buttonbox' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Dialog < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Dialog | ||||
|   TkCommandNames = ['Dialog'.freeze].freeze | ||||
|   WidgetClassName = 'Dialog'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   include TkItemConfigMethod | ||||
| 
 | ||||
|   def initialize(parent=nil, keys=nil) | ||||
|     @relative = '' | ||||
|     if parent.kind_of?(Hash) | ||||
|       keys = _symbolkey2str(parent) | ||||
|       @relative = keys['parent'] if keys.key?('parent') | ||||
|       @relative = keys.delete('relative') if keys.key?('relative') | ||||
|       super(keys) | ||||
|     elsif keys | ||||
|       keys = _symbolkey2str(keys) | ||||
|       @relative = keys.delete('parent') if keys.key?('parent') | ||||
|       @relative = keys.delete('relative') if keys.key?('relative') | ||||
|       super(parent, keys) | ||||
|     else | ||||
|       super(parent) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     cmd = self.class::TkCommandNames[0] | ||||
|     if keys and keys != None | ||||
|       tk_call_without_enc(cmd, @path, '-parent', @relative,  | ||||
| 			  *hash_kv(keys, true)) | ||||
|     else | ||||
|       tk_call_without_enc(cmd, @path, '-parent', @relative) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def cget(slot) | ||||
|     if slot.to_s == 'relative' | ||||
|       super('parent') | ||||
|     else | ||||
|       super(slot) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def configure(slot, value=None) | ||||
|     if slot.kind_of?(Hash) | ||||
|       slot = _symbolkey2str(slot) | ||||
|       slot['parent'] = slot.delete('relative') if slot.key?('relative') | ||||
|       super(slot) | ||||
|     else | ||||
|       if slot.to_s == 'relative' | ||||
| 	super('parent', value) | ||||
|       else | ||||
| 	super(slot, value) | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def configinfo(slot=nil) | ||||
|     if slot | ||||
|       if slot.to_s == 'relative' | ||||
| 	super('parent') | ||||
|       else | ||||
| 	super(slot) | ||||
|       end | ||||
|     else | ||||
|       ret = super() | ||||
|       if TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
| 	ret << ['relative', 'parent'] | ||||
|       else | ||||
| 	ret['relative'] = 'parent' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tagid(tagOrId) | ||||
|     if tagOrId.kind_of?(Tk::BWidget::Button) | ||||
|       name = tagOrId[:name] | ||||
|       return index(name) unless name.empty? | ||||
|     end | ||||
|     if tagOrId.kind_of?(TkButton) | ||||
|       return index(tagOrId[:text]) | ||||
|     end | ||||
|     # index(tagOrId.to_s) | ||||
|     index(_get_eval_string(tagOrId)) | ||||
|   end | ||||
| 
 | ||||
|   def add(keys={}, &b) | ||||
|     win = window(tk_send('add', *hash_kv(keys))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_buttonbox(&b) | ||||
|     win = window(@path + '.bbox') | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def draw(focus_win=None) | ||||
|     tk_send('draw', focus_win) | ||||
|   end | ||||
| 
 | ||||
|   def enddialog(ret) | ||||
|     tk_send('enddialog', ret) | ||||
|   end | ||||
| 
 | ||||
|   def index(idx) | ||||
|     get_buttonbox.index(idx) | ||||
|   end | ||||
| 
 | ||||
|   def invoke(idx) | ||||
|     tk_send('invoke', tagid(idx)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def set_focus(idx) | ||||
|     tk_send('setfocus', tagid(idx)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def withdraw | ||||
|     tk_send('withdraw') | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										31
									
								
								ext/tk/lib/tkextlib/bwidget/dragsite.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								ext/tk/lib/tkextlib/bwidget/dragsite.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| # | ||||
| #  tkextlib/bwidget/dragsite.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     module DragSite | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| module Tk::BWidget::DragSite | ||||
|   include Tk | ||||
|   extend Tk | ||||
| 
 | ||||
|   def self.include(klass, type, event) | ||||
|     tk_call('DragSite::include', klass, type, event) | ||||
|   end | ||||
| 
 | ||||
|   def self.register(path, keys={}) | ||||
|     tk_call('DragSite::register', path, *hash_kv(keys)) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_drag(path, subpath, initcmd, endcmd, force=None) | ||||
|     tk_call('DragSite::setdrag', path, subpath, initcmd, endcmd, force) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										39
									
								
								ext/tk/lib/tkextlib/bwidget/dropsite.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								ext/tk/lib/tkextlib/bwidget/dropsite.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,39 @@ | |||
| # | ||||
| #  tkextlib/bwidget/dropsite.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     module DropSite | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| module Tk::BWidget::DropSite | ||||
|   include Tk | ||||
|   extend Tk | ||||
| 
 | ||||
|   def self.include(klass, type) | ||||
|     tk_call('DropSite::include', klass, type) | ||||
|   end | ||||
| 
 | ||||
|   def self.register(path, keys={}) | ||||
|     tk_call('DropSite::register', path, *hash_kv(keys)) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_cursor(cursor) | ||||
|     tk_call('DropSite::setcursor', cursor) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_drop(path, subpath, dropover, drop, force=None) | ||||
|     tk_call('DropSite::setdrop', path, subpath, dropover, drop, force) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_operation(op) | ||||
|     tk_call('DropSite::setoperation', op) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										51
									
								
								ext/tk/lib/tkextlib/bwidget/dynamichelp.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								ext/tk/lib/tkextlib/bwidget/dynamichelp.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| # | ||||
| #  tkextlib/bwidget/dynamichelp.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     module DynamicHelp | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| module Tk::BWidget::DynamicHelp | ||||
|   include Tk | ||||
|   extend Tk | ||||
| 
 | ||||
|   def self.__pathname | ||||
|     'DynamicHelp::configure' | ||||
|   end | ||||
| 
 | ||||
|   def self.__cget_cmd | ||||
|     ['DynamicHelp::configure'] | ||||
|   end | ||||
| 
 | ||||
|   def self.__config_cmd | ||||
|     ['DynamicHelp::configure'] | ||||
|   end | ||||
| 
 | ||||
|   def self.cget(slot) | ||||
|     self.current_configinfo(slot).values[0] | ||||
|   end | ||||
| 
 | ||||
|   def self.add(widget, keys={}) | ||||
|     tk_call('DynamicHelp::add', widget, *hash_kv(keys)) | ||||
|   end | ||||
| 
 | ||||
|   def self.delete(widget) | ||||
|     tk_call('DynamicHelp::delete', widget) | ||||
|   end | ||||
| 
 | ||||
|   def self.include(klass, type) | ||||
|     tk_call('DynamicHelp::include', klass, type) | ||||
|   end | ||||
| 
 | ||||
|   def self.sethelp(path, subpath, force=None) | ||||
|     tk_call('DynamicHelp::sethelp', path, subpath, force) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										28
									
								
								ext/tk/lib/tkextlib/bwidget/entry.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								ext/tk/lib/tkextlib/bwidget/entry.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| # | ||||
| #  tkextlib/bwidget/entry.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/entry' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Entry < TkEntry | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Entry | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['Entry'.freeze].freeze | ||||
|   WidgetClassName = 'Entry'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def invoke | ||||
|     tk_send_without_enc('invoke') | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										26
									
								
								ext/tk/lib/tkextlib/bwidget/label.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								ext/tk/lib/tkextlib/bwidget/label.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| # | ||||
| #  tkextlib/bwidget/label.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/label' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Label < TkLabel | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Label | ||||
|   TkCommandNames = ['Label'.freeze].freeze | ||||
|   WidgetClassName = 'Label'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def set_focus | ||||
|     tk_send_without_enc('setfocus') | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/labelentry.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/labelentry.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| # | ||||
| #  tkextlib/bwidget/labelentry.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/entry' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/labelframe' | ||||
| require 'tkextlib/bwidget/entry' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class LabelEntry < TkEntry | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::LabelEntry | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['LabelEntry'.freeze].freeze | ||||
|   WidgetClassName = 'LabelEntry'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def entrybind(*args) | ||||
|     _bind([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybind_append(*args) | ||||
|     _bind_append([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybind_remove(*args) | ||||
|     _bind_remove([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybindinfo(*args) | ||||
|     _bindinfo([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										30
									
								
								ext/tk/lib/tkextlib/bwidget/labelframe.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								ext/tk/lib/tkextlib/bwidget/labelframe.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| # | ||||
| #  tkextlib/bwidget/labelframe.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class LabelFrame < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::LabelFrame | ||||
|   TkCommandNames = ['LabelFrame'.freeze].freeze | ||||
|   WidgetClassName = 'LabelFrame'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def self.align(*args) | ||||
|     tk_call('LabelFrame::align', *args) | ||||
|   end | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send_without_enc('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| end | ||||
							
								
								
									
										290
									
								
								ext/tk/lib/tkextlib/bwidget/listbox.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										290
									
								
								ext/tk/lib/tkextlib/bwidget/listbox.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,290 @@ | |||
| # | ||||
| #  tkextlib/bwidget/listbox.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/canvas' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ListBox < TkWindow | ||||
|       # is NOT a subclass of a listbox widget class. | ||||
|       # because it constructed on a canvas widget.  | ||||
| 
 | ||||
|       class Item < TkObject | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ListBox | ||||
|   include TkItemConfigMethod | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['ListBox'.freeze].freeze | ||||
|   WidgetClassName = 'ListBox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   class Event_for_Items < TkEvent::Event | ||||
|     def self._get_extra_args_tbl | ||||
|       [  | ||||
| 	TkComm.method(:string)   # item idenfier | ||||
|       ] | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tagid(tag) | ||||
|     if tag.kind_of?(Tk::BWidget::ListBox::Item) | ||||
|       tag.id | ||||
|     else | ||||
|       # tag | ||||
|       _get_eval_string(tag) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def imagebind(*args) | ||||
|     _bind_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebind_append(*args) | ||||
|     _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebind_remove(*args) | ||||
|     _bind_remove_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebindinfo(*args) | ||||
|     _bindinfo_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|   end | ||||
| 
 | ||||
|   def textbind(*args) | ||||
|     _bind_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbind_append(*args) | ||||
|     _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbind_remove(*args) | ||||
|     _bind_remove_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbindinfo(*args) | ||||
|     _bindinfo_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|   end | ||||
| 
 | ||||
|   def delete(*args) | ||||
|     tk_send('delete', *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def edit(item, text, *args) | ||||
|     tk_send('edit', tagid(item), text, *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def exist?(item) | ||||
|     bool(tk_send('exists', tagid(item))) | ||||
|   end | ||||
| 
 | ||||
|   def index(item) | ||||
|     num_or_str(tk_send('index', tagid(item))) | ||||
|   end | ||||
| 
 | ||||
|   def insert(idx, item, keys={}) | ||||
|     tk_send('insert', idx, tagid(item), *hash_kv(keys)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_item(idx) | ||||
|     tk_send('items', idx) | ||||
|   end | ||||
| 
 | ||||
|   def items(first=None, last=None) | ||||
|     list(tk_send('items', first, last)) | ||||
|   end | ||||
| 
 | ||||
|   def move(item, idx) | ||||
|     tk_send('move', tagid(item), idx) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def reorder(neworder) | ||||
|     tk_send('reorder', neworder) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def see(item) | ||||
|     tk_send('see', tagid(item)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_clear | ||||
|     tk_send_without_enc('selection', 'clear') | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_set(*args) | ||||
|     tk_send_without_enc('selection', 'set',  | ||||
| 			*(args.collect{|item| tagid(item)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_add(*args) | ||||
|     tk_send_without_enc('selection', 'add',  | ||||
| 			*(args.collect{|item| tagid(item)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_remove(*args) | ||||
|     tk_send_without_enc('selection', 'remove',  | ||||
| 			*(args.collect{|item| tagid(item)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_get(*args) | ||||
|     simplelist(tk_send_without_enc('selection', 'get')).collect{|item| | ||||
|       Tk::BWidget::ListBox::Item.id2obj(self, item) | ||||
|     } | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ListBox::Item | ||||
|   include TkTreatTagFont | ||||
| 
 | ||||
|   ListItem_TBL = TkCore::INTERP.create_table | ||||
|   ListItem_ID = ['item:'.freeze, '00000'.taint].freeze | ||||
| 
 | ||||
|   TkCore::INTERP.init_ip_env{ ListItem_TBL.clear } | ||||
| 
 | ||||
|   def self.id2obj(lbox, id) | ||||
|     lpath = lbox.path | ||||
|     return id unless ListItem_TBL[lpath] | ||||
|     ListItem_TBL[lpath][id]? ListItem_TBL[lpath][id]: id | ||||
|   end | ||||
| 
 | ||||
|   def initialize(lbox, *args) | ||||
|     if lbox.kind_of?(Tk::BWidget::ListBox) | ||||
|       @listbox = lbox | ||||
|     else | ||||
|       fail RuntimeError,  | ||||
| 	"expect Tk::BWidget::ListBox or Tk::BWidget::ListBox::Item for 1st argument" | ||||
|     end | ||||
| 
 | ||||
|     if args[-1].kind_of?(Hash) | ||||
|       keys = _symbolkey2str(args.pop) | ||||
|     else | ||||
|       keys = {} | ||||
|     end | ||||
| 
 | ||||
|     index = keys.delete('index') | ||||
|     unless args.empty? | ||||
|       index = args.shift | ||||
|     end | ||||
|     index = 'end' unless index | ||||
| 
 | ||||
|     unless args.empty? | ||||
|       fail RuntimeError, 'too much arguments' | ||||
|     end | ||||
| 
 | ||||
|     @lpath = @listbox.path | ||||
| 
 | ||||
|     if keys.key?('itemname') | ||||
|       @path = @id = keys.delete('itemname') | ||||
|     else | ||||
|       @path = @id = ListItem_ID.join(TkCore::INTERP._ip_id_) | ||||
|       ListItem_ID[1].succ! | ||||
|     end | ||||
| 
 | ||||
|     ListItem_TBL[@id] = self | ||||
|     ListItem_TBL[@lpath] = {} unless ListItem_TBL[@lpath] | ||||
|     ListItem_TBL[@lpath][@id] = self | ||||
| 
 | ||||
|     @listbox.insert(index, @id, keys) | ||||
|   end | ||||
| 
 | ||||
|   def listbox | ||||
|     @listbox | ||||
|   end | ||||
| 
 | ||||
|   def id | ||||
|     @id | ||||
|   end | ||||
| 
 | ||||
|   def [](key) | ||||
|     cget(key) | ||||
|   end | ||||
| 
 | ||||
|   def []=(key, val) | ||||
|     configure(key, val) | ||||
|     val | ||||
|   end | ||||
| 
 | ||||
|   def cget(key) | ||||
|     @listbox.itemcget(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def configure(key, val=None) | ||||
|     @listbox.itemconfigure(@id, key, val) | ||||
|   end | ||||
| 
 | ||||
|   def configinfo(key=nil) | ||||
|     @listbox.itemconfiginfo(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def current_configinfo(key=nil) | ||||
|     @listbox.current_itemconfiginfo(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def delete | ||||
|     @listbox.delete(@id) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def edit(*args) | ||||
|     @listbox.edit(@id, *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def exist? | ||||
|     @listbox.exist?(@id) | ||||
|   end | ||||
| 
 | ||||
|   def index | ||||
|     @listbox.index(@id) | ||||
|   end | ||||
| 
 | ||||
|   def move(index) | ||||
|     @listbox.move(@id, index) | ||||
|   end | ||||
| 
 | ||||
|   def see | ||||
|     @listbox.see(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_add | ||||
|     @listbox.selection_add(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_remove | ||||
|     @listbox.selection_remove(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_set | ||||
|     @listbox.selection_set(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_toggle | ||||
|     @listbox.selection_toggle(@id) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
							
								
								
									
										73
									
								
								ext/tk/lib/tkextlib/bwidget/mainframe.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								ext/tk/lib/tkextlib/bwidget/mainframe.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,73 @@ | |||
| # | ||||
| #  tkextlib/bwidget/mainframe.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/progressbar' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class MainFrame < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::MainFrame | ||||
|   TkCommandNames = ['MainFrame'.freeze].freeze | ||||
|   WidgetClassName = 'MainFrame'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def add_indicator(keys={}, &b) | ||||
|     win = window(tk_send('addindicator', *hash_kv(keys))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def add_toolbar(&b) | ||||
|     win = window(tk_send('addtoolbar')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_indicator(idx, &b) | ||||
|     win = window(tk_send('getindicator', idx)) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_menu(menu_id, &b) | ||||
|     win = window(tk_send('getmenu', menu_id)) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_toolbar(idx, &b) | ||||
|     win = window(tk_send('gettoolbar', idx)) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def set_menustate(tag, state) | ||||
|     tk_send('setmenustate', tag, state) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def show_statusbar(name) | ||||
|     tk_send('showstatusbar', name) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def show_toolbar(idx, mode) | ||||
|     tk_send('showtoolbar', idx, mode) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										167
									
								
								ext/tk/lib/tkextlib/bwidget/messagedlg.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										167
									
								
								ext/tk/lib/tkextlib/bwidget/messagedlg.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,167 @@ | |||
| # | ||||
| #  tkextlib/bwidget/messagedlg.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class MessageDlg < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::MessageDlg | ||||
|   TkCommandNames = ['MessageDlg'.freeze].freeze | ||||
|   WidgetClassName = 'MessageDlg'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def initialize(parent=nil, keys=nil) | ||||
|     @relative = '' | ||||
|     if parent.kind_of?(Hash) | ||||
|       keys = _symbolkey2str(parent) | ||||
|       @relative = keys['parent'] if keys.key?('parent') | ||||
|       @relative = keys.delete('relative') if keys.key?('relative') | ||||
|       super(keys) | ||||
|     elsif keys | ||||
|       keys = _symbolkey2str(keys) | ||||
|       @relative = keys.delete('parent') if keys.key?('parent') | ||||
|       @relative = keys.delete('relative') if keys.key?('relative') | ||||
|       super(parent, keys) | ||||
|     else | ||||
|       super(parent) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     # NOT create widget. | ||||
|     # Because the widget no longer exist when returning from creation. | ||||
|     @keys = _symbolkey2str(keys).update('parent'=>@relative) | ||||
|     @info = nil | ||||
|   end | ||||
|   private :create_self | ||||
| 
 | ||||
|   def cget(slot) | ||||
|     slot = slot.to_s | ||||
|     if slot == 'relative' | ||||
|       slot = 'parent' | ||||
|     end | ||||
|     if winfo_exist? | ||||
|       val = super(slot) | ||||
|       @keys[slot] = val | ||||
|     end | ||||
|     @keys[slot] | ||||
|   end | ||||
| 
 | ||||
|   def configure(slot, value=None) | ||||
|     if winfo_exist? | ||||
|       super(slot, value) | ||||
|     end | ||||
|     if slot.kind_of?(Hash) | ||||
|       slot = _symbolkey2str(slot) | ||||
|       slot['parent'] = slot.delete('relative') if slot.key?('relative') | ||||
|       @keys.update(slot) | ||||
| 
 | ||||
|       if @info | ||||
| 	# update @info | ||||
| 	slot.each{|k, v| | ||||
| 	  if TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
| 	    if (inf = @info.assoc(k)) | ||||
| 	      inf[-1] = v | ||||
| 	    else | ||||
| 	      @info << [k, '', '', '', v] | ||||
| 	    end | ||||
| 	  else | ||||
| 	    if (inf = @info[k]) | ||||
| 	      inf[-1] = v | ||||
| 	    else | ||||
| 	      @info[k] = ['', '', '', v] | ||||
| 	    end | ||||
| 	  end | ||||
| 	} | ||||
|       end | ||||
| 
 | ||||
|     else # ! Hash | ||||
|       slot = slot.to_s | ||||
|       slot = 'parent' if slot == 'relative' | ||||
|       @keys[slot] = value | ||||
| 
 | ||||
|       if @info | ||||
| 	# update @info | ||||
| 	if TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
| 	  if (inf = @info.assoc(slot)) | ||||
| 	    inf[-1] = value | ||||
| 	  else | ||||
| 	    @info << [slot, '', '', '', value] | ||||
| 	  end | ||||
| 	else | ||||
| 	  if (inf = @info[slot]) | ||||
| 	    inf[-1] = value | ||||
| 	  else | ||||
| 	    @info[slot] = ['', '', '', value] | ||||
| 	  end | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def configinfo(slot=nil) | ||||
|     if winfo_exist? | ||||
|       @info = super() | ||||
|       if TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
| 	@info << ['relative', 'parent'] | ||||
|       else | ||||
| 	@info['relative'] = 'parent' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     if TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
|       if @info | ||||
| 	if winfo_exist? | ||||
| 	  # update @keys | ||||
| 	  @info.each{|inf| @keys[inf[0]] = inf[-1] if inf.size > 2 } | ||||
| 	end | ||||
|       else | ||||
| 	@info = [] | ||||
| 	@keys.each{|k, v| | ||||
| 	  @info << [k, '', '', '', v] | ||||
| 	} | ||||
| 	@info << ['relative', 'parent'] | ||||
|       end | ||||
| 
 | ||||
|       if slot | ||||
| 	@info.asoc(slot.to_s).dup | ||||
|       else | ||||
| 	@info.dup | ||||
|       end | ||||
| 
 | ||||
|     else # ! TkComm::GET_CONFIGINFO_AS_ARRAY | ||||
|       if @info | ||||
| 	if winfo_exist? | ||||
| 	  # update @keys | ||||
| 	  @info.each{|k, inf| @keys[k] = inf[-1] if inf.size > 2 } | ||||
| 	end | ||||
|       else | ||||
| 	@info = {} | ||||
| 	@keys.each{|k, v| | ||||
| 	  @info[k] = ['', '', '', v] | ||||
| 	} | ||||
| 	@info['relative'] = 'parent' | ||||
|       end | ||||
| 
 | ||||
|       if slot | ||||
| 	@info[slot.to_s].dup | ||||
|       else | ||||
| 	@info.dup | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     num_or_str(tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys))) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										116
									
								
								ext/tk/lib/tkextlib/bwidget/notebook.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										116
									
								
								ext/tk/lib/tkextlib/bwidget/notebook.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,116 @@ | |||
| # | ||||
| #  tkextlib/bwidget/notebook.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class NoteBook < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::NoteBook | ||||
|   include TkItemConfigMethod | ||||
| 
 | ||||
|   TkCommandNames = ['NoteBook'.freeze].freeze | ||||
|   WidgetClassName = 'NoteBook'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   class Event_for_Tabs < TkEvent::Event | ||||
|     def self._get_extra_args_tbl | ||||
|       [  | ||||
| 	TkComm.method(:string)   # page idenfier | ||||
|       ] | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tagid(id) | ||||
|     if id.kind_of?(TkWindow) | ||||
|       id.path | ||||
|     elsif id.kind_of?(TkObject) | ||||
|       id.to_eval | ||||
|     else | ||||
|       # id.to_s | ||||
|       _get_eval_string(id) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tabbind(*args) | ||||
|     _bind_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def tabbind_append(*args) | ||||
|     _bind_append_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def tabbind_remove(*args) | ||||
|     _bind_remove_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def tabbindinfo(*args) | ||||
|     _bindinfo_for_event_class(Event_for_Tabs, [path, 'bindtabs'], *args) | ||||
|   end | ||||
| 
 | ||||
|   def add(page, &b) | ||||
|     win = window(tk_send('add', tagid(page))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def compute_size | ||||
|     tk_send('compute_size') | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def delete(page, destroyframe=None) | ||||
|     tk_send('delete', tagid(page), destroyframe) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_frame(page, &b) | ||||
|     win = window(tk_send('getframe', tagid(page))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def index(page) | ||||
|     num_or_str(tk_send('index', tagid(page))) | ||||
|   end | ||||
| 
 | ||||
|   def insert(index, page, keys={}, &b) | ||||
|     win = window(tk_send('insert', index, tagid(page), *hash_kv(keys))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def move(page, index) | ||||
|     tk_send('move', tagid(page), index) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_page(page) | ||||
|     tk_send('pages', page) | ||||
|   end | ||||
| 
 | ||||
|   def pages(first=None, last=None) | ||||
|     list(tk_send('pages', first, last)) | ||||
|   end | ||||
| 
 | ||||
|   def raise(page=None) | ||||
|     tk_send('raise', page) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def see(page) | ||||
|     tk_send('see', page) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										61
									
								
								ext/tk/lib/tkextlib/bwidget/pagesmanager.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								ext/tk/lib/tkextlib/bwidget/pagesmanager.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,61 @@ | |||
| # | ||||
| #  tkextlib/bwidget/pagesmanager.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class PagesManager < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::PagesManager | ||||
|   TkCommandNames = ['PagesManager'.freeze].freeze | ||||
|   WidgetClassName = 'PagesManager'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def tagid(id) | ||||
|     # id.to_s | ||||
|     _get_eval_string(id) | ||||
|   end | ||||
| 
 | ||||
|   def add(page, &b) | ||||
|     win = window(tk_send('add', tagid(page))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def compute_size | ||||
|     tk_send('compute_size') | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def delete(page) | ||||
|     tk_send('delete', tagid(page)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_frame(page, &b) | ||||
|     win = window(tk_send('getframe', tagid(page))) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def get_page(page) | ||||
|     tk_send('pages', page) | ||||
|   end | ||||
| 
 | ||||
|   def pages(first=None, last=None) | ||||
|     list(tk_send('pages', first, last)) | ||||
|   end | ||||
| 
 | ||||
|   def raise(page=None) | ||||
|     tk_send('raise', page) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										31
									
								
								ext/tk/lib/tkextlib/bwidget/panedwindow.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								ext/tk/lib/tkextlib/bwidget/panedwindow.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| # | ||||
| #  tkextlib/bwidget/panedwindow.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class PanedWindow < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::PanedWindow | ||||
|   TkCommandNames = ['PanedWindow'.freeze].freeze | ||||
|   WidgetClassName = 'PanedWindow'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def add(keys={}) | ||||
|     window(tk_send('add', *hash_kv(keys))) | ||||
|   end | ||||
| 
 | ||||
|   def get_frame(idx, &b) | ||||
|     win = window(tk_send_without_enc('getframe', idx)) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| end | ||||
							
								
								
									
										27
									
								
								ext/tk/lib/tkextlib/bwidget/passwddlg.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ext/tk/lib/tkextlib/bwidget/passwddlg.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| # | ||||
| #  tkextlib/bwidget/passwddlg.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/messagedlg' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class PasswdDlg < Tk::BWidget::MessageDlg | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::PasswdDlg | ||||
|   TkCommandNames = ['PasswdDlg'.freeze].freeze | ||||
|   WidgetClassName = 'PasswdDlg'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def create | ||||
|     login, passwd = simplelist(tk_call(self.class::TkCommandNames[0],  | ||||
| 				       @path, *hash_kv(@keys))) | ||||
|     [login, passwd] | ||||
|   end | ||||
| end | ||||
							
								
								
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/progressbar.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/progressbar.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| # | ||||
| #  tkextlib/bwidget/progressbar.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ProgressBar < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ProgressBar | ||||
|   TkCommandNames = ['ProgressBar'.freeze].freeze | ||||
|   WidgetClassName = 'ProgressBar'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| end | ||||
							
								
								
									
										54
									
								
								ext/tk/lib/tkextlib/bwidget/progressdlg.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ext/tk/lib/tkextlib/bwidget/progressdlg.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | |||
| # | ||||
| #  tkextlib/bwidget/progressdlg.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/variable' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/progressbar' | ||||
| require 'tkextlib/bwidget/messagedlg' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ProgressDlg < Tk::BWidget::MessageDlg | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ProgressDlg | ||||
|   TkCommandNames = ['ProgressDlg'.freeze].freeze | ||||
|   WidgetClassName = 'ProgressDlg'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     # NOT create widget for reusing the object | ||||
|     super(keys) | ||||
|     @keys['textvariable'] = TkVariable.new unless @keys.key?('textvariable') | ||||
|     @keys['variable']     = TkVariable.new unless @keys.key?('variable') | ||||
|   end | ||||
| 
 | ||||
|   def textvariable | ||||
|     @keys['textvariable'] | ||||
|   end | ||||
| 
 | ||||
|   def text | ||||
|     @keys['textvariable'].value | ||||
|   end | ||||
| 
 | ||||
|   def text= (txt) | ||||
|     @keys['textvariable'].value = txt | ||||
|   end | ||||
| 
 | ||||
|   def variable | ||||
|     @keys['variable'] | ||||
|   end | ||||
| 
 | ||||
|   def value | ||||
|     @keys['variable'].value | ||||
|   end | ||||
| 
 | ||||
|   def value= (val) | ||||
|     @keys['variable'].value = val | ||||
|   end | ||||
| end | ||||
							
								
								
									
										34
									
								
								ext/tk/lib/tkextlib/bwidget/scrollableframe.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								ext/tk/lib/tkextlib/bwidget/scrollableframe.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,34 @@ | |||
| # | ||||
| #  tkextlib/bwidget/scrollableframe.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ScrollableFrame < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ScrollableFrame | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['ScrollableFrame'.freeze].freeze | ||||
|   WidgetClassName = 'ScrollableFrame'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send_without_enc('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def see(win, vert=None, horiz=None) | ||||
|     tk_send_without_enc('see', win, vert, horiz) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										32
									
								
								ext/tk/lib/tkextlib/bwidget/scrolledwindow.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								ext/tk/lib/tkextlib/bwidget/scrolledwindow.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,32 @@ | |||
| # | ||||
| #  tkextlib/bwidget/scrolledwindow.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ScrolledWindow < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ScrolledWindow | ||||
|   TkCommandNames = ['ScrolledWindow'.freeze].freeze | ||||
|   WidgetClassName = 'ScrolledWindow'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send_without_enc('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def set_widget(win) | ||||
|     tk_send_without_enc('setwidget', win) | ||||
|     self | ||||
|   end | ||||
| end | ||||
							
								
								
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/scrollview.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/scrollview.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| # | ||||
| #  tkextlib/bwidget/scrollview.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class ScrollView < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::ScrollView | ||||
|   TkCommandNames = ['ScrollView'.freeze].freeze | ||||
|   WidgetClassName = 'ScrollView'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| end | ||||
							
								
								
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/selectcolor.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ext/tk/lib/tkextlib/bwidget/selectcolor.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,45 @@ | |||
| # | ||||
| #  tkextlib/bwidget/selectcolor.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/messagedlg' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class SelectColor < Tk::BWidget::MessageDlg | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::SelectColor | ||||
|   extend Tk | ||||
| 
 | ||||
|   TkCommandNames = ['SelectColor'.freeze].freeze | ||||
|   WidgetClassName = 'SelectColor'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def dialog(keys={}) | ||||
|     newkeys = @keys.dup | ||||
|     newkeys.update(_symbolkey2str(keys)) | ||||
|     tk_call('SelectColor::dialog', @path, *hash_kv(newkeys)) | ||||
|   end | ||||
| 
 | ||||
|   def menu(*args) | ||||
|     if args[-1].kind_of?(Hash) | ||||
|       keys = args.pop | ||||
|     else | ||||
|       keys = {} | ||||
|     end | ||||
|     place = args.flatten | ||||
|     newkeys = @keys.dup | ||||
|     newkeys.update(_symbolkey2str(keys)) | ||||
|     tk_call('SelectColor::menu', @path, place, *hash_kv(newkeys)) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_color(idx, color) | ||||
|     tk_call('SelectColor::setcolor', idx, color) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										79
									
								
								ext/tk/lib/tkextlib/bwidget/selectfont.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								ext/tk/lib/tkextlib/bwidget/selectfont.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | |||
| # | ||||
| #  tkextlib/bwidget/selectfont.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/messagedlg' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class SelectFont < Tk::BWidget::MessageDlg | ||||
|       class Dialog < Tk::BWidget::SelectFont | ||||
|       end | ||||
|       class Toolbar < TkWindow | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::SelectFont | ||||
|   extend Tk | ||||
| 
 | ||||
|   TkCommandNames = ['SelectFont'.freeze].freeze | ||||
|   WidgetClassName = 'SelectFont'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def __font_optkeys | ||||
|     [] # without fontobj operation | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     tk_call(self.class::TkCommandNames[0], @path, *hash_kv(@keys)) | ||||
|   end | ||||
| 
 | ||||
|   def self.load_font | ||||
|     tk_call('SelectFont::loadfont') | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::SelectFont::Dialog | ||||
|   def __font_optkeys | ||||
|     [] # without fontobj operation | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     super(keys) | ||||
|     @keys['type'] = 'dialog' | ||||
|   end | ||||
| 
 | ||||
|   def configure(slot, value=None) | ||||
|     if slot.kind_of?(Hash) | ||||
|       slot.delete['type'] | ||||
|       slot.delete[:type] | ||||
|       return self if slot.empty? | ||||
|     else | ||||
|       return self if slot == 'type' || slot == :type | ||||
|     end | ||||
|     super(slot, value) | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|     @keys['type'] = 'dialog' | ||||
|     tk_call(Tk::BWidget::SelectFont::TkCommandNames[0], @path, *hash_kv(@keys)) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::SelectFont::Toolbar | ||||
|   def __font_optkeys | ||||
|     [] # without fontobj operation | ||||
|   end | ||||
| 
 | ||||
|   def create_self(keys) | ||||
|     keys = {} unless keys | ||||
|     keys = _symbolkey2str(keys) | ||||
|     keys['type'] = 'toolbar' | ||||
|     tk_call(Tk::BWidget::SelectFont::TkCommandNames[0], @path, *hash_kv(keys)) | ||||
|   end | ||||
| end | ||||
							
								
								
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/separator.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								ext/tk/lib/tkextlib/bwidget/separator.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | |||
| # | ||||
| #  tkextlib/bwidget/separator.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Separator < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Separator | ||||
|   TkCommandNames = ['Separator'.freeze].freeze | ||||
|   WidgetClassName = 'Separator'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| end | ||||
							
								
								
									
										8
									
								
								ext/tk/lib/tkextlib/bwidget/setup.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								ext/tk/lib/tkextlib/bwidget/setup.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| # | ||||
| #  setup.rb   --   setup script before calling TkPackage.require() | ||||
| # | ||||
| #    If you need some setup operations (for example, add a library path | ||||
| #    to the library search path) before using Tcl/Tk library packages  | ||||
| #    wrapped by Ruby scripts in this directory, please write the setup  | ||||
| #    operations in this file. | ||||
| # | ||||
							
								
								
									
										58
									
								
								ext/tk/lib/tkextlib/bwidget/spinbox.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								ext/tk/lib/tkextlib/bwidget/spinbox.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | |||
| # | ||||
| #  tkextlib/bwidget/entry.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| require 'tkextlib/bwidget/arrowbutton' | ||||
| require 'tkextlib/bwidget/entry' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class SpinBox < TkEntry | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::SpinBox | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['SpinBox'.freeze].freeze | ||||
|   WidgetClassName = 'SpinBox'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def entrybind(*args) | ||||
|     _bind([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybind_append(*args) | ||||
|     _bind_append([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybind_remove(*args) | ||||
|     _bind_remove([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def entrybindinfo(*args) | ||||
|     _bindinfo([path, 'bind'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_index_of_value | ||||
|     number(tk_send_without_enc('getvalue')) | ||||
|   end | ||||
|   alias get_value get_index_of_value | ||||
|   alias get_value_index get_index_of_value | ||||
| 
 | ||||
|   def set_value_by_index(idx) | ||||
|     idx = "@#{idx}" if idx.kind_of?(Integer) | ||||
|     tk_send_without_enc('setvalue', idx) | ||||
|     self | ||||
|   end | ||||
|   alias set_value set_value_by_index | ||||
|   alias set_index_value set_value_by_index | ||||
| end | ||||
							
								
								
									
										27
									
								
								ext/tk/lib/tkextlib/bwidget/titleframe.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								ext/tk/lib/tkextlib/bwidget/titleframe.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| # | ||||
| #  tkextlib/bwidget/titleframe.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/frame' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class TitleFrame < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::TitleFrame | ||||
|   TkCommandNames = ['TitleFrame'.freeze].freeze | ||||
|   WidgetClassName = 'TitleFrame'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   def get_frame(&b) | ||||
|     win = window(tk_send_without_enc('getframe')) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| end | ||||
							
								
								
									
										374
									
								
								ext/tk/lib/tkextlib/bwidget/tree.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										374
									
								
								ext/tk/lib/tkextlib/bwidget/tree.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,374 @@ | |||
| # | ||||
| #  tkextlib/bwidget/tree.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/canvas' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     class Tree < TkWindow | ||||
|       class Node < TkObject | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Tree | ||||
|   include TkItemConfigMethod | ||||
|   include Scrollable | ||||
| 
 | ||||
|   TkCommandNames = ['Tree'.freeze].freeze | ||||
|   WidgetClassName = 'Tree'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|   class Event_for_Items < TkEvent::Event | ||||
|     def self._get_extra_args_tbl | ||||
|       [  | ||||
| 	TkComm.method(:string)   # item idenfier | ||||
|       ] | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def tagid(tag) | ||||
|     if tag.kind_of?(Tk::BWidget::Tree::Node) | ||||
|       tag.id | ||||
|     else | ||||
|       # tag | ||||
|       _get_eval_string(tag) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def imagebind(*args) | ||||
|     _bind_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebind_append(*args) | ||||
|     _bind_append_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebind_remove(*args) | ||||
|     _bind_remove_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def imagebindinfo(*args) | ||||
|     _bindinfo_for_event_class(Event_for_Items, [path, 'bindImage'], *args) | ||||
|   end | ||||
| 
 | ||||
|   def textbind(*args) | ||||
|     _bind_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbind_append(*args) | ||||
|     _bind_append_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbind_remove(*args) | ||||
|     _bind_remove_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def textbindinfo(*args) | ||||
|     _bindinfo_for_event_class(Event_for_Items, [path, 'bindText'], *args) | ||||
|   end | ||||
| 
 | ||||
|   def close_tree(node, recurse=None) | ||||
|     tk_send('closetree', tagid(node), recurse) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def delete(*args) | ||||
|     tk_send('delete', *(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def edit(node, text, *args) | ||||
|     tk_send('edit', tagid(node), text, *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def exist?(node) | ||||
|     bool(tk_send('exists', tagid(node))) | ||||
|   end | ||||
| 
 | ||||
|   def index(node) | ||||
|     num_or_str(tk_send('index', tagid(node))) | ||||
|   end | ||||
| 
 | ||||
|   def insert(idx, parent, node, keys={}) | ||||
|     tk_send('insert', idx, tagid(parent), tagid(node), *hash_kv(keys)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def move(parent, node, idx) | ||||
|     tk_send('move', tagid(parent), tagid(node), idx) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def get_node(node, idx) | ||||
|     Tk::BWidget::Tree::Node.id2obj(self, tk_send('nodes', tagid(node), idx)) | ||||
|   end | ||||
| 
 | ||||
|   def nodes(node, first=None, last=None) | ||||
|     simplelist(tk_send('nodes', tagid(node), first, last)).collect{|node| | ||||
|       Tk::BWidget::Tree::Node.id2obj(self, node) | ||||
|     } | ||||
|   end | ||||
| 
 | ||||
|   def open?(node) | ||||
|     bool(@tree.itemcget(tagid(node), 'open')) | ||||
|   end | ||||
| 
 | ||||
|   def open_tree(node, recurse=None) | ||||
|     tk_send('opentree', tagid(node), recurse) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def parent(node) | ||||
|     Tk::BWidget::Tree::Node.id2obj(self, tk_send('parent', tagid(node))) | ||||
|   end | ||||
| 
 | ||||
|   def reorder(node, neworder) | ||||
|     tk_send('reorder', tagid(node), neworder) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def see(node) | ||||
|     tk_send('see', tagid(node)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_add(*args) | ||||
|     tk_send_without_enc('selection', 'add',  | ||||
| 			*(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_clear | ||||
|     tk_send_without_enc('selection', 'clear') | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_get | ||||
|     list(tk_send_without_enc('selection', 'get')) | ||||
|   end | ||||
| 
 | ||||
|   def selection_include?(*args) | ||||
|     bool(tk_send_without_enc('selection', 'get',  | ||||
| 			     *(args.collect{|node| tagid(node)}))) | ||||
|   end | ||||
| 
 | ||||
|   def selection_range(*args) | ||||
|     tk_send_without_enc('selection', 'range',  | ||||
| 			*(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_remove(*args) | ||||
|     tk_send_without_enc('selection', 'remove',  | ||||
| 			*(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_set(*args) | ||||
|     tk_send_without_enc('selection', 'set',  | ||||
| 			*(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def selection_toggle(*args) | ||||
|     tk_send_without_enc('selection', 'toggle',  | ||||
| 			*(args.collect{|node| tagid(node)})) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def toggle(node) | ||||
|     tk_send_without_enc('toggle', tagid(node)) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def visible(node) | ||||
|     bool(tk_send_without_enc('visible', tagid(node))) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::BWidget::Tree::Node | ||||
|   include TkTreatTagFont | ||||
| 
 | ||||
|   TreeNode_TBL = TkCore::INTERP.create_table | ||||
|   TreeNode_ID = ['node:'.freeze, '00000'.taint].freeze | ||||
| 
 | ||||
|   TkCore::INTERP.init_ip_env{ TreeNode_TBL.clear } | ||||
| 
 | ||||
|   def self.id2obj(tree, id) | ||||
|     tpath = tree.path | ||||
|     return id unless TreeNode_TBL[tpath] | ||||
|     TreeNode_TBL[tpath][id]? TreeNode_TBL[tpath][id]: id | ||||
|   end | ||||
| 
 | ||||
|   def initialize(tree, *args) | ||||
|     if tree.kind_of?(Tk::BWidget::Tree) | ||||
|       @tree = tree | ||||
|       parent = args.shift | ||||
|       if parent.kind_of?(Tk::BWidget::Tree::Node) | ||||
| 	if parent.tree.path != @tree.path | ||||
| 	  fail RuntimeError, 'tree of parent node is not match' | ||||
| 	end | ||||
|       end | ||||
|     elsif tree.kind_of?(Tk::BWidget::Tree::Node) | ||||
|       @tree = tree.tree | ||||
|       parent = tree.parent | ||||
|     else | ||||
|       fail RuntimeError,  | ||||
| 	"expect Tk::BWidget::Tree or Tk::BWidget::Tree::Node for 1st argument" | ||||
|     end | ||||
| 
 | ||||
|     if args[-1].kind_of?(Hash) | ||||
|       keys = _symbolkey2str(args.pop) | ||||
|     else | ||||
|       keys = {} | ||||
|     end | ||||
| 
 | ||||
|     index = keys.delete('index') | ||||
|     unless args.empty? | ||||
|       index = args.shift | ||||
|     end | ||||
|     index = 'end' unless index | ||||
| 
 | ||||
|     unless args.empty? | ||||
|       fail RuntimeError, 'too much arguments' | ||||
|     end | ||||
| 
 | ||||
|     @tpath = @tree.path | ||||
| 
 | ||||
|     if keys.key?('nodename') | ||||
|       @path = @id = keys.delete('nodename') | ||||
|     else | ||||
|       @path = @id = TreeNode_ID.join(TkCore::INTERP._ip_id_) | ||||
|       TreeNode_ID[1].succ! | ||||
|     end | ||||
| 
 | ||||
|     TreeNode_TBL[@id] = self | ||||
|     TreeNode_TBL[@tpath] = {} unless TreeNode_TBL[@tpath] | ||||
|     TreeNode_TBL[@tpath][@id] = self | ||||
| 
 | ||||
|     @tree.insert(index, parent, @id, keys) | ||||
|   end | ||||
| 
 | ||||
|   def tree | ||||
|     @tree | ||||
|   end | ||||
| 
 | ||||
|   def id | ||||
|     @id | ||||
|   end | ||||
| 
 | ||||
|   def [](key) | ||||
|     cget(key) | ||||
|   end | ||||
| 
 | ||||
|   def []=(key, val) | ||||
|     configure(key, val) | ||||
|     val | ||||
|   end | ||||
| 
 | ||||
|   def cget(key) | ||||
|     @tree.itemcget(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def configure(key, val=None) | ||||
|     @tree.itemconfigure(@id, key, val) | ||||
|   end | ||||
| 
 | ||||
|   def configinfo(key=nil) | ||||
|     @tree.itemconfiginfo(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def current_configinfo(key=nil) | ||||
|     @tree.current_itemconfiginfo(@id, key) | ||||
|   end | ||||
| 
 | ||||
|   def close_tree(recurse=None) | ||||
|     @tree.close_tree(@id, recurse) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def delete | ||||
|     @tree.delete(@id) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def edit(*args) | ||||
|     @tree.edit(@id, *args) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def exist? | ||||
|     @tree.exist?(@id) | ||||
|   end | ||||
| 
 | ||||
|   def index | ||||
|     @tree.index(@id) | ||||
|   end | ||||
| 
 | ||||
|   def move(index, parent=nil) | ||||
|     if parent | ||||
|       @tree.move(parent, @id, index) | ||||
|     else | ||||
|       @tree.move(self.parent, @id, index) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def open_tree(recurse=None) | ||||
|     @tree.open_tree(@id, recurse) | ||||
|     self | ||||
|   end | ||||
| 
 | ||||
|   def open? | ||||
|     bool(@tree.itemcget(@id, 'open')) | ||||
|   end | ||||
| 
 | ||||
|   def parent | ||||
|     @tree.parent(@id) | ||||
|   end | ||||
| 
 | ||||
|   def reorder(neworder) | ||||
|     @tree.reorder(@id, neworder) | ||||
|   end | ||||
| 
 | ||||
|   def see | ||||
|     @tree.see(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_add | ||||
|     @tree.selection_add(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_remove | ||||
|     @tree.selection_remove(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_set | ||||
|     @tree.selection_set(@id) | ||||
|   end | ||||
| 
 | ||||
|   def selection_toggle | ||||
|     @tree.selection_toggle(@id) | ||||
|   end | ||||
| 
 | ||||
|   def toggle | ||||
|     @tree.toggle(@id) | ||||
|   end | ||||
| 
 | ||||
|   def visible | ||||
|     @tree.visible(@id) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
							
								
								
									
										113
									
								
								ext/tk/lib/tkextlib/bwidget/widget.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								ext/tk/lib/tkextlib/bwidget/widget.rb
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,113 @@ | |||
| # | ||||
| #  tkextlib/bwidget/widget.rb | ||||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tkextlib/bwidget.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module BWidget | ||||
|     module Widget | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| module Tk::BWidget::Widget | ||||
|   include Tk | ||||
|   extend Tk | ||||
| 
 | ||||
|   def self.__pathname | ||||
|     'Widget::configure' | ||||
|   end | ||||
| 
 | ||||
|   def self.__cget_cmd | ||||
|     ['Widget::cget'] | ||||
|   end | ||||
| 
 | ||||
|   def self.__config_cmd | ||||
|     ['Widget::configure'] | ||||
|   end | ||||
| 
 | ||||
|   def self.cget(slot) | ||||
|     self.current_configinfo(slot).values[0] | ||||
|   end | ||||
| 
 | ||||
|   def self.add_map(klass, subclass, subpath, opts) | ||||
|     tk_call('Widget::addmap', klass, subclass, subpath, opts) | ||||
|   end | ||||
| 
 | ||||
|   def self.bwinclude(klass, subclass, subpath, *args) | ||||
|     tk_call('Widget::bwinclude', klass, subclass, subpath, *args) | ||||
|   end | ||||
| 
 | ||||
|   def self.create(klass, path, rename=None, &b) | ||||
|     win = window(tk_call('Widget::create', klass, path, rename)) | ||||
|     win.instance_eval(&b) if b | ||||
|     win | ||||
|   end | ||||
| 
 | ||||
|   def self.declare(klass, optlist) | ||||
|     tk_call('Widget::declare', klass, optlist) | ||||
|   end | ||||
| 
 | ||||
|   def self.define(klass, filename, *args) | ||||
|     tk_call('Widget::define', klass, filename, *args) | ||||
|   end | ||||
| 
 | ||||
|   def self.destroy(win) | ||||
|     tk_call('Widget::destroy', win) | ||||
|   end | ||||
| 
 | ||||
|   def self.focus_next(win) | ||||
|     tk_call('Widget::focusNext', win) | ||||
|   end | ||||
| 
 | ||||
|   def self.focus_ok(win) | ||||
|     tk_call('Widget::focusOk', win) | ||||
|   end | ||||
| 
 | ||||
|   def self.focus_prev(win) | ||||
|     tk_call('Widget::focusPrev', win) | ||||
|   end | ||||
| 
 | ||||
|   def self.generate_doc(dir, widgetlist) | ||||
|     tk_call('Widget::generate-doc', dir, widgetlist) | ||||
|   end | ||||
| 
 | ||||
|   def self.generate_widget_doc(klass, iscmd, file) | ||||
|     tk_call('Widget::generate-widget-doc', klass, iscmd, file) | ||||
|   end | ||||
| 
 | ||||
|   def self.get_option(win, option) | ||||
|     tk_call('Widget::getoption', win, option) | ||||
|   end | ||||
| 
 | ||||
|   def self.get_variable(win, varname, my_varname=None) | ||||
|     tk_call('Widget::getVariable', win, varname, my_varname) | ||||
|   end | ||||
| 
 | ||||
|   def self.has_changed(win, option, pvalue) | ||||
|     tk_call('Widget::hasChanged', win, option, pvalue) | ||||
|   end | ||||
| 
 | ||||
|   def self.init(klass, win, options) | ||||
|     tk_call('Widget::init', klass, win, options) | ||||
|   end | ||||
| 
 | ||||
|   def self.set_option(win, option, value) | ||||
|     tk_call('Widget::setoption', win, option, value) | ||||
|   end | ||||
| 
 | ||||
|   def self.sub_cget(win, subwidget) | ||||
|     tk_call('Widget::subcget', win, subwidget) | ||||
|   end | ||||
| 
 | ||||
|   def self.sync_options(klass, subclass, subpath, options) | ||||
|     tk_call('Widget::syncoptions', klass, subclass, subpath, options) | ||||
|   end | ||||
| 
 | ||||
|   def self.tkinclude(klass, tkwidget, subpath, *args) | ||||
|     tk_call('Widget::tkinclude', klass, tkwidget, subpath, *args) | ||||
|   end | ||||
| end | ||||
|  | @ -8,50 +8,36 @@ require 'tk' | |||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/tcllib/setup.rb' | ||||
| 
 | ||||
| # package:: autoscroll | ||||
| #require 'tkextlib/tcllib/autoscroll' | ||||
| require File.join(dir, 'autoscroll') | ||||
| require 'tkextlib/tcllib/autoscroll' | ||||
| 
 | ||||
| # package:: cursor | ||||
| #require 'tkextlib/tcllib/cursor' | ||||
| require File.join(dir, 'cursor') | ||||
| require 'tkextlib/tcllib/cursor' | ||||
| 
 | ||||
| # package:: style | ||||
| #require 'tkextlib/tcllib/style' | ||||
| require File.join(dir, 'style') | ||||
| require 'tkextlib/tcllib/style' | ||||
| 
 | ||||
| 
 | ||||
| # autoload | ||||
| module Tk | ||||
|   module Tcllib | ||||
|     dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
|     # package:: ctext | ||||
|     #autoload :CText,      'tkextlib/tcllib/ctext' | ||||
|     autoload :CText,      File.join(dir, 'ctext') | ||||
|     autoload :CText,      'tkextlib/tcllib/ctext' | ||||
| 
 | ||||
|     # package:: datefield | ||||
|     #autoload :Datefield,  'tkextlib/tcllib/datefield' | ||||
|     #autoload :DateField,  'tkextlib/tcllib/datefield' | ||||
|     autoload :Datefield,  File.join(dir, 'datefield') | ||||
|     autoload :DateField,  File.join(dir, 'datefield') | ||||
|     autoload :Datefield,  'tkextlib/tcllib/datefield' | ||||
|     autoload :DateField,  'tkextlib/tcllib/datefield' | ||||
| 
 | ||||
|     # package:: ipentry | ||||
|     #autoload :IP_Entry,   'tkextlib/tcllib/ip_entry' | ||||
|     autoload :IP_Entry,   File.join(dir, 'ip_entry') | ||||
|     autoload :IP_Entry,   'tkextlib/tcllib/ip_entry' | ||||
| 
 | ||||
|     # package:: Plotchart | ||||
|     #autoload :Plotchart,  'tkextlib/tcllib/plotchart' | ||||
|     autoload :Plotchart,  File.join(dir, 'plotchart') | ||||
|     autoload :Plotchart,  'tkextlib/tcllib/plotchart' | ||||
| 
 | ||||
|     # package:: tkpiechart | ||||
|     #autoload :Tkpiechart, 'tkextlib/tcllib/tkpiechart' | ||||
|     autoload :Tkpiechart, File.join(dir, 'tkpiechart') | ||||
|     autoload :Tkpiechart, 'tkextlib/tcllib/tkpiechart' | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -26,17 +26,24 @@ | |||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/scrollbar' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('autoscroll', '1.0') | ||||
| TkPackage.require('autoscroll') | ||||
| 
 | ||||
| module Tk | ||||
|   module Tcllib | ||||
|     module Autoscroll | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('autoscroll') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   module Scrollable | ||||
|     def autoscroll(mode = nil) | ||||
|       case mode | ||||
|  |  | |||
|  | @ -8,12 +8,7 @@ | |||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/text' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('ctext', '3.1') | ||||
| TkPackage.require('ctext') | ||||
|  | @ -21,6 +16,13 @@ TkPackage.require('ctext') | |||
| module Tk | ||||
|   module Tcllib | ||||
|     class CText < TkText | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('ctext') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -7,17 +7,24 @@ | |||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('cursor', '0.1') | ||||
| TkPackage.require('cursor') | ||||
| 
 | ||||
| module Tk | ||||
|   module Tcllib | ||||
|     module Cursor | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('ipentry') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def self.cursor_display(parent=None) | ||||
|     # Pops up a dialog with a listbox containing all the cursor names.  | ||||
|     # Selecting a cursor name will display it in that dialog.  | ||||
|  |  | |||
|  | @ -17,12 +17,7 @@ | |||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/entry' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('datefield', '0.1') | ||||
| TkPackage.require('datefield') | ||||
|  | @ -30,6 +25,13 @@ TkPackage.require('datefield') | |||
| module Tk | ||||
|   module Tcllib | ||||
|     class Datefield < TkEntry | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('datefield') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|     DateField = Datefield | ||||
|   end | ||||
|  |  | |||
|  | @ -11,13 +11,7 @@ | |||
| # It guarantees a valid address at all times. | ||||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/entry' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('ipentry', '0.1') | ||||
| TkPackage.require('ipentry') | ||||
|  | @ -25,6 +19,13 @@ TkPackage.require('ipentry') | |||
| module Tk | ||||
|   module Tcllib | ||||
|     class IP_Entry < TkEntry | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('ipentry') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -58,12 +58,7 @@ | |||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('Plotchart', '0.9') | ||||
| TkPackage.require('Plotchart') | ||||
|  | @ -71,6 +66,13 @@ TkPackage.require('Plotchart') | |||
| module Tk | ||||
|   module Tcllib | ||||
|     module Plotchart | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('Plotchart') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  | @ -122,7 +124,7 @@ module Tk::Tcllib::Plotchart | |||
| 
 | ||||
|   ############################ | ||||
|   module ChartMethod | ||||
|     include TkUtil | ||||
|     include TkCore | ||||
| 
 | ||||
|     def title(str) | ||||
|       tk_call_without_enc(@chart, 'title', _get_eval_enc_str(str)) | ||||
|  |  | |||
|  | @ -7,18 +7,21 @@ | |||
| # | ||||
| 
 | ||||
| require 'tk' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('style', '0.1') | ||||
| TkPackage.require('style') | ||||
| 
 | ||||
| module Tk | ||||
|   module Style | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('style') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     def self.names | ||||
|       tk_split_simplelist(tk_call('style::names')) | ||||
|     end | ||||
|  |  | |||
|  | @ -8,12 +8,7 @@ | |||
| 
 | ||||
| require 'tk' | ||||
| require 'tk/canvas' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tcllib.rb' | ||||
| 
 | ||||
| # TkPackage.require('tkpiechart', '6.6') | ||||
| TkPackage.require('tkpiechart') | ||||
|  | @ -26,6 +21,14 @@ module Tk | |||
| end | ||||
| 
 | ||||
| module Tk::Tcllib::Tkpiechart | ||||
|   def self.package_version | ||||
|     begin | ||||
|       TkPackage.require('tkpiechart') | ||||
|     rescue | ||||
|       '' | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   module ConfigMethod | ||||
|     include TkConfigMethod | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,10 +9,7 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/tile/setup.rb' | ||||
| 
 | ||||
| # load package | ||||
| # TkPackage.require('tile', '0.4') | ||||
|  | @ -21,6 +18,14 @@ TkPackage.require('tile') | |||
| # autoload | ||||
| module Tk | ||||
|   module Tile | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('tile') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     module TileWidget | ||||
|       def instate(state, script=nil, &b) | ||||
| 	if script | ||||
|  | @ -41,33 +46,22 @@ module Tk | |||
|       end | ||||
|     end | ||||
| 
 | ||||
|     ###################################### | ||||
| 
 | ||||
|     # library directory | ||||
|     dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
|     autoload :TButton,       'tkextlib/tile/tbutton' | ||||
| 
 | ||||
|     #autoload :TButton,       'tkextlib/tile/tbutton' | ||||
|     autoload :TButton,       File.join(dir, 'tbutton') | ||||
|     autoload :TCheckButton,  'tkextlib/tile/tcheckbutton' | ||||
|     autoload :TCheckbutton,  'tkextlib/tile/tcheckbutton' | ||||
| 
 | ||||
|     #autoload :TCheckButton,  'tkextlib/tile/tcheckbutton' | ||||
|     #autoload :TCheckbutton,  'tkextlib/tile/tcheckbutton' | ||||
|     autoload :TCheckButton,  File.join(dir, 'tcheckbutton') | ||||
|     autoload :TCheckbutton,  File.join(dir, 'tcheckbutton') | ||||
|     autoload :TLabel,        'tkextlib/tile/tlabel' | ||||
| 
 | ||||
|     #autoload :TLabel,        'tkextlib/tile/tlabel' | ||||
|     autoload :TLabel,        File.join(dir, 'tlabel') | ||||
|     autoload :TMenubutton,   'tkextlib/tile/tmenubutton' | ||||
| 
 | ||||
|     #autoload :TMenubutton,   'tkextlib/tile/tmenubutton' | ||||
|     autoload :TMenubutton,   File.join(dir, 'tmenubutton') | ||||
|     autoload :TNotebook,     'tkextlib/tile/tnotebook' | ||||
| 
 | ||||
|     #autoload :TNotebook,     'tkextlib/tile/tnotebook' | ||||
|     autoload :TNotebook,     File.join(dir, 'tnotebook') | ||||
|     autoload :TRadioButton,  'tkextlib/tile/tradiobutton' | ||||
|     autoload :TRadiobutton,  'tkextlib/tile/tradiobutton' | ||||
| 
 | ||||
|     #autoload :TRadioButton,  'tkextlib/tile/tradiobutton' | ||||
|     #autoload :TRadiobutton,  'tkextlib/tile/tradiobutton' | ||||
|     autoload :TRadioButton,  File.join(dir, 'tradiobutton') | ||||
|     autoload :TRadiobutton,  File.join(dir, 'tradiobutton') | ||||
| 
 | ||||
|     #autoload :Style,         'tkextlib/tile/style' | ||||
|     autoload :Style,         File.join(dir, 'style') | ||||
|     autoload :Style,         'tkextlib/tile/style' | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -3,12 +3,14 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     module Style | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| module Tk::Tile::Style | ||||
| end | ||||
|  |  | |||
|  | @ -3,12 +3,14 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TButton < TkButton | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TButton < TkButton | ||||
|   include Tk::Tile::TileWidget | ||||
|  |  | |||
|  | @ -3,12 +3,15 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TCheckButton < TkCheckButton | ||||
|     end | ||||
|     TCheckbutton = TCheckButton | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TCheckButton < TkCheckButton | ||||
|   include Tk::Tile::TileWidget | ||||
|  | @ -26,8 +29,3 @@ class Tk::Tile::TCheckButton < TkCheckButton | |||
|   end | ||||
|   private :create_self | ||||
| end | ||||
| module Tk | ||||
|   module Tile | ||||
|     TCheckbutton = TCheckButton | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -3,12 +3,14 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TLabel < TkLabel | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TLabel < TkLabel | ||||
|   include Tk::Tile::TileWidget | ||||
|  |  | |||
|  | @ -3,12 +3,14 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TMenubutton < TkMenubutton | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TMenubutton < TkMenubutton | ||||
|   include Tk::Tile::TileWidget | ||||
|  |  | |||
|  | @ -3,12 +3,14 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TNotebook < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TNotebook < TkWindow | ||||
|   ################################ | ||||
|  |  | |||
|  | @ -3,12 +3,15 @@ | |||
| #                               by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp) | ||||
| # | ||||
| require 'tk' | ||||
| require 'tkextlib/tile.rb' | ||||
| 
 | ||||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script  --  <libdir>/tkextlib/tile.rb | ||||
| require(File.dirname(File.expand_path(__FILE__)) + '.rb') | ||||
| module Tk | ||||
|   module Tile | ||||
|     class TRadioButton < TkRadioButton | ||||
|     end | ||||
|     TRadiobutton = TRadioButton | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::Tile::TRadioButton < TkRadioButton | ||||
|   include Tk::Tile::TileWidget | ||||
|  | @ -26,8 +29,3 @@ class Tk::Tile::TRadioButton < TkRadioButton | |||
|   end | ||||
|   private :create_self | ||||
| end | ||||
| module Tk | ||||
|   module Tile | ||||
|     TRadiobutton = TRadioButton | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -7,19 +7,12 @@ require 'tk' | |||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/tkDND/setup.rb' | ||||
| 
 | ||||
| module Tk | ||||
|   module TkDND | ||||
|     dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
|     #autoload :DND,   'tkextlib/tkDND/tkdnd' | ||||
|     #autoload :Shape, 'tkextlib/tkDND/shape' | ||||
|     autoload :DND,   File.join(dir, 'tkdnd') | ||||
|     autoload :Shape, File.join(dir, 'shape') | ||||
|     autoload :DND,   'tkextlib/tkDND/tkdnd' | ||||
|     autoload :Shape, 'tkextlib/tkDND/shape' | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkDND/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('shape', '0.3') | ||||
| TkPackage.require('shape') | ||||
|  | @ -17,9 +17,29 @@ TkPackage.require('shape') | |||
| module Tk | ||||
|   module TkDND | ||||
|     module Shape | ||||
| =begin | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('shape') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
| =end | ||||
|       def self.package_version | ||||
| 	Tk.tk_call('set', 'shape_version') | ||||
|       end | ||||
|       alias shape_version package_version | ||||
| 
 | ||||
|       def self.package_patchlevel | ||||
| 	Tk.tk_call('set', 'shape_patchlevel') | ||||
|       end | ||||
|       alias shape_patchlevel package_patchlevel | ||||
| 
 | ||||
|       def self.version | ||||
| 	tk_call('shape', 'version') | ||||
|       end | ||||
|       alias xshape_version version | ||||
| 
 | ||||
|       ############################ | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,12 +9,20 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkDND/setup.rb' | ||||
| 
 | ||||
| TkPackage.require('tkdnd') | ||||
| 
 | ||||
| module Tk | ||||
|   module TkDND | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('tkdnd') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     class DND_Subst < TkUtil::CallbackSubst | ||||
|       KEY_TBL = [ | ||||
| 	[ ?a, ?l, :actions ],  | ||||
|  | @ -49,6 +57,14 @@ module Tk | |||
|     end | ||||
| 
 | ||||
|     module DND | ||||
|       def self.version | ||||
| 	begin | ||||
| 	  TkPackage.require('tkdnd') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
| 
 | ||||
|       def dnd_bindtarget_info(type=nil, event=nil) | ||||
| 	if event | ||||
| 	  procedure(tk_call('dnd', 'bindtarget', @path, type, event)) | ||||
|  |  | |||
|  | @ -6,11 +6,8 @@ | |||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/tkHTML/setup.rb' | ||||
| 
 | ||||
| # load library | ||||
| require File.join(dir, 'htmlwidget') | ||||
| require 'tkextlib/tkHTML/htmlwidget' | ||||
|  |  | |||
|  | @ -9,21 +9,27 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkHTML/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('Tkhtml', '2.0') | ||||
| TkPackage.require('Tkhtml') | ||||
| 
 | ||||
| module Tk | ||||
|   class HTML_Widget < TkWindow | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('Tkhtml') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     class ClippingWindow < TkWindow | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class Tk::HTML_Widget::ClippingWindow | ||||
|   extend TkUtil | ||||
| 
 | ||||
|   WidgetClassName = 'HtmlClip'.freeze | ||||
|   WidgetClassNames[WidgetClassName] = self | ||||
| 
 | ||||
|  | @ -32,7 +38,7 @@ class Tk::HTML_Widget::ClippingWindow | |||
| 
 | ||||
|   def self.new(parent, keys={}) | ||||
|     if parent.kind_of?(Hash) | ||||
|       keys = _symbolkey2str(parent) | ||||
|       keys = TkComm._symbolkey2str(parent) | ||||
|       parent = keys.delete('parent') | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,16 +8,24 @@ require 'tk' | |||
| # call setup script for general 'tkextlib' libraries | ||||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # library directory | ||||
| dir = File.expand_path(__FILE__).sub(/#{File.extname(__FILE__)}$/, '') | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(dir, 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # load all image format handlers | ||||
| #TkPackage.require('Img', '1.3') | ||||
| TkPackage.require('Img') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     def self.package_version | ||||
|       begin | ||||
| 	TkPackage.require('Img') | ||||
|       rescue | ||||
| 	'' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| # autoload | ||||
| #autoload :TkPixmapImage, 'tkextlib/tkimg/pixmap' | ||||
| autoload :TkPixmapImage, File.join(dir, 'pixmap') | ||||
| autoload :TkPixmapImage, 'tkextlib/tkimg/pixmap' | ||||
|  |  | |||
|  | @ -8,7 +8,21 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| #TkPackage.require('img::bmp', '1.3') | ||||
| TkPackage.require('img::bmp') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module BMP | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::bmp') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -8,7 +8,21 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('img::gif', '1.3') | ||||
| TkPackage.require('img::gif') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module GIF | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::gif') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -8,7 +8,21 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('img::ico', '1.3') | ||||
| TkPackage.require('img::ico') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module ICO | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::ico') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -8,7 +8,21 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('img::jpeg', '1.3') | ||||
| TkPackage.require('img::jpeg') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module JPEG | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::jpeg') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -8,7 +8,21 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('img::pcx', '1.3') | ||||
| TkPackage.require('img::pcx') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module PCX | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::pcx') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -8,12 +8,30 @@ require 'tk' | |||
| require 'tkextlib/setup.rb' | ||||
| 
 | ||||
| # call setup script | ||||
| require File.join(File.dirname(File.expand_path(__FILE__)), 'setup.rb') | ||||
| require 'tkextlib/tkimg/setup.rb' | ||||
| 
 | ||||
| # TkPackage.require('img::pixmap', '1.3') | ||||
| TkPackage.require('img::pixmap') | ||||
| 
 | ||||
| module Tk | ||||
|   module Img | ||||
|     module PIXMAP | ||||
|       def self.package_version | ||||
| 	begin | ||||
| 	  TkPackage.require('img::pixmap') | ||||
| 	rescue | ||||
| 	  '' | ||||
| 	end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
| 
 | ||||
| class TkPixmapImage<TkImage | ||||
|   def self.version | ||||
|     Tk::Img::PIXMAP.version | ||||
|   end | ||||
| 
 | ||||
|   def initialize(*args) | ||||
|     @type = 'pixmap' | ||||
|     super | ||||
|  |  | |||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 nagai
						nagai