[balsa] balsa-index: Set the "icon-name" property



commit 4e84888bcf3f518a9642517cbf92419e6e877cf1
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Oct 17 16:41:09 2020 -0400

    balsa-index: Set the "icon-name" property
    
    of the GtkCellRendererPixbufs instead of the "pixbuf" property.
    
    * src/balsa-index.c (balsa_index_init): set the "icon-name" property;
    * src/balsa-icons.c (balsa_register_pixbufs):
        register the address-view icons by name instead of pixbuf.
    * libbalsa/mailbox.c
      (mailbox_model_init): the status and attachment columns are now strings, not pixbufs;
      (mailbox_model_get_value): ditto;
      (libbalsa_mailbox_set_unread_icon), (libbalsa_mailbox_set_trash_icon),
      (libbalsa_mailbox_set_flagged_icon), (libbalsa_mailbox_set_replied_icon),
      (libbalsa_mailbox_set_attach_icon), (libbalsa_mailbox_set_good_icon),
      (libbalsa_mailbox_set_notrust_icon), (libbalsa_mailbox_set_bad_icon),
      (libbalsa_mailbox_set_sign_icon), (libbalsa_mailbox_set_encr_icon):
        the parameter is a string, not a pixbuf;
    * libbalsa/mailbox.h: ditto.

 ChangeLog          | 19 +++++++++++++
 libbalsa/mailbox.c | 81 ++++++++++++++++++------------------------------------
 libbalsa/mailbox.h | 20 +++++++-------
 src/balsa-icons.c  | 71 ++++++++++++-----------------------------------
 src/balsa-index.c  |  4 +--
 5 files changed, 75 insertions(+), 120 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index d93d366ba..7c0baa5a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2020-10-17  Peter Bloomfield  <pbloomfield bellsouth net>
+
+       balsa-index: Set the "icon-name" property of the
+       GtkCellRendererPixbufs instead of the "pixbuf" property.
+
+       * src/balsa-index.c (balsa_index_init): set the "icon-name" property;
+       * src/balsa-icons.c (balsa_register_pixbufs):
+           register the address-view icons by name instead of pixbuf.
+       * libbalsa/mailbox.c (mailbox_model_init): the status and
+           attachment columns are now strings, not pixbufs;
+         (mailbox_model_get_value): ditto;
+         (libbalsa_mailbox_set_unread_icon), (libbalsa_mailbox_set_trash_icon),
+         (libbalsa_mailbox_set_flagged_icon), (libbalsa_mailbox_set_replied_icon),
+         (libbalsa_mailbox_set_attach_icon), (libbalsa_mailbox_set_good_icon),
+         (libbalsa_mailbox_set_notrust_icon), (libbalsa_mailbox_set_bad_icon),
+         (libbalsa_mailbox_set_sign_icon), (libbalsa_mailbox_set_encr_icon):
+           the parameter is a string, not a pixbuf;
+       * libbalsa/mailbox.h: ditto.
+
 2020-10-17  Peter Bloomfield  <pbloomfield bellsouth net>
 
        Address-view: Set the "icon-name" property of the
diff --git a/libbalsa/mailbox.c b/libbalsa/mailbox.c
index 27260f046..8a8b5a9e8 100644
--- a/libbalsa/mailbox.c
+++ b/libbalsa/mailbox.c
@@ -2971,8 +2971,8 @@ mailbox_model_init(GtkTreeModelIface *iface)
     iface->iter_parent     = mailbox_model_iter_parent;
 
     mailbox_model_col_type[LB_MBOX_MSGNO_COL]   = G_TYPE_UINT;
