70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
#include <gtk/gtk.h>
|
|
#include <webkit2/webkit2.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
static const int toplevel = GTK_WINDOW_TOPLEVEL;
|
|
const gchar* ProxyIgnore[] ={ "127.0.0.1", NULL };
|
|
const gchar* PreferredLanguages[] = { "en_US", NULL };
|
|
const gchar* ProxyAddress = "http://127.0.0.1:4444";
|
|
|
|
enum {
|
|
CustomProxy = WEBKIT_NETWORK_PROXY_MODE_CUSTOM,
|
|
SystemProxy = WEBKIT_NETWORK_PROXY_MODE_DEFAULT,
|
|
NoProxy = WEBKIT_NETWORK_PROXY_MODE_NO_PROXY,
|
|
};
|
|
|
|
typedef struct _Browser{
|
|
WebKitWebsiteDataManager *DataManager;
|
|
WebKitWebContext *context;
|
|
WebKitWebView *webView;
|
|
WebKitNetworkProxySettings *proxysettings;
|
|
WebKitSettings *settings;
|
|
|
|
} Browser;
|
|
|
|
|
|
int
|
|
main(int argc, char** argv) {
|
|
|
|
gtk_init(NULL, NULL);
|
|
|
|
|
|
GtkWidget *window = gtk_window_new(toplevel);
|
|
gtk_window_set_title(GTK_WINDOW(window), "I2P Mini Browser");
|
|
gtk_window_set_default_size(GTK_WINDOW(window), 1024, 768);
|
|
|
|
|
|
Browser *b;
|
|
if (!(b = calloc(1, sizeof(Browser))))
|
|
fprintf(stderr, "Cannot malloc!\n");
|
|
|
|
b->DataManager = webkit_website_data_manager_new_ephemeral();
|
|
b->context = webkit_web_context_new_with_website_data_manager(b->DataManager);
|
|
|
|
b->webView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context (b->context));
|
|
b->proxysettings = webkit_network_proxy_settings_new(ProxyAddress,ProxyIgnore);
|
|
b->settings = webkit_web_view_get_settings(b->webView);
|
|
|
|
webkit_website_data_manager_set_network_proxy_settings ( b->DataManager, CustomProxy, b->proxysettings);
|
|
webkit_settings_set_enable_javascript (b->settings, FALSE);
|
|
webkit_web_context_set_preferred_languages(b->context, PreferredLanguages);
|
|
|
|
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(b->webView));
|
|
|
|
webkit_web_view_load_uri(b->webView, argv[1]);
|
|
|
|
gtk_widget_grab_focus(GTK_WIDGET(b->webView));
|
|
|
|
|
|
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
|
|
g_signal_connect(b->webView, "close", G_CALLBACK(gtk_widget_destroy), window);
|
|
|
|
|
|
gtk_widget_show_all(window);
|
|
|
|
gtk_main();
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|