From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb | 102 ++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb (limited to 'jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb') diff --git a/jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb b/jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb new file mode 100644 index 0000000..05512a3 --- /dev/null +++ b/jni/ruby/ext/tk/sample/tkmsgcat-load_rb2.rb @@ -0,0 +1,102 @@ +#!/usr/bin/env ruby + +require 'tk' + +demo_dir = File.dirname($0) +msgcat_dir = [demo_dir, 'msgs_rb2'].join(File::Separator) +top_win = nil +#msgcat = TkMsgCatalog.new('::tk') +msgcat = TkMsgCatalog.new('::tkmsgcat_demo') +default_locale = msgcat.locale +#msgcat.load_rb(msgcat_dir) +msgcat.load(msgcat_dir) + +col_proc = TkComm.install_bind(proc{|w, color, frame, label| + TkComm.window(frame).background(color) + Tk.update + TkComm.window(label).text( + msgcat["%1$s:: %2$s", 'Color', + color.capitalize]) + w.flash; w.flash + Tk.callback_break; + }, "%W") + +del_proc = TkComm.install_cmd(proc{top_win.destroy; top_win = nil}) + +err_proc = TkComm.install_cmd(proc{fail(RuntimeError, + msgcat['Application Error'])}) + +show_sample = proc{|loc| + top_win = TkToplevel.new(:title=>loc) + + msgcat.locale = loc + #msgcat.load_rb(msgcat_dir) + msgcat.load(msgcat_dir) + + TkLabel.new(top_win){ + text "preferences:: #{msgcat.preferences.join(' ')}" + pack(:pady=>10, :padx=>10) + } + + lbl = TkLabel.new(top_win, :text=>msgcat["%1$s:: %2$s", + 'Color', '']).pack(:anchor=>'w') + + bg = TkFrame.new(top_win).pack(:ipadx=>20, :ipady=>10, + :expand=>true, :fill=>:both) + + TkFrame.new(bg){|f| + ['blue', 'green', 'red'].each{|col| + TkButton.new(f, :text=>msgcat[col]){ + bind('ButtonRelease-1', col_proc, "#{col} #{bg.path} #{lbl.path}") + }.pack(:fill=>:x) + } + }.pack(:anchor=>'center', :pady=>15) + + TkFrame.new(top_win){|f| + TkButton.new(f, :text=>msgcat['Delete'], + :command=>del_proc).pack(:side=>:right, :padx=>5) + TkButton.new(f, :text=>msgcat['Error'], + :command=>err_proc).pack(:side=>:left, :padx=>5) + }.pack(:side=>:bottom, :fill=>:x) + + top_win +} + + +# listbox for locale list +TkLabel.new(:text=>"Please click a locale.").pack(:padx=>5, :pady=>3) + +TkFrame.new{|f| + TkButton.new(f, :text=>msgcat['Exit'], + :command=>proc{exit}).pack(:side=>:right, :padx=>5) +}.pack(:side=>:bottom, :fill=>:x) + +f = TkFrame.new.pack(:side=>:top, :fill=>:both, :expand=>true) +lbox = TkListbox.new(f).pack(:side=>:left, :fill=>:both, :expand=>true) +lbox.yscrollbar(TkScrollbar.new(f, :width=>12).pack(:side=>:right, :fill=>:y)) + +lbox.bind('ButtonRelease-1'){|ev| + idx = lbox.index("@#{ev.x},#{ev.y}") + if idx == 0 + loc = default_locale + else + loc = lbox.get(idx) + end + if top_win != nil && top_win.exist? + top_win.destroy + end + top_win = show_sample.call(loc) +} + +lbox.insert('end', 'default') + +Dir.entries(msgcat_dir).sort.each{|f| + if f =~ /^(.*).msg$/ + lbox.insert('end', $1) + end +} + +top_win = show_sample.call(default_locale) + +# start eventloop +Tk.mainloop -- cgit v1.2.3