/** gnomeiconentry.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); static GtkWidget *makeWidget(); void eventIconSelected(GtkWidget *widget, gint button,GnomeIconEntry *iconentry); void eventIconChanged(GtkWidget *widget, GnomeIconEntry *iconentry); int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *widget; gnome_init("gnomeiconentry","1.0",argc,argv); app = gnome_app_new("gnomeiconentry","GnomeIconEntry"); gtk_container_set_border_width(GTK_CONTAINER(app),20); gtk_signal_connect(GTK_OBJECT(app),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(app),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); widget = makeWidget(); gnome_app_set_contents(GNOME_APP(app),widget); gtk_widget_show_all(app); gtk_main(); exit(0); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); } gint eventIcon(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } static GtkWidget *makeWidget() { GtkWidget *iconentry; GtkWidget *entry; iconentry = gnome_icon_entry_new("historyID", "Select an Icon"); entry = gnome_icon_entry_gtk_entry( GNOME_ICON_ENTRY(iconentry)); gtk_signal_connect(GTK_OBJECT(entry),"changed", GTK_SIGNAL_FUNC(eventIconChanged),iconentry); return(iconentry); } void eventIconChanged(GtkWidget *widget, GnomeIconEntry *iconentry) { GtkWidget *dialog; g_print("Changed........\n"); dialog = GNOME_ICON_ENTRY(iconentry)->pick_dialog; if(dialog != NULL) { gtk_signal_handlers_destroy(GTK_OBJECT(dialog)); gtk_signal_connect(GTK_OBJECT(dialog),"clicked", eventIconSelected,iconentry); } } void eventIconSelected(GtkWidget *widget,gint button, GnomeIconEntry *iconentry) { gchar *iconfile; switch(button) { case 0: iconfile = gnome_icon_entry_get_filename(iconentry); g_print("Icon file name: %s\n",iconfile); break; case 1: g_print("No icon selection was made\n"); } }