comparison pidgin/gtkplugin.c @ 21947:c6b408d16011

merge of '791803b6696dd26a5193ad76f80dbc7c6cb2687a' and 'e7dd3b30ece9f95dd95249583812659312c457e6'
author Stu Tomlinson <stu@nosnilmot.com>
date Fri, 28 Dec 2007 02:49:23 +0000
parents ddd53c9174bc
children 19f26913fe71
comparison
equal deleted inserted replaced
21923:1981f277ab01 21947:c6b408d16011
29 #include "gtkpluginpref.h" 29 #include "gtkpluginpref.h"
30 #include "gtkutils.h" 30 #include "gtkutils.h"
31 #include "debug.h" 31 #include "debug.h"
32 #include "prefs.h" 32 #include "prefs.h"
33 #include "request.h" 33 #include "request.h"
34 #include "pidgintooltip.h"
34 35
35 #include <string.h> 36 #include <string.h>
36 37
37 #define PIDGIN_RESPONSE_CONFIGURE 98121 38 #define PIDGIN_RESPONSE_CONFIGURE 98121
38 39
529 530
530 /* Now show the pref-dialog for the plugin */ 531 /* Now show the pref-dialog for the plugin */
531 plugin_dialog_response_cb(dialog, PIDGIN_RESPONSE_CONFIGURE, sel); 532 plugin_dialog_response_cb(dialog, PIDGIN_RESPONSE_CONFIGURE, sel);
532 } 533 }
533 534
535 static gboolean
536 pidgin_plugins_paint_tooltip(GtkWidget *tipwindow, gpointer data)
537 {
538 PangoLayout *layout = g_object_get_data(G_OBJECT(tipwindow), "tooltip-plugin");
539 gtk_paint_layout(tipwindow->style, tipwindow->window, GTK_STATE_NORMAL, FALSE,
540 NULL, tipwindow, "tooltip",
541 6, 6, layout);
542 return TRUE;
543 }
544
545 static gboolean
546 pidgin_plugins_create_tooltip(GtkWidget *tipwindow, GtkTreePath *path,
547 gpointer data, int *w, int *h)
548 {
549 GtkTreeIter iter;
550 GtkTreeView *treeview = GTK_TREE_VIEW(data);
551 PurplePlugin *plugin = NULL;
552 GtkTreeModel *model = gtk_tree_view_get_model(treeview);
553 PangoLayout *layout;
554 int width, height;
555 char *markup, *name, *desc, *author;
556
557 if (!gtk_tree_model_get_iter(model, &iter, path))
558 return FALSE;
559
560 gtk_tree_model_get(model, &iter, 2, &plugin, -1);
561
562 markup = g_strdup_printf("<span size='x-large' weight='bold'>%s</span>\n<b>Description:</b> %s\n<b>Author:</b> %s",
563 name = g_markup_escape_text(purple_plugin_get_name(plugin), -1),
564 desc = g_markup_escape_text(purple_plugin_get_description(plugin), -1),
565 author = g_markup_escape_text(purple_plugin_get_author(plugin), -1));
566
567 layout = gtk_widget_create_pango_layout(tipwindow, NULL);
568 pango_layout_set_markup(layout, markup, -1);
569 pango_layout_set_wrap(layout, PANGO_WRAP_WORD);
570 pango_layout_set_width(layout, 600000);
571 pango_layout_get_size(layout, &width, &height);
572 g_object_set_data_full(G_OBJECT(tipwindow), "tooltip-plugin", layout, g_object_unref);
573
574 if (w)
575 *w = PANGO_PIXELS(width) + 12;
576 if (h)
577 *h = PANGO_PIXELS(height) + 12;
578
579 g_free(markup);
580 g_free(name);
581 g_free(desc);
582 g_free(author);
583
584 return TRUE;
585 }
586
534 void pidgin_plugin_dialog_show() 587 void pidgin_plugin_dialog_show()
535 { 588 {
536 GtkWidget *sw; 589 GtkWidget *sw;
537 GtkWidget *event_view; 590 GtkWidget *event_view;
538 GtkListStore *ls; 591 GtkListStore *ls;
611 gtk_container_add(GTK_CONTAINER(sw), event_view); 664 gtk_container_add(GTK_CONTAINER(sw), event_view);
612 gtk_tree_view_set_search_column(GTK_TREE_VIEW(event_view), 1); 665 gtk_tree_view_set_search_column(GTK_TREE_VIEW(event_view), 1);
613 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(event_view), 666 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(event_view),
614 pidgin_tree_view_search_equal_func, NULL, NULL); 667 pidgin_tree_view_search_equal_func, NULL, NULL);
615 668
669 pidgin_tooltip_setup_for_treeview(event_view, event_view,
670 pidgin_plugins_create_tooltip,
671 pidgin_plugins_paint_tooltip);
672
616 expander = gtk_expander_new(_("<b>Plugin Details</b>")); 673 expander = gtk_expander_new(_("<b>Plugin Details</b>"));
617 gtk_expander_set_use_markup(GTK_EXPANDER(expander), TRUE); 674 gtk_expander_set_use_markup(GTK_EXPANDER(expander), TRUE);
618 plugin_details = gtk_label_new(NULL); 675 plugin_details = gtk_label_new(NULL);
619 gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE); 676 gtk_label_set_line_wrap(GTK_LABEL(plugin_details), TRUE);
620 gtk_container_add(GTK_CONTAINER(expander), plugin_details); 677 gtk_container_add(GTK_CONTAINER(expander), plugin_details);