diff options
author | Xan Lopez <xan@src.gnome.org> | 2007-12-30 00:58:41 +0800 |
---|---|---|
committer | Xan Lopez <xan@src.gnome.org> | 2007-12-30 00:58:41 +0800 |
commit | 845fb8717fa53f67893f5f4b17bbdb711e11da2f (patch) | |
tree | 40fdb192f2025e51e85eac83be3fa725a694d6b0 /embed | |
parent | 9c053200d3fbc1f8d7b6a0a70dab807d7461b716 (diff) | |
download | gsoc2013-epiphany-845fb8717fa53f67893f5f4b17bbdb711e11da2f.tar.gz gsoc2013-epiphany-845fb8717fa53f67893f5f4b17bbdb711e11da2f.tar.zst gsoc2013-epiphany-845fb8717fa53f67893f5f4b17bbdb711e11da2f.zip |
Add new embed history interfaces.
svn path=/trunk/; revision=7832
Diffstat (limited to 'embed')
-rw-r--r-- | embed/Makefile.am | 4 | ||||
-rw-r--r-- | embed/ephy-embed.c | 79 | ||||
-rw-r--r-- | embed/ephy-embed.h | 171 | ||||
-rw-r--r-- | embed/ephy-history-item.c | 56 | ||||
-rw-r--r-- | embed/ephy-history-item.h | 53 |
5 files changed, 282 insertions, 81 deletions
diff --git a/embed/Makefile.am b/embed/Makefile.am index ed9349ce8..3deefb9bd 100644 --- a/embed/Makefile.am +++ b/embed/Makefile.am @@ -17,7 +17,8 @@ NOINST_H_FILES = \ ephy-embed-dialog.h \ ephy-embed-find.h \ ephy-encodings.h \ - ephy-favicon-cache.h + ephy-favicon-cache.h \ + ephy-history-item.h INST_H_FILES = \ ephy-adblock.h \ @@ -62,6 +63,7 @@ libephyembed_la_SOURCES = \ ephy-encodings.c \ ephy-favicon-cache.c \ ephy-history.c \ + ephy-history-item.c \ ephy-password-manager.c \ ephy-permission-manager.c \ $(INST_H_FILES) \ diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 042e323e0..48fcee4e9 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -1138,7 +1138,7 @@ ephy_embed_get_loading_title (EphyEmbed *embed) * Returns whether the @embed's toplevel is visible or not. Used * mostly for popup visibility management. * - * Return value; %TRUE if @embed's "visibility" property is set + * Return value: %TRUE if @embed's "visibility" property is set **/ gboolean ephy_embed_get_visibility (EphyEmbed *embed) @@ -1146,3 +1146,80 @@ ephy_embed_get_visibility (EphyEmbed *embed) EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); return iface->get_visibility (embed); } + +/** + * ephy_embed_get_backward_history: + * @embed: an #EphyEmbed + * + * Returns a #GList of #EphyHistoryItem compromising the + * history items preceding the current location. + * + * Return value: a #GList with the preceding history items + **/ +GList* +ephy_embed_get_backward_history (EphyEmbed *embed) +{ + EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); + return iface->get_backward_history (embed); +} + +/** + * ephy_embed_get_forward_history: + * @embed: an #EphyEmbed + * + * Returns a #GList of #EphyHistoryItem compromising the + * history items succeeding the current location. + * + * Return value: a #GList with the succeeding history items + **/ +GList* +ephy_embed_get_forward_history (EphyEmbed *embed) +{ + EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); + return iface->get_forward_history (embed); +} + +/** + * ephy_embed_get_previous_history_item: + * @embed: an #EphyEmbed + * + * Returns the preceding #EphyHistoryItem in the history list. + * + * Return value: the preceding #EphyHistoryItem + **/ +EphyHistoryItem* +ephy_embed_get_previous_history_item (EphyEmbed *embed) +{ + EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); + return iface->get_previous_history_item (embed); +} + +/** + * ephy_embed_get_next_history_item: + * @embed: an #EphyEmbed + * + * Returns the succeeding #EphyHistoryItem in the history list. + * + * Return value: the succeeding #EphyHistoryItem + **/ +EphyHistoryItem* +ephy_embed_get_next_history_item (EphyEmbed *embed) +{ + EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); + return iface->get_next_history_item (embed); +} + +/** + * ephy_embed_go_to_history_item: + * @embed: an #EphyEmbed + * @history_item: an #EphyHistoryItem + * + * Opens the webpage specified by @history_item in @embed's history. + * + **/ +void +ephy_embed_go_to_history_item (EphyEmbed *embed, EphyHistoryItem *history_item) +{ + EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed); + iface->go_to_history_item (embed, history_item); +} diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h index 3539b7649..35f28240e 100644 --- a/embed/ephy-embed.h +++ b/embed/ephy-embed.h @@ -22,6 +22,7 @@ #define EPHY_EMBED_H #include "ephy-embed-event.h" +#include "ephy-history-item.h" #include <glib-object.h> #include <glib.h> @@ -135,7 +136,7 @@ struct _EphyEmbedIface EphyEmbedEvent *event); gboolean (* dom_mouse_down) (EphyEmbed *embed, EphyEmbedEvent *event); - void (* dom_content_loaded) (EphyEmbed *embed, + void (* dom_content_loaded) (EphyEmbed *embed, gpointer event); void (* popup_blocked) (EphyEmbed *embed, const char *address, @@ -146,7 +147,7 @@ struct _EphyEmbedIface void (* content_blocked) (EphyEmbed *embed, const char *uri); gboolean (* modal_alert) (EphyEmbed *embed); - void (* modal_alert_closed) (EphyEmbed *embed); + void (* modal_alert_closed) (EphyEmbed *embed); void (* document_type) (EphyEmbed *embed, EphyEmbedDocumentType type); void (* new_window) (EphyEmbed *embed, @@ -156,84 +157,89 @@ struct _EphyEmbedIface gboolean (* close_request) (EphyEmbed *embed); /* Methods */ - void (* load_url) (EphyEmbed *embed, - const char *url); - void (* load) (EphyEmbed *embed, - const char *url, - EphyEmbedLoadFlags flags, - EphyEmbed *referring_embed); - void (* stop_load) (EphyEmbed *embed); - void (* reload) (EphyEmbed *embed, - gboolean force); - gboolean (* can_go_back) (EphyEmbed *embed); - gboolean (* can_go_forward) (EphyEmbed *embed); - gboolean (* can_go_up) (EphyEmbed *embed); - GSList * (* get_go_up_list) (EphyEmbed *embed); - void (* go_back) (EphyEmbed *embed); - void (* go_forward) (EphyEmbed *embed); - void (* go_up) (EphyEmbed *embed); - - const char * (* get_title) (EphyEmbed *embed); - char * (* get_location) (EphyEmbed *embed, - gboolean toplevel); - const char * (* get_link_message) (EphyEmbed *embed); - char * (* get_js_status) (EphyEmbed *embed); - int (* shistory_n_items) (EphyEmbed *embed); - void (* shistory_get_nth) (EphyEmbed *embed, - int nth, - gboolean is_relative, - char **url, - char **title); - int (* shistory_get_pos) (EphyEmbed *embed); - void (* shistory_go_nth) (EphyEmbed *embed, - int nth); - void (* shistory_copy) (EphyEmbed *source, - EphyEmbed *dest, - gboolean copy_back, - gboolean copy_forward, - gboolean copy_current); - void (* get_security_level) (EphyEmbed *embed, - EphyEmbedSecurityLevel *level, - char **description); - void (* show_page_certificate) (EphyEmbed *embed); - void (* set_zoom) (EphyEmbed *embed, - float zoom); - float (* get_zoom) (EphyEmbed *embed); - void (* scroll_lines) (EphyEmbed *embed, - int num_lines); - void (* scroll_pages) (EphyEmbed *embed, - int num_pages); - void (* scroll_pixels) (EphyEmbed *embed, - int dx, - int dy); - char * (* get_encoding) (EphyEmbed *embed); - gboolean (* has_automatic_encoding) (EphyEmbed *embed); - void (* set_encoding) (EphyEmbed *embed, - const char *encoding); - void (* print) (EphyEmbed *embed); - void (* set_print_preview_mode) (EphyEmbed *embed, - gboolean mode); - int (* print_preview_n_pages) (EphyEmbed *embed); - void (* print_preview_navigate) (EphyEmbed *embed, - EphyEmbedPrintPreviewNavType type, - int page); - gboolean (* has_modified_forms) (EphyEmbed *embed); - void (* close) (EphyEmbed *embed); - EphyEmbedDocumentType (* get_document_type) (EphyEmbed *embed); - int (* get_load_percent) (EphyEmbed *embed); - gboolean (* get_load_status) (EphyEmbed *embed); + void (* load_url) (EphyEmbed *embed, + const char *url); + void (* load) (EphyEmbed *embed, + const char *url, + EphyEmbedLoadFlags flags, + EphyEmbed *referring_embed); + void (* stop_load) (EphyEmbed *embed); + void (* reload) (EphyEmbed *embed, + gboolean force); + gboolean (* can_go_back) (EphyEmbed *embed); + gboolean (* can_go_forward) (EphyEmbed *embed); + gboolean (* can_go_up) (EphyEmbed *embed); + GSList * (* get_go_up_list) (EphyEmbed *embed); + void (* go_back) (EphyEmbed *embed); + void (* go_forward) (EphyEmbed *embed); + void (* go_up) (EphyEmbed *embed); + const char * (* get_title) (EphyEmbed *embed); + char * (* get_location) (EphyEmbed *embed, + gboolean toplevel); + const char * (* get_link_message) (EphyEmbed *embed); + char * (* get_js_status) (EphyEmbed *embed); + int (* shistory_n_items) (EphyEmbed *embed); + void (* shistory_get_nth) (EphyEmbed *embed, + int nth, + gboolean is_relative, + char **url, + char **title); + int (* shistory_get_pos) (EphyEmbed *embed); + void (* shistory_go_nth) (EphyEmbed *embed, + int nth); + void (* shistory_copy) (EphyEmbed *source, + EphyEmbed *dest, + gboolean copy_back, + gboolean copy_forward, + gboolean copy_current); + void (* get_security_level) (EphyEmbed *embed, + EphyEmbedSecurityLevel *level, + char **description); + void (* show_page_certificate) (EphyEmbed *embed); + void (* set_zoom) (EphyEmbed *embed, + float zoom); + float (* get_zoom) (EphyEmbed *embed); + void (* scroll_lines) (EphyEmbed *embed, + int num_lines); + void (* scroll_pages) (EphyEmbed *embed, + int num_pages); + void (* scroll_pixels) (EphyEmbed *embed, + int dx, + int dy); + char * (* get_encoding) (EphyEmbed *embed); + gboolean (* has_automatic_encoding) (EphyEmbed *embed); + void (* set_encoding) (EphyEmbed *embed, + const char *encoding); + void (* print) (EphyEmbed *embed); + void (* set_print_preview_mode) (EphyEmbed *embed, + gboolean mode); + int (* print_preview_n_pages) (EphyEmbed *embed); + void (* print_preview_navigate) (EphyEmbed *embed, + EphyEmbedPrintPreviewNavType type, + int page); + gboolean (* has_modified_forms) (EphyEmbed *embed); + void (* close) (EphyEmbed *embed); + EphyEmbedDocumentType (* get_document_type) (EphyEmbed *embed); + int (* get_load_percent) (EphyEmbed *embed); + gboolean (* get_load_status) (EphyEmbed *embed); EphyEmbedNavigationFlags (* get_navigation_flags) (EphyEmbed *embed); - const char * (* get_typed_address) (EphyEmbed *embed); - void (* set_typed_address) (EphyEmbed *embed, - const char *address, - EphyEmbedAddressExpire expire); - const char * (* get_address) (EphyEmbed *embed); - const char * (* get_status_message) (EphyEmbed *embed); - GdkPixbuf * (* get_icon) (EphyEmbed *embed); - const char * (* get_icon_address) (EphyEmbed *embed); - gboolean (* get_is_blank) (EphyEmbed *embed); - const char * (* get_loading_title) (EphyEmbed *embed); - gboolean (* get_visibility) (EphyEmbed *embed); + const char * (* get_typed_address) (EphyEmbed *embed); + void (* set_typed_address) (EphyEmbed *embed, + const char *address, + EphyEmbedAddressExpire expire); + const char * (* get_address) (EphyEmbed *embed); + const char * (* get_status_message) (EphyEmbed *embed); + GdkPixbuf * (* get_icon) (EphyEmbed *embed); + const char * (* get_icon_address) (EphyEmbed *embed); + gboolean (* get_is_blank) (EphyEmbed *embed); + const char * (* get_loading_title) (EphyEmbed *embed); + gboolean (* get_visibility) (EphyEmbed *embed); + GList * (* get_backward_history) (EphyEmbed *embed); + GList * (* get_forward_history) (EphyEmbed *embed); + EphyHistoryItem * (* get_next_history_item) (EphyEmbed *embed); + EphyHistoryItem * (* get_previous_history_item) (EphyEmbed *embed); + void (* go_to_history_item) (EphyEmbed *embed, + EphyHistoryItem *history_item); }; GType ephy_embed_net_state_get_type (void); @@ -385,6 +391,13 @@ void ephy_embed_close (EphyEmbed *embed); gboolean ephy_embed_has_modified_forms (EphyEmbed *embed); +/* History */ +GList *ephy_embed_get_backward_history (EphyEmbed *embed); +GList *ephy_embed_get_forward_history (EphyEmbed *embed); +EphyHistoryItem *ephy_embed_get_next_history_item (EphyEmbed *embed); +EphyHistoryItem *ephy_embed_get_previous_history_item (EphyEmbed *embed); +void ephy_embed_go_to_history_item (EphyEmbed *embed, EphyHistoryItem *history_item); + G_END_DECLS #endif diff --git a/embed/ephy-history-item.c b/embed/ephy-history-item.c new file mode 100644 index 000000000..83703943c --- /dev/null +++ b/embed/ephy-history-item.c @@ -0,0 +1,56 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ +/* + * Copyright © 2007 Xan Lopez + * + * This program 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, or (at your option) + * any later version. + * + * This program 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "ephy-history-item.h" + +GType +ephy_history_item_get_type (void) +{ + static GType type = 0; + + if (G_UNLIKELY (type == 0)) { + const GTypeInfo our_info = + { + sizeof (EphyHistoryItemIface), + NULL, + NULL, + }; + + type = g_type_register_static (G_TYPE_INTERFACE, + "EphyHistoryItem", + &our_info, (GTypeFlags)0); + } + + return type; +} + +const char* +ephy_history_item_get_url (EphyHistoryItem *item) +{ + EphyHistoryItemIface *iface = EPHY_HISTORY_ITEM_GET_IFACE (item); + return iface->get_url (item); +} + +const char* +ephy_history_item_get_title (EphyHistoryItem *item) +{ + EphyHistoryItemIface *iface = EPHY_HISTORY_ITEM_GET_IFACE (item); + return iface->get_title (item); +} diff --git a/embed/ephy-history-item.h b/embed/ephy-history-item.h new file mode 100644 index 000000000..153dcb745 --- /dev/null +++ b/embed/ephy-history-item.h @@ -0,0 +1,53 @@ +/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2; -*- */ +/* + * Copyright © 2007 Xan Lopez + * + * This program 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, or (at your option) + * any later version. + * + * This program 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef __EPHY_HISTORY_ITEM_H__ +#define __EPHY_HISTORY_ITEM_H__ + +#include <glib.h> +#include <glib-object.h> + +G_BEGIN_DECLS + +#define EPHY_TYPE_HISTORY_ITEM (ephy_history_item_get_type ()) +#define EPHY_HISTORY_ITEM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EPHY_TYPE_HISTORY_ITEM, EphyHistoryItem)) +#define EPHY_HISTORY_ITEM_IFACE(k) (G_TYPE_CHECK_CLASS_CAST((k), EPHY_TYPE_HISTORY_ITEM, EphyHistoryItemIface)) +#define EPHY_IS_HISTORY_ITEM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EPHY_TYPE_HISTORY_ITEM)) +#define EPHY_IS_HISTORY_ITEM_IFACE(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EPHY_TYPE_HISTORY_ITEM)) +#define EPHY_HISTORY_ITEM_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), EPHY_TYPE_HISTORY_ITEM, EphyHistoryItemIface)) + +typedef struct _EphyHistoryItem EphyHistoryItem; +typedef struct _EphyHistoryItemIface EphyHistoryItemIface; + +struct _EphyHistoryItemIface +{ + GTypeInterface base_iface; + + const char * (* get_url) (EphyHistoryItem *item); + const char * (* get_title) (EphyHistoryItem *item); +}; + +GType ephy_history_item_get_type (void); +const char* ephy_history_item_get_url (EphyHistoryItem *item); +const char* ephy_history_item_get_title (EphyHistoryItem *item); + +G_END_DECLS + +#endif /* __EPHY_HISTORY_ITEM_H__ */ |