There is no GtkPixbuf. There is only a GdkPixbuf which can be can shown in more than one GtkImage at the same time.
For your layout you can use a GtkNotebook without showing the tabs. Something like this (with buttons instead of eventboxes, and labels instead of images for simplicity, gtk+2.0):
Code:
#include <gtk/gtk.h>
GtkWidget *notebook;
GtkWidget *main_label;
void on_button(GtkButton *button, gpointer data)
{
if (data)
{
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),1);
gint ij=GPOINTER_TO_INT(data)-1;
char buffer[20];
snprintf(buffer,G_N_ELEMENTS(buffer),"%d,%d",ij%2,ij/2);
gtk_label_set_text(GTK_LABEL(main_label),buffer);
}
else
{
gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook),0);
}
}
int main(int argc, char **argv)
{
gtk_init(&argc,&argv);
GtkWidget *window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
notebook=gtk_notebook_new();
gtk_container_add(GTK_CONTAINER(window),notebook);
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook),FALSE);
GtkWidget *table=gtk_table_new(2,2,TRUE);
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),table,NULL);
int i;
for (i=0; i<2; i++)
{
int j;
for (j=0; j<2; j++)
{
GtkWidget *button=gtk_button_new();
gtk_table_attach_defaults(GTK_TABLE(table),button,i,i+1,j,j+1);
char buffer[20];
snprintf(buffer,G_N_ELEMENTS(buffer),"%d,%d",i,j);
gtk_container_add(GTK_CONTAINER(button),gtk_label_new(buffer));
g_signal_connect(G_OBJECT(button),"clicked",
G_CALLBACK(on_button),GINT_TO_POINTER(2*i+j+1));
}
}
GtkWidget *button=gtk_button_new();
gtk_notebook_append_page(GTK_NOTEBOOK(notebook),button,NULL);
main_label=gtk_label_new(NULL);
gtk_container_add(GTK_CONTAINER(button),main_label);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button),NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}