1# -*- coding: utf-8 -*-
2#
3# unicodeout.rb --
4#
5# This demonstration script shows how you can produce output (in label
6# widgets) using many different alphabets.
7#
8# based on Tcl/Tk8.4.4 widget demos
9
10if defined?($unicodeout_demo) && $unicodeout_demo
11  $unicodeout_demo.destroy
12  $unicodeout_demo = nil
13end
14
15$unicodeout_demo = TkToplevel.new {|w|
16  title("Unicode Label Demonstration")
17  iconname("unicodeout")
18  positionWindow(w)
19}
20
21base_frame = TkFrame.new($unicodeout_demo).pack(:fill=>:both, :expand=>true)
22
23TkLabel.new(base_frame,
24            :font=>$font, :wraplength=>'5.4i', :justify=>:left,
25            :text=><<EOL).pack(:side=>:top)
26������������Tk������������������������������������������������������������������������������������������\
27������������������������������������������������������������������������������������������������������\
28���������������������������������������������������������������������������������������������������������������\
29���������������������������������������������������������������������������������������������������������������\
30���������������������������������������������������������������������������\
31������������������������������������������������������������������\
32Unicodeout_SampleFrame������������@@font���������������������������\
33(���������������������������������������������)\
34������������������������������������������������������������������������
35������������������������������������������������������������\\uXXXX���������\
36Tcl������������������������������������UNICODE������������������������������������\
37���������������Tk::UTF8_String���������������������������\
38���UTF8���������������������������������������\
39���������������������������������������������������������\
40(Tcl���������������������������������������)���������������\
41������������������������������������������������������������������������������
42EOL
43#'
44
45TkFrame.new(base_frame){|f|
46  pack(:side=>:bottom, :fill=>:x, :pady=>'2m')
47
48  TkButton.new(f, :text=>'閉じる', :width=>15, :command=>proc{
49                 $unicodeout_demo.destroy
50                 $unicodeout_demo = nil
51               }).pack(:side=>:left, :expand=>true)
52
53  TkButton.new(f, :text=>'コード参照', :width=>15, :command=>proc{
54                 showCode 'unicodeout'
55               }).pack(:side=>:left, :expand=>true)
56}
57
58wait_msg = TkLabel.new(base_frame,
59                       :text=>"フォント読み込みの完了まで" +
60                              "しばらくお待ち下さい...",
61                       :font=>"Helvetica 12 italic").pack
62
63class Unicodeout_SampleFrame < TkFrame
64  @@font = $font
65  # @@font = 'Helvetica 14'
66  # @@font = 'Courier 12'
67  # @@font = 'clearlyu 16'
68  # @@font = 'fixed 12'
69  # @@font = 'Times 12'
70  # @@font = 'Newspaper 12'
71  # @@font = '{New century schoolbook} 12'
72
73  def initialize(base)
74    super(base)
75    grid_columnconfig(1, :weight=>1)
76  end
77
78  def add_sample(lang, *args)
79    sample_txt = Tk::UTF8_String(args.join(''))
80    l = TkLabel.new(self, :font=>@@font, :text=>lang+':',
81                    :anchor=>:nw, :pady=>0)
82    #s = TkLabel.new(self, :font=>@@font, :text=>sample_txt,
83    s = TkLabel.new(self, :font=>TkFont.new(@@font), :text=>sample_txt,
84                    :anchor=>:nw, :width=>30, :pady=>0)
85    Tk.grid(l, s, :sticky=>:ew, :pady=>0)
86    l.grid_config(:padx, '1m')
87  end
88end
89f = Unicodeout_SampleFrame.new(base_frame)
90f.pack(:expand=>true, :fill=>:both, :padx=>'2m', :pady=>'1m')
91
92# Processing when some characters are missing might take a while, so make
93# sure we're displaying something in the meantime...
94
95oldCursor = $unicodeout_demo.cursor
96$unicodeout_demo.cursor('watch')
97Tk.update
98
99f.add_sample('Arabic',
100             '\uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D\uFE94',
101             '\uFEE4\uFEE0\uFEDC\uFEDF\uFE8D')
102f.add_sample('Trad. Chinese', '\u4E2D\u570B\u7684\u6F22\u5B57')
103f.add_sample('Simpl. Chinese', '\u6C49\u8BED')
104f.add_sample('Greek',
105             '\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE ',
106             '\u03B3\u03BB\u03CE\u03C3\u03C3\u03B1')
107f.add_sample('Hebrew',
108             '\u05DD\u05D9\u05DC\u05E9\u05D5\u05E8\u05D9 ',
109             '\u05DC\u05D9\u05D0\u05E8\u05E9\u05D9')
110f.add_sample('Japanese',
111             '\u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A, ',
112             '\u6F22\u5B57\u3068\u30AB\u30BF\u30AB\u30CA')
113f.add_sample('Korean', '\uB300\uD55C\uBBFC\uAD6D\uC758 \uD55C\uAE00')
114f.add_sample('Russian',
115             '\u0420\u0443\u0441\u0441\u043A\u0438\u0439 ',
116             '\u044F\u0437\u044B\u043A')
117
118wait_msg.destroy
119$unicodeout_demo.cursor(oldCursor)
120