2005-06-15 [colin] 1.9.11cvs75
[claws.git] / src / headerview.c
index e98c7484e823d3c42ad86448fe8fe5b6ec05617b..24c5ef543a7b610460d618884632666f00838009 100644 (file)
 #include "defs.h"
 
 #include <glib.h>
+#include <glib/gi18n.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtkstyle.h>
 #include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtkvbox.h>
 #include <gtk/gtklabel.h>
-#include <gtk/gtkpixmap.h>
+#include <gtk/gtkimage.h>
 #include <stdio.h>
 #include <string.h>
 #include <time.h>
 #  include <compface.h>
 #endif
 
-#include "intl.h"
 #include "headerview.h"
 #include "prefs_common.h"
 #include "codeconv.h"
 #include "gtkutils.h"
 #include "utils.h"
 
-static GdkFont *boldfont;
-
 #define TR(str)        (prefs_common.trans_hdr ? gettext(str) : str)
 
 #if 0
@@ -109,12 +107,20 @@ HeaderView *headerview_create(void)
        gtk_box_pack_start(GTK_BOX(hbox1), from_header_label, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox1), from_body_label, FALSE, FALSE, 0);
        gtk_box_pack_start(GTK_BOX(hbox1), to_header_label, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox1), to_body_label, FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox1), to_body_label, TRUE, TRUE, 0);
        gtk_box_pack_start(GTK_BOX(hbox1), ng_header_label, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox1), ng_body_label, FALSE, FALSE, 0);
+       gtk_box_pack_start(GTK_BOX(hbox1), ng_body_label, TRUE, TRUE, 0);
        gtk_box_pack_start(GTK_BOX(hbox2), subject_header_label, FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(hbox2), subject_body_label, FALSE, FALSE, 0);
-
+       gtk_box_pack_start(GTK_BOX(hbox2), subject_body_label, TRUE, TRUE, 0);
+
+       gtk_misc_set_alignment(GTK_MISC(to_body_label), 0, 0.5);
+       gtk_misc_set_alignment(GTK_MISC(ng_body_label), 0, 0.5);
+       gtk_misc_set_alignment(GTK_MISC(subject_body_label), 0, 0.5);
+#if (GTK_MAJOR_VERSION > 2 || (GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION >= 6))
+       gtk_label_set_ellipsize(GTK_LABEL(to_body_label), PANGO_ELLIPSIZE_END);
+       gtk_label_set_ellipsize(GTK_LABEL(ng_body_label), PANGO_ELLIPSIZE_END);
+       gtk_label_set_ellipsize(GTK_LABEL(subject_body_label), PANGO_ELLIPSIZE_END);
+#endif
        headerview->hbox = hbox;
        headerview->from_header_label    = from_header_label;
        headerview->from_body_label      = from_body_label;
@@ -133,23 +139,19 @@ HeaderView *headerview_create(void)
 
 void headerview_init(HeaderView *headerview)
 {
-       if (!boldfont)
-               boldfont = gtkut_font_load(BOLD_FONT);
-
-#define SET_FONT_STYLE(wid) \
-{ \
-       GtkStyle *style; \
- \
-       style = gtk_style_copy(gtk_widget_get_style(headerview->wid)); \
-       if (boldfont) \
-               style->font = boldfont; \
-       gtk_widget_set_style(headerview->wid, style); \
-}
+       static PangoFontDescription *boldfont = NULL;
 
-       SET_FONT_STYLE(from_header_label);
-       SET_FONT_STYLE(to_header_label);
-       SET_FONT_STYLE(ng_header_label);
-       SET_FONT_STYLE(subject_header_label);
+       if (!boldfont) {
+               boldfont = pango_font_description_from_string(BOLD_FONT);
+               pango_font_description_set_weight(boldfont, PANGO_WEIGHT_BOLD);
+       }
+
+       if (boldfont) {
+               gtk_widget_modify_font(headerview->from_header_label, boldfont);
+               gtk_widget_modify_font(headerview->to_header_label, boldfont);
+               gtk_widget_modify_font(headerview->ng_header_label, boldfont);
+               gtk_widget_modify_font(headerview->subject_header_label, boldfont);
+       }
 
        headerview_clear(headerview);
        headerview_set_visibility(headerview, prefs_common.display_header_pane);
@@ -168,38 +170,25 @@ void headerview_init(HeaderView *headerview)
 
 void headerview_show(HeaderView *headerview, MsgInfo *msginfo)
 {
-       gchar *str;
-
        headerview_clear(headerview);
 
-       if (msginfo->from) {
-               Xstrdup_a(str, msginfo->from, return);
-               conv_unreadable_locale(str);
-       } else
-               str = NULL;
        gtk_label_set_text(GTK_LABEL(headerview->from_body_label),
-                          str ? str : _("(No From)"));
+                          msginfo->from ? msginfo->from : _("(No From)"));
        if (msginfo->to) {
-               Xstrdup_a(str, msginfo->to, return);
-               conv_unreadable_locale(str);
-               gtk_label_set_text(GTK_LABEL(headerview->to_body_label), str);
+               gtk_label_set_text(GTK_LABEL(headerview->to_body_label),
+                                  msginfo->to);
                gtk_widget_show(headerview->to_header_label);
                gtk_widget_show(headerview->to_body_label);
        }
        if (msginfo->newsgroups) {
-               Xstrdup_a(str, msginfo->newsgroups, return);
-               conv_unreadable_locale(str);
-               gtk_label_set_text(GTK_LABEL(headerview->ng_body_label), str);
+               gtk_label_set_text(GTK_LABEL(headerview->ng_body_label),
+                                  msginfo->newsgroups);
                gtk_widget_show(headerview->ng_header_label);
                gtk_widget_show(headerview->ng_body_label);
        }
-       if (msginfo->subject) {
-               Xstrdup_a(str, msginfo->subject, return);
-               conv_unreadable_locale(str);
-       } else
-               str = NULL;
        gtk_label_set_text(GTK_LABEL(headerview->subject_body_label),
-                          str ? str : _("(No Subject)"));
+                          msginfo->subject ? msginfo->subject :
+                          _("(No Subject)"));
 
 #if HAVE_LIBCOMPFACE
        headerview_show_xface(headerview, msginfo);
@@ -241,16 +230,16 @@ static void headerview_show_xface(HeaderView *headerview, MsgInfo *msginfo)
        if (!headerview->image) {
                GtkWidget *image;
 
-               image = gtk_pixmap_new(pixmap, mask);
+               image = gtk_image_new_from_pixmap(pixmap, mask);
                gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
                gtk_widget_show(image);
                headerview->image = image;
        } else {
-               gtk_pixmap_set(GTK_PIXMAP(headerview->image), pixmap, mask);
+               gtk_image_set_from_pixmap(GTK_IMAGE(headerview->image), pixmap, mask);
                gtk_widget_show(headerview->image);
        }
 
-       gdk_pixmap_unref(pixmap);
+       g_object_unref(pixmap);
 }
 #endif