ステータスバー

2010年2月11日

ファイル

18-status.tar.gz

内容

ステータスバーを使ってみます。ツールバーのボタンの上にマウスポインタを置くと、ステータスバーに説明が表示されるようにしてみましょう。

ここでは、部品としてツールバー、テキストビュー、ステータスバーを置きます。テキストビューではスクロールバーを使えるようにします。スクロールバーを使うには、スクロールウインドウを用意し、その中にテキストビューを入れます。

	scrollWin = gtk_scrolled_window_new(NULL, NULL);

	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollWin),
	  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollWin),
	  GTK_SHADOW_IN);

	gtk_table_attach(GTK_TABLE(table), scrollWin, 0, 1, 1, 2,
	  GTK_EXPAND | GTK_FILL,  GTK_EXPAND | GTK_FILL, 0, 0);

	textView = gtk_text_view_new();
	gtk_widget_grab_focus(textView);

	gtk_container_add(GTK_CONTAINER(scrollWin), textView);

さて、ステータスバーを用意します。

	statusbar = gtk_statusbar_new();

ツールバーのボタンの上のマウスポインタの出入りを検出するために、"enter" イベントと "leave" イベントを拾います。ステータスバーの表示を変更するために、コールバック関数にステータスバーを渡します。

	g_signal_connect(buttonIcon,
	  "enter", G_CALLBACK(buttonEnter), statusbar);
	g_signal_connect(buttonIcon,
	  "leave", G_CALLBACK(buttonLeave), statusbar);

ステータスバーの表示の設定は次のように行います。

void buttonEnter(GtkWidget *widget, GtkWidget *statusbar)
{
	int id;
	const char *str = "toggle button";

	id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "");
	gtk_statusbar_push(GTK_STATUSBAR(statusbar), id, str);
}


void buttonLeave(GtkWidget *widget,  GtkWidget *statusbar)
{
	int id;

	id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar), "");
	gtk_statusbar_pop(GTK_STATUSBAR(statusbar), id);
}

buttonEnter() で文字列をステータスバーのスタックに積み上げ、buttonLeave() でスタックから取り除いています。

GTK+ プログラミング 目次へ