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",