[Patch] Crypto eye candies

Albrecht Dreß <[email protected]> Wed, 22 Jan 2020 22:04:09 +0100
Newsgroups gmane.comp.gnome.apps.balsa
Message-ID <[email protected]>
Hi all,

I currently try to convince a colleague to use Balsa, and he mentioned some issues (more to come later) – here is a patch for a few more cosmetic ones which are easy to fix:

- If the signature status is /very/ long (as for an expired key in German translation), the message in the header box or in the expander label at the bottom may prevent the message from shrinking horizontally.  Solution: enable label line wrap
- In the signature status box at the bottom, if the labels in the 2nd column wrap, the label in the 1st column is vertically centred which looks ugly.  Solution: use gtk_label_set_yalign()
- The wrapped label is centred in the column, not aligned at the left.  Solution: use gtk_label_set_xalign()
- The meaning of the blue/green/yellow/red padlock icons is not obvious.  Solution: add tooltip (this may be controversial as we didn't use tooltips yet, but it's an easy and intuitive solution).

The attached patch is suitable for both the master and gmime branches.  Note that it may produce offset warnings in combination with the “Bug fix: S/MIME cert chain broken in identity key selection” I sent earlier this evening, but should work anyway.

BTW, the gtk_label_set_xalign(…, 0.0F) trick might be helpful in several other places, too – e.g. for the message headers.  All long ones (like Received:) look really ugly!

Opinions?

Cheers,
Albrecht.

---
Patch details:
- libbalsa/libbalsa-gpgme-widgets.c: improve xalign and yalign properties of labels in signature and key details widgets
- src/balsa-mime-widget-crypto.c: balsa_mime_widget_signature_widget: wrap/align signature status in expander label; balsa_mime_widget_crypto_frame: add tooltips to padlock icons
- src/balsa-mime-widget-message.c: add_header_sigstate: wrap/align signature status in headers box

_______________________________________________
balsa-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/balsa-list
crypto-eye-candies.diff (text/x-patch, 5.1 KB)
diff --git a/libbalsa/libbalsa-gpgme-widgets.c b/libbalsa/libbalsa-gpgme-widgets.c
index 70112e80b..0bdff701a 100644
--- a/libbalsa/libbalsa-gpgme-widgets.c
+++ b/libbalsa/libbalsa-gpgme-widgets.c
@@ -108,6 +108,7 @@ libbalsa_gpgme_key(const gpgme_key_t     key,
 			label = gtk_label_new(_("User ID:"));
 		}
 		gtk_widget_set_halign(label, GTK_ALIGN_START);
+		gtk_label_set_yalign(GTK_LABEL(label), 0.0F);
 		gtk_grid_attach(GTK_GRID(key_data), label, 0, row, 1, 1);
 
 		gtk_grid_attach(GTK_GRID(key_data), create_key_uid_widget(key->uids), 1, row++, 1, 1);
