diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb |
Fresh start
Diffstat (limited to 'jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb')
-rw-r--r-- | jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb b/jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb new file mode 100644 index 0000000..e697ccf --- /dev/null +++ b/jni/ruby/ext/tk/sample/tkextlib/tktable/command.rb @@ -0,0 +1,89 @@ +#!/usr/bin/env ruby +## +## command.rb +## +## This demo shows the use of the table widget's -command options +## +## ( based on 'command.tcl' included source archive of tktable extension ) +## +require 'tk' +require 'tkextlib/tktable' + +# create the table +data = TkVariable.new_hash +rows = 10 +cols = 10 + +# fill table variable +((-(rows))..rows).each{|x| + ((-(cols))..cols).each{|y| + data[x,y] = "#{x} x #{y}" + } +} + +lbl = TkLabel.new(:text=>"TkTable :command Example") +cur_var = TkVariable.new +current = TkLabel.new(:textvariable=>cur_var, :width=>5) +ent_var = TkVariable.new +entry = TkEntry.new(:textvariable=>ent_var) + +table = Tk::TkTable.new(:rows=>rows, :cols=>cols, + :command=>[proc{|mode, cell, val| + if (mode == :w) + data[cell] = val + else + begin + data[cell] # exist + rescue + '' # not exist + end + end + }, '%i %C %s'], + :width=>6, :height=>6, + :titlerows=>1, :titlecols=>1, + :roworigin=>-1, :colorigin=>-1, + :rowstretchmode=>:last, :colstretchmode=>:last, + :rowtagcommand=>proc{|row| + row = Integer(row) + (row>0 && row%2 == 1)? 'OddRow': '' + }, + :coltagcommand=>proc{|col| + col = Integer(col) + (col>0 && col%2 == 1)? 'OddCol': '' + }, + :selectmode=>:extended, :flashmode=>true, + :rowstretch=>:unset, :colstretch=>:unset, + :browsecommand=>[proc{|w, s| + cur_var.value = s + ent_var.value = w.get(s) + }, '%W %S'], + :validate=>true, + :validatecommand=>proc{|e| + ent_var.value = e.new_value; true + }) +=begin + :validatecommand=>[ + proc{|s| + ent_var.value = s; true + }, '%S']) +=end + +sx = table.xscrollbar(TkScrollbar.new) +sy = table.yscrollbar(TkScrollbar.new) + +entry.bind('Return', proc{|w| table.curvalue = w.value}, '%W') + +Tk.grid(lbl, '-', '-', :sticky=>:ew) +Tk.grid(current, entry, '-', :sticky=>:ew) +Tk.grid(table, '-', sy, :sticky=>:news) +Tk.grid(sx, '-', :sticky=>:ew) + +Tk.root.grid_columnconfig(1, :weight=>1) +Tk.root.grid_rowconfig(2, :weight=>1) + +table.tag_configure('OddRow', :bg=>'orange', :fg=>'purple') +table.tag_configure('OddCol', :bg=>'brown', :fg=>'pink') + +puts "Table is #{table.path}" + +Tk.mainloop |