diff src/buddy.c @ 4732:c15e0699acae

[gaim-migrate @ 5047] hopefully this doesn't break anything. - Capabilities are back in the tooltips - Jabber does the neat status thing in the buddy list - jabber "broken" buddies are gone! woohoo! - most of the right-click menu items moved back to where they used to live, but Get Info remains at the top, because that's where it should be. committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Thu, 13 Mar 2003 06:08:56 +0000
parents 9d3b7b106def
children 76ccf9740183
line wrap: on
line diff
--- a/src/buddy.c	Thu Mar 13 00:10:56 2003 +0000
+++ b/src/buddy.c	Thu Mar 13 06:08:56 2003 +0000
@@ -75,6 +75,11 @@
 		do_quit();
 }
 
+static void gtk_blist_menu_info_cb(GtkWidget *w, struct buddy *b)
+{
+	serv_get_info(b->account->gc, b->name);
+}
+
 static void gtk_blist_menu_im_cb(GtkWidget *w, struct buddy *b)
 {
        gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
@@ -203,6 +208,31 @@
 
 	/* Protocol specific options */
 	prpl = find_prpl(((struct buddy*)node)->account->protocol);
+
+	if(prpl && prpl->get_info) {
+		menuitem = gtk_image_menu_item_new_with_mnemonic("_Get Info");
+		g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_info_cb), node);
+		gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+	}
+
+	menuitem = gtk_image_menu_item_new_with_mnemonic("_IM");
+	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_im_cb), node);
+	image = gtk_image_new_from_stock(GAIM_STOCK_IM, GTK_ICON_SIZE_MENU);
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+
+	menuitem = gtk_image_menu_item_new_with_mnemonic("_Alias");
+	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_alias_cb), node);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+
+	menuitem = gtk_image_menu_item_new_with_mnemonic("Add Buddy _Pounce");
+	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_bp_cb), node);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+
+	menuitem = gtk_image_menu_item_new_with_mnemonic("View _Log");
+	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_showlog_cb), node);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
+
 	if (prpl) {
 		list = prpl->buddy_menu(((struct buddy*)node)->account->gc, ((struct buddy*)node)->name);
 		while (list) {
@@ -214,24 +244,6 @@
 			list = list->next;
 		}
 	}
-	
-	menuitem = gtk_image_menu_item_new_with_mnemonic("_IM");
-	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_im_cb), node);
-	image = gtk_image_new_from_stock(GAIM_STOCK_IM, GTK_ICON_SIZE_MENU);
-	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);	
-	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
-	
-	menuitem = gtk_image_menu_item_new_with_mnemonic("_Alias");
-	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_alias_cb), node);
-	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
-	
-	menuitem = gtk_image_menu_item_new_with_mnemonic("Add Buddy _Pounce");
-	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_bp_cb), node);
-	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
-	
-	menuitem = gtk_image_menu_item_new_with_mnemonic("View _Log");
-	g_signal_connect(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_blist_menu_showlog_cb), node);
-	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
 	gtk_widget_show_all(menu);
 	
@@ -344,11 +356,13 @@
 	GdkPixbuf *pixbuf = gaim_gtk_blist_get_status_icon(b, GAIM_STATUS_ICON_LARGE);
 	PangoLayout *layout;
 	char *tooltiptext = gaim_get_tooltip_text(b);
+	int width;
 
 	layout = gtk_widget_create_pango_layout (gtkblist->tipwindow, NULL);
 	pango_layout_set_markup(layout, tooltiptext, strlen(tooltiptext));
+	pango_layout_set_wrap(layout, PANGO_WRAP_WORD);
 	style = gtkblist->tipwindow->style;
-	
+
 	gtk_paint_flat_box (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
 			    NULL, gtkblist->tipwindow, "tooltip", 0, 0, -1, -1);
 
