Initial conversion of GTK accelerators to separate config file

This commit is contained in:
Vincent Sanders 2018-04-22 09:31:48 +01:00
parent a8bf9b05aa
commit cfa5856eea
9 changed files with 193 additions and 225 deletions

View File

@ -165,7 +165,7 @@ endif
# S_FRONTEND are sources purely for the GTK frontend
S_FRONTEND := gui.c schedule.c layout_pango.c bitmap.c plotters.c \
scaffolding.c gdk.c completion.c login.c throbber.c \
scaffolding.c gdk.c completion.c login.c throbber.c accelerator.c \
selection.c window.c fetch.c download.c menu.c print.c \
search.c tabs.c toolbar.c gettext.c compat.c viewdata.c \
viewsource.c preferences.c about.c resources.c corewindow.c \

View File

@ -0,0 +1,60 @@
/*
* Copyright 2018 Vincent Sanders <vince@netsurf-browser.org>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
* NetSurf is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
*
* NetSurf is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file
* GTK accelerator support
*
*/
#include <stdint.h>
#include <gtk/gtk.h>
#include "utils/errors.h"
#include "utils/hashtable.h"
#include "gtk/resources.h"
#include "gtk/accelerator.h"
/** The hash table used to store the accelerators */
static struct hash_table *accelerators_hash = NULL;
nserror nsgtk_accelerator_init(char **respaths)
{
nserror ret;
const uint8_t *data;
size_t data_size;
ret = nsgtk_data_from_resname("accelerators", &data, &data_size);
if (ret == NSERROR_OK) {
//ret = hashtable_add_from_inline(data, data_size);
} else {
const char *accelerators;
/* Obtain path to accelerators */
ret = nsgtk_path_from_resname("accelerators", &accelerators);
if (ret == NSERROR_OK) {
//ret = hashtable_add_from_file(messages);
}
}
return ret;
}
const char *nsgtk_accelerator_get_desc(const char *key)
{
return NULL;
}

View File

@ -0,0 +1,2 @@
nserror nsgtk_accelerator_init(char **respaths);
const char *nsgtk_accelerator_get_desc(const char *key);

View File

