ソフトウェア設計及び演習用の班Wiki
第3回10/17(THU)
GTK続き
メニューバーの追加
- GtkUIManagerを用いる。
- 手順としては、
-
1:メニューの構成の作成
- メニューの構成はXML形式で記述する。
- 2:メニューアイテムの詳細設定
- 3:構成と、アイテム情報の登録
- 4:メニューバーの登録
-
1:メニューの構成の作成
- ショートカットキーの追加もできる。
1:メニューの構成の作成
- <ui></ui>タグ中に記述。
- メニューバーの作成は<menubar></menubar>タグ内に記述。
- 細かい構成は<menu></menu>タグや<menuitem></menuitem>タグを用いる。
2:メニューアイテムの詳細設定
- 配列static GtkActionEntry entries[] を用いる。
- 以下の6つを設定する。
- A.メニューもしくはメニューアイテムのID
- B.メニューアイコン
- Gtk+に前もって用意されているアイコンはGTK_STOCK_OPENやGTK_STOCK_QUITなどで表す。
- B.メニューラベル
- ラベルの前に「_(アンダーバー)」を入力するとメニューバー内で境界線を入れられる。
- D.ショートカットキー
-
ここではキーの割り当てのみ。
あとで関連付けをしないと、ショートカットキーを押しても正しく動作しない。
-
ここではキーの割り当てのみ。
- E.メニューアイテムの説明
- F.コールバック関数
- 教科書P207あたりに他の一覧あり。
3:構成と、アイテム情報の登録
- GtkUIManagerに1,2の情報を登録する
- UIマネージャーの作成は以下の通り。
GtkUIManager *ui; ui = gtk_ui_manager_new ();
-
次にアクショングループを作成して、メニューアイテムの詳細情報を登録する。
- void gtk_action_group_add_actions(グループ, アイテムの定義情報, アイテム数, 渡すデータ);
-
さらにアクショングループからUIマネージャーに登録。
- void gtk_ui_manager_insert_action_group(UIマネージャー, 登録グループ, 登録位置);
-
文字列からメニュー構成要素を登録する。
-
guint gtk_ui_manager_add_ui_from_string(UIマネージャー, 構成文字列, 文字列の長さ,
エラー情報を格納するポインタ);
戻り値は登録したUIのIDになる。
-
guint gtk_ui_manager_add_ui_from_string(UIマネージャー, 構成文字列, 文字列の長さ,
-
ショートカットキーを関連付けする。
- void gtk_window_add_accel_group(ウインドウウィジェット, ショートカットキー情報) ;
4:メニューバーの取得
-
メニューバーウィジェットを取得する。
-
GtkWidget* gtk_ui_manager_get_widget(UIマネージャー, メニューアイテムパス);
戻り値はウィジェットになる。
-
GtkWidget* gtk_ui_manager_get_widget(UIマネージャー, メニューアイテムパス);
ファイル選択ダイアログの実装
-
画像ファイル等を指定して表示できるようにする。
-
ダイアログの作成
-
GtkWidget* gtk_file_chooser_dialog_new(ダイアログのタイトル, 親ウインドウ, ダイアログの種類,
追加するボタンアイコン,ボタンを押した時の応答ID, NULL);
戻り値はダイアログになる。
-
GtkWidget* gtk_file_chooser_dialog_new(ダイアログのタイトル, 親ウインドウ, ダイアログの種類,
-
アイコンと応答IDはセットで入力する。
- なので、形式としては(タイトル, 親,種類, アイコン, ID, アイコン, ID,・・・, NULL);となる。
ダイアログの種類 ファイルを開く:GTK_FILE_CHOOSER_ACTION_OPEN ファイルの保存:GTK_FILE_CHOOSER_ACTION_SAVE
ボタンの応答関係 キャンセルボタン:GTK_STOCK_CANCEL 応答:GTK_RESPONSE_CANCEL 開くボタン:GTK_STOCK_OPEN 応答:GTK_RESPONSE_ACCEPT(キャンセル以外に用いる(?))
-
ダイアログの表示とファイル処理
-
gint gtk_dialog_run(ダイアログ);
戻り値は応答ID。
-
gint gtk_dialog_run(ダイアログ);
-
ファイル名の取得はgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
画像の表示はgtk_image_set_from_file(GTK_IMAGE (image), filename);を用いる。
最後にメモリ領域をg_free()で開放する。
最終更新日:2013/10/17 14:05:48