diff options
author | Jonathan Blandford <jrb@redhat.com> | 2005-01-19 06:12:27 (GMT) |
---|---|---|
committer | Jonathan Blandford <jrb@src.gnome.org> | 2005-01-19 06:12:27 (GMT) |
commit | 53d25856dc1f8997ce4d142486e2c720fe0e2100 (patch) | |
tree | 48cf5f88b7f713c7d7bde087cdda671ee4118273 /backend | |
parent | a6a2ea2c622e2df3a49ab2d63f6028dec5712e50 (diff) |
Add initial support for password-supported dialogs. This could be a lot
Wed Jan 19 01:10:57 2005 Jonathan Blandford <jrb@redhat.com>
* backend/Makefile.am:
* backend/ev-document-links.h:
* backend/ev-document-security.c: (ev_document_security_get_type),
(ev_document_security_has_document_security),
(ev_document_security_set_password):
* backend/ev-document-security.h:
* backend/ev-document.c: (ev_document_error_quark):
* backend/ev-document.h:
* data/Makefile.am:
* data/evince-password.glade:
* pdf/xpdf/pdf-document.cc:
* shell/Makefile.am:
* shell/ev-password.c: (ev_password_set_bad_password_label),
(ev_window_password_entry_changed_cb), (ev_password_dialog_new),
(ev_password_dialog_get_password),
(ev_password_dialog_set_bad_pass):
* shell/ev-password.h:
* shell/ev-window.c: (ev_window_get_attribute),
(ev_window_set_property), (update_action_sensitivity),
(ev_window_is_empty), (mime_type_supported_by_gdk_pixbuf),
(ev_window_setup_document), (ev_window_get_password),
(ev_window_open), (ev_window_cmd_save_as),
(using_postscript_printer), (ev_window_print),
(find_not_supported_dialog), (ev_window_cmd_edit_find),
(update_fullscreen_popup), (ev_window_fullscreen),
(ev_window_unfullscreen), (ev_window_cmd_view_fullscreen),
(ev_window_focus_out_cb), (ev_window_cmd_help_about),
(menu_item_select_cb), (find_bar_search_changed_cb),
(ev_window_dispose), (ev_window_init):
Add initial support for password-supported dialogs. This could be
a lot cooler, but it'll do for now.
Diffstat (limited to 'backend')
-rw-r--r-- | backend/Makefile.am | 2 | ||||
-rw-r--r-- | backend/ev-document-links.h | 2 | ||||
-rw-r--r-- | backend/ev-document-security.c | 63 | ||||
-rw-r--r-- | backend/ev-document-security.h | 63 | ||||
-rw-r--r-- | backend/ev-document.c | 10 | ||||
-rw-r--r-- | backend/ev-document.h | 13 |
6 files changed, 151 insertions, 2 deletions
diff --git a/backend/Makefile.am b/backend/Makefile.am index ea599fd..9030333 100644 --- a/backend/Makefile.am +++ b/backend/Makefile.am @@ -19,6 +19,8 @@ libevbackend_la_SOURCES= \ ev-document-thumbnails.h \ ev-document-links.c \ ev-document-links.h \ + ev-document-security.c \ + ev-document-security.h \ ev-document-find.c \ ev-document-find.h \ ev-ps-exporter.c \ diff --git a/backend/ev-document-links.h b/backend/ev-document-links.h index 4576e8c..59e638b 100644 --- a/backend/ev-document-links.h +++ b/backend/ev-document-links.h @@ -1,5 +1,5 @@ /* ev-document-links.h - * this file is part of evince, a gnome document_links viewer + * this file is part of evince, a gnome document viewer * * Copyright (C) 2004 Red Hat, Inc. * diff --git a/backend/ev-document-security.c b/backend/ev-document-security.c new file mode 100644 index 0000000..5458ccc --- /dev/null +++ b/backend/ev-document-security.c @@ -0,0 +1,63 @@ +/* ev-document-links.h + * this file is part of evince, a gnome document_links viewer + * + * Copyright (C) 2004 Red Hat, Inc. + * + * Author: + * Jonathan Blandford <jrb@alum.mit.edu> + * + * Evince is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Evince is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "config.h" + +#include "ev-document-security.h" + +GType +ev_document_security_get_type (void) +{ + static GType type = 0; + + if (G_UNLIKELY (type == 0)) + { + static const GTypeInfo our_info = + { + sizeof (EvDocumentSecurityIface), + NULL, + NULL, + }; + + type = g_type_register_static (G_TYPE_INTERFACE, + "EvDocumentSecurity", + &our_info, (GTypeFlags)0); + } + + return type; +} + +gboolean +ev_document_security_has_document_security (EvDocumentSecurity *document_security) +{ + EvDocumentSecurityIface *iface = EV_DOCUMENT_SECURITY_GET_IFACE (document_security); + return iface->has_document_security (document_security); +} + +void +ev_document_security_set_password (EvDocumentSecurity *document_security, + const char *password) +{ + EvDocumentSecurityIface *iface = EV_DOCUMENT_SECURITY_GET_IFACE (document_security); + iface->set_password (document_security, password); +} diff --git a/backend/ev-document-security.h b/backend/ev-document-security.h new file mode 100644 index 0000000..154a3b1 --- /dev/null +++ b/backend/ev-document-security.h @@ -0,0 +1,63 @@ +/* ev-document-security.h + * this file is part of evince, a gnome pdf viewer + * + * Copyright (C) 2005 Red Hat, Inc. + * + * Author: + * Jonathan Blandford <jrb@alum.mit.edu> + * + * Evince is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Evince is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef EV_DOCUMENT_SECURITY_H +#define EV_DOCUMENT_SECURITY_H + +#include <glib-object.h> +#include <glib.h> +#include <gdk/gdk.h> + +#include "ev-document.h" + +G_BEGIN_DECLS + + +#define EV_TYPE_DOCUMENT_SECURITY (ev_document_security_get_type ()) +#define EV_DOCUMENT_SECURITY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EV_TYPE_DOCUMENT_SECURITY, EvDocumentSecurity)) +#define EV_DOCUMENT_SECURITY_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EV_TYPE_DOCUMENT_SECURITY, EvDocumentSecurityIface)) +#define EV_IS_DOCUMENT_SECURITY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EV_TYPE_DOCUMENT_SECURITY)) +#define EV_IS_DOCUMENT_SECURITY_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EV_TYPE_DOCUMENT_SECURITY)) +#define EV_DOCUMENT_SECURITY_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EV_TYPE_DOCUMENT_SECURITY, EvDocumentSecurityIface)) + +typedef struct _EvDocumentSecurity EvDocumentSecurity; +typedef struct _EvDocumentSecurityIface EvDocumentSecurityIface; + +struct _EvDocumentSecurityIface +{ + GTypeInterface base_iface; + + /* Methods */ + gboolean (* has_document_security) (EvDocumentSecurity *document_security); + void (* set_password) (EvDocumentSecurity *document_security, + const char *password); +}; + +GType ev_document_security_get_type (void); +gboolean ev_document_security_has_document_security (EvDocumentSecurity *document_security); +void ev_document_security_set_password (EvDocumentSecurity *document_security, + const char *password); + +G_END_DECLS + +#endif diff --git a/backend/ev-document.c b/backend/ev-document.c index a8de9a5..6f6a687 100644 --- a/backend/ev-document.c +++ b/backend/ev-document.c @@ -56,6 +56,16 @@ ev_document_get_type (void) return type; } +GQuark +ev_document_error_quark (void) +{ + static GQuark q = 0; + if (q == 0) + q = g_quark_from_static_string ("ev-document-error-quark"); + + return q; +} + static void ev_document_class_init (gpointer g_class) { diff --git a/backend/ev-document.h b/backend/ev-document.h index 3616e43..5581cd7 100644 --- a/backend/ev-document.h +++ b/backend/ev-document.h @@ -40,6 +40,14 @@ G_BEGIN_DECLS typedef struct _EvDocument EvDocument; typedef struct _EvDocumentIface EvDocumentIface; +#define EV_DOCUMENT_ERROR ev_document_error_quark () + +typedef enum +{ + EV_DOCUMENT_ERROR_INVALID, + EV_DOCUMENT_ERROR_ENCRYPTED +} EvDocumentError; + struct _EvDocumentIface { GTypeInterface base_iface; @@ -78,9 +86,12 @@ struct _EvDocumentIface int clip_y, int clip_width, int clip_height); + + }; -GType ev_document_get_type (void); +GType ev_document_get_type (void); +GQuark ev_document_error_quark (void); gboolean ev_document_load (EvDocument *document, const char *uri, |