diff src/util.c @ 3668:5b82f99d028d

[gaim-migrate @ 3798] Just getting some things set up committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Sun, 13 Oct 2002 23:06:22 +0000
parents f09193608fd3
children 507eb0a2c7b2
line wrap: on
line diff
--- a/src/util.c	Sun Oct 13 16:38:05 2002 +0000
+++ b/src/util.c	Sun Oct 13 23:06:22 2002 +0000
@@ -1450,3 +1450,140 @@
 
 		return pixbuf;
 }
+
+GtkWidget *gaim_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
+{
+	GtkWidget *menuitem;
+	GtkWidget *hbox;
+	GtkWidget *label;
+	GtkWidget *image;
+
+	if (icon == NULL)
+		menuitem = gtk_menu_item_new_with_mnemonic(_(str));
+	else 
+		menuitem = gtk_image_menu_item_new_with_mnemonic(_(str));
+
+	if (menu)
+		gtk_menu_append(GTK_MENU(menu), menuitem);
+
+	if (sf)
+		gtk_signal_connect(GTK_OBJECT(menuitem), "activate", sf, data);
+
+	if (icon != NULL) {
+		image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_MENU);
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
+	}
+
+	if (mod) {
+		label = gtk_label_new(mod);
+		gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);
+		gtk_widget_show(label);
+	}
+/*
+	if (accel_key) {
+		gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key,
+					   accel_mods, GTK_ACCEL_LOCKED);
+	}
+*/
+
+	gtk_widget_show_all(menuitem);
+
+	return menuitem;
+}
+
+GtkWidget *gaim_new_item_from_pixbuf(GtkWidget *menu, const char *str, char *iconname, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
+{
+	GtkWidget *menuitem;
+	GtkWidget *hbox;
+	GtkWidget *label;
+	GtkWidget *image;
+
+	if (iconname == NULL)
+		menuitem = gtk_menu_item_new_with_mnemonic(_(str));
+	else 
+		menuitem = gtk_image_menu_item_new_with_mnemonic(_(str));
+
+	if (menu)
+		gtk_menu_append(GTK_MENU(menu), menuitem);
+
+	if (sf)
+		gtk_signal_connect(GTK_OBJECT(menuitem), "activate", sf, data);
+
+	if (iconname != NULL) {
+		char *filename;
+
+		filename = g_build_filename (DATADIR, "pixmaps", "gaim", "menus", iconname, NULL);
+		debug_printf("Loading: %s\n", filename);
+		image = gtk_image_new_from_file(filename);
+		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
+		g_free(filename);
+	}
+
+	if (mod) {
+		label = gtk_label_new(mod);
+		gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);
+		gtk_widget_show(label);
+	}
+/*
+	if (accel_key) {
+		gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key,
+					   accel_mods, GTK_ACCEL_LOCKED);
+	}
+*/
+
+	gtk_widget_show_all(menuitem);
+
+	return menuitem;
+}
+
+
+GtkWidget *gaim_new_item_with_pixmap(GtkWidget *menu, const char *str, char **xpm, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod)
+{
+	GtkWidget *menuitem;
+	GtkWidget *hbox;
+	GtkWidget *label;
+	GtkWidget *pixmap;
+	GdkPixmap *pm;
+	GdkBitmap *mask;
+
+	menuitem = gtk_menu_item_new();
+	if (menu)
+		gtk_menu_append(GTK_MENU(menu), menuitem);
+	if (sf)
+		/* passing 1 is necessary so if we sign off closing the account editor doesn't exit */
+		gtk_signal_connect(GTK_OBJECT(menuitem), "activate", sf, data);
+	gtk_widget_show(menuitem);
+
+	/* Create our container */
+	hbox = gtk_hbox_new(FALSE, 2);
+	gtk_container_add(GTK_CONTAINER(menuitem), hbox);
+	gtk_widget_show(hbox);
+
+	/* Create our pixmap and pack it */
+	gtk_widget_realize(menu->parent);
+	pm = gdk_pixmap_create_from_xpm_d(menu->parent->window, &mask, NULL, xpm);
+	pixmap = gtk_pixmap_new(pm, mask);
+	gtk_widget_show(pixmap);
+	gdk_pixmap_unref(pm);
+	gdk_bitmap_unref(mask);
+	gtk_box_pack_start(GTK_BOX(hbox), pixmap, FALSE, FALSE, 2);
+
+	/* Create our label and pack it */
+	label = gtk_label_new(str);
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2);
+	gtk_widget_show(label);
+
+	if (mod) {
+		label = gtk_label_new(mod);
+		gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);
+		gtk_widget_show(label);
+	}
+/*
+	if (accel_key) {
+		gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key,
+					   accel_mods, GTK_ACCEL_LOCKED);
+	}
+*/
+	return menuitem;
+}
+