[gnome-keyring/ui-widgets: 7/7] [gcr] Get ready for screenshots in GUADEC presentation



commit 0c5f3d6115305e3085dd76a71c8955b5e16aedbf
Author: Stef Walter <stef memberwebs com>
Date:   Tue Jul 27 06:00:23 2010 +0000

    [gcr] Get ready for screenshots in GUADEC presentation

 gcr/gcr-certificate-widget.c    |    6 +++++
 gcr/gcr-display-view.c          |    4 +-
 gcr/gcr-key-widget.c            |   12 ++++++++++
 gcr/tests/ui-test-certificate.c |   44 +++++++++++++++++++++++++-------------
 gcr/tests/ui-test-key.c         |    3 +-
 5 files changed, 51 insertions(+), 18 deletions(-)
---
diff --git a/gcr/gcr-certificate-widget.c b/gcr/gcr-certificate-widget.c
index 7a55a6e..d6ef235 100644
--- a/gcr/gcr-certificate-widget.c
+++ b/gcr/gcr-certificate-widget.c
@@ -180,6 +180,9 @@ refresh_display (GcrCertificateWidget *self)
 	GQuark oid;
 	GDate date;
 
+	if (!self->pv->view)
+		return;
+
 	_gcr_display_view_clear (self->pv->view);
 
 	if (!self->pv->certificate)
@@ -336,6 +339,7 @@ gcr_certificate_widget_constructor (GType type, guint n_props, GObjectConstructP
 	_gcr_display_view_set_stock_image (self->pv->view, GCR_ICON_CERTIFICATE);
 
 	scroll = gtk_scrolled_window_new (NULL, NULL);
+	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN);
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 	gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (self->pv->view));
 
@@ -396,6 +400,7 @@ gcr_certificate_widget_set_property (GObject *obj, guint prop_id, const GValue *
 		g_free (self->pv->label);
 		self->pv->label = g_value_dup_string (value);
 		g_object_notify (obj, "label");
+		refresh_display (self);
 		break;
 	case PROP_ATTRIBUTES:
 		g_return_if_fail (!self->pv->attributes);
@@ -410,6 +415,7 @@ gcr_certificate_widget_set_property (GObject *obj, guint prop_id, const GValue *
 				                        (GDestroyNotify)gp11_attributes_unref);
 				gcr_certificate_widget_set_certificate (self, cert);
 				g_object_unref (cert);
+				refresh_display (self);
 			}
 		}
 		break;
diff --git a/gcr/gcr-display-view.c b/gcr/gcr-display-view.c
index 0e8cd71..d84027a 100644
--- a/gcr/gcr-display-view.c
+++ b/gcr/gcr-display-view.c
@@ -28,7 +28,7 @@
 
 G_DEFINE_TYPE (GcrDisplayView, _gcr_display_view, GTK_TYPE_TEXT_VIEW);
 
-#define NORMAL_MARGIN 5
+#define NORMAL_MARGIN 10
 #define FIELD_MARGIN 17
 #define COLUMN_MARGIN 6
 #define ICON_MARGIN 8
@@ -175,7 +175,7 @@ _gcr_display_view_constructor (GType type, guint n_props, GObjectConstructParam
 	on_expander_expanded (G_OBJECT (widget), NULL, self);
 
 	alignment = gtk_alignment_new (0.5, 0.5, 0.5, 0.5);
-	gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+	gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 9, 0, 0);
 	gtk_container_add (GTK_CONTAINER (alignment), widget);
 	gtk_widget_show_all (alignment);
 
diff --git a/gcr/gcr-key-widget.c b/gcr/gcr-key-widget.c
index 60b1ddc..bfdf77d 100644
--- a/gcr/gcr-key-widget.c
+++ b/gcr/gcr-key-widget.c
@@ -127,6 +127,9 @@ refresh_display (GcrKeyWidget *self)
 	gulong key_type;
 	gint size;
 
+	if (!self->pv->view)
+		return;
+
 	_gcr_display_view_clear (self->pv->view);
 
 	if (!self->pv->attributes)
@@ -160,6 +163,13 @@ refresh_display (GcrKeyWidget *self)
 
 	_gcr_display_view_append_content (self->pv->view, text, NULL);
 
+	size = calculate_key_size (self->pv->attributes, key_type);
+	if (size >= 0) {
+		display = g_strdup_printf (_("%d bits"), size);
+		_gcr_display_view_append_content (self->pv->view, _("Strength"), display);
+		g_free (display);
+	}
+
 	_gcr_display_view_start_details (self->pv->view);
 
 
