tazweb rev 57

Add populate_menu_cb and connection to have custom contextual menu items
author Christophe Lincoln <pankso@slitaz.org>
date Fri Apr 22 01:43:51 2011 +0200 (2011-04-22)
parents 2c6aa40bfc04
children ae341ad49c1b
files COPYING src/main.c
line diff
     1.1 --- a/COPYING	Fri Apr 22 00:24:47 2011 +0200
     1.2 +++ b/COPYING	Fri Apr 22 01:43:51 2011 +0200
     1.3 @@ -6,11 +6,10 @@
     1.4  
     1.5  
     1.6  When TazWeb started, some code had been taken from the GTKWebkit source
     1.7 -tarball as well as code from the surf web browser and is:
     1.8 +tarball:
     1.9  
    1.10  	Copyright (C) 2006, 2007 Apple Inc.
    1.11  	Copyright (C) 2007 Alp Toker <alp@atoker.com>
    1.12 -	Copyright (C) 2009 Enno Boland <g s01 de>
    1.13  
    1.14  BSD License
    1.15  -----------
     2.1 --- a/src/main.c	Fri Apr 22 00:24:47 2011 +0200
     2.2 +++ b/src/main.c	Fri Apr 22 01:43:51 2011 +0200
     2.3 @@ -5,20 +5,18 @@
     2.4   *
     2.5   * Copyright (C) 2011 SliTaz GNU/Linux <devel@slitaz.org>
     2.6   *
     2.7 - *
     2.8   */
     2.9  
    2.10  #include <gtk/gtk.h>
    2.11  #include <webkit/webkit.h>
    2.12  
    2.13 -static GtkWidget* main_window;
    2.14 +static GtkWidget *main_window, *uri_entry, *search_entry;
    2.15  static WebKitWebView* web_view;
    2.16  static WebKitWebFrame* frame;
    2.17 -static GtkWidget* uri_entry;
    2.18 -static GtkWidget* search_entry;
    2.19 -static gchar* main_title;
    2.20  static gdouble load_progress;
    2.21  static guint status_context_id;
    2.22 +static gchar* main_title;
    2.23 +
    2.24  const gchar* config;
    2.25  const gchar* uri;
    2.26  
    2.27 @@ -89,7 +87,7 @@
    2.28  	gtk_main_quit ();
    2.29  }
    2.30  
    2.31 -/* Show page source 
    2.32 +/* Show page source */
    2.33  static void
    2.34  view_source_cb ()
    2.35  {
    2.36 @@ -101,7 +99,7 @@
    2.37  	
    2.38  	webkit_web_view_set_view_source_mode(web_view, !source);
    2.39  	webkit_web_view_load_uri (web_view, uri);
    2.40 -}*/
    2.41 +}
    2.42  
    2.43  /* URL entry callback function */
    2.44  static void
    2.45 @@ -165,6 +163,26 @@
    2.46  	system (buffer);
    2.47  }
    2.48  
    2.49 +/* Add items to WebKit contextual menu */
    2.50 +static void
    2.51 +populate_menu_cb (WebKitWebView *web_view, GtkMenu *menu, gpointer data)
    2.52 +{
    2.53 +	GtkWidget *item;
    2.54 +	
    2.55 +	/* separator */
    2.56 +	item = gtk_separator_menu_item_new ();
    2.57 +	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
    2.58 +	
    2.59 +	/* View source mode */
    2.60 +	item = gtk_image_menu_item_new_with_label ("View source");
    2.61 +	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item),
    2.62 +	gtk_image_new_from_stock (GTK_STOCK_PROPERTIES, GTK_ICON_SIZE_MENU));
    2.63 +	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
    2.64 +	g_signal_connect (item, "activate", G_CALLBACK (view_source_cb), NULL);
    2.65 +	
    2.66 +	gtk_widget_show_all (GTK_WIDGET (menu));
    2.67 +}
    2.68 +
    2.69  static GtkWidget*
    2.70  create_browser ()
    2.71  {
    2.72 @@ -175,6 +193,7 @@
    2.73  	web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
    2.74  	gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view));
    2.75  
    2.76 +	/* Connect events */
    2.77  	g_signal_connect (web_view, "notify::title",
    2.78  			G_CALLBACK (notify_title_cb), web_view);
    2.79  	g_signal_connect (web_view, "notify::progress",
    2.80 @@ -184,6 +203,10 @@
    2.81  	g_signal_connect (web_view, "download-requested",
    2.82  			G_CALLBACK (download_requested_cb), NULL);
    2.83  
    2.84 +	/* Connect WebKit contextual menu items */
    2.85 +	g_object_connect (G_OBJECT (web_view), "signal::populate-popup",
    2.86 +		G_CALLBACK (populate_menu_cb), web_view, NULL);
    2.87 +
    2.88  	return scrolled_window;
    2.89  }
    2.90  
    2.91 @@ -191,7 +214,6 @@
    2.92  create_toolbar ()
    2.93  {
    2.94  	GtkToolItem* item;
    2.95 -	GtkToolItem* sep;
    2.96  
    2.97  	GtkWidget* toolbar = gtk_toolbar_new ();
    2.98  	gtk_widget_set_size_request (toolbar, 0, 31);
    2.99 @@ -200,13 +222,13 @@
   2.100  	gtk_toolbar_set_style (GTK_TOOLBAR (toolbar),
   2.101  			GTK_TOOLBAR_BOTH_HORIZ);
   2.102  
   2.103 -	/* The Home button */
   2.104 +	/* Home button */
   2.105  	item = gtk_tool_button_new_from_stock (GTK_STOCK_HOME);
   2.106  	g_signal_connect (G_OBJECT (item), "clicked",
   2.107  			G_CALLBACK (go_home_cb), NULL);
   2.108  	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
   2.109  
   2.110 -	/* The URL entry */
   2.111 +	/* URL entry */
   2.112  	item = gtk_tool_item_new ();
   2.113  	gtk_tool_item_set_expand (item, TRUE);
   2.114  	uri_entry = gtk_entry_new ();
   2.115 @@ -216,10 +238,10 @@
   2.116  	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
   2.117  
   2.118  	/* Separator */
   2.119 -	sep = gtk_separator_tool_item_new ();
   2.120 -	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), sep, -1); 
   2.121 +	item = gtk_separator_tool_item_new ();
   2.122 +	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); 
   2.123  	
   2.124 -	/* The Search entry */
   2.125 +	/* Search entry */
   2.126  	item = gtk_tool_item_new ();
   2.127  	search_entry = gtk_entry_new ();
   2.128  	gtk_container_add (GTK_CONTAINER (item), search_entry);
   2.129 @@ -227,18 +249,12 @@
   2.130  					  G_CALLBACK (activate_search_entry_cb), NULL);
   2.131  	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
   2.132  
   2.133 -	/* The TazWeb doc button */
   2.134 +	/* TazWeb doc button */
   2.135  	item = gtk_tool_button_new_from_stock (GTK_STOCK_INFO);
   2.136  	g_signal_connect (G_OBJECT (item), "clicked",
   2.137  			G_CALLBACK (tazweb_doc_cb), NULL);
   2.138  	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);
   2.139  
   2.140 -	/* The View source button 
   2.141 -	item = gtk_tool_button_new_from_stock (GTK_STOCK_PROPERTIES);
   2.142 -	g_signal_connect (G_OBJECT (item), "clicked",
   2.143 -			G_CALLBACK (view_source_cb), NULL);
   2.144 -	gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1);*/
   2.145 -
   2.146  	/* The Fullscreen button */
   2.147  	item = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);
   2.148  	g_signal_connect (G_OBJECT (item), "clicked",