この章では、GtkMenuBarやGtkToolbarといったコマンド系ウィジェットを取り上げます。
これらの作成方法には、スクリプトのみで作成するものと、XML風フォーマットで書かれた構造定義を読み込んで作成するものの2つがありますが、ここでは、後者の方法について説明します。
この方法では、GtkAction、GtkActionGroup、GtkUIManager、の3つのオブジェクトを使う必要があります。
GtkActionは、プログラムのインターフェース上でメニュー項目やツールバー項目として表示される、ユーザが利用できるコマンドや機能を表します。場合によって、派生オブジェクトのGtkRadioActionやGtkToggleActionを使う必要があります。
GtkActionGroupは、生成したGtkActionのインスタンスを分類するためのフォルダのようなものです。ただ、分類する必要がなくても、必ず1つはインスタンスを作って、そこに生成したGtkActionを登録する必要があります。
GtkUIManagerは、構造定義文字列と、GtkActionを登録済みのGtkActionGroupを元に、各ウィジェットを生成してくれます。
これらのオブジェクトを使って、コマンド系ウィジェットをウィンドウに組み込むまでの流れは、以下のようになります。
UIManager、ActionGroup、および必要な数のActionを生成
生成したAction群をActionGroupに登録
UIManagerに、ActionGroupとUI構造を定義した文字列を渡して、ウィジェットを生成
UIManagerがAction群から集めたキーボードショートカット情報をウィンドウに登録
UIManagerからウィジェットを受け取って、他のウィジェットと同様に、ウィンドウ(上のレイアウトコンテナ)に組み込む
次のページから、サンプルプログラムのスクリプトとその説明になります。
プログラム全体としては長めですが、各種プリプロセッサ命令、似た作業の繰り返し、シグナルハンドラがかなりの割合を占めているので、構成としては、今までのサンプルとあまり変わりません。