-    mailbox_model_col_type[LB_MBOX_MARKED_COL]  = GDK_TYPE_PIXBUF;
-    mailbox_model_col_type[LB_MBOX_ATTACH_COL]  = GDK_TYPE_PIXBUF;
+    mailbox_model_col_type[LB_MBOX_MARKED_COL]  = G_TYPE_STRING;
+    mailbox_model_col_type[LB_MBOX_ATTACH_COL]  = G_TYPE_STRING;
     mailbox_model_col_type[LB_MBOX_FROM_COL]    = G_TYPE_STRING;
     mailbox_model_col_type[LB_MBOX_SUBJECT_COL] = G_TYPE_STRING;
     mailbox_model_col_type[LB_MBOX_DATE_COL]    = G_TYPE_STRING;
@@ -3096,8 +3096,8 @@ mailbox_model_get_path(GtkTreeModel * tree_model, GtkTreeIter * iter)
   message failed.
 */
 
-static GdkPixbuf *status_icons[LIBBALSA_MESSAGE_STATUS_ICONS_NUM];
-static GdkPixbuf *attach_icons[LIBBALSA_MESSAGE_ATTACH_ICONS_NUM];
+static const char *status_icons[LIBBALSA_MESSAGE_STATUS_ICONS_NUM];
+static const char *attach_icons[LIBBALSA_MESSAGE_ATTACH_ICONS_NUM];
 
 
 /* Protects access to priv->msgnos_pending; */
@@ -3220,11 +3220,11 @@ mailbox_model_get_value(GtkTreeModel *tree_model,
         /* case LB_MBOX_MSGNO_COL: handled above */
     case LB_MBOX_MARKED_COL:
         if (msg && msg->status_icon < LIBBALSA_MESSAGE_STATUS_ICONS_NUM)
-            g_value_set_object(value, status_icons[msg->status_icon]);
+            g_value_set_static_string(value, status_icons[msg->status_icon]);
         break;
     case LB_MBOX_ATTACH_COL:
         if (msg && msg->attach_icon < LIBBALSA_MESSAGE_ATTACH_ICONS_NUM)
-            g_value_set_object(value, attach_icons[msg->attach_icon]);
+            g_value_set_static_string(value, attach_icons[msg->attach_icon]);
         break;
     case LB_MBOX_FROM_COL:
        if(msg) {
@@ -3411,86 +3411,57 @@ mailbox_model_iter_parent(GtkTreeModel     * tree_model,
         return FALSE;
 }
 
-/* Set icons used in tree view. */
-static void
-libbalsa_mailbox_set_icon(GdkPixbuf * pixbuf, GdkPixbuf ** pixbuf_store)
-{
-    if (*pixbuf_store)
-        g_object_unref(*pixbuf_store);
-    *pixbuf_store = pixbuf;
-}
-
 /* Icons for status column. */
 void
-libbalsa_mailbox_set_unread_icon(GdkPixbuf * pixbuf)
+libbalsa_mailbox_set_unread_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &status_icons
-                              [LIBBALSA_MESSAGE_STATUS_UNREAD]);
+    status_icons[LIBBALSA_MESSAGE_STATUS_UNREAD] = name;
 }
 
-void libbalsa_mailbox_set_trash_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_trash_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &status_icons
-                              [LIBBALSA_MESSAGE_STATUS_DELETED]);
+    status_icons[LIBBALSA_MESSAGE_STATUS_DELETED] = name;
 }
 
-void libbalsa_mailbox_set_flagged_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_flagged_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &status_icons
-                              [LIBBALSA_MESSAGE_STATUS_FLAGGED]);
+    status_icons[LIBBALSA_MESSAGE_STATUS_FLAGGED] = name;
 }
 
-void libbalsa_mailbox_set_replied_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_replied_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &status_icons
-                              [LIBBALSA_MESSAGE_STATUS_REPLIED]);
+    status_icons[LIBBALSA_MESSAGE_STATUS_REPLIED] = name;
 }
 
 /* Icons for attachment column. */
-void libbalsa_mailbox_set_attach_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_attach_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_ATTACH]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_ATTACH] = name;
 }
 
-void libbalsa_mailbox_set_good_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_good_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_GOOD]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_GOOD] = name;
 }
 
