Reputation: 195
I've been on working on using the python webkit and gtk modules to turn a HTML / Javascript page into a desktop application. To do this, I've created a webkit window with hardly any features other than the webview.
import webkit, gtk, subprocess
w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_resizable(False)
w.set_size_request(900,600)
w.connect("delete_event", gtk.main_quit)
scroll_window=gtk.ScrolledWindow(None, None)
web = webkit.WebView()
web.open('/home/user/HTML/mypage.html')
settings = web.get_settings()
settings.set_property('enable-default-context-menu', True)
scroll_window.add(web)
w.add(scroll_window)
w.show_all()
gtk.main()
This works fine, apart from the context menus. When I click right on most areas of the page, the context menu gives me the following options: back, forward, stop, reload.
But when I right-click on a link, I get: open link, open link in new window, download linked file, copy link location.
I would like to customize this so that when I right-click on a link I get only: open link
I've googled and looked at other posts on stack overflow, but although I can find out how to disable the context menus, I cannot find out how to customize them.
P.S. Unless you can't tell, I'm quite new to python and very new to gtk and webkit modules.
Upvotes: 3
Views: 1194
Reputation: 2258
For customizing the context menu, you first need to add the corresponding 'context-menu' callback. This function can modify the displayed context menu using append or remove methods. You can append a gtk.ImageMenuItem. This should work as an example:
def callback(webview, context_menu, event, hit_result_event):
option = gtk.ImageMenuItem('Do it')
option.connect('activate', option_activate_cb)
context_menu.append(option)
option.show()
def option_activate_cb(image_menu_item):
print('It works.')
web.connect('context-menu', callback)
One additional note: You do not need to enable the context menu. It is enabled by default.
Upvotes: 1