[balsa] Silence some deprecation warnings



commit 8453c758ec619113441ce0011a387357c4c98b9b
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Nov 19 18:22:19 2016 -0500

    Silence some deprecation warnings
    
        Silence some whining about "Using Pango syntax for the font:
        style property is deprecated; please use CSS syntax".
    
        * libbalsa/misc.c (libbalsa_font_string_to_css): new function.
        * libbalsa/misc.h: export it.
        * libbalsa/source-viewer.c (libbalsa_show_message_source): use
        it.
        * src/balsa-mime-widget-message.c (add_header_gchar): ditto.
        * src/balsa-mime-widget-text.c (bm_modify_font_from_string):
        ditto.
        * src/sendmsg-window.c (create_email_or_string_entry),
        (create_text_area): ditto.

 ChangeLog                       |   15 ++++++
 libbalsa/misc.c                 |   99 +++++++++++++++++++++++++++++++++++++++
 libbalsa/misc.h                 |    1 +
 libbalsa/source-viewer.c        |    2 +-
 src/balsa-mime-widget-message.c |    9 ++--
 src/balsa-mime-widget-text.c    |    2 +-
 src/sendmsg-window.c            |   10 ++--
 7 files changed, 125 insertions(+), 13 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index c0a8e79..d738134 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2016-11-19  Peter Bloomfield  <pbloomfield bellsouth net>
+
+       Silence some whining about "Using Pango syntax for the font:
+       style property is deprecated; please use CSS syntax".
+
+       * libbalsa/misc.c (libbalsa_font_string_to_css): new function.
+       * libbalsa/misc.h: export it.
+       * libbalsa/source-viewer.c (libbalsa_show_message_source): use
+       it.
+       * src/balsa-mime-widget-message.c (add_header_gchar): ditto.
+       * src/balsa-mime-widget-text.c (bm_modify_font_from_string):
+       ditto.
+       * src/sendmsg-window.c (create_email_or_string_entry),
+       (create_text_area): ditto.
+
 2016-11-15  Peter Bloomfield  <pbloomfield bellsouth net>
 
        Use Unicode characters for double quotation marks and ellipses.
diff --git a/libbalsa/misc.c b/libbalsa/misc.c
index f066944..b29ddf3 100644
--- a/libbalsa/misc.c
+++ b/libbalsa/misc.c
@@ -1355,3 +1355,102 @@ libbalsa_size_to_gchar(guint64 size)
 
     return g_strdup_printf("%" G_GUINT64_FORMAT, size);
 }
+
+gchar *
+libbalsa_font_string_to_css(const gchar * font_string,
+                            const gchar * name)
+{
+    PangoFontDescription *desc;
+    guint mask;
+    GString *string;
+
+    g_return_val_if_fail(font_string != NULL, NULL);
+    g_return_val_if_fail(name != NULL, NULL);
+
+    desc = pango_font_description_from_string(font_string);
+    mask = pango_font_description_get_set_fields(desc);
+
+    string = g_string_new(NULL);
+    g_string_printf(string, "#%s {\n", name);
+
+    if (mask & PANGO_FONT_MASK_FAMILY) {
+        g_string_append_printf(string, "font-family: \"%s\";\n",
+                               pango_font_description_get_family(desc));
+    }
+    if (mask & PANGO_FONT_MASK_STYLE) {
+        const gchar *style = NULL;
+
+        switch (pango_font_description_get_style(desc)) {
+        case PANGO_STYLE_OBLIQUE:
+            style = "oblique";
+            break;
+        case PANGO_STYLE_ITALIC:
+            style = "italic";
+            break;
+        default:
+            break;
+        }
+        if (style != NULL)
+            g_string_append_printf(string, "font-style: %s;\n", style);
+    }
+    if (mask & PANGO_FONT_MASK_VARIANT) {
+        if (pango_font_description_get_variant(desc) ==
+            PANGO_VARIANT_SMALL_CAPS)
+            g_string_append(string, "font-variant: small-caps;\n");
+    }
+    if (mask & PANGO_FONT_MASK_WEIGHT) {
+        PangoWeight weight;
+
+        weight = pango_font_description_get_weight(desc);
+        if (weight != PANGO_WEIGHT_NORMAL)
+            g_string_append_printf(string, " font-weight: %d;\n", weight);
+    }
+    if (mask & PANGO_FONT_MASK_STRETCH) {
+        const gchar *stretch = NULL;
+
+        switch (pango_font_description_get_stretch(desc)) {
+        case PANGO_STRETCH_ULTRA_CONDENSED:
+            stretch = "ultra-condensed";
+            break;
+        case PANGO_STRETCH_EXTRA_CONDENSED:
+            stretch = "extra-condensed";
+            break;
+        case PANGO_STRETCH_CONDENSED:
+            stretch = "condensed";
+            break;
+        case PANGO_STRETCH_SEMI_CONDENSED:
+            stretch = "semi-condensed";
+            break;
+        case PANGO_STRETCH_SEMI_EXPANDED:
+            stretch = "semi-expanded";
+            break;
+        case PANGO_STRETCH_EXPANDED:
+            stretch = "expanded";
+            break;
+        case PANGO_STRETCH_EXTRA_EXPANDED:
+            stretch = "extra-expanded";
+            break;
+        case PANGO_STRETCH_ULTRA_EXPANDED:
+            stretch = "ultra-expanded";
+            break;
+        default:
+            break;
+        }
+        if (stretch != NULL)
+            g_string_append_printf(string, "font-stretch: %s;\n", stretch);
+    }
+    if (mask & PANGO_FONT_MASK_SIZE) {
+        gint size;
+
+        size = pango_font_description_get_size(desc);
+        if (!pango_font_description_get_size_is_absolute(desc))
+            size *= gdk_screen_get_resolution(gdk_screen_get_default()) / 72;
+        size = PANGO_PIXELS(size);
+        g_string_append_printf(string, "font-size: %dpx;\n", size);
+    }
+    g_string_append_c(string, '}');
+
+    pango_font_description_free(desc);
+
+    return g_string_free(string, FALSE);
+}
diff --git a/libbalsa/misc.h b/libbalsa/misc.h
index d77f6b5..fc4d6fb 100644
--- a/libbalsa/misc.h
+++ b/libbalsa/misc.h
@@ -167,5 +167,6 @@ gchar *libbalsa_size_to_gchar(guint64 length);
 
 gchar * libbalsa_text_to_html(const gchar * title, const gchar * body, const gchar * lang);
 GString * libbalsa_html_encode_hyperlinks(GString * paragraph);
