Minor improvements
This commit is contained in:
parent
4a77cbc3f4
commit
15aa31d3c8
@ -35,13 +35,13 @@ download.o: download.c
|
||||
surfer.o: surfer.c callbacks.h surfer.h ../config.h
|
||||
$(CC) $(surfer_CFLAGS) -c surfer.c
|
||||
|
||||
ghtml.o: ghtml.c ghtml.h ghtml-gtkhtml.c ghtml-gtkmozembed.c ghtml-gtktextview.c
|
||||
ghtml.o: ghtml.c ghtml.h ghtml-gtkhtml.c ghtml-gtkmozembed.c ghtml-gtktextview.c ../config.h
|
||||
$(CC) $(surfer_CFLAGS) -c ghtml.c
|
||||
|
||||
callbacks.o: callbacks.c surfer.h ghtml.h callbacks.h
|
||||
callbacks.o: callbacks.c surfer.h ghtml.h callbacks.h ../config.h
|
||||
$(CC) $(surfer_CFLAGS) -c callbacks.c
|
||||
|
||||
main.o: main.c surfer.h
|
||||
main.o: main.c surfer.h ../config.h
|
||||
$(CC) $(surfer_CFLAGS) -c main.c
|
||||
|
||||
clean:
|
||||
|
117
src/callbacks.c
117
src/callbacks.c
@ -1,6 +1,6 @@
|
||||
/* $Id$ */
|
||||
static char const _copyright[] =
|
||||
"Copyright (c) 2008 Pierre Pronchery <khorben@defora.org>";
|
||||
"Copyright (c) 2009 Pierre Pronchery <khorben@defora.org>";
|
||||
/* This file is part of DeforaOS Desktop Surfer */
|
||||
static char const _license[] =
|
||||
"Surfer is free software; you can redistribute it and/or modify it\n"
|
||||
@ -49,6 +49,7 @@ gboolean on_closex(GtkWidget * widget, GdkEvent * event, gpointer data)
|
||||
}
|
||||
|
||||
|
||||
#ifndef FOR_EMBEDDED
|
||||
/* file menu */
|
||||
void on_file_close(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
@ -61,6 +62,7 @@ void on_file_close(GtkWidget * widget, gpointer data)
|
||||
}
|
||||
|
||||
|
||||
/* on_file_new_window */
|
||||
void on_file_new_window(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
@ -71,42 +73,116 @@ void on_file_new_window(GtkWidget * widget, gpointer data)
|
||||
}
|
||||
|
||||
|
||||
void on_file_refresh(GtkWidget * widget, gpointer data)
|
||||
/* on_file_open */
|
||||
void on_file_open(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
ghtml_reload(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
void on_file_force_refresh(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
ghtml_refresh(surfer->view);
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* edit menu */
|
||||
/* on_edit_preferences */
|
||||
void on_edit_preferences(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* on_edit_select_all */
|
||||
void on_edit_select_all(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_select_all(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_edit_unselect_all */
|
||||
void on_edit_unselect_all(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_unselect_all(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* view menu */
|
||||
/* on_view_force_refresh */
|
||||
void on_view_force_refresh(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_refresh(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_view_normal_size */
|
||||
void on_view_normal_size(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_zoom_reset(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_view_page_source */
|
||||
void on_view_page_source(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* on_view_refresh */
|
||||
void on_view_refresh(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_reload(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_view_stop */
|
||||
void on_view_stop(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_stop(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_view_zoom_in */
|
||||
void on_view_zoom_in(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_zoom_in(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* on_view_zoom_out */
|
||||
void on_view_zoom_out(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
|
||||
surfer_zoom_out(surfer);
|
||||
}
|
||||
|
||||
|
||||
/* help menu */
|
||||
/* on_help_about */
|
||||
static gboolean _about_on_closex(GtkWidget * widget, GdkEvent * event,
|
||||
gpointer data);
|
||||
#if !GTK_CHECK_VERSION(2, 6, 0)
|
||||
# if !GTK_CHECK_VERSION(2, 6, 0)
|
||||
static void _about_on_close(GtkWidget * widget, gpointer data);
|
||||
static void _about_on_credits(GtkWidget * widget, gpointer data);
|
||||
static void _about_on_license(GtkWidget * widget, gpointer data);
|
||||
#endif
|
||||
# endif
|
||||
|
||||
void on_help_about(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
Surfer * surfer = data;
|
||||
static GtkWidget * window = NULL;
|
||||
#if GTK_CHECK_VERSION(2, 6, 0)
|
||||
# if GTK_CHECK_VERSION(2, 6, 0)
|
||||
gsize cnt = 65536;
|
||||
gchar * buf;
|
||||
|
||||
@ -140,7 +216,7 @@ void on_help_about(GtkWidget * widget, gpointer data)
|
||||
gtk_widget_hide), NULL);
|
||||
gtk_widget_show(window);
|
||||
}
|
||||
#else
|
||||
# else
|
||||
GtkWidget * vbox;
|
||||
GtkWidget * hbox;
|
||||
GtkWidget * button;
|
||||
@ -179,7 +255,7 @@ void on_help_about(GtkWidget * widget, gpointer data)
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
gtk_widget_show_all(window);
|
||||
}
|
||||
#endif
|
||||
# endif
|
||||
|
||||
static gboolean _about_on_closex(GtkWidget * widget, GdkEvent * event,
|
||||
gpointer data)
|
||||
@ -188,7 +264,7 @@ static gboolean _about_on_closex(GtkWidget * widget, GdkEvent * event,
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#if !GTK_CHECK_VERSION(2, 6, 0)
|
||||
# if !GTK_CHECK_VERSION(2, 6, 0)
|
||||
static void _about_on_close(GtkWidget * widget, gpointer data)
|
||||
{
|
||||
GtkWidget * window = data;
|
||||
@ -293,7 +369,8 @@ static void _about_on_license(GtkWidget * widget, gpointer data)
|
||||
gtk_container_add(GTK_CONTAINER(window), vbox);
|
||||
gtk_widget_show_all(window);
|
||||
}
|
||||
#endif
|
||||
# endif /* !GTK_CHECK_VERSION(2, 6, 0) */
|
||||
#endif /* !FOR_EMBEDDED */
|
||||
|
||||
|
||||
/* toolbar */
|
||||
|
@ -24,17 +24,29 @@
|
||||
/* window */
|
||||
gboolean on_closex(GtkWidget * widget, GdkEvent * event, gpointer data);
|
||||
|
||||
#ifndef FOR_EMBEDDED
|
||||
/* file menu */
|
||||
void on_file_close(GtkWidget * widget, gpointer data);
|
||||
void on_file_new_window(GtkWidget * widget, gpointer data);
|
||||
void on_file_refresh(GtkWidget * widget, gpointer data);
|
||||
void on_file_force_refresh(GtkWidget * widget, gpointer data);
|
||||
void on_file_open(GtkWidget * widget, gpointer data);
|
||||
|
||||
/* edit menu */
|
||||
void on_edit_preferences(GtkWidget * widget, gpointer data);
|
||||
void on_edit_select_all(GtkWidget * widget, gpointer data);
|
||||
void on_edit_unselect_all(GtkWidget * widget, gpointer data);
|
||||
|
||||
/* view menu */
|
||||
void on_view_zoom_in(GtkWidget * widget, gpointer data);
|
||||
void on_view_zoom_out(GtkWidget * widget, gpointer data);
|
||||
void on_view_normal_size(GtkWidget * widget, gpointer data);
|
||||
void on_view_refresh(GtkWidget * widget, gpointer data);
|
||||
void on_view_force_refresh(GtkWidget * widget, gpointer data);
|
||||
void on_view_stop(GtkWidget * widget, gpointer data);
|
||||
void on_view_page_source(GtkWidget * widget, gpointer data);
|
||||
|
||||
/* help menu */
|
||||
void on_help_about(GtkWidget * widget, gpointer data);
|
||||
#endif /* !FOR_EMBEDDED */
|
||||
|
||||
/* toolbar */
|
||||
void on_back(GtkWidget * widget, gpointer data);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $Id$ */
|
||||
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2009 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Surfer */
|
||||
/* Surfer is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License version 2 as published by the Free
|
||||
@ -12,12 +12,18 @@
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* Surfer; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
|
||||
* Suite 330, Boston, MA 02111-1307 USA */
|
||||
/* TODO:
|
||||
* - fix URL generation for relative path
|
||||
* - progressive file load
|
||||
* - update the URL and title of the main window
|
||||
* - implement selection */
|
||||
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <libgtkhtml/gtkhtml.h>
|
||||
#include <libgtkhtml/util/rfc1738.h>
|
||||
#include <libgtkhtml/view/htmlselection.h>
|
||||
#define GNET_EXPERIMENTAL
|
||||
#include <gnet.h>
|
||||
#include "ghtml.h"
|
||||
@ -40,6 +46,8 @@ typedef struct _GHtml
|
||||
/* prototypes */
|
||||
static gboolean _ghtml_document_load(GHtml * ghtml, gchar const * base,
|
||||
gchar const * url);
|
||||
static gchar * _ghtml_make_url(gchar const * base, gchar const * url);
|
||||
|
||||
/* callbacks */
|
||||
static void _on_link_clicked(HtmlDocument * document, const gchar * url);
|
||||
static void _on_request_url(HtmlDocument * document, const gchar * url,
|
||||
@ -144,7 +152,7 @@ void ghtml_load_url(GtkWidget * widget, char const * url)
|
||||
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, url);
|
||||
#endif
|
||||
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
|
||||
if(_ghtml_document_load(ghtml, "", url) != TRUE)
|
||||
if(_ghtml_document_load(ghtml, NULL, url) != TRUE)
|
||||
return;
|
||||
/* FIXME with current code another base may have been set in between */
|
||||
g_free(ghtml->html_base);
|
||||
@ -161,7 +169,7 @@ void ghtml_refresh(GtkWidget * widget)
|
||||
if(ghtml->html_base == NULL)
|
||||
return;
|
||||
/* FIXME should differentiate URL and base */
|
||||
_ghtml_document_load(ghtml, "", ghtml->html_base);
|
||||
_ghtml_document_load(ghtml, NULL, ghtml->html_base);
|
||||
}
|
||||
|
||||
|
||||
@ -172,12 +180,60 @@ void ghtml_reload(GtkWidget * ghtml)
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_select_all */
|
||||
void ghtml_select_all(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_stop */
|
||||
void ghtml_stop(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_unselect_all */
|
||||
void ghtml_unselect_all(GtkWidget * widget)
|
||||
{
|
||||
GHtml * ghtml;
|
||||
|
||||
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
|
||||
html_selection_clear(HTML_VIEW(ghtml->html_view));
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_in */
|
||||
void ghtml_zoom_in(GtkWidget * widget)
|
||||
{
|
||||
GHtml * ghtml;
|
||||
|
||||
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
|
||||
html_view_zoom_in(HTML_VIEW(ghtml->html_view));
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_out */
|
||||
void ghtml_zoom_out(GtkWidget * widget)
|
||||
{
|
||||
GHtml * ghtml;
|
||||
|
||||
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
|
||||
html_view_zoom_out(HTML_VIEW(ghtml->html_view));
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_reset */
|
||||
void ghtml_zoom_reset(GtkWidget * widget)
|
||||
{
|
||||
GHtml * ghtml;
|
||||
|
||||
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
|
||||
html_view_zoom_reset(HTML_VIEW(ghtml->html_view));
|
||||
}
|
||||
|
||||
|
||||
/* private */
|
||||
/* functions */
|
||||
/* ghtml_document_load */
|
||||
@ -205,26 +261,59 @@ static gboolean _ghtml_document_load(GHtml * ghtml, gchar const * base,
|
||||
static gboolean _load_write_stream(HtmlStream * stream, gchar const * base,
|
||||
gchar const * url)
|
||||
{
|
||||
gchar * u;
|
||||
gchar * buf = NULL;
|
||||
gsize len = 0;
|
||||
guint response;
|
||||
gboolean error;
|
||||
|
||||
url = rfc1738_make_full_url(base, url);
|
||||
if((u = _ghtml_make_url(base, url)) == NULL)
|
||||
return FALSE;
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: %s() url=\"%s\"\n", __func__, url);
|
||||
#endif
|
||||
if(gnet_http_get(url, &buf, &len, &response) != TRUE)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
fprintf(stderr, "DEBUG: gnet_http_get() => %u\n", response);
|
||||
fprintf(stderr, "DEBUG: %s() url=\"%s\"\n", __func__, u);
|
||||
#endif
|
||||
if(u[0] == '/')
|
||||
error = g_file_get_contents(u, &buf, &len, NULL) == FALSE;
|
||||
else if(strncmp("file:/", u, 6) == 0)
|
||||
error = g_file_get_contents(&u[5], &buf, &len, NULL) == FALSE;
|
||||
/* XXX assuming the rest is http */
|
||||
else
|
||||
error = gnet_http_get(u, &buf, &len, &response) != TRUE;
|
||||
g_free(u);
|
||||
if(error)
|
||||
return FALSE; /* FIXME report error */
|
||||
}
|
||||
html_stream_write(stream, buf, len);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_make_url */
|
||||
static gchar * _ghtml_make_url(gchar const * base, gchar const * url)
|
||||
{
|
||||
if(url == NULL)
|
||||
return NULL;
|
||||
/* XXX use a more generic protocol finder (strchr(':')) */
|
||||
if(strncmp("http://", url, 7) == 0)
|
||||
return g_strdup(url);
|
||||
if(strncmp("ftp://", url, 6) == 0)
|
||||
return g_strdup(url);
|
||||
if(base != NULL)
|
||||
{
|
||||
if(url[0] == '/')
|
||||
/* FIXME construct from / */
|
||||
return g_strdup_printf("%s%s", base, url);
|
||||
/* FIXME construct from last / */
|
||||
return g_strdup_printf("%s/%s", base, url);
|
||||
}
|
||||
/* base is NULL, url is not NULL */
|
||||
if(strncmp("ftp", url, 3) == 0)
|
||||
return g_strdup_printf("%s%s", "ftp://", url);
|
||||
if(url[0] == '/')
|
||||
return g_strdup(url);
|
||||
return g_strdup_printf("%s%s", "http://", url);
|
||||
}
|
||||
|
||||
|
||||
/* callbacks */
|
||||
static void _on_link_clicked(HtmlDocument * document, const gchar * url)
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* $Id$ */
|
||||
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2009 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Surfer */
|
||||
/* Surfer is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License version 2 as published by the Free
|
||||
@ -407,8 +407,43 @@ void ghtml_reload(GtkWidget * ghtml)
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_select_all */
|
||||
void ghtml_select_all(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_stop */
|
||||
void ghtml_stop(GtkWidget * ghtml)
|
||||
{
|
||||
gtk_moz_embed_stop_load(GTK_MOZ_EMBED(ghtml));
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_unselect_all */
|
||||
void ghtml_unselect_all(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_in */
|
||||
void ghtml_zoom_in(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_out */
|
||||
void ghtml_zoom_out(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
||||
|
||||
/* ghtml_zoom_reset */
|
||||
void ghtml_zoom_reset(GtkWidget * ghtml)
|
||||
{
|
||||
/* FIXME implement */
|
||||
}
|
||||
|
@ -48,4 +48,11 @@ void ghtml_refresh(GtkWidget * ghtml);
|
||||
void ghtml_reload(GtkWidget * ghtml);
|
||||
void ghtml_stop(GtkWidget * ghtml);
|
||||
|
||||
void ghtml_select_all(GtkWidget * ghtml);
|
||||
void ghtml_unselect_all(GtkWidget * ghtml);
|
||||
|
||||
void ghtml_zoom_in(GtkWidget * ghtml);
|
||||
void ghtml_zoom_out(GtkWidget * ghtml);
|
||||
void ghtml_zoom_reset(GtkWidget * ghtml);
|
||||
|
||||
#endif /* !SURFER_GHTML_H */
|
||||
|
@ -23,13 +23,13 @@ sources=surfer.c,ghtml.c,callbacks.c,main.c
|
||||
install=$(BINDIR)
|
||||
|
||||
[callbacks.c]
|
||||
depends=surfer.h,ghtml.h,callbacks.h
|
||||
depends=surfer.h,ghtml.h,callbacks.h,../config.h
|
||||
|
||||
[ghtml.c]
|
||||
depends=ghtml.h,ghtml-gtkhtml.c,ghtml-gtkmozembed.c,ghtml-gtktextview.c
|
||||
depends=ghtml.h,ghtml-gtkhtml.c,ghtml-gtkmozembed.c,ghtml-gtktextview.c,../config.h
|
||||
|
||||
[main.c]
|
||||
depends=surfer.h
|
||||
depends=surfer.h,../config.h
|
||||
|
||||
[surfer.c]
|
||||
depends=callbacks.h,surfer.h,../config.h
|
||||
|
103
src/surfer.c
103
src/surfer.c
@ -1,5 +1,5 @@
|
||||
/* $Id$ */
|
||||
/* Copyright (c) 2008 Pierre Pronchery <khorben@defora.org> */
|
||||
/* Copyright (c) 2009 Pierre Pronchery <khorben@defora.org> */
|
||||
/* This file is part of DeforaOS Desktop Surfer */
|
||||
/* Surfer is free software; you can redistribute it and/or modify it under the
|
||||
* terms of the GNU General Public License version 2 as published by the Free
|
||||
@ -25,6 +25,7 @@
|
||||
|
||||
/* Surfer */
|
||||
/* types */
|
||||
#ifndef FOR_EMBEDDED
|
||||
struct _menu
|
||||
{
|
||||
char * name;
|
||||
@ -39,15 +40,14 @@ struct _menubar
|
||||
struct _menu * menu;
|
||||
};
|
||||
|
||||
|
||||
/* variables */
|
||||
static struct _menu _menu_file[] =
|
||||
{
|
||||
{ "_New window", G_CALLBACK(on_file_new_window), "window-new",
|
||||
GDK_N },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "_Refresh", G_CALLBACK(on_file_refresh), GTK_STOCK_REFRESH,
|
||||
GDK_R },
|
||||
{ "_Force refresh", G_CALLBACK(on_file_force_refresh), NULL, 0 },
|
||||
{ "_Open...", G_CALLBACK(on_file_open), GTK_STOCK_OPEN,
|
||||
GDK_O },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "_Close", G_CALLBACK(on_file_close), GTK_STOCK_CLOSE,
|
||||
GDK_W },
|
||||
@ -56,11 +56,38 @@ static struct _menu _menu_file[] =
|
||||
|
||||
static struct _menu _menu_edit[] =
|
||||
{
|
||||
{ "_Cut", NULL, GTK_STOCK_CUT, GDK_X },
|
||||
{ "Cop_y", NULL, GTK_STOCK_COPY, GDK_C },
|
||||
{ "_Paste", NULL, GTK_STOCK_PASTE, GDK_V },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "Select _all", G_CALLBACK(on_edit_select_all),
|
||||
GTK_STOCK_SELECT_ALL, GDK_A },
|
||||
{ "Unselect all", G_CALLBACK(on_edit_unselect_all), NULL, 0 },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "_Preferences", G_CALLBACK(on_edit_preferences),
|
||||
GTK_STOCK_PREFERENCES, GDK_P },
|
||||
{ NULL, NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
static struct _menu _menu_view[] =
|
||||
{
|
||||
{ "Zoom in", G_CALLBACK(on_view_zoom_in), "zoom-in",
|
||||
GDK_plus },
|
||||
{ "Zoom out", G_CALLBACK(on_view_zoom_out), "zoom-out",
|
||||
GDK_minus },
|
||||
{ "Normal size", G_CALLBACK(on_view_normal_size), "zoom-1",
|
||||
GDK_0 },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "_Refresh", G_CALLBACK(on_view_refresh), GTK_STOCK_REFRESH,
|
||||
GDK_R },
|
||||
{ "_Force refresh", G_CALLBACK(on_view_force_refresh), NULL, 0 },
|
||||
{ "_Stop", G_CALLBACK(on_view_stop), GTK_STOCK_STOP, 0 },
|
||||
{ "", NULL, NULL, 0 },
|
||||
{ "Page so_urce", G_CALLBACK(on_view_page_source),
|
||||
"stock_view-html-source", GDK_U },
|
||||
{ NULL, NULL, NULL, 0 }
|
||||
};
|
||||
|
||||
static struct _menu _menu_help[] =
|
||||
{
|
||||
{ "_About", G_CALLBACK(on_help_about),
|
||||
@ -76,14 +103,18 @@ static struct _menubar _menubar[] =
|
||||
{
|
||||
{ "_File", _menu_file },
|
||||
{ "_Edit", _menu_edit },
|
||||
{ "_View", _menu_view },
|
||||
{ "_Help", _menu_help },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
#endif /* !FOR_EMBEDDED */
|
||||
|
||||
unsigned int surfer_cnt = 0;
|
||||
|
||||
/* functions */
|
||||
#ifndef FOR_EMBEDDED
|
||||
static GtkWidget * _new_menubar(Surfer * surfer);
|
||||
#endif
|
||||
|
||||
Surfer * surfer_new(char const * url)
|
||||
{
|
||||
@ -102,9 +133,11 @@ Surfer * surfer_new(char const * url)
|
||||
g_signal_connect(G_OBJECT(surfer->window), "delete_event", G_CALLBACK(
|
||||
on_closex), surfer);
|
||||
vbox = gtk_vbox_new(FALSE, 0);
|
||||
#ifndef FOR_EMBEDDED
|
||||
/* menubar */
|
||||
surfer->menubar = _new_menubar(surfer);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), surfer->menubar, FALSE, FALSE, 0);
|
||||
#endif
|
||||
/* toolbar */
|
||||
toolbar = gtk_toolbar_new();
|
||||
surfer->tb_back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
|
||||
@ -121,10 +154,8 @@ Surfer * surfer_new(char const * url)
|
||||
surfer->tb_stop = gtk_tool_button_new_from_stock(GTK_STOCK_STOP);
|
||||
g_signal_connect(G_OBJECT(surfer->tb_stop), "clicked", G_CALLBACK(
|
||||
on_stop), surfer);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_stop), FALSE);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), surfer->tb_stop, -1);
|
||||
surfer->tb_refresh = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_refresh), FALSE);
|
||||
g_signal_connect(G_OBJECT(surfer->tb_refresh), "clicked", G_CALLBACK(
|
||||
on_refresh), surfer);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), surfer->tb_refresh, -1);
|
||||
@ -191,6 +222,7 @@ Surfer * surfer_new(char const * url)
|
||||
return surfer;
|
||||
}
|
||||
|
||||
#ifndef FOR_EMBEDDED
|
||||
static GtkWidget * _new_menubar(Surfer * surfer)
|
||||
{
|
||||
GtkWidget * tb_menubar;
|
||||
@ -249,6 +281,7 @@ static GtkWidget * _new_menubar(Surfer * surfer)
|
||||
}
|
||||
return tb_menubar;
|
||||
}
|
||||
#endif /* !FOR_EMBEDDED */
|
||||
|
||||
|
||||
/* surfer_delete */
|
||||
@ -274,3 +307,59 @@ int surfer_error(Surfer * surfer, char const * message, int ret)
|
||||
gtk_widget_show(dialog);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* surfer_refresh */
|
||||
void surfer_refresh(Surfer * surfer)
|
||||
{
|
||||
ghtml_refresh(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_reload */
|
||||
void surfer_reload(Surfer * surfer)
|
||||
{
|
||||
ghtml_reload(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_select_all */
|
||||
void surfer_select_all(Surfer * surfer)
|
||||
{
|
||||
ghtml_select_all(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_stop */
|
||||
void surfer_stop(Surfer * surfer)
|
||||
{
|
||||
ghtml_stop(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_unselect_all */
|
||||
void surfer_unselect_all(Surfer * surfer)
|
||||
{
|
||||
ghtml_unselect_all(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_zoom_in */
|
||||
void surfer_zoom_in(Surfer * surfer)
|
||||
{
|
||||
ghtml_zoom_in(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_zoom_out */
|
||||
void surfer_zoom_out(Surfer * surfer)
|
||||
{
|
||||
ghtml_zoom_out(surfer->view);
|
||||
}
|
||||
|
||||
|
||||
/* surfer_zoom_reset */
|
||||
void surfer_zoom_reset(Surfer * surfer)
|
||||
{
|
||||
ghtml_zoom_reset(surfer->view);
|
||||
}
|
||||
|
11
src/surfer.h
11
src/surfer.h
@ -68,4 +68,15 @@ void surfer_delete(Surfer * surfer);
|
||||
/* useful */
|
||||
int surfer_error(Surfer * surfer, char const * message, int ret);
|
||||
|
||||
void surfer_refresh(Surfer * surfer);
|
||||
void surfer_reload(Surfer * surfer);
|
||||
void surfer_stop(Surfer * surfer);
|
||||
|
||||
void surfer_select_all(Surfer * surfer);
|
||||
void surfer_unselect_all(Surfer * surfer);
|
||||
|
||||
void surfer_zoom_in(Surfer * surfer);
|
||||
void surfer_zoom_out(Surfer * surfer);
|
||||
void surfer_zoom_reset(Surfer * surfer);
|
||||
|
||||
#endif /* !SURFER_SURFER_H */
|
||||
|
Loading…
Reference in New Issue
Block a user