+ev_password_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EvPasswordDialog *dialog = EV_PASSWORD_DIALOG (object);
+ char *format;
+ char *markup;
+ char *base_name;
+ char *file_name;
+
+ switch (prop_id)
+ {
+ case PROP_URI:
+ dialog->priv->uri = g_strdup (g_value_get_string (value));
+
+ file_name = gnome_vfs_format_uri_for_display (dialog->priv->uri);
+ base_name = g_path_get_basename (file_name);
+ format = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>\n\n%s",
+ _("Password required"),
+ _("The document <i>%s</i> is locked and requires a password before it can be opened."));
+ markup = g_markup_printf_escaped (format, base_name);
+
+ gtk_label_set_markup (GTK_LABEL (dialog->priv->label), markup);
+
+ g_free (base_name);
+ g_free (file_name);
+ g_free (format);
+ g_free (markup);
+
+ ev_password_search_in_keyring (dialog, dialog->priv->uri);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+ev_password_dialog_finalize (GObject *object)
+{
+ EvPasswordDialog *dialog = EV_PASSWORD_DIALOG (object);
+
+ if (dialog->priv->uri) {
+ g_free (dialog->priv->uri);
+ dialog->priv->uri = NULL;
+ }
+
+ G_OBJECT_CLASS (ev_password_dialog_parent_class)->finalize (object);
+}
+
+
+static void
+ev_password_dialog_class_init (EvPasswordDialogClass *class)
+{
+ GObjectClass *g_object_class;
+ GtkWidgetClass *widget_class;
+
+ g_object_class = G_OBJECT_CLASS (class);
+ widget_class = GTK_WIDGET_CLASS (class);
+
+ g_type_class_add_private (g_object_class, sizeof (EvPasswordDialogPrivate));
+
+ g_object_class->set_property = ev_password_dialog_set_property;
+ g_object_class->finalize = ev_password_dialog_finalize;
+
+ g_object_class_install_property (g_object_class,
+ PROP_URI,
+ g_param_spec_string ("uri",
+ "Document URI",
+ "Encrypted document URI",
+ NULL,
+ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+}
+
+
+static void
+ev_password_dialog_init (EvPasswordDialog *dialog)