@@ -535,6 +542,7 @@ create_key_grid_row(GtkGrid     *grid,
 
 	label = gtk_label_new(key);
 	gtk_widget_set_halign(label, GTK_ALIGN_START);
+	gtk_label_set_yalign(GTK_LABEL(label), 0.0F);
 	gtk_grid_attach(GTK_GRID(grid), label, 0, row, 1, 1);
 
 	label = create_key_label_with_warn(value, warn);
@@ -604,6 +612,7 @@ create_key_label_with_warn(const gchar *text,
 		gtk_widget_set_hexpand(label, TRUE);
 		gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
 		gtk_label_set_selectable(GTK_LABEL(label), TRUE);
+		gtk_label_set_xalign(GTK_LABEL(label), 0.0F);
 		gtk_box_pack_start(GTK_BOX(result), label, FALSE, TRUE, 0U);
 	} else {
 		result = gtk_label_new(text);
@@ -611,6 +620,7 @@ create_key_label_with_warn(const gchar *text,
 		gtk_widget_set_hexpand(result, TRUE);
 		gtk_label_set_selectable(GTK_LABEL(result), TRUE);
 		gtk_label_set_line_wrap(GTK_LABEL(result), TRUE);
+		gtk_label_set_xalign(GTK_LABEL(result), 0.0F);
 	}
 
 	return result;
diff --git a/src/balsa-mime-widget-crypto.c b/src/balsa-mime-widget-crypto.c
index 8e32d05f1..31fc160c2 100644
--- a/src/balsa-mime-widget-crypto.c
+++ b/src/balsa-mime-widget-crypto.c
@@ -161,6 +161,9 @@ balsa_mime_widget_signature_widget(LibBalsaMessageBody * mime_body,
      * the label... */
     signature_widget = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
     expander = gtk_expander_new(lines[0]);
+    label = gtk_expander_get_label_widget(GTK_EXPANDER(expander));
+    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_xalign(GTK_LABEL(label), 0.0F);
     gtk_container_add(GTK_CONTAINER(signature_widget), expander);
     gtk_container_add(GTK_CONTAINER(expander), vbox);
 
@@ -180,26 +183,39 @@ balsa_mime_widget_crypto_frame(LibBalsaMessageBody * mime_body, GtkWidget * chil
     GtkWidget * frame;
     GtkWidget * vbox;
     GtkWidget * icon_box;
+    GtkWidget *icon;
 
     frame = gtk_frame_new(NULL);
     vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, BMW_VBOX_SPACE);
     gtk_container_add(GTK_CONTAINER(frame), vbox);
     icon_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, BMW_VBOX_SPACE);
-    if (was_encrypted)
-        gtk_box_pack_start(GTK_BOX(icon_box),
-                           gtk_image_new_from_icon_name
-                           (balsa_icon_id(BALSA_PIXMAP_ENCR),
-                            GTK_ICON_SIZE_MENU),
-                           FALSE, FALSE, 0);
+    if (was_encrypted) {
+    	icon = gtk_image_new_from_icon_name(balsa_icon_id(BALSA_PIXMAP_ENCR), GTK_ICON_SIZE_MENU);
+    	gtk_widget_set_tooltip_text(icon, _("decrypted"));
+        gtk_box_pack_start(GTK_BOX(icon_box), icon, FALSE, FALSE, 0);
+    }
     if (!no_signature) {
-	const gchar * icon_name =
-	    balsa_mime_widget_signature_icon_name(libbalsa_message_body_protect_state(mime_body));
-	if (!icon_name)
-	    icon_name = BALSA_PIXMAP_SIGN;
-        gtk_box_pack_start(GTK_BOX(icon_box),
-                           gtk_image_new_from_icon_name
-                           (balsa_icon_id(icon_name), GTK_ICON_SIZE_MENU),
-                           FALSE, FALSE, 0);
+    	LibBalsaMsgProtectState sig_state = libbalsa_message_body_protect_state(mime_body);
+    	const gchar *icon_name = balsa_mime_widget_signature_icon_name(sig_state);
+
+    	if (icon_name == NULL) {
+    		icon_name = BALSA_PIXMAP_SIGN;
+    	}
+		icon = gtk_image_new_from_icon_name(balsa_icon_id(icon_name), GTK_ICON_SIZE_MENU);
+    	switch (sig_state) {
+    	case LIBBALSA_MSG_PROTECT_SIGN_GOOD:
+    		gtk_widget_set_tooltip_text(icon, _("trusted signature"));
+    		break;
+    	case LIBBALSA_MSG_PROTECT_SIGN_NOTRUST:
+    		gtk_widget_set_tooltip_text(icon, _("low trust signature"));
+    		break;
+    	case LIBBALSA_MSG_PROTECT_SIGN_BAD:
+    		gtk_widget_set_tooltip_text(icon, _("bad signature"));
+    		break;
+    	default:
+    		gtk_widget_set_tooltip_text(icon, _("unknown signature status"));
+    	}
+        gtk_box_pack_start(GTK_BOX(icon_box), icon, FALSE, FALSE, 0);
     }
     gtk_frame_set_label_widget(GTK_FRAME(frame), icon_box);
     gtk_container_set_border_width(GTK_CONTAINER(vbox), BMW_MESSAGE_PADDING);
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 6d1e7e0e7..199ef49a9 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -868,6 +868,8 @@ add_header_sigstate(GtkGrid * grid, GMimeGpgmeSigstat * siginfo)
     gtk_label_set_markup(GTK_LABEL(label), msg);
     g_free(msg);
     gtk_widget_set_halign(label, GTK_ALIGN_START);
+    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_xalign(GTK_LABEL(label), 0.0F);
     gtk_widget_show(label);
 
     gtk_grid_attach_next_to(grid, label, NULL, GTK_POS_BOTTOM, 2, 1);
signature.asc (application/pgp-signature, 488 B)
-----BEGIN PGP SIGNATURE-----

iQEzBAABCgAdFiEEcCEPemLFTtyGf4zATKlvDmfn2fgFAl4ouMkACgkQTKlvDmfn
2fiQpwf+MjvARDy7iuPwBuuGcNvF2U6Xp1qPXE03K4Y1CuFqSpY3pizn6oEJmQfP
+X8qwEN8D1l3ssPGZuMEbE92Y+dkLXj8moZNFrWTLt1WYhbfWcnFi/ylJaNABB0F
4jJgHIMdbqgxJGSexZLZy3P/uv1nvEHNLdNZNUXBNc0Rh449a32JC3E5G1S0LG0l
WlzR6NKnl+SnvwTGXR53IEzllcoSZOr6KZqy02iKQ9fsWsxSaI14ZLEGP0+e7P7y
Is0qjbwZYkA+wOAXRDKrJMpCIdnhnjuMhr+jHQ6PoX2Gw57WbrM9pdwx3+2AIZib
baHMUI06a6BHBzcfSs3066CpKM5u3w==
=vwTl
-----END PGP SIGNATURE-----