src/gtkplugin.c

changeset 12695
0c93a42b7ee2
parent 12600
7ecd4441fdc7
child 12702
fbd3bef47358
--- a/src/gtkplugin.c	Tue Jan 03 11:42:51 2006 +0000
+++ b/src/gtkplugin.c	Tue Jan 03 12:03:02 2006 +0000
@@ -130,7 +130,9 @@
 		gtk_list_store_set(ls, &iter,
 				   0, gaim_plugin_is_loaded(plug),
 				   1, desc,
-				   2, plug, -1);
+				   2, plug,
+				   3, gaim_plugin_is_unloadable(plug),
+				   -1);
 		g_free(desc);
 	}
 }
@@ -159,14 +161,19 @@
 	gchar buf[1024];
 	gchar *name = NULL, *description = NULL;
 	GtkWidget *dialog = NULL;
-
-	GdkCursor *wait = gdk_cursor_new (GDK_WATCH);
-	gdk_window_set_cursor(plugin_dialog->window, wait);
-	gdk_cursor_unref(wait);
+	GdkCursor *wait;
 
 	gtk_tree_model_get_iter (model, &iter, path);
 	gtk_tree_model_get (model, &iter, 2, &plug, -1);
 
+	/* Apparently, GTK+ won't honor the sensitive flag on cell renderers for booleans. */
+	if (gaim_plugin_is_unloadable(plug))
+		return;
+
+	wait = gdk_cursor_new (GDK_WATCH);
+	gdk_window_set_cursor(plugin_dialog->window, wait);
+	gdk_cursor_unref(wait);
+
 	if (!gaim_plugin_is_loaded(plug))
 		gaim_plugin_load(plug);
 	else {
@@ -273,6 +280,16 @@
 		   pdesc ? pdesc : "", pdesc ? "\n\n" : "",
 		   pauth ? pauth : "", pweb ? pweb : "", plug->path);
 
+	if (plug->error != NULL)
+	{
+		char *tmp = g_strdup_printf(
+			_("%s\n"
+			  "<span foreground=\"#ff0000\" weight=\"bold\">Error: %s</span>"),
+			buf, plug->error);
+		g_free(buf);
+		buf = tmp;
+	}
+
 	gtk_widget_set_sensitive(pref_button,
 		gaim_plugin_is_loaded(plug)
 		&& ((GAIM_IS_GTK_PLUGIN(plug) && plug->info->ui_info
@@ -399,7 +416,7 @@
 
 	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(plugin_dialog)->vbox), sw, TRUE, TRUE, 0);
 
-	ls = gtk_list_store_new (3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER);
+	ls = gtk_list_store_new (4, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN);
 	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(ls),
 					     1, GTK_SORT_ASCENDING);
 
@@ -423,9 +440,13 @@
 			  G_CALLBACK(plugin_load), ls);
 
 	rendt = gtk_cell_renderer_text_new();
+	g_object_set(rendt,
+		     "foreground", "#c0c0c0",
+		     NULL);
 	col = gtk_tree_view_column_new_with_attributes (_("Name"),
 							rendt,
 							"markup", 1,
+							"foreground-set", 3,
 							NULL);
 #if GTK_CHECK_VERSION(2,6,0)
 	gtk_tree_view_column_set_expand (col, TRUE);

mercurial