/** popup_dialog.c **/ #include void destroyPopup(GtkWidget *widget,gpointer data); void destroyDialog(GtkWidget *widget,gpointer data); void showPopup(GtkWidget *widget,gpointer data); void showDialog(GtkWidget *widget,gpointer data); gint eventDestroy(GtkWidget *widget,gpointer data); int main(int argc,char *argv[]) { GtkWidget *topLevelWindow; GtkWidget *popupButton; GtkWidget *dialogButton; GtkWidget *box; gnome_init("popup_dialog","1.0",argc,argv); topLevelWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(topLevelWindow), "destroy", GTK_SIGNAL_FUNC(eventDestroy), NULL); gtk_container_set_border_width( GTK_CONTAINER(topLevelWindow),20); box = gtk_vbox_new(FALSE,0); popupButton = gtk_button_new_with_label("Popup"); gtk_signal_connect(GTK_OBJECT(popupButton), "clicked", GTK_SIGNAL_FUNC(showPopup), NULL); gtk_box_pack_start(GTK_BOX(box),popupButton, FALSE,FALSE,0); gtk_widget_show(popupButton); dialogButton = gtk_button_new_with_label("Dialog"); gtk_signal_connect(GTK_OBJECT(dialogButton), "clicked", GTK_SIGNAL_FUNC(showDialog), NULL); gtk_box_pack_start(GTK_BOX(box),dialogButton, FALSE,FALSE,0); gtk_widget_show(dialogButton); gtk_container_add(GTK_CONTAINER(topLevelWindow),box); gtk_widget_show(box); gtk_widget_show(topLevelWindow); gtk_main(); exit(0); } gint eventDestroy(GtkWidget *widget,gpointer data) { gtk_main_quit(); return(0); } void showPopup(GtkWidget *widget,gpointer data) { GtkWidget *popup; GtkWidget *button; popup = gtk_window_new(GTK_WINDOW_POPUP); button = gtk_button_new_with_label("Close Popup"); gtk_container_set_border_width( GTK_CONTAINER(popup),20); gtk_container_add(GTK_CONTAINER(popup),button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(destroyPopup), popup); gtk_widget_show(button); gtk_widget_show(popup); } void showDialog(GtkWidget *widget,gpointer data) { GtkWidget *dialog; GtkWidget *button; dialog = gtk_window_new(GTK_WINDOW_DIALOG); button = gtk_button_new_with_label("Close Dialog"); gtk_container_set_border_width( GTK_CONTAINER(dialog),20); gtk_container_add(GTK_CONTAINER(dialog),button); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(destroyDialog), dialog); gtk_widget_show(button); gtk_widget_show(dialog); } void destroyPopup(GtkWidget *widget,gpointer data) { gtk_widget_destroy(GTK_WIDGET(data)); } void destroyDialog(GtkWidget *widget,gpointer data) { gtk_widget_destroy(GTK_WIDGET(data)); }