#ifndef WEB_H #define WEB_H typedef struct _WebBackEnd WebBackEnd; typedef struct _WebData WebData; typedef struct _WebPages WebPages; #include #include #include #include #include "web_history.h" #include "web_request.h" #include "web_bookmarks.h" #include "config.h" #ifdef WITH_HILDON #include #define DATADIR "/var/lib/install" PKGDATADIR G_DIR_SEPARATOR_S #else #define DATADIR PKGDATADIR G_DIR_SEPARATOR_S #endif #define XML_FILE DATADIR "web.glade" #ifndef MAX_REQUESTS # define MAX_REQUESTS 10 #endif #ifndef BUFFER # define BUFFER 4096 #endif #ifndef HISTORY # define HISTORY 10 #endif #ifndef URL_LABEL_SIZE # define URL_LABEL_SIZE 16 #endif #define MAG_STEP 1.1 #define BLANK_PAGE "" #define GCONF_PATH "/apps/web" #define GCONF_KEY_ZOOM "/apps/web/last_zoom" #define GCONF_KEY_BACKEND "/apps/web/backend" #define GCONF_KEY_HOME "/apps/web/home" #define GCONF_KEY_SSR "/apps/web/ssr" #define GCONF_KEY_MEDIA "/apps/web/media" #define WEB_API_VERSION 1 struct _WebBackEnd { guint api_version; gchar *name; void (*init) (gpointer *backend_data, WebPages *pages); void (*deinit) (gpointer backend_data); GtkWidget* (*new) (gpointer backend_data, gpointer *page_data, WebData *data); void (*destroy) (gpointer backend_data, gpointer page_data); void (*write) (gpointer backend_data, gpointer page_data, WebRequest *request, gchar *buffer, gint bytes_read); void (*clear) (gpointer backend_data, gpointer page_data); void (*close) (gpointer backend_data, gpointer page_data, WebRequest *request); gdouble (*get_zoom) (gpointer backend_data, gpointer page_data); void (*set_zoom) (gpointer backend_data, gpointer page_data, gdouble zoom); gpointer (*add_style) (gpointer backend_data, gpointer page_data, const gchar *style, const gchar *media); void (*remove_style) (gpointer backend_data, gpointer page_data, gpointer style); gpointer (*add_script) (gpointer backend_data, gpointer page_data, gchar *script); void (*remove_script)(gpointer backend_data, gpointer page_data, gpointer script); void (*set_media) (gpointer backend_data, gpointer page_data, const gchar *media); }; #define DECLARE_WEB_BACKEND(backend) \ G_MODULE_EXPORT WebBackEnd* web_backend_get() { \ return &backend; \ } struct _WebData { gchar *base_url; gchar *url; gpointer page_data; GList *requests; guint max_requests; WebPages *parent; GtkWidget *url_label; GtkWidget *vbox; GtkWidget *vpaned; GList *history; GList *history_forward; gpointer ssr_style; gpointer ssr_script; /* Variables for jitter-correction/push-scrolling */ GtkScrolledWindow *scroll; GTimeVal click_start; gdouble x; gdouble y; gboolean moved; gboolean clicked; }; struct _WebPages { GladeXML *xml; GtkWidget *window; #ifdef WITH_HILDON HildonAppView *appview; #endif WebBackEnd *backend; gpointer backend_data; GtkNotebook *book; GList *pages; GtkWidget *history; GtkWidget *history_forward; WebData *current_page; gdouble last_zoom; gchar *home; gboolean ssr; gchar *media; WebBookmarks *bookmarks; }; void web_go (WebData *data, const gchar *url, gboolean preserve_history); void web_title_change (WebData *data, const gchar *title); #endif