+gchar *libbalsa_font_string_to_css(const gchar * font_string, const gchar * name);
 
 #endif                         /* __LIBBALSA_MISC_H__ */
diff --git a/libbalsa/source-viewer.c b/libbalsa/source-viewer.c
index 9952e58..399fc69 100644
--- a/libbalsa/source-viewer.c
+++ b/libbalsa/source-viewer.c
@@ -209,7 +209,7 @@ libbalsa_show_message_source(GtkApplication  * application,
     text = gtk_text_view_new();
 
     gtk_widget_set_name(text, BALSA_SOURCE_VIEWER);
-    css = g_strconcat("#" BALSA_SOURCE_VIEWER " {font:", font, "}", NULL);
+    css = libbalsa_font_string_to_css(font, BALSA_SOURCE_VIEWER);
 
     css_provider = gtk_css_provider_new();
     gtk_css_provider_load_from_data(css_provider, css, -1, NULL);
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 570b2b5..003c9a5 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -571,11 +571,10 @@ add_header_gchar(GtkGrid * grid, const gchar * header, const gchar * label,
         else
             css = g_strdup("");
     } else {
-        css =
-            g_strconcat("#" BALSA_MESSAGE_HEADER " {font:",
-                        strcmp(header, "subject")
-                        ? balsa_app.message_font
-                        : balsa_app.subject_font, "}", NULL);
+        css = libbalsa_font_string_to_css(strcmp(header, "subject")
+                                          ? balsa_app.message_font
+                                          : balsa_app.subject_font,
+                                          BALSA_MESSAGE_HEADER);
     }
 
     css_provider = gtk_css_provider_new();
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index e54069c..4e01557 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -309,7 +309,7 @@ bm_modify_font_from_string(GtkWidget * widget, const char *font)
     GtkCssProvider *css_provider;
 
     gtk_widget_set_name(widget, BALSA_MESSAGE_TEXT_HEADER);
-    css = g_strconcat("#" BALSA_MESSAGE_TEXT_HEADER " {font:", font, "}", NULL);
+    css = libbalsa_font_string_to_css(font, BALSA_MESSAGE_TEXT_HEADER);
 
     css_provider = gtk_css_provider_new();
     gtk_css_provider_load_from_data(css_provider, css, -1, NULL);
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index 7ecffd2..1d2f048 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -2298,9 +2298,8 @@ create_email_or_string_entry(BalsaSendmsg * bsmsg,
         GtkCssProvider *css_provider;
 
         gtk_widget_set_name(arr[1], BALSA_COMPOSE_ENTRY);
-        css =
-            g_strconcat("#" BALSA_COMPOSE_ENTRY " {font:",
-                        balsa_app.message_font, "}", NULL);
+        css = libbalsa_font_string_to_css(balsa_app.message_font,
+                                          BALSA_COMPOSE_ENTRY);
 
         css_provider = gtk_css_provider_new();
         gtk_css_provider_load_from_data(css_provider, css, -1, NULL);
@@ -2870,9 +2869,8 @@ create_text_area(BalsaSendmsg * bsmsg)
         gchar *css;
         GtkCssProvider *css_provider;
 
-        css =
-            g_strconcat("#" BALSA_COMPOSE_ENTRY " {font:",
-                        balsa_app.message_font, "}", NULL);
+        css = libbalsa_font_string_to_css(balsa_app.message_font,
+                                          BALSA_COMPOSE_ENTRY);
 
         css_provider = gtk_css_provider_new();
         gtk_css_provider_load_from_data(css_provider, css, -1, NULL);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]