-void libbalsa_mailbox_set_notrust_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_notrust_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_NOTRUST]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_NOTRUST] = name;
 }
 
-void libbalsa_mailbox_set_bad_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_bad_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_BAD]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_BAD] = name;
 }
 
-void libbalsa_mailbox_set_sign_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_sign_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_SIGN]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_SIGN] = name;
 }
 
-void libbalsa_mailbox_set_encr_icon(GdkPixbuf * pixbuf)
+void libbalsa_mailbox_set_encr_icon(const char *name)
 {
-    libbalsa_mailbox_set_icon(pixbuf,
-                              &attach_icons
-                              [LIBBALSA_MESSAGE_ATTACH_ENCR]);
+    attach_icons[LIBBALSA_MESSAGE_ATTACH_ENCR] = name;
 }
 
 /* =================================================================== *
diff --git a/libbalsa/mailbox.h b/libbalsa/mailbox.h
index 617dccd86..c34238c0b 100644
--- a/libbalsa/mailbox.h
+++ b/libbalsa/mailbox.h
@@ -532,16 +532,16 @@ gboolean libbalsa_mailbox_msgno_has_flags(LibBalsaMailbox * mailbox,
                                           LibBalsaMessageFlag unset);
 
 /* set icons */
-void libbalsa_mailbox_set_unread_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_trash_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_flagged_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_replied_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_attach_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_good_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_notrust_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_bad_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_sign_icon(GdkPixbuf * pixbuf);
-void libbalsa_mailbox_set_encr_icon(GdkPixbuf * pixbuf);
+void libbalsa_mailbox_set_unread_icon(const char *name);
+void libbalsa_mailbox_set_trash_icon(const char *name);
+void libbalsa_mailbox_set_flagged_icon(const char *name);
+void libbalsa_mailbox_set_replied_icon(const char *name);
+void libbalsa_mailbox_set_attach_icon(const char *name);
+void libbalsa_mailbox_set_good_icon(const char *name);
+void libbalsa_mailbox_set_notrust_icon(const char *name);
+void libbalsa_mailbox_set_bad_icon(const char *name);
+void libbalsa_mailbox_set_sign_icon(const char *name);
+void libbalsa_mailbox_set_encr_icon(const char *name);
 
 /* Partial messages */
 void libbalsa_mailbox_try_reassemble(LibBalsaMailbox * mailbox,
diff --git a/src/balsa-icons.c b/src/balsa-icons.c
index 4057d8f7a..6b2eb6a59 100644
--- a/src/balsa-icons.c
+++ b/src/balsa-icons.c
@@ -186,59 +186,24 @@ balsa_unregister_pixmaps(void)
 void
 balsa_register_pixbufs(GtkWidget * widget)
 {
-    static struct {
-       void (*set_icon_pixbuf) (GdkPixbuf *);
-       const char *icon;
-    } icon_pixbufs[] = {
-       {libbalsa_mailbox_set_unread_icon,  BALSA_PIXMAP_INFO_NEW},
-       {libbalsa_mailbox_set_trash_icon,   BALSA_PIXMAP_INFO_DELETED},
-       {libbalsa_mailbox_set_flagged_icon, BALSA_PIXMAP_INFO_FLAGGED},
-       {libbalsa_mailbox_set_replied_icon, BALSA_PIXMAP_INFO_REPLIED},
-       {libbalsa_mailbox_set_attach_icon, BALSA_PIXMAP_INFO_ATTACHMENT},
-       {libbalsa_mailbox_set_good_icon, BALSA_PIXMAP_SIGN_GOOD},
-       {libbalsa_mailbox_set_notrust_icon, BALSA_PIXMAP_SIGN_NOTRUST},
-       {libbalsa_mailbox_set_bad_icon, BALSA_PIXMAP_SIGN_BAD},
-       {libbalsa_mailbox_set_sign_icon, BALSA_PIXMAP_SIGN},
-       {libbalsa_mailbox_set_encr_icon, BALSA_PIXMAP_ENCR},
-    };
-
-    static struct {
-       void (*set_icon_name) (const char *);
-       const char *icon;
-    } icon_names[] = {
-        {libbalsa_address_view_set_book_icon,  "stock_book_red"},
-        {libbalsa_address_view_set_close_icon, "window-close-symbolic"},
-        {libbalsa_address_view_set_drop_down_icon, "pan-down-symbolic"},
-    };
-
-    unsigned i;
-    GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
-
-    for (i = 0; i < G_N_ELEMENTS(icon_pixbufs); i++) {
-        GdkPixbuf *pixbuf;
-        GError *err = NULL;
-        int width, height;
-        const char *use_id = balsa_icon_id(icon_pixbufs[i].icon);
-
-        if (use_id == NULL) /* No icon table */
-            break;
-
-        gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height);
-        pixbuf =
-            gtk_icon_theme_load_icon(icon_theme, use_id, width,
-                                     GTK_ICON_LOOKUP_USE_BUILTIN, &err);
-        if (err) {
-            g_warning("%s %s size %d err %s", __func__, use_id,
-                    width, err->message);
-            g_clear_error(&err);
-        } else {
-            icon_pixbufs[i].set_icon_pixbuf(pixbuf);
-        }
-    }
-
-    for (i = 0; i < G_N_ELEMENTS(icon_names); i++) {
-        icon_names[i].set_icon_name(icon_names[i].icon);
-    }
+    /* Icons for mailbox status column: */
+    libbalsa_mailbox_set_unread_icon("mail-unread");
+    libbalsa_mailbox_set_replied_icon("mail-replied");
+    libbalsa_mailbox_set_trash_icon("edit-delete");
+    libbalsa_mailbox_set_flagged_icon("emblem-important");
+
+    /* Icons for mailbox attachment column: */
+    libbalsa_mailbox_set_attach_icon("mail-attachment");
+    libbalsa_mailbox_set_good_icon("balsa-signature-good");
+    libbalsa_mailbox_set_notrust_icon("balsa-signature-notrust");
+    libbalsa_mailbox_set_bad_icon("balsa-signature-bad");
+    libbalsa_mailbox_set_sign_icon("balsa-signature-unknown");
+    libbalsa_mailbox_set_encr_icon("balsa-encrypted");
+
+    /* Icons for address-view: */
+    libbalsa_address_view_set_book_icon("stock_book_red");
+    libbalsa_address_view_set_close_icon("window-close-symbolic");
+    libbalsa_address_view_set_drop_down_icon("pan-down-symbolic");
 }
 
 const gchar *
diff --git a/src/balsa-index.c b/src/balsa-index.c
index 903d45d4e..70b721993 100644
--- a/src/balsa-index.c
+++ b/src/balsa-index.c
@@ -384,7 +384,7 @@ balsa_index_init(BalsaIndex * index)
     gtk_cell_renderer_set_fixed_size(renderer, -1, height);
     column = gtk_tree_view_column_new_with_attributes
         ("S", renderer,
-         "pixbuf",              LB_MBOX_MARKED_COL,
+         "icon-name",           LB_MBOX_MARKED_COL,
          "cell-background",     LB_MBOX_BACKGROUND_COL,
          "cell-background-set", LB_MBOX_BACKGROUND_SET_COL,
          NULL);
@@ -396,7 +396,7 @@ balsa_index_init(BalsaIndex * index)
     gtk_cell_renderer_set_fixed_size(renderer, -1, height);
     column = gtk_tree_view_column_new_with_attributes
         ("A", renderer,
-         "pixbuf",              LB_MBOX_ATTACH_COL,
+         "icon-name",           LB_MBOX_ATTACH_COL,
          "cell-background",     LB_MBOX_BACKGROUND_COL,
          "cell-background-set", LB_MBOX_BACKGROUND_SET_COL,
          NULL);


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