@@ -203,6 +213,7 @@ gcr_key_widget_constructor (GType type, guint n_props, GObjectConstructParam *pr
 
 	scroll = gtk_scrolled_window_new (NULL, NULL);
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), GTK_SHADOW_ETCHED_IN);
 	gtk_container_add (GTK_CONTAINER (scroll), GTK_WIDGET (self->pv->view));
 
 	gtk_container_add (GTK_CONTAINER (self), scroll);
@@ -251,6 +262,7 @@ gcr_key_widget_set_property (GObject *obj, guint prop_id, const GValue *value,
 		g_free (self->pv->label);
 		self->pv->label = g_value_dup_string (value);
 		g_object_notify (obj, "label");
+		refresh_display (self);
 		break;
 	case PROP_ATTRIBUTES:
 		g_return_if_fail (!self->pv->attributes);
diff --git a/gcr/tests/ui-test-certificate.c b/gcr/tests/ui-test-certificate.c
index 8711e7f..fdec278 100644
--- a/gcr/tests/ui-test-certificate.c
+++ b/gcr/tests/ui-test-certificate.c
@@ -32,46 +32,60 @@ chdir_base_dir (char* argv0)
 }
 
 static void
-test_details (const gchar *path)
+on_parser_parsed (GcrParser *parser, gpointer unused)
 {
 	GcrCertificateWidget *details;
-	GcrCertificate *certificate;
 	GtkDialog *dialog;
-	guchar *data;
-	gsize n_data;
-
-	if (!g_file_get_contents (path, (gchar**)&data, &n_data, NULL))
-		g_error ("couldn't read file: %s", path);
-
-	certificate = gcr_simple_certificate_new (data, n_data);
-	g_assert (certificate);
-	g_free (data);
 
 	dialog = GTK_DIALOG (gtk_dialog_new ());
 	g_object_ref_sink (dialog);
 
-	details = gcr_certificate_widget_new (certificate);
+	details = g_object_new (GCR_TYPE_CERTIFICATE_WIDGET,
+	                        "label", "Google's Certificate",
+	                        "attributes", gcr_parser_get_parsed_attributes (parser),
+	                        NULL);
+
 	gtk_widget_show (GTK_WIDGET (details));
 	gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (dialog)), GTK_WIDGET (details));
 
 	gtk_window_set_default_size (GTK_WINDOW (dialog), 550, 400);
+	gtk_container_set_border_width (GTK_CONTAINER (dialog), 20);
 	gtk_dialog_run (dialog);
 
 	g_object_unref (dialog);
-	g_object_unref (certificate);
 	g_object_unref (details);
 }
 
+static void
+test_certificate (const gchar *path)
+{
+	GcrParser *parser;
+	GError *err = NULL;
+	guchar *data;
+	gsize n_data;
+
+	if (!g_file_get_contents (path, (gchar**)&data, &n_data, NULL))
+		g_error ("couldn't read file: %s", path);
+
+	parser = gcr_parser_new ();
+	g_signal_connect (parser, "parsed", G_CALLBACK (on_parser_parsed), NULL);
+	if (!gcr_parser_parse_data (parser, data, n_data, &err))
+		g_error ("couldn't parse data: %s", err->message);
+
+	g_object_unref (parser);
+	g_free (data);
+}
+
 int
 main(int argc, char *argv[])
 {
 	gtk_init (&argc, &argv);
 
 	if (argc > 1) {
-		test_details (argv[1]);
+		test_certificate (argv[1]);
 	} else {
 		chdir_base_dir (argv[0]);
-		test_details ("test-data/der-certificate.crt");
+		test_certificate ("test-data/der-certificate.crt");
 	}
 
 	return 0;
diff --git a/gcr/tests/ui-test-key.c b/gcr/tests/ui-test-key.c
index 2d2403d..e54c7b4 100644
--- a/gcr/tests/ui-test-key.c
+++ b/gcr/tests/ui-test-key.c
@@ -40,12 +40,13 @@ on_parser_parsed (GcrParser *parser, gpointer unused)
 	dialog = GTK_DIALOG (gtk_dialog_new ());
 	g_object_ref_sink (dialog);
 
-	details = gcr_key_widget_new (gcr_parser_get_parsed_label (parser),
+	details = gcr_key_widget_new ("My Private Key",
 	                              gcr_parser_get_parsed_attributes (parser));
 	gtk_widget_show (GTK_WIDGET (details));
 	gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (dialog)), GTK_WIDGET (details));
 
 	gtk_window_set_default_size (GTK_WINDOW (dialog), 550, 400);
+	gtk_container_set_border_width (GTK_CONTAINER (dialog), 20);
 	gtk_dialog_run (dialog);
 
 	g_object_unref (dialog);



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