void on_game_mgr_edit_game(GtkWidget *widget, gpointer user_data) { GtkWidget *iconlist = lookup_widget("game_mgr_iconlist"); GtkWidget *ok_button = lookup_widget("game_mgr_button_ok"); GwpGameState *state = NULL; GList *selections = NULL; selections = gnome_icon_list_get_selection(GNOME_ICON_LIST(iconlist)); if(selections) { state = (GwpGameState *) gnome_icon_list_get_icon_data(GNOME_ICON_LIST(iconlist), (gint)g_list_nth_data(selections, 0)); g_assert(state != NULL); if(game_mgr_properties_dlg_fill(state)) { /* Connect callback to OK button, so that works as an "edit game" dialog. */ g_signal_connect(G_OBJECT(ok_button), "clicked", G_CALLBACK(game_mgr_cb_edit_game), iconlist); gtk_window_set_transient_for(GTK_WINDOW(game_mgr_properties), GTK_WINDOW(game_mgr)); gtk_window_set_title(GTK_WINDOW(game_mgr_properties), _("Edit Game Properties")); /* Update 'Unpack' button status */ if(vp_can_unpack(gwp_game_state_get_dir(state), gwp_game_state_get_race(state))) { GtkWidget *btn_unpack = lookup_widget("game_mgr_btn_unpack"); gtk_widget_set_sensitive(btn_unpack, TRUE); } else { GtkWidget *btn_unpack = lookup_widget("game_mgr_btn_unpack"); gtk_widget_set_sensitive(btn_unpack, FALSE); } gtk_widget_show(game_mgr_properties); } else { GtkWidget *warn; warn = gtk_message_dialog_new((GtkWindow*) game_mgr, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, _("Oops! there is some problem with this game")); gtk_dialog_run(GTK_DIALOG(warn)); gtk_widget_destroy(warn); } } }
void on_game_mgr_delete_game (GtkWidget *widget, gpointer user_data) { GtkWidget *iconlist = lookup_widget("game_mgr_iconlist"); GwpGameState *state = NULL; GList *selections = NULL; selections = gnome_icon_list_get_selection(GNOME_ICON_LIST(iconlist)); if(selections) { gint icon_idx = (gint)g_list_nth_data(selections, 0); GtkResponseType response; GtkWidget *warn; gchar *game_name; state = (GwpGameState *) gnome_icon_list_get_icon_data(GNOME_ICON_LIST(iconlist), icon_idx); g_assert(state != NULL); game_name = g_strdup(gwp_game_state_get_name(state)); game_mgr_game_name_mangle(game_name); /* Are you sureeee? */ warn = gtk_message_dialog_new((GtkWindow*) game_mgr_properties, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, _("Are you sure you want to delete '%s'?"), game_name); response = gtk_dialog_run(GTK_DIALOG(warn)); gtk_widget_destroy(warn); /* Oh well... */ if(response == GTK_RESPONSE_YES) { /* Remove it from GConf */ game_mgr_delete_game(game_name); gconf_client_suggest_sync(gwp_gconf, NULL); /* Free memory from GameState struct */ /* FIXME!!: Destroy current GwpGameState object */ /*game_state_free(state);*/ /* Remove icon */ gnome_icon_list_remove(GNOME_ICON_LIST(iconlist), icon_idx); /* Update appbar info */ game_mgr_update_appbar(); } } }
static void create_icon_list(void) { TestGnomeApp *app; GtkWidget *sw; GtkWidget *iconlist; GdkPixbuf *pix; int i; app = create_newwin(TRUE,"testGNOME","Icon List"); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); bonobo_window_set_contents (BONOBO_WINDOW (app->app), sw); gtk_widget_set_size_request (sw, 430, 300); gtk_widget_show (sw); iconlist = gnome_icon_list_new (80, NULL, GNOME_ICON_LIST_IS_EDITABLE); gtk_container_add (GTK_CONTAINER (sw), iconlist); g_signal_connect (iconlist, "select_icon", G_CALLBACK (select_icon), NULL); g_signal_connect (iconlist, "unselect_icon", G_CALLBACK (unselect_icon), NULL); GTK_WIDGET_SET_FLAGS(iconlist, GTK_CAN_FOCUS); pix = gdk_pixbuf_new_from_xpm_data ((const gchar **)bomb_xpm); gtk_widget_grab_focus (iconlist); gnome_icon_list_freeze (GNOME_ICON_LIST (iconlist)); for (i = 0; i < 30; i++) { gnome_icon_list_append_pixbuf (GNOME_ICON_LIST(iconlist), pix, "bomb.xpm", "Foo"); gnome_icon_list_append_pixbuf (GNOME_ICON_LIST(iconlist), pix, "bomb.xpm", "Bar"); gnome_icon_list_append_pixbuf (GNOME_ICON_LIST(iconlist), pix, "bomb.xpm", "LaLa"); } gnome_icon_list_append (GNOME_ICON_LIST(iconlist), "non-existant.png", "No Icon"); gnome_icon_list_set_selection_mode (GNOME_ICON_LIST (iconlist), GTK_SELECTION_EXTENDED); gnome_icon_list_thaw (GNOME_ICON_LIST (iconlist)); gtk_widget_show (iconlist); gtk_widget_show(app->app); }
gint main (gint argc, gchar **argv) { GnomeProgram *program; GtkWidget *window, *scrolled_window, *icon_list, *vbox, *button; GSList *ids, *list; gint i; program = gnome_program_init ("testiconlist", "0.0", LIBGNOMEUI_MODULE, argc, argv, NULL); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size (GTK_WINDOW (window), 400, 300); vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), vbox); scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window), GTK_SHADOW_ETCHED_IN); icon_list = gnome_icon_list_new (80, NULL, GNOME_ICON_LIST_IS_EDITABLE); gtk_container_add (GTK_CONTAINER (scrolled_window), icon_list); g_signal_connect (icon_list, "select_icon", G_CALLBACK (select_icon), NULL); g_signal_connect (icon_list, "unselect_icon", G_CALLBACK (unselect_icon), NULL); gnome_icon_list_set_selection_mode (GNOME_ICON_LIST (icon_list), GTK_SELECTION_EXTENDED); ids = gtk_stock_list_ids (); gnome_icon_list_append_pixbuf (GNOME_ICON_LIST (icon_list), gtk_widget_render_icon (icon_list, GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON, NULL), "slirpe", "What happens if we have a long long line here?"); gnome_icon_list_append_pixbuf (GNOME_ICON_LIST (icon_list), gtk_widget_render_icon (icon_list, GTK_STOCK_OK, GTK_ICON_SIZE_BUTTON, NULL), "slirpe", "What happens if we have a longlonglongword here?"); for (list = ids, i = 0; list; list = list->next, i++) { gchar *name = list->data; if (i > 2) break; gnome_icon_list_append_pixbuf (GNOME_ICON_LIST (icon_list), gtk_widget_render_icon (icon_list, name, GTK_ICON_SIZE_BUTTON, NULL), name, "Sliff! السلام عليكم"); g_free (name); } button = gtk_button_new_from_stock (GTK_STOCK_QUIT); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0); gtk_widget_show_all (window); gtk_main (); g_object_unref (program); return 0; }