@ -72,6 +72,7 @@
#include "gtk/resources.h"
#include "gtk/login.h"
#include "gtk/layout_pango.h"
#include "gtk/accelerator.h"
bool nsgtk_complete = false;
@ -227,7 +228,11 @@ static nserror set_defaults(struct nsoption_s *defaults)
/**
* Initialize GTK interface.
* Initialize GTK specific parts of the browser.
*
* \param argc The number of arguments on the command line
* \param argv A string vector of command line arguments.
* \respath A string vector of the path elements of resources
*/
static nserror nsgtk_init(int argc, char** argv, char **respath)
{
@ -235,20 +240,29 @@ static nserror nsgtk_init(int argc, char** argv, char **respath)
char *resource_filename;
char *addr = NULL;
nsurl *url;
nserror error;
nserror res;
error = nsgtk_builder_new_from_resname("warning", &warning_builder);
if (error != NSERROR_OK) {
/* Initialise gtk accelerator table */
res = nsgtk_accelerator_init(respaths);
if (res != NSERROR_OK) {
NSLOG(netsurf, INFO,
"Unable to load gtk accelerator configuration");
/* not fatal if this does not load */
}
/* initialise warning dialog */
res = nsgtk_builder_new_from_resname("warning", &warning_builder);
if (res != NSERROR_OK) {
NSLOG(netsurf, INFO, "Unable to initialise warning dialog");
return error;
return res;
}
gtk_builder_connect_signals(warning_builder, NULL);
/* set default icon if its available */
error = nsgdk_pixbuf_new_from_resname("netsurf.xpm",
&win_default_icon_pixbuf);
if (error == NSERROR_OK) {
res = nsgdk_pixbuf_new_from_resname("netsurf.xpm",
&win_default_icon_pixbuf);
if (res == NSERROR_OK) {
NSLOG(netsurf, INFO, "Seting default window icon");
gtk_window_set_default_icon(win_default_icon_pixbuf);
}
@ -263,25 +277,25 @@ static nserror nsgtk_init(int argc, char** argv, char **respath)
}
/* Default favicon */
error = nsgdk_pixbuf_new_from_resname("favicon.png", &favicon_pixbuf);
if (error != NSERROR_OK) {
res = nsgdk_pixbuf_new_from_resname("favicon.png", &favicon_pixbuf);
if (res != NSERROR_OK) {
favicon_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
false, 8, 16, 16);
}
/* arrow down icon */
error = nsgdk_pixbuf_new_from_resname("arrow_down_8x32.png",
&arrow_down_pixbuf);
if (error != NSERROR_OK) {
res = nsgdk_pixbuf_new_from_resname("arrow_down_8x32.png",
&arrow_down_pixbuf);
if (res != NSERROR_OK) {
arrow_down_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
false, 8, 8, 32);
}
/* initialise throbber */
error = nsgtk_throbber_init();
if (error != NSERROR_OK) {
res = nsgtk_throbber_init();
if (res != NSERROR_OK) {
NSLOG(netsurf, INFO, "Unable to initialise throbber.");
return error;
return res;
}
/* Initialise completions - cannot fail */
@ -302,13 +316,13 @@ static nserror nsgtk_init(int argc, char** argv, char **respath)
urldb_load(nsoption_charp(url_file));
urldb_load_cookies(nsoption_charp(cookie_file));
hotlist_init(nsoption_charp(hotlist_path),
nsoption_charp(hotlist_path));
nsoption_charp(hotlist_path));
/* Initialise top level UI elements */
error = nsgtk_download_init();
if (error != NSERROR_OK) {
res = nsgtk_download_init();
if (res != NSERROR_OK) {
NSLOG(netsurf, INFO, "Unable to initialise download window.");
return error;
return res;
}
/* If there is a url specified on the command line use it */
@ -338,19 +352,19 @@ static nserror nsgtk_init(int argc, char** argv, char **respath)
}
/* create an initial browser window */
error = nsurl_create(addr, &url);
if (error == NSERROR_OK) {
error = browser_window_create(BW_CREATE_HISTORY,
url,
NULL,
NULL,
NULL);
res = nsurl_create(addr, &url);
if (res == NSERROR_OK) {
res = browser_window_create(BW_CREATE_HISTORY,
url,
NULL,
NULL,
NULL);
nsurl_unref(url);
}
free(addr);
return error;
return res;
}
@ -1163,7 +1177,7 @@ int main(int argc, char** argv)
NSLOG(netsurf, INFO, "Unable to load translated messages");
/** \todo decide if message load faliure should be fatal */
}
/* Locate the correct user cache directory path */
ret = get_cache_home(&cache_home);
if (ret == NSERROR_NOT_FOUND) {
@ -1183,7 +1197,7 @@ int main(int argc, char** argv)
return 1;
}
/* run the browser */
/* gtk specific initalisation and main run loop */
ret = nsgtk_init(argc, argv, respaths);
if (ret != NSERROR_OK) {
fprintf(stderr, "NetSurf gtk initialise failed (%s)\n",

View File

@ -27,6 +27,7 @@
#include "gtk/compat.h"
#include "gtk/menu.h"
#include "gtk/warn.h"
#include "gtk/accelerator.h"
/**
* Adds image menu item to a menu.
@ -34,28 +35,37 @@
* \param menu the menu to add the item to
* \param item_out a pointer to the item's location in the menu struct
* \param message the menu item I18n lookup value
* \param messageAccel the menu item accelerator I18n lookup value
* \param group the 'global' in a gtk sense accelerator group
* \return true if sucessful and \a item_out updated else false.
*/
static bool nsgtk_menu_add_image_item(GtkMenu *menu,
GtkWidget **item_out, const char *message,
const char *messageAccel, GtkAccelGroup *group)
static bool
nsgtk_menu_add_image_item(GtkMenu *menu,
GtkWidget **item_out,
const char *message,
GtkAccelGroup *group)
{
unsigned int key;
GdkModifierType mod;
GtkWidget *item;
const char *accelerator_desc; /* accelerator key description */
item = nsgtk_image_menu_item_new_with_mnemonic(messages_get(message));
if (item == NULL) {
return false;
}
gtk_accelerator_parse(messages_get(messageAccel), &key, &mod);
if (key > 0) {
gtk_widget_add_accelerator(item, "activate", group, key, mod,
GTK_ACCEL_VISIBLE);
accelerator_desc = nsgtk_accelerator_get_desc(message);
if (accelerator_desc != NULL) {
gtk_accelerator_parse(accelerator_desc, &key, &mod);
if (key > 0) {
gtk_widget_add_accelerator(item,
"activate",
group,
key,
mod,
GTK_ACCEL_VISIBLE);
}
}
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
gtk_widget_show(item);
@ -73,8 +83,7 @@ static bool nsgtk_menu_add_image_item(GtkMenu *menu,
n->m##_menu = GTK_MENU(gtk_menu_new())
#define IMAGE_ITEM(p, q, r, s, t)\
nsgtk_menu_add_image_item(s->p##_menu, &(s->q##_menuitem), #r,\
#r "Accel", t)
nsgtk_menu_add_image_item(s->p##_menu, &(s->q##_menuitem), #r, t)
#define CHECK_ITEM(p, q, r, s)\
s->q##_menuitem = GTK_CHECK_MENU_ITEM(\
@ -130,8 +139,8 @@ static bool nsgtk_menu_add_image_item(GtkMenu *menu,
* creates an export submenu
* \param group the 'global' in a gtk sense accelerator reference
*/
static struct nsgtk_export_submenu *nsgtk_menu_export_submenu(GtkAccelGroup *group)
static struct nsgtk_export_submenu *
nsgtk_menu_export_submenu(GtkAccelGroup *group)
{
struct nsgtk_export_submenu *ret = malloc(sizeof(struct
nsgtk_export_submenu));
@ -157,8 +166,8 @@ static struct nsgtk_export_submenu *nsgtk_menu_export_submenu(GtkAccelGroup *gro
* \param group the 'global' in a gtk sense accelerator reference
*/
static struct nsgtk_scaleview_submenu *nsgtk_menu_scaleview_submenu(
GtkAccelGroup *group)
static struct nsgtk_scaleview_submenu *
nsgtk_menu_scaleview_submenu(GtkAccelGroup *group)
{
struct nsgtk_scaleview_submenu *ret =
malloc(sizeof(struct nsgtk_scaleview_submenu));
@ -185,7 +194,8 @@ static struct nsgtk_scaleview_submenu *nsgtk_menu_scaleview_submenu(
static struct nsgtk_tabs_submenu *nsgtk_menu_tabs_submenu(GtkAccelGroup *group)
{
struct nsgtk_tabs_submenu *ret = malloc(sizeof(struct nsgtk_tabs_submenu));
struct nsgtk_tabs_submenu *ret;
ret = malloc(sizeof(struct nsgtk_tabs_submenu));
if (ret == NULL) {
nsgtk_warning(messages_get("NoMemory"), 0);
return NULL;

View File

@ -0,0 +1,40 @@
# GTK accelerator keys for menu entries
# The keys must match those in the menus to be applied
#
# These are passed to gtk_accelerator_parse and must not be translated
# The key names are the same as those in the gdk/gdkkeysyms.h header file
# but without the leading “GDK_KEY_”.
gtkNextTab:<Control>Right
gtkPrevTab:<Control>Left
gtkCloseTab:<Control>w
gtkNewTab:<Control>t
gtkNewWindow:<Control>n
gtkOpenFile:<Control>o
gtkCloseWindow:<Control><shift>w
gtkSavePage:<Control>s
gtkPrintPreview:<Control><shift>p
gtkPrint:<Control>p
gtkQuitMenu:<Control>q
gtkCut:<Control>x
gtkCopy:<Control>c
gtkPaste:<Control>v
gtkSelectAll:<Control>a
gtkFind:<Control>f
gtkStop:Escape
gtkReload:F5
gtkZoomPlus:<Control>plus
gtkZoomMinus:<Control>minus
gtkZoomNormal:<Control>0
gtkFullScreen:F11
gtkPageSource:<Control>U
gtkDownloads:<Control>j
gtkBack:<alt>Left
gtkForward:<alt>Right
gtkHome:<alt>Down
gtkLocalHistory:<Control>h
gtkGlobalHistory:<Control><shift>h
gtkAddBookMarks:<Control>d
gtkShowBookMarks:F6
gtkShowCookies:F9
gtkOpenLocation:<Control>l

View File

@ -68,5 +68,6 @@
<file>icons/hotlist-rmv.png</file>
<file>icons/search.png</file>
<file>languages</file>
<file>accelerators</file>
</gresource>
</gresources>

View File

@ -129,6 +129,7 @@ static struct nsgtk_resource_s direct_resource[] = {
RES_ENTRY("icons/hotlist-rmv.png"),
RES_ENTRY("icons/search.png"),
RES_ENTRY("languages"),
RES_ENTRY("accelerators"),
RES_ENTRY("Messages"),
{ NULL, 0, NSGTK_RESOURCE_FILE, NULL },
};
@ -178,11 +179,12 @@ init_resource(char **respath, struct nsgtk_resource_s *resource)
langv = g_get_language_names();
/* look for resource under per language paths */
while (langv[langc] != NULL) {
/* allocate and fill a full resource name path buffer */
resnamelen = snprintf(NULL, 0,
"/org/netsurf/%s/%s",
langv[langc], resource->name);
resname = malloc(resnamelen + 1);
if (resname == NULL) {
return NSERROR_NOMEM;
@ -191,6 +193,7 @@ init_resource(char **respath, struct nsgtk_resource_s *resource)
"/org/netsurf/%s/%s",
langv[langc], resource->name);
/* check if resource is present */
present = g_resources_get_info(resname,
G_RESOURCE_LOOKUP_FLAGS_NONE,
NULL, NULL, NULL);
@ -208,8 +211,9 @@ init_resource(char **respath, struct nsgtk_resource_s *resource)
langc++;
}
resnamelen = snprintf(NULL, 0, "/org/netsurf/%s", resource->name);
/* allocate and fill a full resource name path buffer with no language*/
resnamelen = snprintf(NULL, 0, "/org/netsurf/%s", resource->name);
resname = malloc(resnamelen + 1);
if (resname == NULL) {
return NSERROR_NOMEM;
@ -232,20 +236,22 @@ init_resource(char **respath, struct nsgtk_resource_s *resource)
#endif
/* look for file on disc */
resname = filepath_find(respath, resource->name);
if (resname == NULL) {
if (resname != NULL) {
/* found an entry on the path */
resource->path = resname;
resource->type = NSGTK_RESOURCE_FILE;
NSLOG(netsurf, INFO,
"Unable to find resource %s on resource path",
resource->name);
return NSERROR_NOT_FOUND;
"Found file resource path %s", resource->path);
return NSERROR_OK;
}
/* found an entry on the path */
resource->path = resname;
resource->type = NSGTK_RESOURCE_FILE;
NSLOG(netsurf, INFO, "Unable to find resource %s on resource path",
resource->name);
NSLOG(netsurf, INFO, "Found file resource path %s", resource->path);
return NSERROR_OK;
return NSERROR_NOT_FOUND;
}
/**
@ -381,7 +387,7 @@ find_resource_from_name(const char *resname, struct nsgtk_resource_s *resource)
#ifdef SHOW_GRESOURCE
/**
* Debug dump of all resources compile din via GResource.
* Debug dump of all resources compiled in via GResource.
*/
static void list_gresource(void)
{

View File

@ -1814,51 +1814,26 @@ de.gtk.gtkNewTab:Neuer _Tab
fr.gtk.gtkNewTab:Nouvel _Onglet
it.gtk.gtkNewTab:Nuova _scheda
nl.gtk.gtkNewTab:Nieuw _Tabblad
en.gtk.gtkNewTabAccel:<ctrl>t
de.gtk.gtkNewTabAccel:<ctrl>t
fr.gtk.gtkNewTabAccel:<ctrl>t
it.gtk.gtkNewTabAccel:<ctrl>t
nl.gtk.gtkNewTabAccel:<ctrl>t
en.gtk.gtkNewWindow:_New Window
de.gtk.gtkNewWindow:_Neues Fenster
fr.gtk.gtkNewWindow:_Nouvelle Fenêtre
it.gtk.gtkNewWindow:_Nuova finestra
nl.gtk.gtkNewWindow:_Nieuw venster
en.gtk.gtkNewWindowAccel:<ctrl>n
de.gtk.gtkNewWindowAccel:<ctrl>n
fr.gtk.gtkNewWindowAccel:<ctrl>n
it.gtk.gtkNewWindowAccel:<ctrl>n
nl.gtk.gtkNewWindowAccel:<ctrl>n
en.gtk.gtkOpenFile:_Open File
de.gtk.gtkOpenFile:Datei öffnen
fr.gtk.gtkOpenFile:_Ouvrir un fichier
it.gtk.gtkOpenFile:_Apri file
nl.gtk.gtkOpenFile:Bestand _openen
en.gtk.gtkOpenFileAccel:<ctrl>o
de.gtk.gtkOpenFileAccel:<ctrl>o
fr.gtk.gtkOpenFileAccel:<ctrl>o
it.gtk.gtkOpenFileAccel:<ctrl>o
nl.gtk.gtkOpenFileAccel:<ctrl>o
en.gtk.gtkCloseWindow:_Close Window
de.gtk.gtkCloseWindow:Fenster schließen
fr.gtk.gtkCloseWindow:_Fermer la fenêtre
it.gtk.gtkCloseWindow:_Chiudi finestra
nl.gtk.gtkCloseWindow:_Venster sluiten
en.gtk.gtkCloseWindowAccel:<ctrl><shift>w
de.gtk.gtkCloseWindowAccel:<ctrl><shift>w
fr.gtk.gtkCloseWindowAccel:<ctrl><maj>w
it.gtk.gtkCloseWindowAccel:<ctrl><shift>w
nl.gtk.gtkCloseWindowAccel:<ctrl><shift>w
en.gtk.gtkSavePage:Save Page…
de.gtk.gtkSavePage:Seite speichern..
fr.gtk.gtkSavePage:Enregistrer la Page...
it.gtk.gtkSavePage:Salva pagina...
nl.gtk.gtkSavePage:Pagina bewaren...
en.gtk.gtkSavePageAccel:<ctrl>s
de.gtk.gtkSavePageAccel:<ctrl>s
fr.gtk.gtkSavePageAccel:<ctrl>s
it.gtk.gtkSavePageAccel:<ctrl>s
nl.gtk.gtkSavePageAccel:<ctrl>s
en.gtk.gtkExport:Export
de.gtk.gtkExport:Exportieren
fr.gtk.gtkExport:Exporter
@ -1889,62 +1864,32 @@ de.gtk.gtkPrintPreview:Druckvorschau...
fr.gtk.gtkPrintPreview:Aperçu avant impression...
it.gtk.gtkPrintPreview:Anteprima di stampa...
nl.gtk.gtkPrintPreview:Afdruk_voorbeeld...
en.gtk.gtkPrintPreviewAccel:<ctrl><shift>p
de.gtk.gtkPrintPreviewAccel:<ctrl><shift>p
fr.gtk.gtkPrintPreviewAccel:<ctrl><maj>p
it.gtk.gtkPrintPreviewAccel:<ctrl><shift>p
nl.gtk.gtkPrintPreviewAccel:<ctrl><shift>p
en.gtk.gtkPrint:Print…
de.gtk.gtkPrint:Drucken...
fr.gtk.gtkPrint:Imprimer...
it.gtk.gtkPrint:Stampa...
nl.gtk.gtkPrint:Af_drukken...
en.gtk.gtkPrintAccel:<ctrl>p
de.gtk.gtkPrintAccel:<ctrl>p
fr.gtk.gtkPrintAccel:<ctrl>p
it.gtk.gtkPrintAccel:<ctrl>p
nl.gtk.gtkPrintAccel:<ctrl>p
en.gtk.gtkQuitMenu:_Quit
de.gtk.gtkQuitMenu:Beenden
fr.gtk.gtkQuitMenu:_Quitter
it.gtk.gtkQuitMenu:_Esci
nl.gtk.gtkQuitMenu:A_fsluiten
en.gtk.gtkQuitMenuAccel:<ctrl>q
de.gtk.gtkQuitMenuAccel:<ctrl>q
fr.gtk.gtkQuitMenuAccel:<ctrl>q
it.gtk.gtkQuitMenuAccel:<ctrl>q
nl.gtk.gtkQuitMenuAccel:<ctrl>q
en.gtk.gtkCut:Cu_t
de.gtk.gtkCut:Ausschneiden
fr.gtk.gtkCut:Cou_per
it.gtk.gtkCut:Ta_glia
nl.gtk.gtkCut:K_nippen
en.gtk.gtkCutAccel:<ctrl>x
de.gtk.gtkCutAccel:<ctrl>x
fr.gtk.gtkCutAccel:<ctrl>x
it.gtk.gtkCutAccel:<ctrl>x
nl.gtk.gtkCutAccel:<ctrl>x
en.gtk.gtkCopy:_Copy
de.gtk.gtkCopy:Kopieren
fr.gtk.gtkCopy:_Copier
it.gtk.gtkCopy:_Copia
nl.gtk.gtkCopy:_Kopiëren
en.gtk.gtkCopyAccel:<ctrl>c
de.gtk.gtkCopyAccel:<ctrl>c
fr.gtk.gtkCopyAccel:<ctrl>c
it.gtk.gtkCopyAccel:<ctrl>c
nl.gtk.gtkCopyAccel:<ctrl>c
en.gtk.gtkPaste:_Paste
de.gtk.gtkPaste:Einfügen
fr.gtk.gtkPaste:C_oller
it.gtk.gtkPaste:_Incolla
nl.gtk.gtkPaste:_Plakken
en.gtk.gtkPasteAccel:<ctrl>v
de.gtk.gtkPasteAccel:<ctrl>v
fr.gtk.gtkPasteAccel:<ctrl>v
it.gtk.gtkPasteAccel:<ctrl>v
nl.gtk.gtkPasteAccel:<ctrl>v
en.gtk.gtkDelete:_Delete
de.gtk.gtkDelete:Löschen
fr.gtk.gtkDelete:_Supprimer
@ -1955,21 +1900,11 @@ de.gtk.gtkSelectAll:_Alles auswählen
fr.gtk.gtkSelectAll:_Tout sélectionner
it.gtk.gtkSelectAll:Seleziona _Tutto
nl.gtk.gtkSelectAll:_Alles selecteren
en.gtk.gtkSelectAllAccel:<ctrl>a
de.gtk.gtkSelectAllAccel:<ctrl>a
fr.gtk.gtkSelectAllAccel:<ctrl>a
it.gtk.gtkSelectAllAccel:<ctrl>a
nl.gtk.gtkSelectAllAccel:<ctrl>a
en.gtk.gtkFind:_Find…
de.gtk.gtkFind:_Finden..
fr.gtk.gtkFind:_Rechercher...
it.gtk.gtkFind:_Trova...
nl.gtk.gtkFind:_Zoeken...
en.gtk.gtkFindAccel:<ctrl>f
de.gtk.gtkFindAccel:<ctrl>f
fr.gtk.gtkFindAccel:<ctrl>f
it.gtk.gtkFindAccel:<ctrl>f
nl.gtk.gtkFindAccel:<ctrl>f
en.gtk.gtkPreferences:P_references
de.gtk.gtkPreferences:Einstellungen
fr.gtk.gtkPreferences:P_références
@ -1981,21 +1916,11 @@ de.gtk.gtkStop:_Stop
fr.gtk.gtkStop:_Arrêter
it.gtk.gtkStop:_Stoppa
nl.gtk.gtkStop:_Stoppen
en.gtk.gtkStopAccel:Escape
de.gtk.gtkStopAccel:Escape
fr.gtk.gtkStopAccel:Échap
it.gtk.gtkStopAccel:Escape
nl.gtk.gtkStopAccel:Escape
en.gtk.gtkReload:_Reload
de.gtk.gtkReload:Neu laden
fr.gtk.gtkReload:_Actualiser
it.gtk.gtkReload:_Ricarica
nl.gtk.gtkReload:Ver_nieuwen
en.gtk.gtkReloadAccel:F5
de.gtk.gtkReloadAccel:F5
fr.gtk.gtkReloadAccel:F5
it.gtk.gtkReloadAccel:F5
nl.gtk.gtkReloadAccel:F5
en.gtk.gtkScaleView:_Scale View
de.gtk.gtkScaleView:Ansicht skalieren
fr.gtk.gtkScaleView:_Zoom
@ -2006,51 +1931,26 @@ de.gtk.gtkZoomPlus:Here_inzoomen
fr.gtk.gtkZoomPlus:Zoom _avant
it.gtk.gtkZoomPlus:_Incrementa zoom
nl.gtk.gtkZoomPlus:_Inzoomen
en.gtk.gtkZoomPlusAccel:<ctrl>plus
de.gtk.gtkZoomPlusAccel:<ctrl>plus
fr.gtk.gtkZoomPlusAccel:<ctrl>+
it.gtk.gtkZoomPlusAccel:<ctrl>più
nl.gtk.gtkZoomPlusAccel:<ctrl>plus
en.gtk.gtkZoomMinus:Zoom _out
de.gtk.gtkZoomMinus:Herausz_oomen
fr.gtk.gtkZoomMinus:Z_oom arrière
it.gtk.gtkZoomMinus:_Diminuisci zoom
nl.gtk.gtkZoomMinus:_Uitzoomen
en.gtk.gtkZoomMinusAccel:<ctrl>minus
de.gtk.gtkZoomMinusAccel:<ctrl>minus
fr.gtk.gtkZoomMinusAccel:<ctrl>-
it.gtk.gtkZoomMinusAccel:<ctrl>meno
nl.gtk.gtkZoomMinusAccel:<ctrl>minus
en.gtk.gtkZoomNormal:_Normal size
de.gtk.gtkZoomNormal:_Normalgröße
fr.gtk.gtkZoomNormal:_Taille Normale
it.gtk.gtkZoomNormal:Dimensione _normale
nl.gtk.gtkZoomNormal:_Originele grootte
en.gtk.gtkZoomNormalAccel:<ctrl>0
de.gtk.gtkZoomNormalAccel:<ctrl>0
fr.gtk.gtkZoomNormalAccel:<ctrl>0
it.gtk.gtkZoomNormalAccel:<ctrl>0
nl.gtk.gtkZoomNormalAccel:<ctrl>0
en.gtk.gtkFullScreen:_Fullscreen
de.gtk.gtkFullScreen:_Vollbild
fr.gtk.gtkFullScreen:_Plein écran
it.gtk.gtkFullScreen:_Tutto schermo
nl.gtk.gtkFullScreen:_Volledig scherm
en.gtk.gtkFullScreenAccel:F11
de.gtk.gtkFullScreenAccel:F11
fr.gtk.gtkFullScreenAccel:F11
it.gtk.gtkFullScreenAccel:F11
nl.gtk.gtkFullScreenAccel:F11
en.gtk.gtkPageSource:Page S_ource
de.gtk.gtkPageSource: Q_uelltext anzeigen
fr.gtk.gtkPageSource:Code s_ource de la page
it.gtk.gtkPageSource:Mostra s_orgente
nl.gtk.gtkPageSource:Pagina_bron
en.gtk.gtkPageSourceAccel:<ctrl>U
de.gtk.gtkPageSourceAccel:<ctrl>U
fr.gtk.gtkPageSourceAccel:<ctrl>U
it.gtk.gtkPageSourceAccel:<ctrl>U
nl.gtk.gtkPageSourceAccel:<ctrl>U
en.gtk.gtkImages:_Images
de.gtk.gtkImages:B_ilder
fr.gtk.gtkImages:_Images
@ -2096,11 +1996,6 @@ de.gtk.gtkDownloads:_Downloads...
fr.gtk.gtkDownloads:_Téléchargements...
it.gtk.gtkDownloads:_Trasferimenti...
nl.gtk.gtkDownloads:_Downloads...
en.gtk.gtkDownloadsAccel:<ctrl>j
de.gtk.gtkDownloadsAccel:<ctrl>j
fr.gtk.gtkDownloadsAccel:<ctrl>j
it.gtk.gtkDownloadsAccel:<ctrl>j
nl.gtk.gtkDownloadsAccel:<ctrl>j
en.gtk.gtkSaveWindowSize:S_ave Window Size
de.gtk.gtkSaveWindowSize:Fenstergröße _speichern
fr.gtk.gtkSaveWindowSize:E_nregistrer la taille de la fenêtre
@ -2132,122 +2027,62 @@ de.gtk.gtkBack:_Zurück
fr.gtk.gtkBack:_Précédent
it.gtk.gtkBack:_Indietro
nl.gtk.gtkBack:_Terug
en.gtk.gtkBackAccel:<alt>Left
de.gtk.gtkBackAccel:<alt>Left
fr.gtk.gtkBackAccel:<alt>Gauche
it.gtk.gtkBackAccel:<alt>Sinistra
nl.gtk.gtkBackAccel:<alt>Linkerpijltoets
en.gtk.gtkForward:_Forward
de.gtk.gtkForward:_Vorwärts
fr.gtk.gtkForward:_Suivant
it.gtk.gtkForward:_Avanti
nl.gtk.gtkForward:_Vooruit
en.gtk.gtkForwardAccel:<alt>Right
de.gtk.gtkForwardAccel:<alt>Right
fr.gtk.gtkForwardAccel:<alt>Droit
it.gtk.gtkForwardAccel:<alt>Destra
nl.gtk.gtkForwardAccel:<alt>Rechterpijltoets
en.gtk.gtkHome:_Home
de.gtk.gtkHome:_Startseite
fr.gtk.gtkHome:_Accueil
it.gtk.gtkHome:_Home
nl.gtk.gtkHome:_Beginpagina
en.gtk.gtkHomeAccel:<alt>Down
de.gtk.gtkHomeAccel:<alt>Down
fr.gtk.gtkHomeAccel:<alt>Bas
it.gtk.gtkHomeAccel:<alt>Giù
nl.gtk.gtkHomeAccel:<alt>Pijl omlaag
en.gtk.gtkLocalHistory:_Local History…
de.gtk.gtkLocalHistory:_Lokaler Verlauf
fr.gtk.gtkLocalHistory:Historique _local
it.gtk.gtkLocalHistory:Cronologia _locale
nl.gtk.gtkLocalHistory:Vensterge_schiedenis
en.gtk.gtkLocalHistoryAccel:<ctrl>h
de.gtk.gtkLocalHistoryAccel:<ctrl>h
fr.gtk.gtkLocalHistoryAccel:<ctrl>h
it.gtk.gtkLocalHistoryAccel:<ctrl>h
nl.gtk.gtkLocalHistoryAccel:<ctrl>h
en.gtk.gtkGlobalHistory:_Global History…
de.gtk.gtkGlobalHistory:_Globaler Verlauf
fr.gtk.gtkGlobalHistory:Historique _global
it.gtk.gtkGlobalHistory:Cronologia _globale
nl.gtk.gtkGlobalHistory:Browser_geschiedenis
en.gtk.gtkGlobalHistoryAccel:<ctrl><shift>h
de.gtk.gtkGlobalHistoryAccel:<ctrl><shift>h
fr.gtk.gtkGlobalHistoryAccel:<ctrl><maj>h
it.gtk.gtkGlobalHistoryAccel:<ctrl><shift>h
nl.gtk.gtkGlobalHistoryAccel:<ctrl><shift>h
en.gtk.gtkAddBookMarks:_Add to Bookmarks…
de.gtk.gtkAddBookMarks:_Lesezeichen hinzufügen..
fr.gtk.gtkAddBookMarks:_Ajouter un marque-page..
it.gtk.gtkAddBookMarks:_Aggiungi ai segnalibri...
nl.gtk.gtkAddBookMarks:_Aan bladwijzers toevoegen...
en.gtk.gtkAddBookMarksAccel:<ctrl>d
de.gtk.gtkAddBookMarksAccel:<ctrl>d
fr.gtk.gtkAddBookMarksAccel:<ctrl>d
it.gtk.gtkAddBookMarksAccel:<ctrl>d
nl.gtk.gtkAddBookMarksAccel:<ctrl>d
en.gtk.gtkShowBookMarks:_Show Bookmarks…
de.gtk.gtkShowBookMarks:Le_sezeichen anzeigen..
fr.gtk.gtkShowBookMarks:_Montrer les marques-pages...
it.gtk.gtkShowBookMarks:_Mostra segnalibri...
nl.gtk.gtkShowBookMarks:Bladwijzers _beheren...
en.gtk.gtkShowBookMarksAccel:F6
de.gtk.gtkShowBookMarksAccel:F6
fr.gtk.gtkShowBookMarksAccel:F6
it.gtk.gtkShowBookMarksAccel:F6
nl.gtk.gtkShowBookMarksAccel:F6
en.gtk.gtkShowCookies:Show _Cookies…
de.gtk.gtkShowCookies:Zeige _Cookies…
fr.gtk.gtkShowCookies:Afficher _cookies...
it.gtk.gtkShowCookies:Mostra _cookie...
nl.gtk.gtkShowCookies:_Cookies beheren...
en.gtk.gtkShowCookiesAccel:F9
de.gtk.gtkShowCookiesAccel:F9
fr.gtk.gtkShowCookiesAccel:F9
it.gtk.gtkShowCookiesAccel:F9
nl.gtk.gtkShowCookiesAccel:F9
en.gtk.gtkOpenLocation:_Open Location…
de.gtk.gtkOpenLocation:_Ort öffnen..
fr.gtk.gtkOpenLocation:_Ouvrir un site..
it.gtk.gtkOpenLocation:_Apri indirizzo...
nl.gtk.gtkOpenLocation:Locatie _openen..
en.gtk.gtkOpenLocationAccel:<ctrl>l
de.gtk.gtkOpenLocationAccel:<ctrl>l
fr.gtk.gtkOpenLocationAccel:<ctrl>l
it.gtk.gtkOpenLocationAccel:<ctrl>l
nl.gtk.gtkOpenLocationAccel:<ctrl>l
en.gtk.gtkNextTab:_Next tab
de.gtk.gtkNextTab:_Nächster Tab
fr.gtk.gtkNextTab:O_nglet suivant
it.gtk.gtkNextTab:Scheda _successiva
nl.gtk.gtkNextTab:Vol_gende tabblad
en.gtk.gtkNextTabAccel:<ctrl>Right
de.gtk.gtkNextTabAccel:<ctrl>Right
fr.gtk.gtkNextTabAccel:<ctrl>Droit
it.gtk.gtkNextTabAccel:<ctrl>Destra
nl.gtk.gtkNextTabAccel:<ctrl>Rechterpijltoets
en.gtk.gtkPrevTab:_Previous tab
de.gtk.gtkPrevTab:_Vorheriger Tab
fr.gtk.gtkPrevTab:Onglet _précédent
it.gtk.gtkPrevTab:Scheda _precedente
nl.gtk.gtkPrevTab:Vo_rige tabblad
en.gtk.gtkPrevTabAccel:<ctrl>Left
de.gtk.gtkPrevTabAccel:<ctrl>Left
fr.gtk.gtkPrevTabAccel:<ctrl>Gauche
it.gtk.gtkPrevTabAccel:<ctrl>Sinistra
nl.gtk.gtkPrevTabAccel:<ctrl>Linkerpijltoets
en.gtk.gtkCloseTab:_Close tab
de.gtk.gtkCloseTab:Tab s_chliessen
fr.gtk.gtkCloseTab:_Fermer l'onglet
it.gtk.gtkCloseTab:_Chiudi scheda
nl.gtk.gtkCloseTab:Tabblad _sluiten
en.gtk.gtkCloseTabAccel:<ctrl>w
de.gtk.gtkCloseTabAccel:<ctrl>w
fr.gtk.gtkCloseTabAccel:<ctrl>w
it.gtk.gtkCloseTabAccel:<ctrl>w
nl.gtk.gtkCloseTabAccel:<ctrl>w
en.gtk.gtkContents:_Contents…
de.gtk.gtkContents:_Inhalt