1 /* this file is part of evince, a gnome document viewer
3 * Copyright (C) 2005 Red Hat, Inc
5 * Evince is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * Evince is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
24 #include "ev-password.h"
25 #include <glib/gi18n.h>
27 #include <glade/glade.h>
29 #define EV_PASSWORD_DATA "ev-password-data"
32 ev_password_set_bad_password_label (GtkWidget *password,
39 xml = g_object_get_data (G_OBJECT (password), EV_PASSWORD_DATA);
42 label = glade_xml_get_widget (xml, "bad_password_label");
43 markup = g_strdup_printf ("<span color=\"red\" size=\"smaller\">%s</span>",
45 gtk_label_set_markup (GTK_LABEL (label), markup);
50 ev_window_password_entry_changed_cb (GtkEditable *editable,
57 xml = g_object_get_data (G_OBJECT (password), EV_PASSWORD_DATA);
60 text = gtk_entry_get_text (GTK_ENTRY (editable));
61 button = glade_xml_get_widget (xml, "ok_button");
63 if (text == NULL || *text == '\0')
64 gtk_widget_set_sensitive (button, FALSE);
66 gtk_widget_set_sensitive (button, TRUE);
68 ev_password_set_bad_password_label (password, " ");
72 ev_password_dialog_new (GtkWidget *toplevel,
75 const char *glade_file = DATADIR "/evince-password.glade";
77 GtkWidget *dialog, *label;
82 xml = glade_xml_new (glade_file, NULL, NULL);
84 dialog = gtk_message_dialog_new (GTK_WINDOW (toplevel),
85 GTK_DIALOG_DESTROY_WITH_PARENT,
88 _("Unable to find glade file"));
89 gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
90 _("The glade file, %s, cannot be found. Please check that your installation is complete."),
92 gtk_dialog_run (GTK_DIALOG (dialog));
93 gtk_widget_destroy (dialog);
97 dialog = glade_xml_get_widget (xml, "password_dialog");
98 label = glade_xml_get_widget (xml, "password_label");
99 entry = glade_xml_get_widget (xml, "password_entry");
101 gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (toplevel));
102 g_signal_connect (entry, "changed", G_CALLBACK (ev_window_password_entry_changed_cb), dialog);
103 format = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>\n\n%s",
104 _("Password required"),
105 _("The document <i>%s</i> is locked and requires a password before it can be opened."));
106 markup = g_markup_printf_escaped (format, uri);
107 gtk_label_set_markup (GTK_LABEL (label), markup);
111 g_object_set_data_full (G_OBJECT (dialog), EV_PASSWORD_DATA, xml, g_object_unref);
112 ev_password_set_bad_password_label (dialog, " ");
118 ev_password_dialog_get_password (GtkWidget *password)
123 xml = g_object_get_data (G_OBJECT (password), EV_PASSWORD_DATA);
126 entry = glade_xml_get_widget (xml, "password_entry");
128 return g_strdup (gtk_entry_get_text (GTK_ENTRY (entry)));
132 ev_password_dialog_set_bad_pass (GtkWidget *password)
137 xml = g_object_get_data (G_OBJECT (password), EV_PASSWORD_DATA);
140 entry = glade_xml_get_widget (xml, "password_entry");
141 gtk_entry_set_text (GTK_ENTRY (entry), "");
142 ev_password_set_bad_password_label (password, _("Incorrect password"));