ruby-****@sourc*****
ruby-****@sourc*****
2008年 10月 19日 (日) 14:36:01 JST
------------------------- REMOTE_ADDR = 222.225.51.171 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?libglade2-tut-create-src ------------------------- @@ -31,12 +31,14 @@ bindtextdomain(domain, localedir, nil, "") end -親クラスのinitializeを呼び出した後(super)、親クラスのinitializeで実行済みのbindtextdomainを再度呼び出しています。これは"hwedit_glade.rb"を編集せずに、ローカライズ用データの出力時の文字コードを正しく指定するためです。上記のように文字コード名に空文字列を指定しておくと、プログラム実行時のロケールに合わせたものが自動で選択されます(MS Windowsではそのように動作しました)。文字コード無指定のbindtextdomainを実行しなかった場合、HweditGladeクラスでのbindtextdomain実行時に指定したUTF-8が有効なままになるので、たとえばMS Windowsのコンソールウィンドウにローカライズ用データ文字列を出力すると文字化けします。 +親クラスのinitializeを呼び出した後(super)、親クラスのinitializeで実行済みのbindtextdomainを再度呼び出しています。これは"hwedit_glade.rb"を編集せずに、ローカライズ用データの出力時の文字コードを正しく指定するためです。上記のように文字コード名に空文字列を指定しておくと、プログラム実行時のロケールに合わせたものが自動で選択されます(MS Windowsではそのように動作しました)。文字コード無指定のbindtextdomainを実行しなかった場合、HweditGladeクラスでのbindtextdomain実行時に指定したUTF-8が有効なままになるので、たとえばMS Windowsのコンソールウィンドウにローカライズ用データ文字列を出力すると文字化けします。ただしGUI上に表示するだけであれば、MS WindowsでもUTF-8のままで大丈夫なようなので、必要ないと思う場合はここでのbindtextdomain呼び出しは省略してしまってもいいでしょう。 def on_main_window_delete_event(widget, arg0) + puts "on_main_window_delete_event" # 必要なくなったら消す false end def on_main_window_destroy(widget) + puts "on_main_window_destroy" Gtk.main_quit end @@ -91,14 +93,19 @@ 以下、シグナルハンドラの実装例です。まずは簡単な所で、"Edit"メニューの"Cut(切り取り)"、"Copy(コピー)"、"Paste(貼り付け)"コマンドを実装してみます。 def on_paste1_activate(widget) + puts "on_paste1_activate" @editor.paste_clipboard end def on_copy1_activate(widget) + puts "on_copy1_activate" @editor.copy_clipboard end def on_cut1_activate(widget) + puts "on_cut1_activate" @editor.cut_clipboard end @@ -109,6 +114,12 @@ 次は、"Help"メニューの"About"コマンドを選択した時に、Gladeで作っておいたアバウトダイアログを表示する例です。 def on_about1_activate(widget) + puts "on_about1_activate" @aboutdlg.run do |response| case response when Gtk::Dialog::RESPONSE_DELETE_EVENT @@ -127,6 +133,13 @@ ただアバウトダイアログの場合、"response ID"の値によって処理を分ける必要はないので、以下のようなコードで済ませてしまうのが普通です。 def on_about1_activate(widget) + puts "on_about1_activate" @aboutdlg.run @aboutdlg.hide end @@ -143,6 +150,14 @@ まず文字コード変換処理に必要なKconvモジュールを読み込むコードを冒頭に追加します。プログラムからTextViewにテキストを入力する場合、文字コードがUTF-8になっている必要があります。 def on_open1_activate(widget) + puts "on_open1_activate" if****@filed***** == Gtk::Dialog::RESPONSE_OK @editor.buffer.text = "" # バッファをクリア File.open(@filedlg.filename).each do |line| # 1行ずつ処理