新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  ログイン

libglade2-tut-mainwindow

プライマリ(メイン)ウィンドウを作る

glade-2を起動し、まずは、プライマリウインドウを生成します。

ウィジェットパレットウインドウでウインドウアイコンをクリックし新規ウインドウを生成します。

1.png

生成したウインドウのプロパティを設定します。

Widgetタブ

ひとつひとつ説明していくのが大変なので変更したところだけ(←手抜き)。

2.png

Name
そのウィジェットの名前(ID)です。Rubyから呼び出す際にも使います。ここでは"main_window"にします。IDですからアプリケーションでユニークな値になっている必要があります。
Title
ウインドウのタイトルバーに表示される文字列です。"Hello World Editor"にします。もちろん日本語でも大丈夫ですが、目指すは国際化されたエディタです!英語にしましょう! そうそう、ここは後で編集中のファイル名を表示できるようにしたいですね。後ほど説明します。
Default Width, Default Height
最初に表示したときの画面サイズです。

Signalsタブ

ss_signals.png

ウインドウの右上にある×ボタン(「閉じる」ボタン)がクリックされたらアプリケーションを終了させることにします。 ×ボタンがクリックされると、main_windowは"delete_event" Signalを発生させるのでそれを捕捉してHandler(Rubyではメソッド)を呼び出します。Signal:欄で"delete_event"を選択すると、Handlerは自動的に"on_main_window_delete_event"という名前になります。名前を変更しても良いですが、ここではそのまま使います。Addボタンを押してリストにSignalとHandlerを追加します。

この"delete_event"はウィンドウマネージャからウィンドウを閉じようとした時に発生するSignalで、X Window Systemのイベントメカニズム由来のため、Handlerの最後で、Signalに対する処理を行ったかどうかを真偽値で返す必要があります。falseを返すとSignalを処理していないとみなされ、つづいて自動的に"destroy" Signalが発生します。trueを返すと処理が終わったとみなされ、それ以上何も起こりません(ウィンドウは閉じられません)。*1

Gladeで"delete_event" Signalを登録せずHandlerを書かなかった場合は、必ず"destroy" Signalが発生します。

さらに"destroy" SignalのHandlerを作成するためにSignal:欄でdestroyを選択し直してこれもリストに追加します。このHandler(on_main_window_destroy)内には本当にウィンドウを閉じる(破棄する)場合に行う処理を書くことになります。*2


#後で、"on_main_window_delete_event"と"on_main_window_destroy"というメソッドをRubyで記述し、実際の終了コードを書きます。


*1ちょうどこの仕組みを利用して、文書が未保存のままウィンドウが閉じられようとした時に、保存するか否かまたはウィンドウを閉じること事態をキャンセルするか、の意思確認をする機能を作ることができます。具体的には、"delete_event"のHandler内で意思確認のためのダイアログを表示して、その入力結果によってHandlerから返す値を変更するなどの方法があります。
*2Handler内では必ず"Gtk.main_quit"を呼び出すようにします。このモジュールメソッドは、アプリケーションがSignalを処理するためのメインループから脱け出す機能を持つので、これを呼び忘れると、ウィンドウが消えるにもかかわらずループが継続されてしまい、外部から強制的にプログラムを終了するしかない状態になってしまいます。

更新日時:2008/10/22 18:33:16
キーワード:
参照:[libglade2-tut-create-src] [libglade2-tut] [libglade2-tut-textedit]