Mercurial > pidgin.yaz
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); |