tazweb diff src/main.c @ rev 130
Add a Kiosk mode and fullscreen button for normal use
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Sat Jan 04 03:12:36 2014 +0100 (2014-01-04) |
parents | a8d926c59509 |
children | 707f5eee5536 |
line diff
1.1 --- a/src/main.c Wed Feb 27 18:15:40 2013 +0000 1.2 +++ b/src/main.c Sat Jan 04 03:12:36 2014 +0100 1.3 @@ -22,12 +22,13 @@ 1.4 1.5 /* Needs AppleWebKit/531.2+ to handle all sites ? */ 1.6 static gchar *useragent = "TazWeb (X11; SliTaz GNU/Linux; U; en_US)"; 1.7 - 1.8 static GtkWidget* create_window(WebKitWebView** newwebview); 1.9 static GtkWidget *mainwindow, *vbox, *browser, *toolbar; 1.10 static WebKitWebView *webview; 1.11 static WebKitWebFrame *frame; 1.12 static gint count = 0; 1.13 +static gboolean notoolbar; 1.14 +static gboolean kiosk; 1.15 const gchar* uri; 1.16 1.17 /* Create an icon */ 1.18 @@ -167,17 +168,17 @@ 1.19 } 1.20 1.21 /* Fullscreen and unfullscreen callback function */ 1.22 -//static void 1.23 -//fullscreen_cb(GtkWindow* window, gpointer data) 1.24 -//{ 1.25 - //GdkWindowState state; 1.26 - //state = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(mainwindow))); 1.27 +static void 1.28 +fullscreen_cb(GtkWindow* window, gpointer data) 1.29 +{ 1.30 + GdkWindowState state; 1.31 + state = gdk_window_get_state(gtk_widget_get_window(GTK_WIDGET(mainwindow))); 1.32 1.33 - //if(state & GDK_WINDOW_STATE_FULLSCREEN) 1.34 - //gtk_window_unfullscreen(GTK_WINDOW(mainwindow)); 1.35 - //else 1.36 - //gtk_window_fullscreen(GTK_WINDOW(mainwindow)); 1.37 -//} 1.38 + if(state & GDK_WINDOW_STATE_FULLSCREEN) 1.39 + gtk_window_unfullscreen(GTK_WINDOW(mainwindow)); 1.40 + else 1.41 + gtk_window_fullscreen(GTK_WINDOW(mainwindow)); 1.42 +} 1.43 1.44 /* TazWeb doc callback function */ 1.45 static void 1.46 @@ -293,15 +294,20 @@ 1.47 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.48 1.49 /* Add to bookmarks */ 1.50 - item = gtk_image_menu_item_new_with_label(_("Add a bookmark")); 1.51 + if (! kiosk) { 1.52 + item = gtk_image_menu_item_new_with_label(_("Add a bookmark")); 1.53 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), 1.54 + gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU)); 1.55 + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.56 + g_signal_connect(item, "activate", G_CALLBACK(add_bookmark_cb), webview); 1.57 + } 1.58 + 1.59 + /* Printing */ 1.60 + item = gtk_image_menu_item_new_with_label(_("Print this page")); 1.61 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), 1.62 - gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU)); 1.63 + gtk_image_new_from_stock(GTK_STOCK_PRINT, GTK_ICON_SIZE_MENU)); 1.64 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.65 - g_signal_connect(item, "activate", G_CALLBACK(add_bookmark_cb), webview); 1.66 - 1.67 - /* Separator */ 1.68 - item = gtk_separator_menu_item_new(); 1.69 - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.70 + g_signal_connect(item, "activate", G_CALLBACK(print_page_cb), webview); 1.71 1.72 /* View source mode */ 1.73 item = gtk_image_menu_item_new_with_label(_("View source mode")); 1.74 @@ -310,13 +316,6 @@ 1.75 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.76 g_signal_connect(item, "activate", G_CALLBACK(view_source_cb), webview); 1.77 1.78 - /* Printing */ 1.79 - item = gtk_image_menu_item_new_with_label(_("Print this page")); 1.80 - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), 1.81 - gtk_image_new_from_stock(GTK_STOCK_PRINT, GTK_ICON_SIZE_MENU)); 1.82 - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.83 - g_signal_connect(item, "activate", G_CALLBACK(print_page_cb), webview); 1.84 - 1.85 /* Separator */ 1.86 item = gtk_separator_menu_item_new(); 1.87 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.88 @@ -328,6 +327,17 @@ 1.89 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.90 g_signal_connect(item, "activate", G_CALLBACK(tazweb_doc_cb), webview); 1.91 1.92 + /* Separator */ 1.93 + item = gtk_separator_menu_item_new(); 1.94 + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.95 + 1.96 + /* Quit TazWeb */ 1.97 + item = gtk_image_menu_item_new_with_label(_("Quit TazWeb")); 1.98 + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), 1.99 + gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU)); 1.100 + gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); 1.101 + g_signal_connect(item, "activate", G_CALLBACK(destroy_cb), webview); 1.102 + 1.103 gtk_widget_show_all(GTK_WIDGET(menu)); 1.104 } 1.105 1.106 @@ -355,14 +365,17 @@ 1.107 G_CALLBACK(notify_progress_cb), window); 1.108 g_signal_connect(webview, "notify::load-status", 1.109 G_CALLBACK(notify_load_status_cb), urientry); 1.110 - g_signal_connect(webview, "download-requested", 1.111 - G_CALLBACK(download_requested_cb), NULL); 1.112 - g_signal_connect(webview, "create-web-view", 1.113 - G_CALLBACK(create_web_view_cb), window); 1.114 g_signal_connect(webview, "web-view-ready", 1.115 G_CALLBACK(webview_ready_cb), window); 1.116 g_signal_connect(webview, "close-web-view", 1.117 G_CALLBACK(close_webview_cb), window); 1.118 + /* Impossible to open in new window or download in kiosk mode */ 1.119 + if (! kiosk) { 1.120 + g_signal_connect(webview, "download-requested", 1.121 + G_CALLBACK(download_requested_cb), NULL); 1.122 + g_signal_connect(webview, "create-web-view", 1.123 + G_CALLBACK(create_web_view_cb), window); 1.124 + } 1.125 1.126 /* Connect WebKit contextual menu items */ 1.127 g_object_connect(G_OBJECT(webview), "signal::populate-popup", 1.128 @@ -426,15 +439,16 @@ 1.129 G_CALLBACK(search_entry_cb), webview); 1.130 1.131 /* The Fullscreen button */ 1.132 - //item = gtk_tool_button_new_from_stock(GTK_STOCK_FULLSCREEN); 1.133 - //g_signal_connect(G_OBJECT(item), "clicked", 1.134 - //G_CALLBACK(fullscreen_cb), NULL); 1.135 - //gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1); 1.136 - 1.137 + if (! kiosk) { 1.138 + item = gtk_tool_button_new_from_stock(GTK_STOCK_FULLSCREEN); 1.139 + g_signal_connect(G_OBJECT(item), "clicked", 1.140 + G_CALLBACK(fullscreen_cb), NULL); 1.141 + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1); 1.142 + } 1.143 + 1.144 return toolbar; 1.145 } 1.146 1.147 -static gboolean notoolbar; 1.148 /* Main window */ 1.149 static GtkWidget* 1.150 create_window(WebKitWebView** newwebview) 1.151 @@ -464,7 +478,7 @@ 1.152 create_browser(window, urientry, search, webview), TRUE, TRUE, 0); 1.153 if (! notoolbar) 1.154 gtk_box_pack_start(GTK_BOX(vbox), 1.155 - create_toolbar(urientry, search, webview), FALSE, FALSE, 0); 1.156 + create_toolbar(urientry, search, webview), FALSE, FALSE, 0); 1.157 gtk_container_add(GTK_CONTAINER(window), vbox); 1.158 1.159 if (newwebview) 1.160 @@ -482,6 +496,9 @@ 1.161 if (!strcmp(argv[1],"--notoolbar")) { 1.162 notoolbar++; 1.163 } 1.164 + else if (!strcmp(argv[1],"--kiosk")) { 1.165 + kiosk++; 1.166 + } 1.167 else if (!strcmp(argv[1],"--useragent") && argc > 2) { 1.168 argc--; 1.169 argv++; 1.170 @@ -508,8 +525,12 @@ 1.171 check_requested_uri(); 1.172 1.173 mainwindow = create_window(&webview); 1.174 + gtk_widget_show_all(mainwindow); 1.175 1.176 - gtk_widget_show_all(mainwindow); 1.177 + /* Fullscreen for Kiosk mode */ 1.178 + if (kiosk) 1.179 + gtk_window_fullscreen(GTK_WINDOW(mainwindow)); 1.180 + 1.181 webkit_web_view_load_uri(webview, uri); 1.182 gtk_widget_grab_focus(GTK_WIDGET(webview)); 1.183 gtk_main();