Webブラウザも現在はTabブラウザ(e.g. firefox, IE7, opera...)が多くなりましたが、タブでページを切り替えられると便利なことがあります。GTK+ではそれをNotebook Widgetを使って表現します。
#include <gtk/gtk.h>
int main(int argc,char *argv[]){
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *menubar;
GtkWidget *tablabel;
GtkWidget *label;
GtkWidget *label2;
GtkWidget *notebook;
GtkWidget *statusbar;
GtkWidget *file_menu;
GtkWidget *help_menu;
GtkWidget *File_Item;
GtkWidget *Load_item;
GtkWidget *Quit_item;
GtkWidget *Help_Item;
GtkWidget *About_item;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"Program");
gtk_window_set_default_size(GTK_WINDOW(window),640,480);
vbox=gtk_vbox_new(FALSE,0);
gtk_container_add(GTK_CONTAINER(window),vbox);
menubar=gtk_menu_bar_new();
gtk_box_pack_start(GTK_BOX(vbox),menubar,FALSE,TRUE,0);
file_menu=gtk_menu_new();
File_Item=gtk_menu_item_new_with_label("File");
Load_item=gtk_menu_item_new_with_label("Load");
Quit_item=gtk_menu_item_new_with_label("Quit");
gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), Load_item);
gtk_menu_shell_append (GTK_MENU_SHELL (file_menu), Quit_item);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (File_Item), file_menu);
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), File_Item);
gtk_widget_show(Load_item);
gtk_widget_show(Quit_item);
gtk_widget_show(File_Item);
gtk_widget_show(file_menu);
help_menu=gtk_menu_new();
Help_Item=gtk_menu_item_new_with_label("Help");
About_item=gtk_menu_item_new_with_label("About");
gtk_menu_shell_append (GTK_MENU_SHELL (help_menu), About_item);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (Help_Item), help_menu);
gtk_menu_shell_append (GTK_MENU_SHELL (menubar), Help_Item);
gtk_widget_show(About_item);
gtk_widget_show(Help_Item);
gtk_widget_show(help_menu);
gtk_widget_show(menubar);
tablabel=gtk_label_new("tab");
label=gtk_label_new("Hello World");
label2=gtk_label_new("Hello World2");
notebook=gtk_notebook_new();
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label,tablabel);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),label2,NULL);
gtk_box_pack_start(GTK_BOX(vbox),notebook,TRUE,TRUE,0);
gtk_widget_show(tablabel);
gtk_widget_show(label);
gtk_widget_show(label2);
gtk_widget_show(notebook);
statusbar=gtk_statusbar_new();
gtk_box_pack_start(GTK_BOX(vbox),statusbar,FALSE,TRUE,0);
gtk_statusbar_push(GTK_STATUSBAR(statusbar),1,"Hello World");
gtk_widget_show(statusbar);
gtk_widget_show(vbox);
gtk_widget_show(window);
g_signal_connect(Quit_item,"activate",gtk_main_quit,NULL);
g_signal_connect(window,"destroy",gtk_main_quit,NULL);
gtk_main();
return 0;
}
内容は前回の「メニューバー+ステータスバー」と殆どかわりませんが、新たにnokebookが追加されています。gtk_notebook_new()でノートブックを作成し、gtk_notebook_append_page()でページを増やしています。このプログラムの場合、ページは2ページあり、1ページ目はタブの名前が「tab」であるのに対し、2ページ目はデフォルトです。