diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:54 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-01 16:09:54 +0000 |
commit | 4c4631c2daaf7b2418c1f0e39292c8ee27a64813 (patch) | |
tree | dfeb96c4772df8caba4e01e749c8f3e1262f8fe0 /ext/tk/sample/tkmsgcat-load_rb.rb | |
parent | ce23680755e4e9ab0eed9dc6adb091ef7f1c58cb (diff) | |
download | ruby-4c4631c2daaf7b2418c1f0e39292c8ee27a64813.tar.gz |
* renewal Ruby/Tk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/sample/tkmsgcat-load_rb.rb')
-rw-r--r-- | ext/tk/sample/tkmsgcat-load_rb.rb | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/ext/tk/sample/tkmsgcat-load_rb.rb b/ext/tk/sample/tkmsgcat-load_rb.rb new file mode 100644 index 0000000000..6a3289e061 --- /dev/null +++ b/ext/tk/sample/tkmsgcat-load_rb.rb @@ -0,0 +1,102 @@ +#!/usr/bin/env ruby + +require 'tk' + +demo_dir = File.dirname($0) +msgcat_dir = [demo_dir, 'msgs_rb'].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 |