ruby-****@sourc*****
ruby-****@sourc*****
2008年 10月 16日 (木) 23:18:17 JST
------------------------- REMOTE_ADDR = 222.225.51.171 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?libglade2-tut-create-src ------------------------- @@ -82,10 +82,12 @@ bindtextdomain(domain, localedir, nil, "") @editor = @glade['textview1'] - @opendlg = @glade['filechooser'] + @filedlg = @glade['filechooser'] @aboutdlg = @glade['aboutdialog'] end +{{br}} + 以下、シグナルハンドラの実装例です。まずは簡単な所で、"Edit"メニューの"Cut(切り取り)"、"Copy(コピー)"、"Paste(貼り付け)"コマンドを実装してみます。 def on_paste1_activate(widget) @@ -102,6 +104,10 @@ 以上(笑)。Gtk::TextViewのおかげです。ちなみにTextViewウィジェットの右クリック(コンテキスト)メニュー内のコマンドは実装する必要すらありません。デフォルトで動作します。 +{{br}} + 次は、"Help"メニューの"About"コマンドを選択した時に、Gladeで作っておいたアバウトダイアログを表示する例です。 def on_about1_activate(widget) @@ -128,5 +132,34 @@ end Gtk::Dialog#runは、どのボタンを押してもダイアログが閉じる処理の場合には便利ですが、そうでない場合、他のウィジェットと同じ方法でシグナルハンドラを設定することもできます。詳しくは((<「Gtk2チュートリアル」の「ダイアログ」のページ|gtk2-tut-dialog>))を見て下さい。 + +{{br}} + +もう一つ、"File"メニューの"Open(開く)"コマンドを選択した時に、Gladeで作っておいたFileChooserDialogを使って、TextViewにテキストファイルを読み込む例です。 + + require 'hwedit_glade' + require 'kconv' # この行を追加 + +まずシグナルハンドラ内の文字コード変換処理に必要なKconvモジュールを読み込むコードを冒頭に追加します。プログラムからTextViewにテキストを入力する場合、文字コードがUTF-8になっている必要があります。 + + def on_open1_activate(widget) + if****@filed***** == Gtk::Dialog::RESPONSE_OK + filename =****@filed***** + @editor.buffer.text = "" # バッファをクリア + File.open(filename).each do |line| # 1行ずつ処理 + @editor.insert_at_cursor(Kconv.toutf8(line)) + # 文字コードを変換してカーソル位置(バッファ末尾)に挿入 + end + @editor.move_cursor(Gtk::MOVEMENT_BUFFER_ENDS, -1, false) # カーソルを先頭に移動 + @editor.cursor_visible = true # カーソルを表示 + end + @filedlg.hide + end + + (まだ未完成)