From 53d25856dc1f8997ce4d142486e2c720fe0e2100 Mon Sep 17 00:00:00 2001 From: Jonathan Blandford Date: Wed, 19 Jan 2005 06:12:27 +0000 Subject: Add initial support for password-supported dialogs. This could be a lot Wed Jan 19 01:10:57 2005 Jonathan Blandford * 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. --- (limited to 'backend') 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 + * + * 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 + * + * 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 +#include +#include + +#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, -- cgit v0.9.1