+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;
+ GFile *file;
+
+ switch (prop_id) {
+ case PROP_URI:
+ dialog->priv->uri = g_strdup (g_value_get_string (value));
+
+ file = g_file_new_for_uri (dialog->priv->uri);
+
+ base_name = g_file_get_basename (file);
+ format = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>\n\n%s",
+ _("Password required"),
+ _("The document ā%sā 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 (format);
+ g_free (markup);
+ g_object_unref (file);
+
+ 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)