예제 #1
0
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);
    }
  }
}
예제 #2
0
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();
    }
  } 
}
예제 #3
0
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);
}
예제 #4
0
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;
}