@@ -439,7 +453,7 @@
 
 	if (gtkblist->timeout) {
 		if ((event->y > gtkblist->rect.y) && ((event->y - gtkblist->rect.height) < gtkblist->rect.y))
-			return;
+			return FALSE;
 		/* We've left the cell.  Remove the timeout and create a new one below */
 		if (gtkblist->tipwindow) {
 			gtk_widget_destroy(gtkblist->tipwindow);
@@ -526,13 +540,9 @@
 	char *warning = NULL, *idletime = NULL;
 
 	if (prpl->tooltip_text) {
-		char *tmp = prpl->tooltip_text(b);
-		if (tmp) {
-			statustext = g_markup_escape_text(tmp, strlen(tmp));
-			g_free(tmp);
-		}
+		statustext = prpl->tooltip_text(b);
 	}
-	
+
 	if (b->idle) {
 		int ihrs, imin;
 		time_t t;
@@ -540,14 +550,14 @@
 		ihrs = (t - b->idle) / 3600;
 		imin = ((t - b->idle) / 60) % 60;
 		if (ihrs)
-			idletime = g_strdup_printf(_("<b>Idle</b> %dh%02dm"), ihrs, imin);
+			idletime = g_strdup_printf(_("<b>Idle:</b> %dh%02dm"), ihrs, imin);
 		else
-			idletime = g_strdup_printf(_("<b>Idle</b> %dm"), imin);
+			idletime = g_strdup_printf(_("<b>Idle:</b> %dm"), imin);
 	}
-	
+
 	if (b->evil > 0)
-		warning = g_strdup_printf(_("<b>Warned</b> %d%%"), b->evil);
-	
+		warning = g_strdup_printf(_("<b>Warned:</b> %d%%"), b->evil);
+
 	text = g_strdup_printf("<span size='larger' weight='bold'>%s</span>"
 			       "%s %s %s"  /* Alias */
 			       "%s %s %s"  /* Nickname */
@@ -555,8 +565,8 @@
 			       "%s %s"     /* Warning */
 			       "%s %s",    /* Status */
 			       b->name,
-			       b->alias && b->alias[0] ? "\n" : "", b->alias && b->alias[0] ? _("<b>Alias</b> ") : "", b->alias ? b->alias : "", 
-			       b->server_alias ? "\n" : "", b->server_alias ? _("<b>Nickname</b> ") : "", b->server_alias ? b->server_alias : "", 
+			       b->alias && b->alias[0] ? "\n" : "", b->alias && b->alias[0] ? _("<b>Alias:</b> ") : "", b->alias ? b->alias : "", 
+			       b->server_alias ? "\n" : "", b->server_alias ? _("<b>Nickname:</b> ") : "", b->server_alias ? b->server_alias : "", 
 			       b->idle ? "\n" : "", b->idle ? idletime : "", 
 			       b->evil ? "\n" : "", b->evil ? warning : "",
 			       statustext ? "\n" : "", statustext ? statustext : "");
@@ -730,7 +740,7 @@
 
 	int ihrs, imin;
 	char *idletime = NULL, *warning = NULL, *statustext = NULL;
-       	time_t t;
+	time_t t;
 
 	if (!(blist_options & OPT_BLIST_SHOW_ICONS)) {
 		if (b->idle > 0 && blist_options & OPT_BLIST_GREY_IDLERS) {
@@ -748,11 +758,17 @@
 	imin = ((t - b->idle) / 60) % 60;
 
 	if (prpl->status_text) {
-		const char *tmp = prpl->status_text(b);
-		if (tmp)
-			statustext = g_markup_escape_text(tmp, strlen(tmp));
+		char *tmp = prpl->status_text(b);
+
+		if(tmp) {
+			if(strlen(tmp) > 20)
+				statustext = g_strdup_printf("%.16s...", tmp);
+			else
+				statustext = g_strdup(tmp);
+			g_free(tmp);
+		}
 	}
-	
+
 	if (b->idle) {
 		if (ihrs)
 			idletime = g_strdup_printf(_("Idle (%dh%02dm)"), ihrs, imin);