tazweb diff src/tazweb.c @ rev 179

Use helper as as SHell library
author Christophe Lincoln <pankso@slitaz.org>
date Mon Mar 13 01:51:59 2017 +0100 (2017-03-13)
parents 1603951a52b8
children a6d2bc6be4a4
line diff
     1.1 --- a/src/tazweb.c	Sun Mar 12 17:56:20 2017 +0100
     1.2 +++ b/src/tazweb.c	Mon Mar 13 01:51:59 2017 +0100
     1.3 @@ -4,9 +4,9 @@
     1.4   * as a contextual menu, but no menu bar or tabs. Commented line code
     1.5   * starts with // and comments are between * *
     1.6   *
     1.7 - * Copyright (C) 2011-2014 SliTaz GNU/Linux - BSD License
     1.8 + * Copyright (C) 2011-2017 SliTaz GNU/Linux - BSD License
     1.9   * See AUTHORS and LICENSE for detailed information
    1.10 - * 
    1.11 + *
    1.12   */
    1.13  
    1.14  #include <glib.h>
    1.15 @@ -15,12 +15,13 @@
    1.16  
    1.17  #include <gtk/gtk.h>
    1.18  #include <webkit/webkit.h>
    1.19 -//#include <libsoup/soup.h> // for cookies ?
    1.20 +#include <libsoup/soup.h> // for cookies
    1.21  
    1.22  #define HOME		g_get_home_dir()
    1.23  #define CONFIG		g_strdup_printf("%s/.config/tazweb", HOME)
    1.24  #define BMTXT		g_strdup_printf("%s/bookmarks.txt", CONFIG)
    1.25  #define BMURL		g_strdup_printf("%s/bookmarks.html", CONFIG)
    1.26 +#define COOKIES		g_strdup_printf("%s/cookies.txt", CONFIG)
    1.27  #define WEBHOME		"file:///usr/share/webhome/index.html"
    1.28  #define SEARCH		"http://duckduckgo.com/?q=%s&t=slitaz"
    1.29  
    1.30 @@ -31,10 +32,15 @@
    1.31  static WebKitWebFrame *frame;
    1.32  static gint count = 0;
    1.33  static gboolean notoolbar;
    1.34 -static gboolean noquit;
    1.35 +static gboolean nocookies;
    1.36  static gboolean kiosk;
    1.37 +
    1.38 +
    1.39  const gchar* uri;
    1.40  
    1.41 +SoupSession		*session;
    1.42 +SoupCookieJar	*cookiejar;
    1.43 +
    1.44  /* Create an icon */
    1.45  static GdkPixbuf*
    1.46  create_pixbuf(const gchar* image)
    1.47 @@ -59,12 +65,12 @@
    1.48  	GString *string;
    1.49  	gdouble progress;
    1.50  	gchar *title;
    1.51 -	
    1.52 +
    1.53  	string = g_string_new(webkit_web_view_get_title(webview));
    1.54  	progress = webkit_web_view_get_progress(webview) * 100;
    1.55  	if (progress < 100)
    1.56  		g_string_append_printf(string, " [ %f%% ] ", progress);
    1.57 -	
    1.58 +
    1.59  	title = g_string_free(string, FALSE);
    1.60  	gtk_window_set_title(window, title);
    1.61  	g_free(title);
    1.62 @@ -109,11 +115,11 @@
    1.63  view_source_cb(GtkWidget* widget, WebKitWebView* webview)
    1.64  {
    1.65  	gboolean source;
    1.66 -	
    1.67 +
    1.68  	frame = webkit_web_view_get_main_frame(webview);
    1.69  	uri = webkit_web_frame_get_uri(frame);
    1.70  	source = webkit_web_view_get_view_source_mode(webview);
    1.71 -	
    1.72 +
    1.73  	webkit_web_view_set_view_source_mode(webview, !source);
    1.74  	webkit_web_view_reload(webview);
    1.75  }
    1.76 @@ -147,14 +153,25 @@
    1.77  search_icon_press_cb(GtkWidget *search, GtkEntryIconPosition pos,
    1.78  		GdkEvent *event, WebKitWebView* webview)
    1.79  {
    1.80 -    search_web(search, webview);
    1.81 +	search_web(search, webview);
    1.82  }
    1.83  
    1.84 -/* Navigation button function: */
    1.85 +/* 
    1.86 + * 
    1.87 + * Navigation functions
    1.88 + * 
    1.89 + */
    1.90 +
    1.91 +static void
    1.92 +bookmarks_edit_cb(GtkWidget* widget, WebKitWebView* webview)
    1.93 +{
    1.94 +	system("/usr/lib/tazweb/helper.sh edit_bookmarks");
    1.95 +}
    1.96 +
    1.97  static void
    1.98  go_bookmarks_cb(GtkWidget* widget, WebKitWebView* webview)
    1.99  {
   1.100 -	system("tazweb-helper html_bookmarks");
   1.101 +	system("/usr/lib/tazweb/helper.sh html_bookmarks");
   1.102  	uri = g_strdup_printf("file://%s", BMURL);
   1.103  	g_assert(uri);
   1.104  	webkit_web_view_load_uri(webview, uri);
   1.105 @@ -171,28 +188,15 @@
   1.106  static void
   1.107  go_back_cb(GtkWidget* widget, WebKitWebView* webview)
   1.108  {
   1.109 -    webkit_web_view_go_back(webview);
   1.110 +	webkit_web_view_go_back(webview);
   1.111  }
   1.112  
   1.113  static void
   1.114  go_forward_cb(GtkWidget* widget, WebKitWebView* webview)
   1.115  {
   1.116 -    webkit_web_view_go_forward(webview);
   1.117 +	webkit_web_view_go_forward(webview);
   1.118  }
   1.119  
   1.120 -/* Fullscreen and unfullscreen callback function */
   1.121 -//static void
   1.122 -//fullscreen_cb(GtkWindow* window, gpointer data)
   1.123 -//{
   1.124 -	//GdkWindowState state;
   1.125 -	//state = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(mainwindow)));
   1.126 -
   1.127 -	//if(state & GDK_WINDOW_STATE_FULLSCREEN)
   1.128 -		//gtk_window_unfullscreen(GTK_WINDOW(mainwindow));
   1.129 -	//else
   1.130 -		//gtk_window_fullscreen(GTK_WINDOW(mainwindow));
   1.131 -//}
   1.132 -
   1.133  /* TazWeb doc callback function */
   1.134  static void
   1.135  tazweb_doc_cb(GtkWidget* widget, WebKitWebView *webview)
   1.136 @@ -202,7 +206,7 @@
   1.137  	webkit_web_view_load_uri(webview, uri);
   1.138  }
   1.139  
   1.140 -/* Download function */
   1.141 +/* Download functions */
   1.142  static gboolean
   1.143  download_requested_cb(WebKitWebView *webview, WebKitDownload *download,
   1.144  		gpointer user_data)
   1.145 @@ -232,10 +236,24 @@
   1.146  static void
   1.147  print_page_cb (GtkWidget *widget, gpointer data)
   1.148  {
   1.149 -    webkit_web_frame_print (webkit_web_view_get_main_frame (
   1.150 -        WEBKIT_WEB_VIEW (webview)));
   1.151 +	webkit_web_frame_print (webkit_web_view_get_main_frame (
   1.152 +		WEBKIT_WEB_VIEW (webview)));
   1.153  }
   1.154  
   1.155 +
   1.156 +/* Fullscreen and unfullscreen callback function */
   1.157 +//static void
   1.158 +//fullscreen_cb(GtkWindow* window, gpointer data)
   1.159 +//{
   1.160 +	//GdkWindowState state;
   1.161 +	//state = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(mainwindow)));
   1.162 +
   1.163 +	//if(state & GDK_WINDOW_STATE_FULLSCREEN)
   1.164 +		//gtk_window_unfullscreen(GTK_WINDOW(mainwindow));
   1.165 +	//else
   1.166 +		//gtk_window_fullscreen(GTK_WINDOW(mainwindow));
   1.167 +//}
   1.168 +
   1.169  /* New webview callbacks */
   1.170  static WebKitWebView*
   1.171  create_web_view_cb(WebKitWebView* webview, WebKitWebFrame* web_frame,
   1.172 @@ -262,46 +280,66 @@
   1.173  }
   1.174  
   1.175  /* Add a bookmark */
   1.176 -void add_bookmark_cb(GtkWidget *widget, gpointer data)
   1.177 +void
   1.178 +add_bookmark_cb(GtkWidget *widget, gpointer data)
   1.179  {
   1.180  	const gchar* title;
   1.181  	const gchar* buffer;
   1.182 -	
   1.183 +
   1.184  	title = webkit_web_view_get_title(WEBKIT_WEB_VIEW (webview));
   1.185  	uri = webkit_web_view_get_uri(WEBKIT_WEB_VIEW (webview));
   1.186 -	
   1.187 +
   1.188  	asprintf(&buffer, "echo '%s|%s' >> %s", title, uri, BMTXT);
   1.189  	system(buffer);
   1.190  }
   1.191  
   1.192 +/* Setup session cookies */
   1.193 +void
   1.194 +cookies_setup(void)
   1.195 +{
   1.196 +	if (cookiejar) {
   1.197 +		soup_session_remove_feature(session,
   1.198 +			(SoupSessionFeature*)cookiejar);
   1.199 +		g_object_unref(cookiejar);
   1.200 +		cookiejar = NULL;
   1.201 +	}
   1.202 +
   1.203 +	cookiejar = soup_cookie_jar_text_new(COOKIES, 0);
   1.204 +	soup_session_add_feature(session, (SoupSessionFeature*)cookiejar);
   1.205 +}
   1.206 +
   1.207 +static void
   1.208 +cookies_view_cb(GtkWidget* widget, WebKitWebView* webview)
   1.209 +{
   1.210 +	system("/usr/lib/tazweb/helper.sh html_cookies");
   1.211 +	uri = g_strdup_printf("file://%s/cookies.html", CONFIG);
   1.212 +	g_assert(uri);
   1.213 +	webkit_web_view_load_uri(webview, uri);
   1.214 +}
   1.215 +
   1.216 +static void
   1.217 +cookies_clean_cb(GtkWidget* widget, WebKitWebView* webview)
   1.218 +{
   1.219 +	system("/usr/lib/tazweb/helper.sh clean_cookies");
   1.220 +}
   1.221 +
   1.222  /* Add items to WebKit contextual menu */
   1.223  static void
   1.224  populate_menu_cb(WebKitWebView *webview, GtkMenu *menu, gpointer data)
   1.225  {
   1.226  	GtkWidget* item;
   1.227 -	
   1.228 -	/* Separator */
   1.229 -	item = gtk_separator_menu_item_new();
   1.230 -	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.231 -
   1.232 -	/* Zoom in */
   1.233 -	item = gtk_image_menu_item_new_with_label(_("Zoom in"));
   1.234 -	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.235 -	gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU));
   1.236 -	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.237 -	g_signal_connect(item, "activate", G_CALLBACK(zoom_in_cb), webview);
   1.238 -	
   1.239 -	/* Zoom out */
   1.240 -	item = gtk_image_menu_item_new_with_label(_("Zoom out"));
   1.241 -	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.242 -	gtk_image_new_from_stock(GTK_STOCK_ZOOM_OUT, GTK_ICON_SIZE_MENU));
   1.243 -	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.244 -	g_signal_connect(item, "activate", G_CALLBACK(zoom_out_cb), webview);
   1.245  
   1.246  	/* Separator */
   1.247  	item = gtk_separator_menu_item_new();
   1.248  	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.249 -
   1.250 +	
   1.251 +	/* Bookmark */
   1.252 +	item = gtk_image_menu_item_new_with_label(_("Bookmarks"));
   1.253 +	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.254 +	gtk_image_new_from_stock(GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU));
   1.255 +	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.256 +	g_signal_connect(item, "activate", G_CALLBACK(go_bookmarks_cb), webview);
   1.257 +	
   1.258  	if (! kiosk) {
   1.259  		/* Add a bookmark */
   1.260  		item = gtk_image_menu_item_new_with_label(_("Add a bookmark"));
   1.261 @@ -309,8 +347,19 @@
   1.262  		gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU));
   1.263  		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.264  		g_signal_connect(item, "activate", G_CALLBACK(add_bookmark_cb), webview);
   1.265 +		
   1.266 +		/* Edit bookmarks */
   1.267 +		item = gtk_image_menu_item_new_with_label(_("Edit bookmarks"));
   1.268 +		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.269 +		gtk_image_new_from_stock(GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU));
   1.270 +		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.271 +		g_signal_connect(item, "activate", G_CALLBACK(bookmarks_edit_cb), webview);
   1.272 +		
   1.273 +		/* Separator */
   1.274 +		item = gtk_separator_menu_item_new();
   1.275 +		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.276  	}
   1.277 -
   1.278 +	
   1.279  	/* Printing */
   1.280  	item = gtk_image_menu_item_new_with_label(_("Print this page"));
   1.281  	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.282 @@ -324,25 +373,62 @@
   1.283  	gtk_image_new_from_stock(GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU));
   1.284  	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.285  	g_signal_connect(item, "activate", G_CALLBACK(view_source_cb), webview);
   1.286 +	
   1.287 +	/* Separator */
   1.288 +	item = gtk_separator_menu_item_new();
   1.289 +	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.290 +	
   1.291 +	/* Zoom in */
   1.292 +	item = gtk_image_menu_item_new_with_label(_("Zoom in"));
   1.293 +	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.294 +	gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU));
   1.295 +	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.296 +	g_signal_connect(item, "activate", G_CALLBACK(zoom_in_cb), webview);
   1.297 +
   1.298 +	/* Zoom out */
   1.299 +	item = gtk_image_menu_item_new_with_label(_("Zoom out"));
   1.300 +	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.301 +	gtk_image_new_from_stock(GTK_STOCK_ZOOM_OUT, GTK_ICON_SIZE_MENU));
   1.302 +	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.303 +	g_signal_connect(item, "activate", G_CALLBACK(zoom_out_cb), webview);
   1.304  
   1.305  	/* Separator */
   1.306  	item = gtk_separator_menu_item_new();
   1.307  	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.308  
   1.309 +	/* Cookies */
   1.310 +	if (! nocookies) {
   1.311 +		item = gtk_image_menu_item_new_with_label(_("View cookies"));
   1.312 +		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.313 +		gtk_image_new_from_stock(GTK_STOCK_HELP, GTK_ICON_SIZE_MENU));
   1.314 +		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.315 +		g_signal_connect(item, "activate", G_CALLBACK(cookies_view_cb), webview);
   1.316 +		
   1.317 +		item = gtk_image_menu_item_new_with_label(_("Clean all cookies"));
   1.318 +		gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.319 +		gtk_image_new_from_stock(GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU));
   1.320 +		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.321 +		g_signal_connect(item, "activate", G_CALLBACK(cookies_clean_cb), webview);
   1.322 +		
   1.323 +		/* Separator */
   1.324 +		item = gtk_separator_menu_item_new();
   1.325 +		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.326 +	}
   1.327 +
   1.328  	/* TazWeb documentation */
   1.329  	item = gtk_image_menu_item_new_with_label(_("TazWeb manual"));
   1.330  	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.331  	gtk_image_new_from_stock(GTK_STOCK_HELP, GTK_ICON_SIZE_MENU));
   1.332  	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.333  	g_signal_connect(item, "activate", G_CALLBACK(tazweb_doc_cb), webview);
   1.334 -	
   1.335 +
   1.336  	/* Quit TazWeb */
   1.337  	item = gtk_image_menu_item_new_with_label(_("Quit TazWeb"));
   1.338  	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
   1.339  	gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU));
   1.340  	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
   1.341  	g_signal_connect(item, "activate", G_CALLBACK(destroy_cb), webview);
   1.342 -	
   1.343 +
   1.344  	gtk_widget_show_all(GTK_WIDGET(menu));
   1.345  }
   1.346  
   1.347 @@ -352,7 +438,7 @@
   1.348  		WebKitWebView* webview)
   1.349  {
   1.350  	WebKitWebSettings *settings;
   1.351 -	
   1.352 +
   1.353  	browser = gtk_scrolled_window_new(NULL, NULL);
   1.354  	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(browser),
   1.355  			GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
   1.356 @@ -374,7 +460,7 @@
   1.357  			G_CALLBACK(webview_ready_cb), window);
   1.358  	g_signal_connect(webview, "close-web-view",
   1.359  			G_CALLBACK(close_webview_cb), window);
   1.360 -	
   1.361 +
   1.362  	/* Impossible to open in new window or download in kiosk mode */
   1.363  	if (! kiosk) {
   1.364  		g_signal_connect(webview, "download-requested",
   1.365 @@ -394,7 +480,7 @@
   1.366  create_toolbar(GtkWidget* urientry, GtkWidget* search, WebKitWebView* webview)
   1.367  {
   1.368  	GtkToolItem* item;
   1.369 -	
   1.370 +
   1.371  	toolbar = gtk_toolbar_new();
   1.372  	gtk_toolbar_set_orientation(GTK_TOOLBAR(toolbar),
   1.373  			GTK_ORIENTATION_HORIZONTAL);
   1.374 @@ -402,18 +488,18 @@
   1.375  			GTK_TOOLBAR_BOTH_HORIZ);
   1.376  
   1.377  	/* The back button */
   1.378 -    item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
   1.379 -    g_signal_connect(G_OBJECT(item), "clicked",
   1.380 +	item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
   1.381 +	g_signal_connect(G_OBJECT(item), "clicked",
   1.382  			G_CALLBACK(go_back_cb), webview);
   1.383 -    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.384 +	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.385  
   1.386 -    /* The forward button */
   1.387 -    item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
   1.388 -    g_signal_connect(G_OBJECT(item), "clicked",
   1.389 +	/* The forward button */
   1.390 +	item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
   1.391 +	g_signal_connect(G_OBJECT(item), "clicked",
   1.392  			G_CALLBACK(go_forward_cb), webview);
   1.393 -    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.394 +	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.395  
   1.396 -    /* Home button */
   1.397 +	/* Home button */
   1.398  	item = gtk_tool_button_new_from_stock(GTK_STOCK_HOME);
   1.399  	g_signal_connect(G_OBJECT(item), "clicked",
   1.400  			G_CALLBACK(go_home_cb), webview);
   1.401 @@ -422,19 +508,20 @@
   1.402  	/* URL entry */
   1.403  	item = gtk_tool_item_new();
   1.404  	gtk_tool_item_set_expand(item, TRUE);
   1.405 -	gtk_widget_set_size_request(urientry, 0, 20);
   1.406 +	//gtk_widget_set_size_request(urientry, 0, 20);
   1.407  	gtk_container_add(GTK_CONTAINER(item), urientry);
   1.408  	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.409  	g_signal_connect(G_OBJECT(urientry), "activate",
   1.410  			G_CALLBACK(uri_entry_cb), webview);
   1.411 -	
   1.412 +
   1.413  	/* Separator */
   1.414  	item = gtk_separator_tool_item_new();
   1.415 -	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1); 
   1.416 -	
   1.417 +	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.418 +
   1.419  	/* Search entry */
   1.420  	item = gtk_tool_item_new();
   1.421 -	gtk_widget_set_size_request(search, 160, 20);
   1.422 +	gtk_tool_item_set_expand(item, FALSE);
   1.423 +	gtk_widget_set_size_request(GTK_WIDGET(item), 200, 0);
   1.424  	gtk_container_add(GTK_CONTAINER(item), search);
   1.425  	gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
   1.426  	gtk_entry_set_icon_from_stock(GTK_ENTRY(search),
   1.427 @@ -443,7 +530,7 @@
   1.428  			G_CALLBACK(search_icon_press_cb), webview);
   1.429  	g_signal_connect(G_OBJECT(search), "activate",
   1.430  			G_CALLBACK(search_entry_cb), webview);
   1.431 -	
   1.432 +
   1.433  	/* Bookmark button */
   1.434  	item = gtk_tool_button_new_from_stock(GTK_STOCK_PROPERTIES);
   1.435  	g_signal_connect(G_OBJECT(item), "clicked",
   1.436 @@ -460,7 +547,7 @@
   1.437  	GtkWidget *window;
   1.438  	GtkWidget *urientry;
   1.439  	GtkWidget *search;
   1.440 -	
   1.441 +
   1.442  	g_atomic_int_inc(&count);
   1.443  
   1.444  	/* Default TazWeb window */
   1.445 @@ -476,31 +563,34 @@
   1.446  	urientry = gtk_entry_new();
   1.447  	search = gtk_entry_new();
   1.448  	vbox = gtk_vbox_new(FALSE, 0);
   1.449 -	
   1.450 +
   1.451  	/* Pack box and container */
   1.452  	if (! notoolbar)
   1.453  		gtk_box_pack_start(GTK_BOX(vbox),
   1.454  			create_toolbar(urientry, search, webview), FALSE, FALSE, 0);
   1.455  	gtk_box_pack_start(GTK_BOX(vbox),
   1.456  			create_browser(window, urientry, search, webview), TRUE, TRUE, 0);
   1.457 -	
   1.458 +
   1.459  	gtk_container_add(GTK_CONTAINER(window), vbox);
   1.460 -	
   1.461 +
   1.462  	if (newwebview)
   1.463  		*newwebview = webview;
   1.464 -	
   1.465 -	return window;	
   1.466 +
   1.467 +	return window;
   1.468  }
   1.469  
   1.470  int
   1.471  main(int argc, char* argv[])
   1.472  {
   1.473  	textdomain (GETTEXT_PACKAGE);
   1.474 -	
   1.475 +
   1.476  	while (argc > 1) {
   1.477  		if (!strcmp(argv[1],"--notoolbar")) {
   1.478  			notoolbar++;
   1.479  		}
   1.480 +		if (!strcmp(argv[1],"--nocookies")) {
   1.481 +			nocookies++;
   1.482 +		}
   1.483  		else if (!strcmp(argv[1],"--kiosk")) {
   1.484  			kiosk++;
   1.485  		}
   1.486 @@ -510,7 +600,7 @@
   1.487  			useragent = argv[1];
   1.488  		}
   1.489  		else if (!strcmp(argv[1],"--help")) {
   1.490 -			printf ("Usage: tazweb [--notoolbar|--kiosk|--useragent] [ua]\n");
   1.491 +			printf ("Usage: tazweb [--notoolbar|--nocookies|--kiosk|--useragent] [ua]\n");
   1.492  			printf ("Bookmarks: %s\n", BMTXT);
   1.493  			return 0;
   1.494  		}
   1.495 @@ -518,32 +608,39 @@
   1.496  		argc--;
   1.497  		argv++;
   1.498  	}
   1.499 -	
   1.500 +
   1.501  	/* Initialize GTK */
   1.502  	gtk_init(NULL, NULL);
   1.503 -	
   1.504 +
   1.505  	/* Get a default bookmarks.txt if missing */
   1.506  	if (! g_file_test(BMTXT, G_FILE_TEST_EXISTS)) {
   1.507  		system("install -m 0700 -d $HOME/.config/tazweb");
   1.508  		system("install -m 0600 /usr/share/tazweb/bookmarks.txt \
   1.509  			$HOME/.config/tazweb/bookmarks.txt");
   1.510 -	} 
   1.511 +	}
   1.512  
   1.513  	/* Load the start page file or the url in argument */
   1.514  	uri =(char*)(argc > 1 ? argv[1] : WEBHOME);
   1.515  	if (argv[1])
   1.516  		check_requested_uri();
   1.517 -		
   1.518 +
   1.519  	mainwindow = create_window(&webview);
   1.520  	gtk_widget_show_all(mainwindow);
   1.521  	
   1.522 +	/* Handle cookies */
   1.523 +	if (! nocookies) {
   1.524 +		session = webkit_get_default_session();
   1.525 +		snprintf(COOKIES, sizeof COOKIES, "%s", COOKIES);
   1.526 +		cookies_setup();
   1.527 +	}
   1.528 +	
   1.529  	/* Fullscreen for Kiosk mode */
   1.530  	if (kiosk)
   1.531  		gtk_window_fullscreen(GTK_WINDOW(mainwindow));
   1.532 -	
   1.533 +
   1.534  	webkit_web_view_load_uri(webview, uri);
   1.535  	gtk_widget_grab_focus(GTK_WIDGET(webview));
   1.536  	gtk_main();
   1.537 -	
   1.538 +
   1.539  	return 0;
   1.540  }