Began to implement callbacks in the context menu

This commit is contained in:
Pierre Pronchery 2013-05-20 06:26:51 +02:00
parent 75c2c87a2b
commit c769c792fa
3 changed files with 28 additions and 7 deletions

View File

@ -1,5 +1,5 @@
/* $Id$ */ /* $Id$ */
/* Copyright (c) 2006-2012 Pierre Pronchery <khorben@defora.org> */ /* Copyright (c) 2006-2013 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Surfer */ /* This file is part of DeforaOS Desktop Surfer */
/* This program is free software: you can redistribute it and/or modify /* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -250,7 +250,7 @@ void on_view_page_source(gpointer data)
{ {
Surfer * surfer = data; Surfer * surfer = data;
surfer_view_source(surfer); on_view_source(surfer);
} }
@ -565,6 +565,15 @@ void on_stop(gpointer data)
} }
/* on_view_source */
void on_view_source(gpointer data)
{
Surfer * surfer = data;
surfer_view_source(surfer);
}
/* on_zoom_changed */ /* on_zoom_changed */
void on_zoom_changed(gpointer data, GtkWidget * widget) void on_zoom_changed(gpointer data, GtkWidget * widget)
{ {

View File

@ -1,5 +1,5 @@
/* $Id$ */ /* $Id$ */
/* Copyright (c) 2012 Pierre Pronchery <khorben@defora.org> */ /* Copyright (c) 2006-2013 Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Desktop Surfer */ /* This file is part of DeforaOS Desktop Surfer */
/* This program is free software: you can redistribute it and/or modify /* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -78,6 +78,7 @@ void on_preferences(gpointer data);
void on_refresh(gpointer data); void on_refresh(gpointer data);
void on_security(gpointer data); void on_security(gpointer data);
void on_stop(gpointer data); void on_stop(gpointer data);
void on_view_source(gpointer data);
void on_zoom_changed(gpointer data, GtkWidget * widget); void on_zoom_changed(gpointer data, GtkWidget * widget);
void on_zoom_in(gpointer data); void on_zoom_in(gpointer data);
void on_zoom_out(gpointer data); void on_zoom_out(gpointer data);

View File

@ -23,6 +23,7 @@
#include <arpa/inet.h> #include <arpa/inet.h>
#include <libintl.h> #include <libintl.h>
#include <webkit/webkit.h> #include <webkit/webkit.h>
#include "callbacks.h"
#include "ghtml.h" #include "ghtml.h"
#include "common/url.c" #include "common/url.c"
#include "../config.h" #include "../config.h"
@ -845,11 +846,13 @@ static void _context_menu_separator(GtkWidget * menu, gboolean * separator);
static gboolean _on_context_menu(WebKitWebView * view, GtkWidget * menu, static gboolean _on_context_menu(WebKitWebView * view, GtkWidget * menu,
WebKitHitTestResult * result, gboolean keyboard, gpointer data) WebKitHitTestResult * result, gboolean keyboard, gpointer data)
{ {
GHtml * ghtml = data; GtkWidget * widget = data;
GHtml * ghtml;
WebKitHitTestResultContext context; WebKitHitTestResultContext context;
gboolean separator = FALSE; gboolean separator = FALSE;
/* FIXME implement the callbacks */ /* FIXME implement every callback */
ghtml = g_object_get_data(G_OBJECT(widget), "ghtml");
menu = gtk_menu_new(); menu = gtk_menu_new();
g_object_get(result, "context", &context, NULL); g_object_get(result, "context", &context, NULL);
if(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE) if(context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE)
@ -891,14 +894,20 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu)
/* back */ /* back */
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK, NULL); menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_BACK, NULL);
if(!ghtml_can_go_back(ghtml)) if(!ghtml_can_go_back(ghtml->widget))
gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_set_sensitive(menuitem, FALSE);
else
g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
on_back), ghtml->surfer);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
/* forward */ /* forward */
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD, menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_GO_FORWARD,
NULL); NULL);
if(!ghtml_can_go_forward(ghtml)) if(!ghtml_can_go_forward(ghtml->widget))
gtk_widget_set_sensitive(menuitem, FALSE); gtk_widget_set_sensitive(menuitem, FALSE);
else
g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
on_forward), ghtml->surfer);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH, NULL); menuitem = gtk_image_menu_item_new_from_stock(GTK_STOCK_REFRESH, NULL);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
@ -930,6 +939,8 @@ static void _context_menu_document(GHtml * ghtml, GtkWidget * menu)
menuitem = gtk_image_menu_item_new_with_mnemonic(_("View so_urce")); menuitem = gtk_image_menu_item_new_with_mnemonic(_("View so_urce"));
image = gtk_image_new_from_icon_name("surfer-view-html-source", image = gtk_image_new_from_icon_name("surfer-view-html-source",
GTK_ICON_SIZE_MENU); GTK_ICON_SIZE_MENU);
g_signal_connect_swapped(menuitem, "activate", G_CALLBACK(
on_view_source), ghtml->surfer);
gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
} }