summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.defaults3
-rw-r--r--gtk/Makefile.target35
-rw-r--r--gtk/compat.c132
-rw-r--r--gtk/compat.h25
-rw-r--r--gtk/cookies.c33
-rw-r--r--gtk/dialogs/about.c14
-rw-r--r--gtk/dialogs/options.c36
-rw-r--r--gtk/dialogs/source.c281
-rw-r--r--gtk/download.c1211
-rw-r--r--gtk/gui.c146
-rw-r--r--gtk/gui.h3
-rw-r--r--gtk/history.c43
-rw-r--r--gtk/hotlist.c32
-rw-r--r--gtk/login.c31
-rw-r--r--gtk/menu.c1
-rw-r--r--gtk/plotters.h1
-rw-r--r--gtk/print.c6
-rw-r--r--gtk/res/cookies.gtk2.ui (renamed from gtk/res/cookies.glade)112
-rw-r--r--gtk/res/cookies.gtk3.ui205
-rw-r--r--gtk/res/downloads.gtk2.ui (renamed from gtk/res/downloads.glade)70
-rw-r--r--gtk/res/downloads.gtk3.ui175
-rw-r--r--gtk/res/history.gtk2.ui242
-rw-r--r--gtk/res/history.gtk3.ui (renamed from gtk/res/history.glade)197
-rw-r--r--gtk/res/hotlist.gtk2.ui (renamed from gtk/res/hotlist.glade)139
-rw-r--r--gtk/res/hotlist.gtk3.ui254
-rw-r--r--gtk/res/login.gtk2.ui (renamed from gtk/res/login.glade)109
-rw-r--r--gtk/res/login.gtk3.ui223
-rw-r--r--gtk/res/menu_cursor.pngbin0 -> 255 bytes
-rw-r--r--gtk/res/menu_cursor.xbm6
-rw-r--r--gtk/res/menu_cursor_mask.xbm6
-rw-r--r--gtk/res/menu_cursor_mask.xpm22
-rw-r--r--gtk/res/netsurf.gtk2.ui (renamed from gtk/res/netsurf.glade)207
-rw-r--r--gtk/res/netsurf.gtk3.ui207
-rw-r--r--gtk/res/options.gtk2.ui (renamed from gtk/res/options.glade)1195
-rw-r--r--gtk/res/options.gtk3.ui2709
-rw-r--r--gtk/res/password.glade443
-rw-r--r--gtk/res/password.gtk2.ui415
-rw-r--r--gtk/res/password.gtk3.ui415
-rw-r--r--gtk/res/source.gtk2.ui (renamed from gtk/res/source.glade)168
-rw-r--r--gtk/res/source.gtk3.ui179
-rw-r--r--gtk/res/ssl.gtk2.ui (renamed from gtk/res/ssl.glade)110
-rw-r--r--gtk/res/ssl.gtk3.ui202
-rw-r--r--gtk/res/tabcontents.gtk2.ui75
-rw-r--r--gtk/res/tabcontents.gtk3.ui87
-rw-r--r--gtk/res/toolbar.glade206
-rw-r--r--gtk/res/toolbar.gtk2.ui189
-rw-r--r--gtk/res/toolbar.gtk3.ui189
-rw-r--r--gtk/res/warning.gtk2.ui (renamed from gtk/res/warning.glade)42
-rw-r--r--gtk/res/warning.gtk3.ui77
-rw-r--r--gtk/scaffolding.c98
-rw-r--r--gtk/scaffolding.h2
-rw-r--r--gtk/search.c5
-rw-r--r--gtk/tabs.c20
-rw-r--r--gtk/theme.c2
-rw-r--r--gtk/toolbar.c48
-rw-r--r--gtk/treeview.c138
-rw-r--r--gtk/window.c479
-rw-r--r--image/rsvg.c2
58 files changed, 8598 insertions, 3104 deletions
diff --git a/Makefile.defaults b/Makefile.defaults
index 0ebe04a4c..eda59beac 100644
--- a/Makefile.defaults
+++ b/Makefile.defaults
@@ -160,6 +160,9 @@ ifeq ($(TARGET),gtk)
NETSURF_USE_HARU_PDF := NO
endif
+ # Set default GTK version to build for (2 or 3)
+ NETSURF_GTK_MAJOR := 2
+
# Optimisation levels
CFLAGS += -O2 -Wuninitialized
diff --git a/gtk/Makefile.target b/gtk/Makefile.target
index 71edb64a0..778093837 100644
--- a/gtk/Makefile.target
+++ b/gtk/Makefile.target
@@ -49,12 +49,12 @@ GTKCFLAGS := -std=c99 -Dgtk -Dnsgtk \
-D_NETBSD_SOURCE \
-DGTK_RESPATH=\"$(NETSURF_GTK_RESOURCES)\" \
$(WARNFLAGS) -I. -g \
- $(shell $(PKG_CONFIG) --cflags libglade-2.0 gtk+-2.0) \
+ $(shell $(PKG_CONFIG) --cflags gtk+-$(NETSURF_GTK_MAJOR).0) \
$(shell $(PKG_CONFIG) --cflags libhubbub libcurl) \
$(shell $(PKG_CONFIG) --cflags openssl) \
$(shell xml2-config --cflags)
-GTKLDFLAGS := $(shell $(PKG_CONFIG) --cflags --libs libglade-2.0 gtk+-2.0 gthread-2.0 gmodule-2.0 lcms)
+GTKLDFLAGS := $(shell $(PKG_CONFIG) --cflags --libs gtk+-$(NETSURF_GTK_MAJOR).0 gthread-2.0 gmodule-2.0 lcms)
CFLAGS += $(GTKCFLAGS)
LDFLAGS += $(GTKLDFLAGS)
@@ -67,22 +67,49 @@ ifeq ($(HOST),Windows_NT)
CFLAGS += -U__STRICT_ANSI__
endif
+
+# ----------------------------------------------------------------------------
+# Pixbuf
+# ----------------------------------------------------------------------------
+
+GTK_IMAGE_menu_cursor := gtk/res/menu_cursor.png
+
+# 1: input file
+# 2: output file
+# 3: bitmap name
+define convert_image
+
+S_PIXBUF += $(2)
+
+$(2): $(1)
+ $(Q)echo "#include <gdk-pixbuf/gdk-pixdata.h>" > $(2)
+ $(Q)gdk-pixbuf-csource --extern --struct --name=$(3) $(1) >> $(2) || \
+ ( rm -f $(2) && false )
+
+endef
+
# ----------------------------------------------------------------------------
# Source file setup
# ----------------------------------------------------------------------------
+#converted pixbuf sources
+S_PIXBUF :=
+
+$(eval $(foreach V,$(filter GTK_IMAGE_%,$(.VARIABLES)),$(call convert_image,$($(V)),$(OBJROOT)/$(patsubst GTK_IMAGE_%,%,$(V)).c,$(patsubst GTK_IMAGE_%,%,$(V))_pixdata)))
+
# S_GTK are sources purely for the GTK build
S_GTK := font_pango.c bitmap.c gui.c schedule.c thumbnail.c plotters.c \
treeview.c scaffolding.c gdk.c completion.c login.c throbber.c \
selection.c history.c window.c filetype.c download.c menu.c \
print.c save.c search.c tabs.c theme.c toolbar.c \
- sexy_icon_entry.c compat.c cookies.c hotlist.c system_colour.c \
+ compat.c cookies.c hotlist.c system_colour.c \
$(addprefix dialogs/,options.c about.c source.c)
+
S_GTK := $(addprefix gtk/,$(S_GTK)) $(addprefix utils/,container.c)
# code in utils/container.ch is non-universal it seems
# This is the final source build list
# Note this is deliberately *not* expanded here as common and image
# are not yet available
-SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_PDF) $(S_GTK)
+SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_PDF) $(S_PIXBUF) $(S_GTK)
EXETARGET := nsgtk
diff --git a/gtk/compat.c b/gtk/compat.c
index 8d8ac698b..191351408 100644
--- a/gtk/compat.c
+++ b/gtk/compat.c
@@ -20,6 +20,8 @@
* Compatibility functions for older GTK versions (implementation)
*/
+#include <stdint.h>
+
#include "gtk/compat.h"
void nsgtk_widget_set_can_focus(GtkWidget *widget, gboolean can_focus)
@@ -169,3 +171,133 @@ void nsgtk_entry_set_icon_from_stock(GtkWidget *entry, GtkEntryIconPosition icon
#endif
}
+
+void nsgtk_widget_override_background_color(GtkWidget *widget, GtkStateFlags state, uint16_t a, uint16_t r, uint16_t g, uint16_t b)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA colour;
+ colour.alpha = (double)a / 0xffff;
+ colour.red = (double)r / 0xffff;
+ colour.green = (double)g / 0xffff;
+ colour.blue = (double)b / 0xffff;
+ gtk_widget_override_background_color(widget, state, &colour);
+#else
+ GdkColor colour;
+ colour.pixel = a;
+ colour.red = r;
+ colour.green = g;
+ colour.blue = b;
+ gtk_widget_modify_bg(widget, state, &colour );
+#endif
+}
+
+GtkAdjustment *nsgtk_layout_get_vadjustment(GtkLayout *layout)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(layout));
+#else
+ return gtk_layout_get_vadjustment(layout);
+#endif
+}
+
+GtkAdjustment *nsgtk_layout_get_hadjustment(GtkLayout *layout)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_scrollable_get_hadjustment(GTK_SCROLLABLE(layout));
+#else
+ return gtk_layout_get_hadjustment(layout);
+#endif
+}
+
+void nsgtk_layout_set_hadjustment(GtkLayout *layout, GtkAdjustment *adj)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_scrollable_set_hadjustment(GTK_SCROLLABLE(layout), adj);
+#else
+ gtk_layout_set_hadjustment(layout, adj);
+#endif
+}
+
+void nsgtk_layout_set_vadjustment(GtkLayout *layout, GtkAdjustment *adj)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_scrollable_set_vadjustment(GTK_SCROLLABLE(layout), adj);
+#else
+ gtk_layout_set_vadjustment(layout, adj);
+#endif
+}
+
+GtkWidget *nsgtk_hbox_new(gboolean homogeneous, gint spacing)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing);
+#else
+ return gtk_hbox_new(homogeneous, spacing);
+#endif
+}
+
+GtkWidget *nsgtk_vbox_new(gboolean homogeneous, gint spacing)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing);
+#else
+ return gtk_vbox_new(homogeneous, spacing);
+#endif
+}
+
+GtkStateFlags nsgtk_widget_get_state_flags(GtkWidget *widget)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_widget_get_state_flags(widget);
+#else
+ return gtk_widget_get_state(widget);
+#endif
+}
+
+GtkStyleContext *nsgtk_widget_get_style_context(GtkWidget *widget)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_widget_get_style_context(widget);
+#else
+ return widget->style;
+#endif
+}
+
+const PangoFontDescription* nsgtk_style_context_get_font(GtkStyleContext *style, GtkStateFlags state)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return gtk_style_context_get_font(style, state);
+#else
+ return style->font_desc;
+#endif
+}
+
+gulong nsgtk_connect_draw_event(GtkWidget *widget, GCallback callback, gpointer g)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ return g_signal_connect(G_OBJECT(widget), "draw", callback, g);
+#else
+ return g_signal_connect(G_OBJECT(widget), "expose_event", callback, g);
+#endif
+}
+
+void nsgdk_cursor_unref(GdkCursor *cursor)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+ g_object_unref(cursor);
+#else
+ gdk_cursor_unref(cursor);
+#endif
+}
+
+void nsgtk_widget_modify_font(GtkWidget *widget, PangoFontDescription *font_desc)
+{
+#if GTK_CHECK_VERSION(3,0,0)
+/* FIXME */
+ return;
+#else
+ gtk_widget_modify_font(widget, font_desc);
+#endif
+}
+
+
diff --git a/gtk/compat.h b/gtk/compat.h
index b8f90e5e4..dea23e1db 100644
--- a/gtk/compat.h
+++ b/gtk/compat.h
@@ -46,8 +46,33 @@ typedef enum {
} GtkEntryIconPosition;
#endif
+#if GTK_CHECK_VERSION (2, 90, 7)
+#define GDK_KEY(symbol) GDK_KEY_##symbol
+#else
+#include <gdk/gdkkeysyms.h>
+#define GDK_KEY(symbol) GDK_##symbol
+#endif
+
+#if !GTK_CHECK_VERSION(3,0,0)
+typedef GtkStateType GtkStateFlags;
+typedef GtkStyle GtkStyleContext;
+#endif
+
GtkWidget *nsgtk_entry_new(void);
void nsgtk_entry_set_icon_from_pixbuf(GtkWidget *entry, GtkEntryIconPosition icon_pos, GdkPixbuf *pixbuf);
void nsgtk_entry_set_icon_from_stock(GtkWidget *entry, GtkEntryIconPosition icon_pos, const gchar *stock_id);
+void nsgtk_widget_override_background_color(GtkWidget *widget, GtkStateFlags state, uint16_t a, uint16_t r, uint16_t g, uint16_t b);
+GtkAdjustment *nsgtk_layout_get_vadjustment(GtkLayout *layout);
+GtkAdjustment *nsgtk_layout_get_hadjustment(GtkLayout *layout);
+void nsgtk_layout_set_hadjustment(GtkLayout *layout, GtkAdjustment *adj);
+void nsgtk_layout_set_vadjustment(GtkLayout *layout, GtkAdjustment *adj);
+GtkWidget* nsgtk_hbox_new(gboolean homogeneous, gint spacing);
+GtkWidget* nsgtk_vbox_new(gboolean homogeneous, gint spacing);
+GtkStateFlags nsgtk_widget_get_state_flags(GtkWidget *widget);
+GtkStyleContext* nsgtk_widget_get_style_context(GtkWidget *widget);
+const PangoFontDescription* nsgtk_style_context_get_font(GtkStyleContext *style, GtkStateFlags state);
+gulong nsgtk_connect_draw_event(GtkWidget *widget, GCallback callback, gpointer g);
+void nsgdk_cursor_unref(GdkCursor *cursor);
+void nsgtk_widget_modify_font(GtkWidget *widget, PangoFontDescription *font_desc);
#endif /* NETSURF_GTK_COMPAT_H */
diff --git a/gtk/cookies.c b/gtk/cookies.c
index 6427a1b06..dd62d568e 100644
--- a/gtk/cookies.c
+++ b/gtk/cookies.c
@@ -24,6 +24,7 @@
#include "desktop/cookies.h"
#include "desktop/plotters.h"
#include "desktop/tree.h"
+#include "utils/log.h"
#include "gtk/gui.h"
#include "gtk/cookies.h"
#include "gtk/plotters.h"
@@ -80,7 +81,7 @@ static struct menu_events menu_events[] = {
};
static struct nsgtk_treeview *cookies_window;
-static GladeXML *gladeFile;
+static GtkBuilder *gladeFile;
GtkWindow *wndCookies;
/**
@@ -92,19 +93,23 @@ bool nsgtk_cookies_init(const char *glade_file_location)
GtkScrolledWindow *scrolled;
GtkDrawingArea *drawing_area;
- gladeFile = glade_xml_new(glade_file_location, NULL, NULL);
- if (gladeFile == NULL)
+ GError* error = NULL;
+ gladeFile = gtk_builder_new ();
+ if (!gtk_builder_add_from_file(gladeFile, glade_file_location, &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
return false;
+ }
- glade_xml_signal_autoconnect(gladeFile);
+ gtk_builder_connect_signals(gladeFile, NULL);
- wndCookies = GTK_WINDOW(glade_xml_get_widget(gladeFile, "wndCookies"));
+ wndCookies = GTK_WINDOW(gtk_builder_get_object(gladeFile, "wndCookies"));
window = wndCookies;
- scrolled = GTK_SCROLLED_WINDOW(glade_xml_get_widget(gladeFile,
+ scrolled = GTK_SCROLLED_WINDOW(gtk_builder_get_object(gladeFile,
"cookiesScrolled"));
- drawing_area = GTK_DRAWING_AREA(glade_xml_get_widget(gladeFile,
+ drawing_area = GTK_DRAWING_AREA(gtk_builder_get_object(gladeFile,
"cookiesDrawingArea"));
cookies_window = nsgtk_treeview_create(cookies_get_tree_flags(), window,
@@ -134,12 +139,14 @@ bool nsgtk_cookies_init(const char *glade_file_location)
void nsgtk_cookies_init_menu()
{
struct menu_events *event = menu_events;
-
- while (event->widget != NULL)
- {
- GtkWidget *w = glade_xml_get_widget(gladeFile, event->widget);
- g_signal_connect(G_OBJECT(w), "activate", event->handler,
- cookies_window);
+ GtkWidget *w;
+
+ while (event->widget != NULL) {
+ w = GTK_WIDGET(gtk_builder_get_object(gladeFile, event->widget));
+ if (w == NULL) {
+ LOG(("Unable to connect menu widget ""%s""", event->widget)); } else {
+ g_signal_connect(G_OBJECT(w), "activate", event->handler, cookies_window);
+ }
event++;
}
}
diff --git a/gtk/dialogs/about.c b/gtk/dialogs/about.c
index 1f29103ad..c75a9787b 100644
--- a/gtk/dialogs/about.c
+++ b/gtk/dialogs/about.c
@@ -16,6 +16,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdint.h>
+
#include "gtk/compat.h"
#include "gtk/gui.h"
#include "gtk/dialogs/about.h"
@@ -55,9 +57,9 @@ void nsgtk_about_dialog_init(GtkWindow *parent,
GTK_DIALOG_DESTROY_WITH_PARENT,
NULL);
- vbox = gtk_vbox_new (FALSE, 8);
+ vbox = nsgtk_vbox_new(FALSE, 8);
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), vbox, TRUE, TRUE, 0);
if (pixbufs != NULL) {
GtkIconSet *icon_set = gtk_icon_set_new_from_pixbuf(GDK_PIXBUF(g_list_nth_data(pixbufs, 0)));
@@ -101,16 +103,16 @@ void nsgtk_about_dialog_init(GtkWindow *parent,
/* Add the credits button */
button = gtk_button_new_from_stock ("Credits");
- gtk_box_pack_end(GTK_BOX (GTK_DIALOG (dialog)->action_area),
+ gtk_box_pack_end(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(dialog))),
button, FALSE, TRUE, 0);
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), button, TRUE);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX(gtk_dialog_get_action_area(GTK_DIALOG(dialog))), button, TRUE);
g_signal_connect(button, "clicked", G_CALLBACK(nsgtk_about_dialog_credits), (gpointer)bw);
/* Add the Licence button */
button = gtk_button_new_from_stock ("Licence");
- gtk_box_pack_end(GTK_BOX (GTK_DIALOG (dialog)->action_area),
+ gtk_box_pack_end(GTK_BOX (GTK_DIALOG(gtk_dialog_get_action_area(GTK_DIALOG(dialog)))),
button, FALSE, TRUE, 0);
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (GTK_DIALOG (dialog)->action_area), button, TRUE);
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX(gtk_dialog_get_action_area(GTK_DIALOG(dialog))), button, TRUE);
g_signal_connect(button, "clicked", G_CALLBACK(nsgtk_about_dialog_licence), (gpointer)bw);
diff --git a/gtk/dialogs/options.c b/gtk/dialogs/options.c
index 8cf949b31..1d095af97 100644
--- a/gtk/dialogs/options.c
+++ b/gtk/dialogs/options.c
@@ -25,7 +25,6 @@
#include <errno.h>
#include <math.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include "desktop/options.h"
#include "desktop/print.h"
@@ -42,7 +41,7 @@
#include "utils/messages.h"
GtkDialog *wndPreferences = NULL;
-static GladeXML *gladeFile;
+static GtkBuilder *gladeFile;
static struct browser_window *current_browser;
@@ -128,7 +127,7 @@ DECLARE(setDefaultExportOptions);
/* Used when the feature is not implemented yet */
#define FIND_WIDGET(wname) \
do { \
- (wname) = glade_xml_get_widget(gladeFile, #wname); \
+ (wname) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #wname)); \
if ((wname) == NULL) \
LOG(("Unable to find widget '%s'!", #wname)); \
} while (0)
@@ -140,14 +139,17 @@ DECLARE(setDefaultExportOptions);
GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent)
{
- gladeFile = glade_xml_new(glade_file_location->options, NULL, NULL);
- if (gladeFile == NULL)
+ GError* error = NULL;
+ gladeFile = gtk_builder_new();
+ if (!gtk_builder_add_from_file(gladeFile, glade_file_location->options, &error)) {
+ g_warning("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
return NULL;
+ }
current_browser = bw;
- wndPreferences = GTK_DIALOG(glade_xml_get_widget(gladeFile,
- "dlgPreferences"));
- gtk_window_set_transient_for (GTK_WINDOW(wndPreferences), parent);
+ wndPreferences = GTK_DIALOG(gtk_builder_get_object(gladeFile, "dlgPreferences"));
+ gtk_window_set_transient_for(GTK_WINDOW(wndPreferences), parent);
FIND_WIDGET(sourceButtonTab);
FIND_WIDGET(sourceButtonWindow);
@@ -246,46 +248,46 @@ GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent)
#define SET_ENTRY(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_entry_set_text(GTK_ENTRY((widget)), (value)); \
} while (0)
#define SET_SPIN(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_spin_button_set_value(GTK_SPIN_BUTTON((widget)), (value)); \
} while (0)
#define SET_CHECK(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON((widget)), \
(value)); \
} while (0)
#define SET_COMBO(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_combo_box_set_active(GTK_COMBO_BOX((widget)), (value)); \
} while (0)
#define SET_FONT(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_font_button_set_font_name(GTK_FONT_BUTTON((widget)), \
(value)); \
} while (0)
#define SET_FILE_CHOOSER(widget, value) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(\
(widget)), (value)); \
} while (0)
#define SET_BUTTON(widget) \
do { \
- (widget) = glade_xml_get_widget(gladeFile, #widget); \
+ (widget) = GTK_WIDGET(gtk_builder_get_object(gladeFile, #widget)); \
} while (0)
@@ -329,7 +331,7 @@ void nsgtk_options_load(void)
}
/* Create combobox */
- box = GTK_BOX(glade_xml_get_widget(gladeFile, "combolanguagevbox"));
+ box = GTK_BOX(gtk_builder_get_object(gladeFile, "combolanguagevbox"));
comboLanguage = nsgtk_combo_box_text_new();
/* Populate combobox from languages file */
@@ -477,7 +479,7 @@ static gboolean on_dialog_close (GtkDialog *dlg, gboolean stay_alive)
static void nsgtk_options_theme_combo(void) {
/* populate theme combo from themelist file */
- GtkBox *box = GTK_BOX(glade_xml_get_widget(gladeFile, "themehbox"));
+ GtkBox *box = GTK_BOX(gtk_builder_get_object(gladeFile, "themehbox"));
char buf[50];
size_t len = SLEN("themelist") + strlen(res_dir_location) + 1;
char themefile[len];
diff --git a/gtk/dialogs/source.c b/gtk/dialogs/source.c
index 5fbd9bcd5..a364b3804 100644
--- a/gtk/dialogs/source.c
+++ b/gtk/dialogs/source.c
@@ -16,13 +16,14 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
+#include "gtk/compat.h"
#include "gtk/dialogs/source.h"
#include "gtk/dialogs/about.h"
#include "gtk/window.h"
@@ -36,6 +37,7 @@
#include "utils/url.h"
#include "utils/utils.h"
#include "utils/utf8.h"
+#include "render/html.h"
#include "render/font.h"
#include "content/content.h"
#include "content/content_type.h"
@@ -58,17 +60,11 @@ struct menu_events {
GCallback handler;
};
-static GladeXML *glade_File;
+static GtkBuilder *glade_File;
static struct nsgtk_source_window *nsgtk_source_list = 0;
static char source_zoomlevel = 10;
void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw);
-static void nsgtk_attach_source_menu_handlers(GladeXML *xml, gpointer g);
-static gboolean nsgtk_source_delete_event(GtkWindow *window, gpointer g);
-static gboolean nsgtk_source_destroy_event(GtkWindow *window, gpointer g);
-static void nsgtk_source_update_zoomlevel(gpointer g);
-static void nsgtk_source_file_save(GtkWindow *parent, const char *filename,
- const char *data);
#define MENUEVENT(x) { #x, G_CALLBACK(nsgtk_on_##x##_activate) }
#define MENUPROTO(x) static gboolean nsgtk_on_##x##_activate( \
@@ -103,9 +99,45 @@ MENUEVENT(source_about),
{NULL, NULL}
};
+static void nsgtk_attach_source_menu_handlers(GtkBuilder *xml, gpointer g)
+{
+ struct menu_events *event = source_menu_events;
+
+ while (event->widget != NULL)
+ {
+ GtkWidget *w = GTK_WIDGET(gtk_builder_get_object(xml, event->widget));
+ g_signal_connect(G_OBJECT(w), "activate", event->handler, g);
+ event++;
+ }
+}
+
+static gboolean nsgtk_source_destroy_event(GtkBuilder *window, gpointer g)
+{
+ struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
+
+ if (nsg->next != NULL)
+ nsg->next->prev = nsg->prev;
+
+ if (nsg->prev != NULL)
+ nsg->prev->next = nsg->next;
+ else
+ nsgtk_source_list = nsg->next;
+
+ free(nsg->data);
+ free(nsg->url);
+ free(g);
+
+ return FALSE;
+}
+
+static gboolean nsgtk_source_delete_event(GtkWindow * window, gpointer g)
+{
+ return FALSE;
+}
+
void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw)
{
- char glade_Location[strlen(res_dir_location) + SLEN("source.glade")
+ char glade_Location[strlen(res_dir_location) + SLEN("source.gtk2.ui")
+ 1];
if (content_get_type(bw->current_content) != CONTENT_HTML)
return;
@@ -115,12 +147,18 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw)
return;
}
- sprintf(glade_Location, "%ssource.glade", res_dir_location);
- glade_File = glade_xml_new(glade_Location, NULL, NULL);
- if (glade_File == NULL) {
+ sprintf(glade_Location, "%ssource.gtk2.ui", res_dir_location);
+
+ GError* error = NULL;
+ glade_File = gtk_builder_new();
+ if (!gtk_builder_add_from_file(glade_File, glade_Location, &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
LOG(("error loading glade tree"));
+ return;
}
+
const char *source_data;
unsigned long source_size;
char *data = NULL;
@@ -141,16 +179,16 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw)
return;
}
- GtkWindow *wndSource = GTK_WINDOW(glade_xml_get_widget(
+ GtkWindow *wndSource = GTK_WINDOW(gtk_builder_get_object(
glade_File, "wndSource"));
- GtkWidget *cutbutton = glade_xml_get_widget(
- glade_File, "source_cut");
- GtkWidget *pastebutton = glade_xml_get_widget(
- glade_File, "source_paste");
- GtkWidget *deletebutton = glade_xml_get_widget(
- glade_File, "source_delete");
- GtkWidget *printbutton = glade_xml_get_widget(
- glade_File, "source_print");
+ GtkWidget *cutbutton = GTK_WIDGET(gtk_builder_get_object(
+ glade_File, "source_cut"));
+ GtkWidget *pastebutton = GTK_WIDGET(gtk_builder_get_object(
+ glade_File, "source_paste"));
+ GtkWidget *deletebutton = GTK_WIDGET(gtk_builder_get_object(
+ glade_File, "source_delete"));
+ GtkWidget *printbutton = GTK_WIDGET(gtk_builder_get_object(
+ glade_File, "source_print"));
gtk_widget_set_sensitive(cutbutton, FALSE);
gtk_widget_set_sensitive(pastebutton, FALSE);
gtk_widget_set_sensitive(deletebutton, FALSE);
@@ -200,13 +238,15 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw)
thiswindow);
GtkTextView *sourceview = GTK_TEXT_VIEW(
- glade_xml_get_widget(glade_File,
+ gtk_builder_get_object(glade_File,
"source_view"));
+
PangoFontDescription *fontdesc =
pango_font_description_from_string("Monospace 8");
thiswindow->gv = sourceview;
- gtk_widget_modify_font(GTK_WIDGET(sourceview), fontdesc);
+ nsgtk_widget_modify_font(GTK_WIDGET(sourceview), fontdesc);
+
GtkTextBuffer *tb = gtk_text_view_get_buffer(sourceview);
gtk_text_buffer_set_text(tb, thiswindow->data, -1);
@@ -262,59 +302,7 @@ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw)
free(fileurl);
}
-
-void nsgtk_attach_source_menu_handlers(GladeXML *xml, gpointer g)
-{
- struct menu_events *event = source_menu_events;
-
- while (event->widget != NULL)
- {
- GtkWidget *w = glade_xml_get_widget(xml, event->widget);
- g_signal_connect(G_OBJECT(w), "activate", event->handler, g);
- event++;
- }
-}
-
-gboolean nsgtk_on_source_save_as_activate(GtkMenuItem *widget, gpointer g)
-{
- struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
- GtkWidget *fc = gtk_file_chooser_dialog_new(
- messages_get("gtkSourceSave"),
- nsg->sourcewindow,
- GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE,
- GTK_RESPONSE_ACCEPT,
- NULL);
- char *filename;
- url_func_result res;
-
- res = url_nice(nsg->url, &filename, false);
- if (res != URL_FUNC_OK) {
- filename = strdup(messages_get("SaveSource"));
- if (filename == NULL) {
- warn_user("NoMemory", 0);
- return FALSE;
- }
- }
-
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), filename);
-
- free(filename);
-
- if (gtk_dialog_run(GTK_DIALOG(fc)) == GTK_RESPONSE_ACCEPT) {
- filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fc));
- nsgtk_source_file_save(nsg->sourcewindow, filename, nsg->data);
- g_free(filename);
- }
-
- gtk_widget_destroy(fc);
-
- return TRUE;
-}
-
-void nsgtk_source_file_save(GtkWindow *parent, const char *filename,
+static void nsgtk_source_file_save(GtkWindow *parent, const char *filename,
const char *data)
{
FILE *f;
@@ -344,7 +332,7 @@ void nsgtk_source_file_save(GtkWindow *parent, const char *filename,
warn[len] = '\0';
label = gtk_label_new(warn);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(confd)->vbox),
+ gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(confd))),
label);
gtk_widget_show(label);
if (gtk_dialog_run(GTK_DIALOG(confd)) == GTK_RESPONSE_ACCEPT) {
@@ -372,10 +360,51 @@ void nsgtk_source_file_save(GtkWindow *parent, const char *filename,
g_signal_connect_swapped(notif, "response",
G_CALLBACK(gtk_widget_destroy), notif);
label = gtk_label_new(temp);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(notif)->vbox), label);
+ gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(notif))), label);
gtk_widget_show_all(notif);
}
+
+gboolean nsgtk_on_source_save_as_activate(GtkMenuItem *widget, gpointer g)
+{
+ struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
+ GtkWidget *fc = gtk_file_chooser_dialog_new(
+ messages_get("gtkSourceSave"),
+ nsg->sourcewindow,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+ char *filename;
+ url_func_result res;
+
+ res = url_nice(nsg->url, &filename, false);
+ if (res != URL_FUNC_OK) {
+ filename = strdup(messages_get("SaveSource"));
+ if (filename == NULL) {
+ warn_user("NoMemory", 0);
+ return FALSE;
+ }
+ }
+
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), filename);
+
+ free(filename);
+
+ if (gtk_dialog_run(GTK_DIALOG(fc)) == GTK_RESPONSE_ACCEPT) {
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fc));
+ nsgtk_source_file_save(nsg->sourcewindow, filename, nsg->data);
+ g_free(filename);
+ }
+
+ gtk_widget_destroy(fc);
+
+ return TRUE;
+}
+
+
gboolean nsgtk_on_source_print_activate( GtkMenuItem *widget, gpointer g)
{
/* correct printing */
@@ -392,29 +421,7 @@ gboolean nsgtk_on_source_close_activate( GtkMenuItem *widget, gpointer g)
return TRUE;
}
-gboolean nsgtk_source_delete_event(GtkWindow * window, gpointer g)
-{
- return FALSE;
-}
-
-gboolean nsgtk_source_destroy_event(GtkWindow * window, gpointer g)
-{
- struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
-
- if (nsg->next != NULL)
- nsg->next->prev = nsg->prev;
-
- if (nsg->prev != NULL)
- nsg->prev->next = nsg->next;
- else
- nsgtk_source_list = nsg->next;
-
- free(nsg->data);
- free(nsg->url);
- free(g);
- return FALSE;
-}
gboolean nsgtk_on_source_select_all_activate (GtkMenuItem *widget, gpointer g)
{
@@ -455,42 +462,7 @@ gboolean nsgtk_on_source_delete_activate(GtkMenuItem *widget, gpointer g)
return TRUE;
}
-gboolean nsgtk_on_source_zoom_in_activate(GtkMenuItem *widget, gpointer g)
-{
- source_zoomlevel++;
- nsgtk_source_update_zoomlevel(g);
-
- return TRUE;
-}
-
-gboolean nsgtk_on_source_zoom_out_activate(GtkMenuItem *widget, gpointer g)
-{
- if (source_zoomlevel > 1) {
- source_zoomlevel--;
- nsgtk_source_update_zoomlevel(g);
- }
-
- return TRUE;
-}
-
-gboolean nsgtk_on_source_zoom_normal_activate(GtkMenuItem *widget, gpointer g)
-{
- source_zoomlevel = 10;
- nsgtk_source_update_zoomlevel(g);
-
- return TRUE;
-}
-
-gboolean nsgtk_on_source_about_activate(GtkMenuItem *widget, gpointer g)
-{
- struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
-
- nsgtk_about_dialog_init(nsg->sourcewindow, nsg->bw, netsurf_version);
-
- return TRUE;
-}
-
-void nsgtk_source_update_zoomlevel(gpointer g)
+static void nsgtk_source_update_zoomlevel(gpointer g)
{
struct nsgtk_source_window *nsg;
GtkTextBuffer *buf;
@@ -527,3 +499,40 @@ void nsgtk_source_update_zoomlevel(gpointer g)
nsg = nsg->next;
}
}
+
+gboolean nsgtk_on_source_zoom_in_activate(GtkMenuItem *widget, gpointer g)
+{
+ source_zoomlevel++;
+ nsgtk_source_update_zoomlevel(g);
+
+ return TRUE;
+}
+
+gboolean nsgtk_on_source_zoom_out_activate(GtkMenuItem *widget, gpointer g)
+{
+ if (source_zoomlevel > 1) {
+ source_zoomlevel--;
+ nsgtk_source_update_zoomlevel(g);
+ }
+
+ return TRUE;
+}
+
+
+gboolean nsgtk_on_source_zoom_normal_activate(GtkMenuItem *widget, gpointer g)
+{
+ source_zoomlevel = 10;
+ nsgtk_source_update_zoomlevel(g);
+
+ return TRUE;
+}
+
+gboolean nsgtk_on_source_about_activate(GtkMenuItem *widget, gpointer g)
+{
+ struct nsgtk_source_window *nsg = (struct nsgtk_source_window *) g;
+
+ nsgtk_about_dialog_init(nsg->sourcewindow, nsg->bw, netsurf_version);
+
+ return TRUE;
+}
+
diff --git a/gtk/download.c b/gtk/download.c
index 5e22352b4..71b1aa633 100644
--- a/gtk/download.c
+++ b/gtk/download.c
@@ -70,7 +70,7 @@ struct gui_download_window {
struct download_context *ctx;
nsgtk_download_actions sensitivity;
nsgtk_download_status status;
-
+
GString *name;
GString *time_left;
gint size_total;
@@ -79,7 +79,7 @@ struct gui_download_window {
gfloat time_remaining;
gfloat start_time;
gfloat speed;
-
+
GtkTreeRowReference *row;
GIOChannel *write;
GError *error;
@@ -96,113 +96,448 @@ static GtkTreeSelection *nsgtk_download_selection;
static GtkTreeIter nsgtk_download_iter;
static GTimer *nsgtk_downloads_timer;
-static GList *nsgtk_downloads_list, *nsgtk_download_buttons;
+static GList *nsgtk_downloads_list;
+static GtkButton *nsgtk_download_button_pause;
+static GtkButton *nsgtk_download_button_clear;
+static GtkButton *nsgtk_download_button_cancel;
+static GtkButton *nsgtk_download_button_resume;
static gint nsgtk_downloads_num_active;
-static const gchar* status_messages[] = { NULL, "gtkWorking", "gtkError",
- "gtkComplete", "gtkCanceled" };
+static const gchar* status_messages[] = { NULL, "gtkWorking", "gtkError",
+ "gtkComplete", "gtkCanceled" };
+
+
+
+static GtkTreeView* nsgtk_download_tree_view_new(GtkBuilder *gladeFile)
+{
+ GtkTreeView *treeview;
+ GtkCellRenderer *renderer;
+
+ treeview = GTK_TREE_VIEW(gtk_builder_get_object(gladeFile, "treeDownloads"));
+
+ /* Progress column */
+ renderer = gtk_cell_renderer_progress_new();
+ gtk_tree_view_insert_column_with_attributes (treeview, -1,
+ messages_get("gtkProgress"), renderer, "value",
+ NSGTK_DOWNLOAD_PROGRESS, "pulse", NSGTK_DOWNLOAD_PULSE,
+ "text", NSGTK_DOWNLOAD_STATUS, NULL);
+
+ /* Information column */
+ renderer = gtk_cell_renderer_text_new();
+ g_object_set(G_OBJECT(renderer), "wrap-mode", PANGO_WRAP_WORD_CHAR,
+ "wrap-width", 300, NULL);
+ gtk_tree_view_insert_column_with_attributes (treeview, -1,
+ messages_get("gtkDetails"), renderer, "text",
+ NSGTK_DOWNLOAD_INFO, NULL);
+ gtk_tree_view_column_set_expand(gtk_tree_view_get_column(treeview,
+ NSGTK_DOWNLOAD_INFO), TRUE);
+
+ /* Time remaining column */
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes (treeview, -1,
+ messages_get("gtkRemaining"), renderer, "text",
+ NSGTK_DOWNLOAD_REMAINING, NULL);
+
+ /* Speed column */
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes (treeview, -1,
+ messages_get("gtkSpeed"), renderer, "text",
+ NSGTK_DOWNLOAD_SPEED, NULL);
+
+ return treeview;
+}
+
+static gint
+nsgtk_download_sort(GtkTreeModel *model,
+ GtkTreeIter *a,
+ GtkTreeIter *b,
+ gpointer userdata)
+{
+ struct gui_download_window *dl1, *dl2;
+
+ gtk_tree_model_get(model, a, NSGTK_DOWNLOAD, &dl1, -1);
+ gtk_tree_model_get(model, b, NSGTK_DOWNLOAD, &dl2, -1);
+
+ return dl1->status - dl2->status;
+}
+
+static void
+nsgtk_download_sensitivity_update_buttons(nsgtk_download_actions sensitivity)
+{
+ /* Glade seems to pack the buttons in an arbitrary order */
+ enum { PAUSE_BUTTON, CLEAR_BUTTON, CANCEL_BUTTON, RESUME_BUTTON };
+
+ gtk_widget_set_sensitive(GTK_WIDGET(nsgtk_download_button_pause),
+ sensitivity & NSGTK_DOWNLOAD_PAUSE);
+ gtk_widget_set_sensitive(GTK_WIDGET(nsgtk_download_button_clear),
+ sensitivity & NSGTK_DOWNLOAD_CLEAR);
+ gtk_widget_set_sensitive(GTK_WIDGET(nsgtk_download_button_cancel),
+ sensitivity & NSGTK_DOWNLOAD_CANCEL);
+ gtk_widget_set_sensitive(GTK_WIDGET(nsgtk_download_button_resume),
+ sensitivity & NSGTK_DOWNLOAD_RESUME);
+}
+
+static void nsgtk_download_sensitivity_evaluate(GtkTreeSelection *selection)
+{
+ GtkTreeIter iter;
+ GList *rows;
+ gboolean selected = gtk_tree_selection_count_selected_rows(selection);
+ GtkTreeModel *model = GTK_TREE_MODEL(nsgtk_download_store);
+ nsgtk_download_actions sensitivity = 0;
+ struct gui_download_window *dl;
+
+ if (selected) {
+ rows = gtk_tree_selection_get_selected_rows(selection, &model);
+ while (rows != NULL) {
+ gtk_tree_model_get_iter(model, &iter,
+ (GtkTreePath*)rows->data);
+ gtk_tree_model_get(model, &iter, NSGTK_DOWNLOAD,
+ &dl, -1);
+ sensitivity |= dl->sensitivity;
+ rows = rows->next;
+ }
+ } else {
+ rows = nsgtk_downloads_list;
+ while (rows != NULL) {
+ dl = rows->data;
+ sensitivity |= (dl->sensitivity & NSGTK_DOWNLOAD_CLEAR);
+ rows = rows->next;
+ }
+ }
-static gboolean nsgtk_download_hide(GtkWidget *window);
-static GtkTreeView *nsgtk_download_tree_view_new(GladeXML *gladeFile);
+ nsgtk_download_sensitivity_update_buttons(sensitivity);
+}
+
+static void nsgtk_download_do(nsgtk_download_selection_action action)
+{
+ GList *rows, *dls = NULL;
+ GtkTreeModel *model = GTK_TREE_MODEL(nsgtk_download_store);
+ gboolean selection_exists = gtk_tree_selection_count_selected_rows(
+ nsgtk_download_selection);
+
+ if (selection_exists) {
+ rows = gtk_tree_selection_get_selected_rows(
+ nsgtk_download_selection, &model);
+ while (rows != NULL) {
+ struct gui_download_window *dl;
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(
+ nsgtk_download_store),
+ &nsgtk_download_iter,
+ (GtkTreePath*)rows->data);
+ gtk_tree_model_get(GTK_TREE_MODEL(nsgtk_download_store),
+ &nsgtk_download_iter, NSGTK_DOWNLOAD,
+ &dl, -1);
+ dls = g_list_prepend(dls, dl);
+
+ rows = rows->next;
+ }
+ g_list_foreach(rows, (GFunc)gtk_tree_path_free, NULL);
+ g_list_foreach(rows, (GFunc)g_free, NULL);
+ g_list_free(rows);
+ } else
+ dls = g_list_copy(nsgtk_downloads_list);
+
+ g_list_foreach(dls, (GFunc)action, NULL);
+ g_list_free(dls);
+}
+
+static gchar* nsgtk_download_info_to_string(struct gui_download_window *dl)
+{
+ gchar *size_info = g_strdup_printf(messages_get("gtkSizeInfo"),
+ human_friendly_bytesize(dl->size_downloaded),
+ dl->size_total == 0 ? messages_get("gtkUnknownSize") :
+ human_friendly_bytesize(dl->size_total));
+
+ gchar *r;
+
+ if (dl->status != NSGTK_DOWNLOAD_ERROR)
+ r = g_strdup_printf("%s\n%s", dl->name->str, size_info);
+ else
+ r = g_strdup_printf("%s\n%s", dl->name->str,
+ dl->error->message);
+
+ g_free(size_info);
+
+ return r;
+}
+
+static gchar* nsgtk_download_time_to_string(gint seconds)
+{
+ gint hours, minutes;
+
+ if (seconds < 0)
+ return g_strdup("-");
+
+ hours = seconds / 3600;
+ seconds -= hours * 3600;
+ minutes = seconds / 60;
+ seconds -= minutes * 60;
+
+ if (hours > 0)
+ return g_strdup_printf("%u:%02u:%02u", hours, minutes,
+ seconds);
+ else
+ return g_strdup_printf("%u:%02u", minutes, seconds);
+}
+
+static void nsgtk_download_store_update_item (struct gui_download_window *dl)
+{
+ gchar *info = nsgtk_download_info_to_string(dl);
+ char *human = human_friendly_bytesize(dl->speed);
+ char speed[strlen(human) + SLEN("/s") + 1];
+ sprintf(speed, "%s/s", human);
+ gchar *time = nsgtk_download_time_to_string(dl->time_remaining);
+ gboolean pulse = dl->status == NSGTK_DOWNLOAD_WORKING;
+
+ /* Updates iter (which is needed to set and get data) with the dl row */
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
+ &nsgtk_download_iter,
+ gtk_tree_row_reference_get_path(dl->row));
+
+ gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
+ NSGTK_DOWNLOAD_PULSE, pulse ? dl->progress : -1,
+ NSGTK_DOWNLOAD_PROGRESS, pulse ? 0 : dl->progress,
+ NSGTK_DOWNLOAD_INFO, info,
+ NSGTK_DOWNLOAD_SPEED, dl->speed == 0 ? "-" : speed,
+ NSGTK_DOWNLOAD_REMAINING, time,
+ NSGTK_DOWNLOAD, dl,
+ -1);
+
+ g_free(info);
+ g_free(time);
+}
+
+static gboolean nsgtk_download_update(gboolean force_update)
+{
+ /* Be sure we need to update */
+ if (!nsgtk_widget_get_visible(GTK_WIDGET(nsgtk_download_window)))
+ return TRUE;
+
+ GList *list;
+ gchar *text;
+ gboolean update, pulse_mode = FALSE;
+ gint downloaded = 0, total = 0, dls = 0;
+ gfloat percent, elapsed = g_timer_elapsed(nsgtk_downloads_timer, NULL);
+ nsgtk_downloads_num_active = 0;
+
+ for (list = nsgtk_downloads_list; list != NULL; list = list->next) {
+ struct gui_download_window *dl = list->data;
+ update = force_update;
+
+ switch (dl->status) {
+ case NSGTK_DOWNLOAD_WORKING:
+ pulse_mode = TRUE;
+
+ case NSGTK_DOWNLOAD_NONE:
+ dl->speed = dl->size_downloaded /
+ (elapsed - dl->start_time);
+ if (dl->status == NSGTK_DOWNLOAD_NONE) {
+ dl->time_remaining = (dl->size_total -
+ dl->size_downloaded)/
+ dl->speed;
+ dl->progress = (gfloat)
+ dl->size_downloaded /
+ dl->size_total * 100;
+ } else
+ dl->progress++;
+
+ nsgtk_downloads_num_active++;
+ update = TRUE;
+
+ case NSGTK_DOWNLOAD_COMPLETE:
+ downloaded += dl->size_downloaded;
+ total += dl->size_total;
+ dls++;
+
+ default:
+ ;//Do nothing
+
+ }
+ if (update)
+ nsgtk_download_store_update_item(dl);
+ }
+
+ if (pulse_mode) {
+ text = g_strdup_printf(
+ messages_get(nsgtk_downloads_num_active > 1 ?
+ "gtkProgressBarPulse" :
+ "gtkProgressBarPulseSingle"),
+ nsgtk_downloads_num_active);
+ gtk_progress_bar_pulse(nsgtk_download_progress_bar);
+ gtk_progress_bar_set_text(nsgtk_download_progress_bar, text);
+ } else {
+ percent = total != 0 ? (gfloat)downloaded / total : 0;
+ text = g_strdup_printf(messages_get("gtkProgressBar"),
+ floor(percent*100), dls);
+ gtk_progress_bar_set_fraction(nsgtk_download_progress_bar,
+ percent);
+ gtk_progress_bar_set_text(nsgtk_download_progress_bar, text);
+ }
+
+ g_free(text);
+
+ if (nsgtk_downloads_num_active == 0)
+ return FALSE; /* Returning FALSE here cancels the g_timeout */
+ else
+ return TRUE;
+}
+
+static void nsgtk_download_store_clear_item(struct gui_download_window *dl)
+{
+ if (dl->sensitivity & NSGTK_DOWNLOAD_CLEAR) {
+ nsgtk_downloads_list = g_list_remove(nsgtk_downloads_list, dl);
+
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
+ &nsgtk_download_iter,
+ gtk_tree_row_reference_get_path(dl->row));
+ gtk_list_store_remove(nsgtk_download_store,
+ &nsgtk_download_iter);
+
+ download_context_destroy(dl->ctx);
+ g_string_free(dl->name, TRUE);
+ g_string_free(dl->time_left, TRUE);
+ g_free(dl);
+
+ nsgtk_download_sensitivity_evaluate(nsgtk_download_selection);
+ nsgtk_download_update(FALSE);
+ }
+}
+
static void nsgtk_download_tree_view_row_activated(GtkTreeView *tree,
- GtkTreePath *path, GtkTreeViewColumn *column, gpointer data);
-
-static gint nsgtk_download_sort(GtkTreeModel *model, GtkTreeIter *a,
- GtkTreeIter *b, gpointer userdata);
-static gboolean nsgtk_download_update(gboolean force_update);
-static void nsgtk_download_do(nsgtk_download_selection_action action);
-
-static void nsgtk_download_store_update_item(struct gui_download_window *dl);
-static void nsgtk_download_store_create_item (struct gui_download_window *dl);
-static void nsgtk_download_store_clear_item (struct gui_download_window *dl);
-static void nsgtk_download_store_cancel_item (struct gui_download_window *dl);
-
-static void nsgtk_download_sensitivity_evaluate(GtkTreeSelection *selection);
-static void nsgtk_download_sensitivity_update_buttons(
- nsgtk_download_actions sensitivity);
-
-static void nsgtk_download_change_sensitivity(
- struct gui_download_window *dl, nsgtk_download_actions sens);
+ GtkTreePath *path, GtkTreeViewColumn *column, gpointer data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model(tree);
+
+ if (gtk_tree_model_get_iter(model, &iter, path)) {
+ /* TODO: This will be a context action (pause, start, clear) */
+ nsgtk_download_do(nsgtk_download_store_clear_item);
+ }
+}
+
+static void nsgtk_download_change_sensitivity(struct gui_download_window *dl,
+ nsgtk_download_actions sensitivity)
+{
+ dl->sensitivity = sensitivity;
+ nsgtk_download_sensitivity_evaluate(nsgtk_download_selection);
+}
+
static void nsgtk_download_change_status (
- struct gui_download_window *dl, nsgtk_download_status status);
+ struct gui_download_window *dl, nsgtk_download_status status)
+{
+ dl->status = status;
+ if (status != NSGTK_DOWNLOAD_NONE) {
+ gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
+ &nsgtk_download_iter,
+ gtk_tree_row_reference_get_path(dl->row));
+
+ gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
+ NSGTK_DOWNLOAD_STATUS,
+ messages_get(status_messages[status]), -1);
+ }
+}
+
+static void nsgtk_download_store_cancel_item (struct gui_download_window *dl)
+{
+ if (dl->sensitivity & NSGTK_DOWNLOAD_CANCEL) {
+ dl->speed = 0;
+ dl->size_downloaded = 0;
+ dl->progress = 0;
+ dl->time_remaining = -1;
+ nsgtk_download_change_sensitivity(dl, NSGTK_DOWNLOAD_CLEAR);
+ nsgtk_download_change_status(dl, NSGTK_DOWNLOAD_CANCELED);
-static gchar* nsgtk_download_dialog_show (const gchar *filename,
- const gchar *domain, const gchar *size);
-static gchar* nsgtk_download_info_to_string (struct gui_download_window *dl);
-static gchar* nsgtk_download_time_to_string (gint seconds);
-static gboolean nsgtk_download_handle_error (GError *error);
+ download_context_abort(dl->ctx);
-
+ g_unlink(download_context_get_filename(dl->ctx));
+
+ nsgtk_download_update(TRUE);
+ }
+}
+
+static gboolean nsgtk_download_hide (GtkWidget *window)
+{
+ gtk_widget_hide(window);
+ return TRUE;
+}
bool nsgtk_download_init(const char *glade_file_location)
{
- GladeXML *gladeFile;
+ GError* error = NULL;
+ GtkBuilder* builder = gtk_builder_new();
- gladeFile = glade_xml_new(glade_file_location, NULL, NULL);
- if (gladeFile == NULL)
+ if (!gtk_builder_add_from_file(builder, glade_file_location, &error))
+ {
+ g_warning("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
return false;
+ }
- nsgtk_download_buttons =
- glade_xml_get_widget_prefix(gladeFile, "button");
- nsgtk_download_progress_bar = GTK_PROGRESS_BAR(glade_xml_get_widget(
- gladeFile, "progressBar"));
- nsgtk_download_window = GTK_WINDOW(glade_xml_get_widget(gladeFile,
- "wndDownloads"));
+ nsgtk_download_button_pause = GTK_BUTTON(gtk_builder_get_object(builder, "buttonPause"));
+ nsgtk_download_button_clear = GTK_BUTTON(gtk_builder_get_object(builder, "buttonClear"));
+ nsgtk_download_button_cancel = GTK_BUTTON(gtk_builder_get_object(builder, "buttonCancel"));
+ nsgtk_download_button_resume = GTK_BUTTON(gtk_builder_get_object(builder, "buttonPlay"));
+
+ nsgtk_download_progress_bar = GTK_PROGRESS_BAR(gtk_builder_get_object(builder, "progressBar"));
+ nsgtk_download_window = GTK_WINDOW(gtk_builder_get_object(builder, "wndDownloads"));
nsgtk_download_parent = NULL;
-
+
gtk_window_set_transient_for(GTK_WINDOW(nsgtk_download_window),
- nsgtk_download_parent);
+ nsgtk_download_parent);
gtk_window_set_destroy_with_parent(GTK_WINDOW(nsgtk_download_window),
- FALSE);
-
+ FALSE);
+
nsgtk_downloads_timer = g_timer_new();
-
- nsgtk_download_tree = nsgtk_download_tree_view_new(gladeFile);
-
+
+ nsgtk_download_tree = nsgtk_download_tree_view_new(builder);
+
nsgtk_download_store = gtk_list_store_new(NSGTK_DOWNLOAD_N_COLUMNS,
- G_TYPE_INT, /* % complete */
- G_TYPE_STRING, /* Description */
- G_TYPE_STRING, /* Time remaining */
- G_TYPE_STRING, /* Speed */
- G_TYPE_INT, /* Pulse */
- G_TYPE_STRING, /* Status */
- G_TYPE_POINTER /* Download structure */
- );
-
-
+ G_TYPE_INT, /* % complete */
+ G_TYPE_STRING, /* Description */
+ G_TYPE_STRING, /* Time remaining */
+ G_TYPE_STRING, /* Speed */
+ G_TYPE_INT, /* Pulse */
+ G_TYPE_STRING, /* Status */
+ G_TYPE_POINTER /* Download structure */
+ );
+
+
gtk_tree_view_set_model(nsgtk_download_tree,
- GTK_TREE_MODEL(nsgtk_download_store));
-
+ GTK_TREE_MODEL(nsgtk_download_store));
+
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(nsgtk_download_store),
- NSGTK_DOWNLOAD_STATUS,
- (GtkTreeIterCompareFunc) nsgtk_download_sort, NULL, NULL);
+ NSGTK_DOWNLOAD_STATUS,
+ (GtkTreeIterCompareFunc) nsgtk_download_sort, NULL, NULL);
gtk_tree_sortable_set_sort_column_id(
- GTK_TREE_SORTABLE(nsgtk_download_store),
- NSGTK_DOWNLOAD_STATUS, GTK_SORT_ASCENDING);
-
+ GTK_TREE_SORTABLE(nsgtk_download_store),
+ NSGTK_DOWNLOAD_STATUS, GTK_SORT_ASCENDING);
+
g_object_unref(nsgtk_download_store);
-
- nsgtk_download_selection =
- gtk_tree_view_get_selection(nsgtk_download_tree);
+
+ nsgtk_download_selection =
+ gtk_tree_view_get_selection(nsgtk_download_tree);
gtk_tree_selection_set_mode(nsgtk_download_selection,
- GTK_SELECTION_MULTIPLE);
-
- g_signal_connect(G_OBJECT(nsgtk_download_selection), "changed",
- G_CALLBACK(nsgtk_download_sensitivity_evaluate), NULL);
- g_signal_connect(nsgtk_download_tree, "row-activated",
- G_CALLBACK(nsgtk_download_tree_view_row_activated),
- NULL);
- g_signal_connect_swapped(glade_xml_get_widget(gladeFile, "buttonClear"),
- "clicked", G_CALLBACK(nsgtk_download_do),
- nsgtk_download_store_clear_item);
- g_signal_connect_swapped(glade_xml_get_widget(gladeFile,
- "buttonCancel"), "clicked",
- G_CALLBACK(nsgtk_download_do),
- nsgtk_download_store_cancel_item);
- g_signal_connect(G_OBJECT(nsgtk_download_window), "delete-event",
- G_CALLBACK(nsgtk_download_hide), NULL);
-
- return true;
+ GTK_SELECTION_MULTIPLE);
+
+ g_signal_connect(G_OBJECT(nsgtk_download_selection), "changed",
+ G_CALLBACK(nsgtk_download_sensitivity_evaluate), NULL);
+ g_signal_connect(nsgtk_download_tree, "row-activated",
+ G_CALLBACK(nsgtk_download_tree_view_row_activated),
+ NULL);
+ g_signal_connect_swapped(gtk_builder_get_object(builder, "buttonClear"),
+ "clicked",
+ G_CALLBACK(nsgtk_download_do),
+ nsgtk_download_store_clear_item);
+ g_signal_connect_swapped(gtk_builder_get_object(builder, "buttonCancel"),
+ "clicked",
+ G_CALLBACK(nsgtk_download_do),
+ nsgtk_download_store_cancel_item);
+ g_signal_connect(G_OBJECT(nsgtk_download_window), "delete-event",
+ G_CALLBACK(nsgtk_download_hide), NULL);
+
+ return true;
}
void nsgtk_download_destroy ()
@@ -215,57 +550,187 @@ bool nsgtk_check_for_downloads (GtkWindow *parent)
if (nsgtk_downloads_num_active != 0) {
GtkWidget *dialog;
dialog = gtk_message_dialog_new_with_markup(parent,
- GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
- GTK_BUTTONS_NONE,
- "<big><b>%s</b></big>\n\n"
- "<small>%s</small>", messages_get("gtkQuit"),
- messages_get("gtkDownloadsRunning"));
- gtk_dialog_add_buttons(GTK_DIALOG(dialog), "gtk-cancel",
- GTK_RESPONSE_CANCEL, "gtk-quit",
- GTK_RESPONSE_CLOSE, NULL);
-
+ GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING,
+ GTK_BUTTONS_NONE,
+ "<big><b>%s</b></big>\n\n"
+ "<small>%s</small>", messages_get("gtkQuit"),
+ messages_get("gtkDownloadsRunning"));
+ gtk_dialog_add_buttons(GTK_DIALOG(dialog), "gtk-cancel",
+ GTK_RESPONSE_CANCEL, "gtk-quit",
+ GTK_RESPONSE_CLOSE, NULL);
+
gint response = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
-
+
if (response == GTK_RESPONSE_CANCEL)
return true;
- }
-
+ }
+
return false;
}
void nsgtk_download_show(GtkWindow *parent)
{
- gtk_window_set_transient_for(nsgtk_download_window,
- nsgtk_download_parent);
- gtk_window_present(nsgtk_download_window);
+ gtk_window_set_transient_for(nsgtk_download_window,
+ nsgtk_download_parent);
+ gtk_window_present(nsgtk_download_window);
}
-gboolean nsgtk_download_hide (GtkWidget *window)
-{
- gtk_widget_hide(window);
- return TRUE;
+static gchar* nsgtk_download_dialog_show (const gchar *filename, const gchar *domain,
+ const gchar *size)
+{
+ enum { GTK_RESPONSE_DOWNLOAD, GTK_RESPONSE_SAVE_AS };
+ GtkWidget *dialog;
+ char *destination = NULL;
+ gchar *message = g_strdup(messages_get("gtkStartDownload"));
+ gchar *info = g_strdup_printf(messages_get("gtkInfo"), filename,
+ domain, size);
+
+ dialog = gtk_message_dialog_new_with_markup(nsgtk_download_parent,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
+ "<span size=\"x-large\" weight=\"ultrabold\">%s</span>"
+ "\n\n<small>%s</small>",
+ message, info);
+
+ gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_SAVE,
+ GTK_RESPONSE_DOWNLOAD, GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE_AS,
+ GTK_RESPONSE_SAVE_AS, NULL);
+
+ gint result = gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ g_free(message);
+ g_free(info);
+
+ switch (result) {
+ case GTK_RESPONSE_SAVE_AS: {
+ dialog = gtk_file_chooser_dialog_new
+ (messages_get("gtkSave"),
+ nsgtk_download_parent,
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_file_chooser_set_current_name
+ (GTK_FILE_CHOOSER(dialog), filename);
+ gtk_file_chooser_set_current_folder
+ (GTK_FILE_CHOOSER(dialog),
+ nsoption_charp(downloads_directory));
+ gtk_file_chooser_set_do_overwrite_confirmation
+ (GTK_FILE_CHOOSER(dialog),
+ nsoption_bool(request_overwrite));
+
+ gint result = gtk_dialog_run(GTK_DIALOG(dialog));
+ if (result == GTK_RESPONSE_ACCEPT)
+ destination = gtk_file_chooser_get_filename
+ (GTK_FILE_CHOOSER(dialog));
+ gtk_widget_destroy(dialog);
+ break;
+ }
+ case GTK_RESPONSE_DOWNLOAD: {
+ destination = malloc(strlen(nsoption_charp(downloads_directory))
+ + strlen(filename) + SLEN("/") + 1);
+ if (destination == NULL) {
+ warn_user(messages_get("NoMemory"), 0);
+ break;
+ }
+ sprintf(destination, "%s/%s",
+ nsoption_charp(downloads_directory), filename);
+ /* Test if file already exists and display overwrite
+ * confirmation if needed */
+ if (g_file_test(destination, G_FILE_TEST_EXISTS) &&
+ nsoption_bool(request_overwrite)) {
+ message = g_strdup_printf(messages_get(
+ "gtkOverwrite"), filename);
+ info = g_strdup_printf(messages_get(
+ "gtkOverwriteInfo"),
+ nsoption_charp(downloads_directory));
+
+ dialog = gtk_message_dialog_new_with_markup(
+ nsgtk_download_parent,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_CANCEL,
+ "<b>%s</b>",message);
+ gtk_message_dialog_format_secondary_markup(
+ GTK_MESSAGE_DIALOG(dialog),
+ "%s", info);
+
+ GtkWidget *button = gtk_dialog_add_button(
+ GTK_DIALOG(dialog),
+ "_Replace",
+ GTK_RESPONSE_DOWNLOAD);
+ gtk_button_set_image(GTK_BUTTON(button),
+ gtk_image_new_from_stock(
+ "gtk-save",
+ GTK_ICON_SIZE_BUTTON));
+
+ gint result = gtk_dialog_run(GTK_DIALOG(
+ dialog));
+ if (result == GTK_RESPONSE_CANCEL)
+ destination = NULL;
+
+ gtk_widget_destroy(dialog);
+ g_free(message);
+ g_free(info);
+ }
+ break;
+ }
+ }
+ return destination;
+}
+
+
+static gboolean nsgtk_download_handle_error (GError *error)
+{
+ if (error != NULL) {
+ GtkWidget*dialog;
+ gchar *message = g_strdup_printf(messages_get("gtkFileError"),
+ error->message);
+
+ dialog = gtk_message_dialog_new_with_markup
+ (nsgtk_download_parent,
+ GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_OK,
+ "<big><b>%s</b></big>\n\n"
+ "<small>%s</small>", messages_get("gtkFailed"),
+ message);
+
+ gtk_dialog_run(GTK_DIALOG(dialog));
+ gtk_widget_destroy(dialog);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void nsgtk_download_store_create_item (struct gui_download_window *dl)
+{
+ nsgtk_download_store_update_item(dl);
+ /* The iter has already been updated to this row */
+ gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
+ NSGTK_DOWNLOAD, dl, -1);
}
struct gui_download_window *gui_download_window_create(download_context *ctx,
- struct gui_window *gui)
+ struct gui_window *gui)
{
const char *url = download_context_get_url(ctx);
unsigned long total_size = download_context_get_total_length(ctx);
gchar *domain;
gchar *destination;
gboolean unknown_size = total_size == 0;
- const char *size = (total_size == 0 ?
- messages_get("gtkUnknownSize") :
- human_friendly_bytesize(total_size));
-
- nsgtk_download_parent =
- nsgtk_scaffolding_window(nsgtk_get_scaffold(gui));
+ const char *size = (total_size == 0 ?
+ messages_get("gtkUnknownSize") :
+ human_friendly_bytesize(total_size));
+
+ nsgtk_download_parent =
+ nsgtk_scaffolding_window(nsgtk_get_scaffold(gui));
struct gui_download_window *download = malloc(sizeof *download);
if (download == NULL)
return NULL;
-
+
if (url_host(url, &domain) != URL_FUNC_OK) {
domain = g_strdup(messages_get("gtkUnknownHost"));
if (domain == NULL) {
@@ -273,24 +738,24 @@ struct gui_download_window *gui_download_window_create(download_context *ctx,
return NULL;
}
}
-
+
destination = nsgtk_download_dialog_show(
- download_context_get_filename(ctx), domain, size);
+ download_context_get_filename(ctx), domain, size);
if (destination == NULL) {
g_free(domain);
free(download);
return NULL;
}
-
- /* Add the new row and store the reference to it (which keeps track of
+
+ /* Add the new row and store the reference to it (which keeps track of
* the tree changes) */
gtk_list_store_prepend(nsgtk_download_store, &nsgtk_download_iter);
download->row = gtk_tree_row_reference_new(
+ GTK_TREE_MODEL(nsgtk_download_store),
+ gtk_tree_model_get_path(
GTK_TREE_MODEL(nsgtk_download_store),
- gtk_tree_model_get_path(
- GTK_TREE_MODEL(nsgtk_download_store),
- &nsgtk_download_iter));
-
+ &nsgtk_download_iter));
+
download->ctx = ctx;
download->name = g_string_new(download_context_get_filename(ctx));
download->time_left = g_string_new("");
@@ -311,44 +776,44 @@ struct gui_download_window *gui_download_window_create(download_context *ctx,
free(download);
return NULL;
}
- g_io_channel_set_encoding(download->write, NULL, &download->error);
+ g_io_channel_set_encoding(download->write, NULL, &download->error);
nsgtk_download_change_sensitivity(download, NSGTK_DOWNLOAD_CANCEL);
-
+
nsgtk_download_store_create_item(download);
nsgtk_download_show(nsgtk_download_parent);
-
- if (unknown_size)
+
+ if (unknown_size)
nsgtk_download_change_status(download, NSGTK_DOWNLOAD_WORKING);
-
+
if (nsgtk_downloads_num_active == 0) {
- g_timeout_add(UPDATE_RATE,
- (GSourceFunc) nsgtk_download_update, FALSE);
+ g_timeout_add(UPDATE_RATE,
+ (GSourceFunc) nsgtk_download_update, FALSE);
}
nsgtk_downloads_list = g_list_prepend(nsgtk_downloads_list, download);
-
- return download;
+
+ return download;
}
-nserror gui_download_window_data(struct gui_download_window *dw,
- const char *data, unsigned int size)
+nserror gui_download_window_data(struct gui_download_window *dw,
+ const char *data, unsigned int size)
{
g_io_channel_write_chars(dw->write, data, size, NULL, &dw->error);
if (dw->error != NULL) {
dw->speed = 0;
dw->time_remaining = -1;
-
+
nsgtk_download_change_sensitivity(dw, NSGTK_DOWNLOAD_CLEAR);
nsgtk_download_change_status(dw, NSGTK_DOWNLOAD_ERROR);
-
+
nsgtk_download_update(TRUE);
-
+
gtk_window_present(nsgtk_download_window);
return NSERROR_SAVE_FAILED;
- }
+ }
dw->size_downloaded += size;
return NSERROR_OK;
@@ -356,7 +821,7 @@ nserror gui_download_window_data(struct gui_download_window *dw,
void gui_download_window_error(struct gui_download_window *dw,
- const char *error_msg)
+ const char *error_msg)
{
}
@@ -365,14 +830,14 @@ void gui_download_window_done(struct gui_download_window *dw)
{
g_io_channel_shutdown(dw->write, TRUE, &dw->error);
g_io_channel_unref(dw->write);
-
+
dw->speed = 0;
dw->time_remaining = -1;
dw->progress = 100;
dw->size_total = dw->size_downloaded;
nsgtk_download_change_sensitivity(dw, NSGTK_DOWNLOAD_CLEAR);
nsgtk_download_change_status(dw, NSGTK_DOWNLOAD_COMPLETE);
-
+
if (nsoption_bool(downloads_clear))
nsgtk_download_store_clear_item(dw);
else
@@ -380,485 +845,17 @@ void gui_download_window_done(struct gui_download_window *dw)
}
-GtkTreeView* nsgtk_download_tree_view_new(GladeXML *gladeFile)
-{
- GtkTreeView *treeview = GTK_TREE_VIEW(glade_xml_get_widget(gladeFile,
- "treeDownloads"));
- GtkCellRenderer *renderer;
-
- /* Progress column */
- renderer = gtk_cell_renderer_progress_new();
- gtk_tree_view_insert_column_with_attributes (treeview, -1,
- messages_get("gtkProgress"), renderer, "value",
- NSGTK_DOWNLOAD_PROGRESS, "pulse", NSGTK_DOWNLOAD_PULSE,
- "text", NSGTK_DOWNLOAD_STATUS, NULL);
-
- /* Information column */
- renderer = gtk_cell_renderer_text_new();
- g_object_set(G_OBJECT(renderer), "wrap-mode", PANGO_WRAP_WORD_CHAR,
- "wrap-width", 300, NULL);
- gtk_tree_view_insert_column_with_attributes (treeview, -1,
- messages_get("gtkDetails"), renderer, "text",
- NSGTK_DOWNLOAD_INFO, NULL);
- gtk_tree_view_column_set_expand(gtk_tree_view_get_column(treeview,
- NSGTK_DOWNLOAD_INFO), TRUE);
-
- /* Time remaining column */
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (treeview, -1,
- messages_get("gtkRemaining"), renderer, "text",
- NSGTK_DOWNLOAD_REMAINING, NULL);
-
- /* Speed column */
- renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes (treeview, -1,
- messages_get("gtkSpeed"), renderer, "text",
- NSGTK_DOWNLOAD_SPEED, NULL);
-
- return treeview;
-}
-
-void nsgtk_download_tree_view_row_activated(GtkTreeView *tree,
- GtkTreePath *path, GtkTreeViewColumn *column, gpointer data)
-{
- GtkTreeModel *model;
- GtkTreeIter iter;
-
- model = gtk_tree_view_get_model(tree);
-
- if (gtk_tree_model_get_iter(model, &iter, path)) {
- /* TODO: This will be a context action (pause, start, clear) */
- nsgtk_download_do(nsgtk_download_store_clear_item);
- }
-}
-
-gint nsgtk_download_sort (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,
- gpointer userdata)
-{
- struct gui_download_window *dl1, *dl2;
-
- gtk_tree_model_get(model, a, NSGTK_DOWNLOAD, &dl1, -1);
- gtk_tree_model_get(model, b, NSGTK_DOWNLOAD, &dl2, -1);
-
- return dl1->status - dl2->status;
-}
-
-void nsgtk_download_do(nsgtk_download_selection_action action)
-{
- GList *rows, *dls = NULL;
- GtkTreeModel *model = GTK_TREE_MODEL(nsgtk_download_store);
- gboolean selection_exists = gtk_tree_selection_count_selected_rows(
- nsgtk_download_selection);
-
- if (selection_exists) {
- rows = gtk_tree_selection_get_selected_rows(
- nsgtk_download_selection, &model);
- while (rows != NULL) {
- struct gui_download_window *dl;
- gtk_tree_model_get_iter(GTK_TREE_MODEL(
- nsgtk_download_store),
- &nsgtk_download_iter,
- (GtkTreePath*)rows->data);
- gtk_tree_model_get(GTK_TREE_MODEL(nsgtk_download_store),
- &nsgtk_download_iter, NSGTK_DOWNLOAD,
- &dl, -1);
- dls = g_list_prepend(dls, dl);
-
- rows = rows->next;
- }
- g_list_foreach(rows, (GFunc)gtk_tree_path_free, NULL);
- g_list_foreach(rows, (GFunc)g_free, NULL);
- g_list_free(rows);
- } else
- dls = g_list_copy(nsgtk_downloads_list);
-
- g_list_foreach(dls, (GFunc)action, NULL);
- g_list_free(dls);
-}
-
-gboolean nsgtk_download_update(gboolean force_update)
-{
- /* Be sure we need to update */
- if (!nsgtk_widget_get_visible(GTK_WIDGET(nsgtk_download_window)))
- return TRUE;
-
- GList *list;
- gchar *text;
- gboolean update, pulse_mode = FALSE;
- gint downloaded = 0, total = 0, dls = 0;
- gfloat percent, elapsed = g_timer_elapsed(nsgtk_downloads_timer, NULL);
- nsgtk_downloads_num_active = 0;
-
- for (list = nsgtk_downloads_list; list != NULL; list = list->next) {
- struct gui_download_window *dl = list->data;
- update = force_update;
-
- switch (dl->status) {
- case NSGTK_DOWNLOAD_WORKING:
- pulse_mode = TRUE;
-
- case NSGTK_DOWNLOAD_NONE:
- dl->speed = dl->size_downloaded /
- (elapsed - dl->start_time);
- if (dl->status == NSGTK_DOWNLOAD_NONE) {
- dl->time_remaining = (dl->size_total -
- dl->size_downloaded)/
- dl->speed;
- dl->progress = (gfloat)
- dl->size_downloaded /
- dl->size_total * 100;
- } else
- dl->progress++;
-
- nsgtk_downloads_num_active++;
- update = TRUE;
-
- case NSGTK_DOWNLOAD_COMPLETE:
- downloaded += dl->size_downloaded;
- total += dl->size_total;
- dls++;
-
- default:
- ;//Do nothing
-
- }
- if (update)
- nsgtk_download_store_update_item(dl);
- }
-
- if (pulse_mode) {
- text = g_strdup_printf(
- messages_get(nsgtk_downloads_num_active > 1 ?
- "gtkProgressBarPulse" :
- "gtkProgressBarPulseSingle"),
- nsgtk_downloads_num_active);
- gtk_progress_bar_pulse(nsgtk_download_progress_bar);
- gtk_progress_bar_set_text(nsgtk_download_progress_bar, text);
- } else {
- percent = total != 0 ? (gfloat)downloaded / total : 0;
- text = g_strdup_printf(messages_get("gtkProgressBar"),
- floor(percent*100), dls);
- gtk_progress_bar_set_fraction(nsgtk_download_progress_bar,
- percent);
- gtk_progress_bar_set_text(nsgtk_download_progress_bar, text);
- }
-
- g_free(text);
-
- if (nsgtk_downloads_num_active == 0)
- return FALSE; /* Returning FALSE here cancels the g_timeout */
- else
- return TRUE;
-}
-
-void nsgtk_download_store_update_item (struct gui_download_window *dl)
-{
- gchar *info = nsgtk_download_info_to_string(dl);
- char *human = human_friendly_bytesize(dl->speed);
- char speed[strlen(human) + SLEN("/s") + 1];
- sprintf(speed, "%s/s", human);
- gchar *time = nsgtk_download_time_to_string(dl->time_remaining);
- gboolean pulse = dl->status == NSGTK_DOWNLOAD_WORKING;
-
- /* Updates iter (which is needed to set and get data) with the dl row */
- gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
- &nsgtk_download_iter,
- gtk_tree_row_reference_get_path(dl->row));
-
- gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
- NSGTK_DOWNLOAD_PULSE, pulse ? dl->progress : -1,
- NSGTK_DOWNLOAD_PROGRESS, pulse ? 0 : dl->progress,
- NSGTK_DOWNLOAD_INFO, info,
- NSGTK_DOWNLOAD_SPEED, dl->speed == 0 ? "-" : speed,
- NSGTK_DOWNLOAD_REMAINING, time,
- NSGTK_DOWNLOAD, dl,
- -1);
-
- g_free(info);
- g_free(time);
-}
-
-void nsgtk_download_store_create_item (struct gui_download_window *dl)
-{
- nsgtk_download_store_update_item(dl);
- /* The iter has already been updated to this row */
- gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
- NSGTK_DOWNLOAD, dl, -1);
-}
-void nsgtk_download_store_clear_item (struct gui_download_window *dl)
-{
- if (dl->sensitivity & NSGTK_DOWNLOAD_CLEAR) {
- nsgtk_downloads_list = g_list_remove(nsgtk_downloads_list, dl);
-
- gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
- &nsgtk_download_iter,
- gtk_tree_row_reference_get_path(dl->row));
- gtk_list_store_remove(nsgtk_download_store,
- &nsgtk_download_iter);
- download_context_destroy(dl->ctx);
- g_string_free(dl->name, TRUE);
- g_string_free(dl->time_left, TRUE);
- g_free(dl);
-
- nsgtk_download_sensitivity_evaluate(nsgtk_download_selection);
- nsgtk_download_update(FALSE);
- }
-}
-void nsgtk_download_store_cancel_item (struct gui_download_window *dl)
-{
- if (dl->sensitivity & NSGTK_DOWNLOAD_CANCEL) {
- dl->speed = 0;
- dl->size_downloaded = 0;
- dl->progress = 0;
- dl->time_remaining = -1;
- nsgtk_download_change_sensitivity(dl, NSGTK_DOWNLOAD_CLEAR);
- nsgtk_download_change_status(dl, NSGTK_DOWNLOAD_CANCELED);
-
- download_context_abort(dl->ctx);
-
- g_unlink(download_context_get_filename(dl->ctx));
-
- nsgtk_download_update(TRUE);
- }
-}
-void nsgtk_download_sensitivity_evaluate (GtkTreeSelection *selection)
-{
- GtkTreeIter iter;
- GList *rows;
- gboolean selected = gtk_tree_selection_count_selected_rows(selection);
- GtkTreeModel *model = GTK_TREE_MODEL(nsgtk_download_store);
- nsgtk_download_actions sensitivity = 0;
- struct gui_download_window *dl;
-
- if (selected) {
- rows = gtk_tree_selection_get_selected_rows(selection, &model);
- while (rows != NULL) {
- gtk_tree_model_get_iter(model, &iter,
- (GtkTreePath*)rows->data);
- gtk_tree_model_get(model, &iter, NSGTK_DOWNLOAD,
- &dl, -1);
- sensitivity |= dl->sensitivity;
- rows = rows->next;
- }
- } else {
- rows = nsgtk_downloads_list;
- while (rows != NULL) {
- dl = rows->data;
- sensitivity |= (dl->sensitivity & NSGTK_DOWNLOAD_CLEAR);
- rows = rows->next;
- }
- }
-
-
- nsgtk_download_sensitivity_update_buttons(sensitivity);
-}
-void nsgtk_download_sensitivity_update_buttons(
- nsgtk_download_actions sensitivity)
-{
- /* Glade seems to pack the buttons in an arbitrary order */
- enum { PAUSE_BUTTON, CLEAR_BUTTON, CANCEL_BUTTON, RESUME_BUTTON };
-
- gtk_widget_set_sensitive(g_list_nth_data(nsgtk_download_buttons,
- PAUSE_BUTTON), sensitivity & NSGTK_DOWNLOAD_PAUSE);
- gtk_widget_set_sensitive(g_list_nth_data(nsgtk_download_buttons,
- CLEAR_BUTTON), sensitivity & NSGTK_DOWNLOAD_CLEAR);
- gtk_widget_set_sensitive(g_list_nth_data(nsgtk_download_buttons,
- CANCEL_BUTTON), sensitivity & NSGTK_DOWNLOAD_CANCEL);
- gtk_widget_set_sensitive(g_list_nth_data(nsgtk_download_buttons,
- RESUME_BUTTON), sensitivity & NSGTK_DOWNLOAD_RESUME);
-}
-void nsgtk_download_change_sensitivity(struct gui_download_window *dl,
- nsgtk_download_actions sensitivity)
-{
- dl->sensitivity = sensitivity;
- nsgtk_download_sensitivity_evaluate(nsgtk_download_selection);
-}
-void nsgtk_download_change_status (
- struct gui_download_window *dl, nsgtk_download_status status)
-{
- dl->status = status;
- if (status != NSGTK_DOWNLOAD_NONE) {
- gtk_tree_model_get_iter(GTK_TREE_MODEL(nsgtk_download_store),
- &nsgtk_download_iter,
- gtk_tree_row_reference_get_path(dl->row));
-
- gtk_list_store_set(nsgtk_download_store, &nsgtk_download_iter,
- NSGTK_DOWNLOAD_STATUS,
- messages_get(status_messages[status]), -1);
- }
-}
-
-gchar* nsgtk_download_dialog_show (const gchar *filename, const gchar *domain,
- const gchar *size)
-{
- enum { GTK_RESPONSE_DOWNLOAD, GTK_RESPONSE_SAVE_AS };
- GtkWidget *dialog;
- char *destination = NULL;
- gchar *message = g_strdup(messages_get("gtkStartDownload"));
- gchar *info = g_strdup_printf(messages_get("gtkInfo"), filename,
- domain, size);
-
- dialog = gtk_message_dialog_new_with_markup(nsgtk_download_parent,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
- "<span size=\"x-large\" weight=\"ultrabold\">%s</span>"
- "\n\n<small>%s</small>",
- message, info);
-
- gtk_dialog_add_buttons(GTK_DIALOG(dialog), GTK_STOCK_SAVE,
- GTK_RESPONSE_DOWNLOAD, GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE_AS,
- GTK_RESPONSE_SAVE_AS, NULL);
-
- gint result = gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- g_free(message);
- g_free(info);
-
- switch (result) {
- case GTK_RESPONSE_SAVE_AS: {
- dialog = gtk_file_chooser_dialog_new
- (messages_get("gtkSave"),
- nsgtk_download_parent,
- GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
- NULL);
- gtk_file_chooser_set_current_name
- (GTK_FILE_CHOOSER(dialog), filename);
- gtk_file_chooser_set_current_folder
- (GTK_FILE_CHOOSER(dialog),
- nsoption_charp(downloads_directory));
- gtk_file_chooser_set_do_overwrite_confirmation
- (GTK_FILE_CHOOSER(dialog),
- nsoption_bool(request_overwrite));
-
- gint result = gtk_dialog_run(GTK_DIALOG(dialog));
- if (result == GTK_RESPONSE_ACCEPT)
- destination = gtk_file_chooser_get_filename
- (GTK_FILE_CHOOSER(dialog));
- gtk_widget_destroy(dialog);
- break;
- }
- case GTK_RESPONSE_DOWNLOAD: {
- destination = malloc(strlen(nsoption_charp(downloads_directory))
- + strlen(filename) + SLEN("/") + 1);
- if (destination == NULL) {
- warn_user(messages_get("NoMemory"), 0);
- break;
- }
- sprintf(destination, "%s/%s",
- nsoption_charp(downloads_directory), filename);
- /* Test if file already exists and display overwrite
- * confirmation if needed */
- if (g_file_test(destination, G_FILE_TEST_EXISTS) &&
- nsoption_bool(request_overwrite)) {
- message = g_strdup_printf(messages_get(
- "gtkOverwrite"), filename);
- info = g_strdup_printf(messages_get(
- "gtkOverwriteInfo"),
- nsoption_charp(downloads_directory));
-
- dialog = gtk_message_dialog_new_with_markup(
- nsgtk_download_parent,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_CANCEL,
- "<b>%s</b>",message);
- gtk_message_dialog_format_secondary_markup(
- GTK_MESSAGE_DIALOG(dialog),
- "%s", info);
-
- GtkWidget *button = gtk_dialog_add_button(
- GTK_DIALOG(dialog),
- "_Replace",
- GTK_RESPONSE_DOWNLOAD);
- gtk_button_set_image(GTK_BUTTON(button),
- gtk_image_new_from_stock(
- "gtk-save",
- GTK_ICON_SIZE_BUTTON));
-
- gint result = gtk_dialog_run(GTK_DIALOG(
- dialog));
- if (result == GTK_RESPONSE_CANCEL)
- destination = NULL;
-
- gtk_widget_destroy(dialog);
- g_free(message);
- g_free(info);
- }
- break;
- }
- }
- return destination;
-}
-gchar* nsgtk_download_info_to_string (struct gui_download_window *dl)
-{
- gchar *size_info = g_strdup_printf(messages_get("gtkSizeInfo"),
- human_friendly_bytesize(dl->size_downloaded),
- dl->size_total == 0 ? messages_get("gtkUnknownSize") :
- human_friendly_bytesize(dl->size_total));
-
- gchar *r;
- if (dl->status != NSGTK_DOWNLOAD_ERROR)
- r = g_strdup_printf("%s\n%s", dl->name->str, size_info);
- else
- r = g_strdup_printf("%s\n%s", dl->name->str,
- dl->error->message);
-
- g_free(size_info);
- return r;
-}
-gchar* nsgtk_download_time_to_string (gint seconds)
-{
- gint hours, minutes;
-
- if (seconds < 0)
- return g_strdup("-");
-
- hours = seconds / 3600;
- seconds -= hours * 3600;
- minutes = seconds / 60;
- seconds -= minutes * 60;
-
- if (hours > 0)
- return g_strdup_printf("%u:%02u:%02u", hours, minutes,
- seconds);
- else
- return g_strdup_printf("%u:%02u", minutes, seconds);
-}
-gboolean nsgtk_download_handle_error (GError *error)
-{
- if (error != NULL) {
- GtkWidget*dialog;
- gchar *message = g_strdup_printf(messages_get("gtkFileError"),
- error->message);
-
- dialog = gtk_message_dialog_new_with_markup
- (nsgtk_download_parent,
- GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR,
- GTK_BUTTONS_OK,
- "<big><b>%s</b></big>\n\n"
- "<small>%s</small>", messages_get("gtkFailed"),
- message);
-
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- return TRUE;
- }
- return FALSE;
-}
diff --git a/gtk/gui.c b/gtk/gui.c
index 36a3de888..c7e90aeb1 100644
--- a/gtk/gui.c
+++ b/gtk/gui.c
@@ -36,7 +36,6 @@
#include <curl/curl.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include <glib.h>
#include <glib/gi18n.h>
@@ -58,6 +57,7 @@
#include "desktop/textinput.h"
#include "desktop/tree.h"
#include "css/utils.h"
+#include "gtk/compat.h"
#include "gtk/dialogs/options.h"
#include "gtk/completion.h"
#include "gtk/cookies.h"
@@ -169,14 +169,20 @@ static bool nsgtk_throbber_init(char **respath, int framec)
#define NEW_GLADE_ERROR_SIZE 128
static char *
-nsgtk_new_glade(char **respath, const char *name, GladeXML **pglade)
+nsgtk_new_ui(char **respath, const char *name, GtkBuilder **pglade)
{
- GladeXML *newglade;
+ GtkBuilder *builder;
+ GError* error = NULL;
char *filepath;
char errorstr[NEW_GLADE_ERROR_SIZE];
char resname[PATH_MAX];
+#if GTK_CHECK_VERSION(3,0,0)
+ int gtkv = 3;
+#else
+ int gtkv = 2;
+#endif
- snprintf(resname, PATH_MAX, "%s.glade", name);
+ snprintf(resname, PATH_MAX, "%s.gtk%d.ui", name, gtkv);
filepath = filepath_find(respath, resname);
if (filepath == NULL) {
@@ -185,19 +191,22 @@ nsgtk_new_glade(char **respath, const char *name, GladeXML **pglade)
die(errorstr);
}
- newglade = glade_xml_new(filepath, NULL, NULL);
- if (newglade == NULL) {
+ builder = gtk_builder_new();
+ if (!gtk_builder_add_from_file(builder, filepath, &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
snprintf(errorstr, NEW_GLADE_ERROR_SIZE,
"Unable to load glade %s window definitions.\n", name);
die(errorstr);
}
- glade_xml_signal_autoconnect(newglade);
- LOG(("Using '%s' as %s glade template file", filepath, name));
+ gtk_builder_connect_signals(builder, NULL);
+
+ LOG(("Using '%s' as %s ui template file", filepath, name));
if (pglade != NULL) {
- *pglade = newglade;
+ *pglade = builder;
}
return filepath;
@@ -209,29 +218,28 @@ nsgtk_new_glade(char **respath, const char *name, GladeXML **pglade)
static void
nsgtk_init_glade(char **respath)
{
- GladeXML *gladeWarning;
-
- glade_init();
+ GtkBuilder *gladeWarning;
glade_file_location = calloc(1, sizeof(struct glade_file_location_s));
if (glade_file_location == NULL) {
die("Unable to allocate glade file locations");
}
- glade_file_location->netsurf = nsgtk_new_glade(respath, "netsurf", NULL);
- glade_file_location->password = nsgtk_new_glade(respath, "password", NULL);
- glade_file_location->login = nsgtk_new_glade(respath, "login", NULL);
- glade_file_location->ssl = nsgtk_new_glade(respath, "ssl", NULL);
- glade_file_location->toolbar = nsgtk_new_glade(respath, "toolbar", NULL);
- glade_file_location->downloads = nsgtk_new_glade(respath, "downloads", NULL);
- glade_file_location->history = nsgtk_new_glade(respath, "history", NULL);
- glade_file_location->options = nsgtk_new_glade(respath, "options", NULL);
- glade_file_location->hotlist = nsgtk_new_glade(respath, "hotlist", NULL);
- glade_file_location->cookies = nsgtk_new_glade(respath, "cookies", NULL);
-
- glade_file_location->warning = nsgtk_new_glade(respath, "warning", &gladeWarning);
- nsgtk_warning_window = GTK_WINDOW(glade_xml_get_widget(gladeWarning, "wndWarning"));
- widWarning = glade_xml_get_widget(gladeWarning, "labelWarning");
+ glade_file_location->netsurf = nsgtk_new_ui(respath, "netsurf", NULL);
+ glade_file_location->tabcontents = nsgtk_new_ui(respath, "tabcontents", NULL);
+ glade_file_location->password = nsgtk_new_ui(respath, "password", NULL);
+ glade_file_location->login = nsgtk_new_ui(respath, "login", NULL);
+ glade_file_location->ssl = nsgtk_new_ui(respath, "ssl", NULL);
+ glade_file_location->toolbar = nsgtk_new_ui(respath, "toolbar", NULL);
+ glade_file_location->downloads = nsgtk_new_ui(respath, "downloads", NULL);
+ glade_file_location->history = nsgtk_new_ui(respath, "history", NULL);
+ glade_file_location->options = nsgtk_new_ui(respath, "options", NULL);
+ glade_file_location->hotlist = nsgtk_new_ui(respath, "hotlist", NULL);
+ glade_file_location->cookies = nsgtk_new_ui(respath, "cookies", NULL);
+
+ glade_file_location->warning = nsgtk_new_ui(respath, "warning", &gladeWarning);
+ nsgtk_warning_window = GTK_WINDOW(gtk_builder_get_object(gladeWarning, "wndWarning"));
+ widWarning = GTK_WIDGET(gtk_builder_get_object(gladeWarning, "labelWarning"));
}
static void check_options(char **respath)
@@ -701,22 +709,26 @@ void gui_cert_verify(const char *url, const struct ssl_cert_info *certs,
{
static struct nsgtk_treeview *ssl_window;
struct sslcert_session_data *data;
- GladeXML *x = glade_xml_new(glade_file_location->ssl, NULL, NULL);
GtkButton *accept, *reject;
void **session = calloc(sizeof(void *), 3);
GtkWindow *window;
GtkScrolledWindow *scrolled;
GtkDrawingArea *drawing_area;
+ GError* error = NULL;
+ GtkBuilder* builder;
+
+ builder = gtk_builder_new ();
+ if (!gtk_builder_add_from_file(builder, glade_file_location->ssl, &error)) {
+ g_warning("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
+ return;
+ }
data = sslcert_create_session_data(num, url, cb, cbpw);
- window = GTK_WINDOW(
- glade_xml_get_widget(x,"wndSSLProblem"));
- scrolled = GTK_SCROLLED_WINDOW(
- glade_xml_get_widget(x,"SSLScrolled"));
- drawing_area = GTK_DRAWING_AREA(
- glade_xml_get_widget(x,"SSLDrawingArea"));
-
+ window = GTK_WINDOW(gtk_builder_get_object(builder, "wndSSLProblem"));
+ scrolled = GTK_SCROLLED_WINDOW(gtk_builder_get_object(builder, "SSLScrolled"));
+ drawing_area = GTK_DRAWING_AREA(gtk_builder_get_object(builder, "SSLDrawingArea"));
ssl_window = nsgtk_treeview_create(sslcert_get_tree_flags(),
window, scrolled, drawing_area);
@@ -726,10 +738,10 @@ void gui_cert_verify(const char *url, const struct ssl_cert_info *certs,
sslcert_load_tree(nsgtk_treeview_get_tree(ssl_window), certs, data);
- accept = GTK_BUTTON(glade_xml_get_widget(x, "sslaccept"));
- reject = GTK_BUTTON(glade_xml_get_widget(x, "sslreject"));
+ accept = GTK_BUTTON(gtk_builder_get_object(builder, "sslaccept"));
+ reject = GTK_BUTTON(gtk_builder_get_object(builder, "sslreject"));
- session[0] = x;
+ session[0] = builder;
session[1] = ssl_window;
session[2] = data;
@@ -747,7 +759,7 @@ void gui_cert_verify(const char *url, const struct ssl_cert_info *certs,
void nsgtk_ssl_accept(GtkButton *w, gpointer data)
{
void **session = data;
- GladeXML *x = session[0];
+ GtkBuilder *x = session[0];
struct nsgtk_treeview *wnd = session[1];
struct sslcert_session_data *ssl_data = session[2];
@@ -761,7 +773,7 @@ void nsgtk_ssl_accept(GtkButton *w, gpointer data)
void nsgtk_ssl_reject(GtkWidget *w, gpointer data)
{
void **session = data;
- GladeXML *x = session[0];
+ GtkBuilder *x = session[0];
struct nsgtk_treeview *wnd = session[1];
struct sslcert_session_data *ssl_data = session[2];
@@ -970,38 +982,38 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key)
*/
switch (key->keyval) {
- case GDK_Tab:
+ case GDK_KEY(Tab):
return KEY_TAB;
- case GDK_BackSpace:
+ case GDK_KEY(BackSpace):
if (key->state & GDK_SHIFT_MASK)
return KEY_DELETE_LINE_START;
else
return KEY_DELETE_LEFT;
- case GDK_Delete:
+ case GDK_KEY(Delete):
if (key->state & GDK_SHIFT_MASK)
return KEY_DELETE_LINE_END;
else
return KEY_DELETE_RIGHT;
- case GDK_Linefeed: return 13;
- case GDK_Return: return 10;
- case GDK_Left: return KEY_LEFT;
- case GDK_Right: return KEY_RIGHT;
- case GDK_Up: return KEY_UP;
- case GDK_Down: return KEY_DOWN;
- case GDK_Home:
+ case GDK_KEY(Linefeed): return 13;
+ case GDK_KEY(Return): return 10;
+ case GDK_KEY(Left): return KEY_LEFT;
+ case GDK_KEY(Right): return KEY_RIGHT;
+ case GDK_KEY(Up): return KEY_UP;
+ case GDK_KEY(Down): return KEY_DOWN;
+ case GDK_KEY(Home):
if (key->state & GDK_CONTROL_MASK)
return KEY_TEXT_START;
else
return KEY_LINE_START;
- case GDK_End:
+ case GDK_KEY(End):
if (key->state & GDK_CONTROL_MASK)
return KEY_TEXT_END;
else
return KEY_LINE_END;
- case GDK_Page_Up:
+ case GDK_KEY(Page_Up):
return KEY_PAGE_UP;
- case GDK_Page_Down:
+ case GDK_KEY(Page_Down):
return KEY_PAGE_DOWN;
case 'a':
if (key->state & GDK_CONTROL_MASK)
@@ -1011,24 +1023,24 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key)
if (key->state & GDK_CONTROL_MASK)
return KEY_CLEAR_SELECTION;
return gdk_keyval_to_unicode(key->keyval);
- case GDK_Escape:
+ case GDK_KEY(Escape):
return KEY_ESCAPE;
/* Modifiers - do nothing for now */
- case GDK_Shift_L:
- case GDK_Shift_R:
- case GDK_Control_L:
- case GDK_Control_R:
- case GDK_Caps_Lock:
- case GDK_Shift_Lock:
- case GDK_Meta_L:
- case GDK_Meta_R:
- case GDK_Alt_L:
- case GDK_Alt_R:
- case GDK_Super_L:
- case GDK_Super_R:
- case GDK_Hyper_L:
- case GDK_Hyper_R:
+ case GDK_KEY(Shift_L):
+ case GDK_KEY(Shift_R):
+ case GDK_KEY(Control_L):
+ case GDK_KEY(Control_R):
+ case GDK_KEY(Caps_Lock):
+ case GDK_KEY(Shift_Lock):
+ case GDK_KEY(Meta_L):
+ case GDK_KEY(Meta_R):
+ case GDK_KEY(Alt_L):
+ case GDK_KEY(Alt_R):
+ case GDK_KEY(Super_L):
+ case GDK_KEY(Super_R):
+ case GDK_KEY(Hyper_L):
+ case GDK_KEY(Hyper_R):
return 0;
default:
diff --git a/gtk/gui.h b/gtk/gui.h
index c7333d55d..b53de256a 100644
--- a/gtk/gui.h
+++ b/gtk/gui.h
@@ -29,10 +29,11 @@
#include <inttypes.h>
#include <stdbool.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
+//#include <glade/glade.h>
struct glade_file_location_s {
char *netsurf;
+ char *tabcontents;
char *password;
char *warning;
char *login;
diff --git a/gtk/history.c b/gtk/history.c
index 34c76cd7d..e7b083671 100644
--- a/gtk/history.c
+++ b/gtk/history.c
@@ -85,7 +85,7 @@ static struct menu_events menu_events[] = {
};
static struct nsgtk_treeview *global_history_window;
-static GladeXML *gladeFile;
+static GtkBuilder *gladeFile;
GtkWindow *wndHistory;
@@ -95,31 +95,33 @@ bool nsgtk_history_init(const char *glade_file_location)
GtkWindow *window;
GtkScrolledWindow *scrolled;
GtkDrawingArea *drawing_area;
-
- gladeFile = glade_xml_new(glade_file_location, NULL, NULL);
- if (gladeFile == NULL)
+ GError* error = NULL;
+
+ gladeFile = gtk_builder_new();
+ if (!gtk_builder_add_from_file(gladeFile, glade_file_location, &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
return false;
+ }
- glade_xml_signal_autoconnect(gladeFile);
+ gtk_builder_connect_signals(gladeFile, NULL);
- wndHistory = GTK_WINDOW(glade_xml_get_widget(gladeFile, "wndHistory"));
+ wndHistory = GTK_WINDOW(gtk_builder_get_object(gladeFile, "wndHistory"));
window = wndHistory;
- scrolled = GTK_SCROLLED_WINDOW(glade_xml_get_widget(gladeFile,
- "globalHistoryScrolled"));
+ scrolled = GTK_SCROLLED_WINDOW(gtk_builder_get_object(gladeFile, "globalHistoryScrolled"));
- drawing_area = GTK_DRAWING_AREA(glade_xml_get_widget(gladeFile,
- "globalHistoryDrawingArea"));
+ drawing_area = GTK_DRAWING_AREA(gtk_builder_get_object(gladeFile, "globalHistoryDrawingArea"));
global_history_window = nsgtk_treeview_create(
- history_global_get_tree_flags(), window, scrolled,
- drawing_area);
+ history_global_get_tree_flags(), window, scrolled,
+ drawing_area);
if (global_history_window == NULL)
return false;
-#define CONNECT(obj, sig, callback, ptr) \
+#define CONNECT(obj, sig, callback, ptr) \
g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
CONNECT(window, "delete_event", gtk_widget_hide_on_delete, NULL);
@@ -141,12 +143,15 @@ bool nsgtk_history_init(const char *glade_file_location)
void nsgtk_history_init_menu(void)
{
struct menu_events *event = menu_events;
-
- while (event->widget != NULL)
- {
- GtkWidget *w = glade_xml_get_widget(gladeFile, event->widget);
- g_signal_connect(G_OBJECT(w), "activate", event->handler,
- global_history_window);
+ GtkWidget *w;
+
+ while (event->widget != NULL) {
+ w = GTK_WIDGET(gtk_builder_get_object(gladeFile, event->widget));
+ if (w == NULL) {
+ LOG(("Unable to connect menu widget ""%s""", event->widget));
+ } else {
+ g_signal_connect(G_OBJECT(w), "activate", event->handler, global_history_window);
+ }
event++;
}
}
diff --git a/gtk/hotlist.c b/gtk/hotlist.c
index dc95866db..d7b5b9e8f 100644
--- a/gtk/hotlist.c
+++ b/gtk/hotlist.c
@@ -90,7 +90,7 @@ static struct menu_events menu_events[] = {
};
static struct nsgtk_treeview *hotlist_window;
-static GladeXML *gladeFile;
+static GtkBuilder *gladeFile;
GtkWindow *wndHotlist;
@@ -101,19 +101,23 @@ bool nsgtk_hotlist_init(const char *glade_file_location)
GtkScrolledWindow *scrolled;
GtkDrawingArea *drawing_area;
- gladeFile = glade_xml_new(glade_file_location, NULL, NULL);
- if (gladeFile == NULL)
+ GError* error = NULL;
+ gladeFile = gtk_builder_new();
+ if (!gtk_builder_add_from_file(gladeFile, glade_file_location, &error)) {
+ g_warning("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
return false;
+ }
- glade_xml_signal_autoconnect(gladeFile);
+ gtk_builder_connect_signals(gladeFile, NULL);
- wndHotlist = GTK_WINDOW(glade_xml_get_widget(gladeFile, "wndHotlist"));
+ wndHotlist = GTK_WINDOW(gtk_builder_get_object(gladeFile, "wndHotlist"));
window = wndHotlist;
- scrolled = GTK_SCROLLED_WINDOW(glade_xml_get_widget(gladeFile,
+ scrolled = GTK_SCROLLED_WINDOW(gtk_builder_get_object(gladeFile,
"hotlistScrolled"));
- drawing_area = GTK_DRAWING_AREA(glade_xml_get_widget(gladeFile,
+ drawing_area = GTK_DRAWING_AREA(gtk_builder_get_object(gladeFile,
"hotlistDrawingArea"));
@@ -145,12 +149,14 @@ bool nsgtk_hotlist_init(const char *glade_file_location)
void nsgtk_hotlist_init_menu(void)
{
struct menu_events *event = menu_events;
-
- while (event->widget != NULL)
- {
- GtkWidget *w = glade_xml_get_widget(gladeFile, event->widget);
- g_signal_connect(G_OBJECT(w), "activate", event->handler,
- hotlist_window);
+ GtkWidget *w;
+
+ while (event->widget != NULL) {
+ w = GTK_WIDGET(gtk_builder_get_object(gladeFile, event->widget));
+ if (w == NULL) {
+ LOG(("Unable to connect menu widget ""%s""", event->widget)); } else {
+ g_signal_connect(G_OBJECT(w), "activate", event->handler, hotlist_window);
+ }
event++;
}
}
diff --git a/gtk/login.c b/gtk/login.c
index daf9e9644..41f66de20 100644
--- a/gtk/login.c
+++ b/gtk/login.c
@@ -21,7 +21,6 @@
#include <string.h>
#include <assert.h>
#include <gtk/gtk.h>
-#include <glade/glade.h>
#include "utils/log.h"
#include "gtk/gui.h"
@@ -41,7 +40,7 @@ struct session_401 {
char *realm; /**< Authentication realm */
nserror (*cb)(bool proceed, void *pw); /**< Continuation callback */
void *cbpw; /**< Continuation data */
- GladeXML *x; /**< Our glade windows */
+ GtkBuilder *x; /**< Our glade windows */
GtkWindow *wnd; /**< The login window itself */
GtkEntry *user; /**< Widget with username */
GtkEntry *pass; /**< Widget with password */
@@ -78,18 +77,26 @@ void create_login_window(const char *url, const char *host, const char *realm,
* the widgets we're interested in.
*/
- GladeXML *x = glade_xml_new(glade_file_location->login, NULL, NULL);
- GtkWindow *wnd = GTK_WINDOW(glade_xml_get_widget(x, "wndLogin"));
+ GtkWindow *wnd;
GtkLabel *lhost, *lrealm;
GtkEntry *euser, *epass;
GtkButton *bok, *bcan;
-
- lhost = GTK_LABEL(glade_xml_get_widget(x, "labelLoginHost"));
- lrealm = GTK_LABEL(glade_xml_get_widget(x, "labelLoginRealm"));
- euser = GTK_ENTRY(glade_xml_get_widget(x, "entryLoginUser"));
- epass = GTK_ENTRY(glade_xml_get_widget(x, "entryLoginPass"));
- bok = GTK_BUTTON(glade_xml_get_widget(x, "buttonLoginOK"));
- bcan = GTK_BUTTON(glade_xml_get_widget(x, "buttonLoginCan"));
+ GError* error = NULL;
+ GtkBuilder* builder;
+
+ builder = gtk_builder_new ();
+ if (!gtk_builder_add_from_file(builder, glade_file_location->login, &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
+ }
+
+ wnd = GTK_WINDOW(gtk_builder_get_object(builder, "wndLogin"));
+ lhost = GTK_LABEL(gtk_builder_get_object(builder, "labelLoginHost"));
+ lrealm = GTK_LABEL(gtk_builder_get_object(builder, "labelLoginRealm"));
+ euser = GTK_ENTRY(gtk_builder_get_object(builder, "entryLoginUser"));
+ epass = GTK_ENTRY(gtk_builder_get_object(builder, "entryLoginPass"));
+ bok = GTK_BUTTON(gtk_builder_get_object(builder, "buttonLoginOK"));
+ bcan = GTK_BUTTON(gtk_builder_get_object(builder, "buttonLoginCan"));
/* create and fill in our session structure */
@@ -99,7 +106,7 @@ void create_login_window(const char *url, const char *host, const char *realm,
session->realm = strdup(realm ? realm : "Secure Area");
session->cb = cb;
session->cbpw = cbpw;
- session->x = x;
+ session->x = builder;
session->wnd = wnd;
session->user = euser;
session->pass = epass;
diff --git a/gtk/menu.c b/gtk/menu.c
index f16cfee40..7c55a9fd6 100644
--- a/gtk/menu.c
+++ b/gtk/menu.c
@@ -20,7 +20,6 @@
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
-#include <glade/glade-xml.h>
#include "gtk/menu.h"
#include "utils/messages.h"
diff --git a/gtk/plotters.h b/gtk/plotters.h
index 55ad71b5a..c88a8da0c 100644
--- a/gtk/plotters.h
+++ b/gtk/plotters.h
@@ -31,7 +31,6 @@ extern const struct plotter_table nsgtk_plotters;
/* make sure this is NULL if no redraw is in progress */
extern GtkWidget *current_widget;
-extern GdkDrawable *current_drawable;
extern cairo_t *current_cr;
void nsgtk_set_colour(colour c);
diff --git a/gtk/print.c b/gtk/print.c
index 73bf3b397..02d89bbdb 100644
--- a/gtk/print.c
+++ b/gtk/print.c
@@ -54,19 +54,19 @@ static GdkRectangle cliprect;
static inline void nsgtk_print_set_colour(colour c)
{
int r, g, b;
- GdkColor colour;
r = c & 0xff;
g = (c & 0xff00) >> 8;
b = (c & 0xff0000) >> 16;
+#ifdef FIXME
+ GdkColor colour;
colour.red = r | (r << 8);
colour.green = g | (g << 8);
colour.blue = b | (b << 8);
colour.pixel = (r << 16) | (g << 8) | b;
-
gdk_colormap_alloc_color(gdk_colormap_get_system(), &colour, true, true);
-
+#endif
cairo_set_source_rgba(gtk_print_current_cr, r / 255.0,
g / 255.0, b / 255.0, 1.0);
}
diff --git a/gtk/res/cookies.glade b/gtk/res/cookies.gtk2.ui
index 9fc5de148..86f15c765 100644
--- a/gtk/res/cookies.glade
+++ b/gtk/res/cookies.gtk2.ui
@@ -1,174 +1,174 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<glade-interface>
+<?xml version="1.0"?>
+<interface>
<!-- interface-requires gtk+ 2.6 -->
<!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="wndCookies">
+ <object class="GtkWindow" id="wndCookies">
<property name="title" translatable="yes">Cookies - NetSurf</property>
<property name="window_position">mouse</property>
<property name="default_width">600</property>
<property name="default_height">500</property>
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="border_width">2</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkMenuBar" id="menubar1">
+ <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="menuitem2">
+ <object class="GtkMenuItem" id="menuitem2">
<property name="visible">True</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu2">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="delete_selected">
+ <object class="GtkMenuItem" id="delete_selected">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Deletes selected nodes</property>
<property name="label" translatable="yes">_Delete</property>
<property name="use_underline">True</property>
<accelerator key="Delete" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="delete_all">
+ <object class="GtkMenuItem" id="delete_all">
<property name="visible">True</property>
<property name="label" translatable="yes">D_elete all</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="select_all">
+ <object class="GtkMenuItem" id="select_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_Select all</property>
<property name="use_underline">True</property>
<accelerator key="A" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="clear_selection">
+ <object class="GtkMenuItem" id="clear_selection">
<property name="visible">True</property>
<property name="label" translatable="yes">_Clear selection</property>
<property name="use_underline">True</property>
<accelerator key="U" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem3">
+ <object class="GtkMenuItem" id="menuitem3">
<property name="visible">True</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu4">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="expand">
+ <object class="GtkMenuItem" id="expand">
<property name="visible">True</property>
<property name="label" translatable="yes">_Expand</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu5">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu5">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="expand_all">
+ <object class="GtkMenuItem" id="expand_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_domains">
+ <object class="GtkMenuItem" id="expand_domains">
<property name="visible">True</property>
<property name="label" translatable="yes">_Domains</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_cookies">
+ <object class="GtkMenuItem" id="expand_cookies">
<property name="visible">True</property>
<property name="label" translatable="yes">_Cookies</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse">
+ <object class="GtkMenuItem" id="collapse">
<property name="visible">True</property>
<property name="label" translatable="yes">Collapse</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu6">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu6">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="collapse_all">
+ <object class="GtkMenuItem" id="collapse_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_domains">
+ <object class="GtkMenuItem" id="collapse_domains">
<property name="visible">True</property>
<property name="label" translatable="yes">_Domains</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_cookies">
+ <object class="GtkMenuItem" id="collapse_cookies">
<property name="visible">True</property>
<property name="label" translatable="yes">_Cookies</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="cookiesScrolled">
+ <object class="GtkScrolledWindow" id="cookiesScrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkViewport" id="cookiesViewport">
+ <object class="GtkViewport" id="cookiesViewport">
<property name="visible">True</property>
<property name="resize_mode">queue</property>
<child>
- <widget class="GtkDrawingArea" id="cookiesDrawingArea">
+ <object class="GtkDrawingArea" id="cookiesDrawingArea">
<property name="visible">True</property>
<property name="app_paintable">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/cookies.gtk3.ui b/gtk/res/cookies.gtk3.ui
new file mode 100644
index 000000000..3ccc04bce
--- /dev/null
+++ b/gtk/res/cookies.gtk3.ui
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="wndCookies">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">NetSurf Cookies</property>
+ <property name="window_position">mouse</property>
+ <property name="default_width">600</property>
+ <property name="default_height">500</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="menuitem2">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="delete_selected">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="delete_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">D_elete all</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="select_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Select all</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="clear_selection">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Clear selection</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem3">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_View</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Expand</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_domains">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Domains</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_cookies">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Cookies</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Collapse</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="collapse_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_domains">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Domains</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_cookies">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Cookies</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="cookiesScrolled">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport" id="cookiesViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="cookiesDrawingArea">
+ <property name="visible">True</property>
+ <property name="app_paintable">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/downloads.glade b/gtk/res/downloads.gtk2.ui
index 706bfe19a..1e71328a4 100644
--- a/gtk/res/downloads.glade
+++ b/gtk/res/downloads.gtk2.ui
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<glade-interface>
+<?xml version="1.0"?>
+<interface>
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="wndDownloads">
+ <object class="GtkWindow" id="wndDownloads">
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="title" translatable="yes">Downloads - NetSurf</property>
<property name="window_position">mouse</property>
@@ -10,66 +10,66 @@
<property name="default_height">300</property>
<property name="destroy_with_parent">True</property>
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkTreeView" id="treeDownloads">
+ <object class="GtkTreeView" id="treeDownloads">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="search_column">2</property>
<property name="show_expanders">False</property>
<property name="rubber_banding">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHSeparator" id="hseparator1">
+ <object class="GtkHSeparator" id="hseparator1">
<property name="visible">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox1">
+ <object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<child>
- <widget class="GtkAlignment" id="alignment1">
+ <object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="top_padding">2</property>
<property name="bottom_padding">2</property>
<property name="left_padding">2</property>
<property name="right_padding">2</property>
<child>
- <widget class="GtkProgressBar" id="progressBar">
+ <object class="GtkProgressBar" id="progressBar">
<property name="visible">True</property>
<property name="show_text">True</property>
<property name="text" translatable="yes">0% of 0 files</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <object class="GtkHButtonBox" id="hbuttonbox1">
<property name="visible">True</property>
<property name="homogeneous">True</property>
<property name="layout_style">end</property>
<child>
- <widget class="GtkButton" id="buttonPause">
+ <object class="GtkButton" id="buttonPause">
<property name="label">gtk-media-pause</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
@@ -77,7 +77,7 @@
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -85,37 +85,37 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="buttonPlay">
+ <object class="GtkButton" id="buttonPlay">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="relief">none</property>
<child>
- <widget class="GtkHBox" id="hbox2">
+ <object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
- <widget class="GtkImage" id="image1">
+ <object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-media-play</property>
<property name="icon-size">2</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label1">
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">Resume</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -123,7 +123,7 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="buttonCancel">
+ <object class="GtkButton" id="buttonCancel">
<property name="label">gtk-cancel</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
@@ -131,7 +131,7 @@
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -139,7 +139,7 @@
</packing>
</child>
<child>
- <widget class="GtkButton" id="buttonClear">
+ <object class="GtkButton" id="buttonClear">
<property name="label">gtk-clear</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
@@ -147,14 +147,14 @@
<property name="receives_default">True</property>
<property name="relief">none</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -162,14 +162,14 @@
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/downloads.gtk3.ui b/gtk/res/downloads.gtk3.ui
new file mode 100644
index 000000000..1e71328a4
--- /dev/null
+++ b/gtk/res/downloads.gtk3.ui
@@ -0,0 +1,175 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkWindow" id="wndDownloads">
+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+ <property name="title" translatable="yes">Downloads - NetSurf</property>
+ <property name="window_position">mouse</property>
+ <property name="default_width">500</property>
+ <property name="default_height">300</property>
+ <property name="destroy_with_parent">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="vscrollbar_policy">automatic</property>
+ <child>
+ <object class="GtkTreeView" id="treeDownloads">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="search_column">2</property>
+ <property name="show_expanders">False</property>
+ <property name="rubber_banding">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="top_padding">2</property>
+ <property name="bottom_padding">2</property>
+ <property name="left_padding">2</property>
+ <property name="right_padding">2</property>
+ <child>
+ <object class="GtkProgressBar" id="progressBar">
+ <property name="visible">True</property>
+ <property name="show_text">True</property>
+ <property name="text" translatable="yes">0% of 0 files</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="buttonPause">
+ <property name="label">gtk-media-pause</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonPlay">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-media-play</property>
+ <property name="icon-size">2</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Resume</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonCancel">
+ <property name="label">gtk-cancel</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonClear">
+ <property name="label">gtk-clear</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">none</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/history.gtk2.ui b/gtk/res/history.gtk2.ui
new file mode 100644
index 000000000..2b89ecb4b
--- /dev/null
+++ b/gtk/res/history.gtk2.ui
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="wndHistory">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">NetSurf Global History</property>
+ <property name="window_position">center</property>
+ <property name="default_width">600</property>
+ <property name="default_height">500</property>
+ <property name="type_hint">utility</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="menuitem1">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="export">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Export</property>
+ <property name="use_underline">True</property>
+ <accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem2">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="delete_selected">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="use_underline">True</property>
+ <accelerator key="Delete" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="delete_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">D_elete all</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="select_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Select all</property>
+ <property name="use_underline">True</property>
+ <accelerator key="A" signal="activate" modifiers="GDK_MOD1_MASK"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="clear_selection">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Clear selection</property>
+ <property name="use_underline">True</property>
+ <accelerator key="U" signal="activate" modifiers="GDK_MOD1_MASK"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem3">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_View</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Expand</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_directories">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Directories</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_addresses">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add_resses</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Collapse</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu6">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="collapse_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_directories">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Directories</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_addresses">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add_resses</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="launch">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Launch</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="globalHistoryScrolled">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkViewport" id="globalHistoryViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="resize_mode">queue</property>
+ <child>
+ <object class="GtkDrawingArea" id="globalHistoryDrawingArea">
+ <property name="visible">True</property>
+ <property name="app_paintable">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/history.glade b/gtk/res/history.gtk3.ui
index 5c6e06424..7fa598f1e 100644
--- a/gtk/res/history.glade
+++ b/gtk/res/history.gtk3.ui
@@ -1,199 +1,238 @@
-<?xml version="1.0"?>
-<glade-interface>
- <!-- interface-requires gtk+ 2.16 -->
- <!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="wndHistory">
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="wndHistory">
+ <property name="can_focus">False</property>
<property name="title" translatable="yes">NetSurf Global History</property>
<property name="window_position">center</property>
<property name="default_width">600</property>
<property name="default_height">500</property>
<property name="type_hint">utility</property>
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkBox" id="box1">
<property name="visible">True</property>
- <property name="border_width">2</property>
- <property name="spacing">2</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkMenuBar" id="menubar1">
+ <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="menuitem1">
+ <object class="GtkMenuItem" id="menuitem1">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu1">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="export">
+ <object class="GtkMenuItem" id="export">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Export</property>
<property name="use_underline">True</property>
- <accelerator key="E" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem2">
+ <object class="GtkMenuItem" id="menuitem2">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu2">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="delete_selected">
+ <object class="GtkMenuItem" id="delete_selected">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Deletes selected nodes</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Delete</property>
<property name="use_underline">True</property>
- <accelerator key="Delete" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="delete_all">
+ <object class="GtkMenuItem" id="delete_all">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">D_elete all</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="select_all">
+ <object class="GtkMenuItem" id="select_all">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Select all</property>
<property name="use_underline">True</property>
- <accelerator key="A" modifiers="GDK_MOD1_MASK" signal="activate"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="clear_selection">
+ <object class="GtkMenuItem" id="clear_selection">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Clear selection</property>
<property name="use_underline">True</property>
- <accelerator key="U" modifiers="GDK_MOD1_MASK" signal="activate"/>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem3">
+ <object class="GtkMenuItem" id="menuitem3">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu4">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="expand">
+ <object class="GtkMenuItem" id="expand">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Expand</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu5">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="expand_all">
+ <object class="GtkMenuItem" id="expand_all">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_directories">
+ <object class="GtkMenuItem" id="expand_directories">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Directories</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_addresses">
+ <object class="GtkMenuItem" id="expand_addresses">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Add_resses</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse">
+ <object class="GtkMenuItem" id="collapse">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Collapse</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu6">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu5">
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkMenuItem" id="collapse_all">
+ <object class="GtkMenuItem" id="collapse_all">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_directories">
+ <object class="GtkMenuItem" id="collapse_directories">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Directories</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_addresses">
+ <object class="GtkMenuItem" id="collapse_addresses">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Add_resses</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="launch">
+ <object class="GtkMenuItem" id="launch">
+ <property name="use_action_appearance">False</property>
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Launches the selected addresses</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">_Launch</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="globalHistoryScrolled">
+ <object class="GtkScrolledWindow" id="globalHistoryScrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">in</property>
<child>
- <widget class="GtkViewport" id="globalHistoryViewport">
+ <object class="GtkViewport" id="globalHistoryViewport">
<property name="visible">True</property>
- <property name="resize_mode">GTK_RESIZE_QUEUE</property>
+ <property name="can_focus">False</property>
<child>
- <widget class="GtkDrawingArea" id="globalHistoryDrawingArea">
+ <object class="GtkDrawingArea" id="globalHistoryDrawingArea">
<property name="visible">True</property>
- <property name="app_paintable">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/hotlist.glade b/gtk/res/hotlist.gtk2.ui
index 8f0a6ecc7..af0fd5696 100644
--- a/gtk/res/hotlist.glade
+++ b/gtk/res/hotlist.gtk2.ui
@@ -1,218 +1,217 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<glade-interface>
+<?xml version="1.0"?>
+<interface>
<!-- interface-requires gtk+ 2.6 -->
<!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkWindow" id="wndHotlist">
+ <object class="GtkWindow" id="wndHotlist">
<property name="title" translatable="yes">Bookmarks - NetSurf</property>
<property name="window_position">mouse</property>
<property name="default_width">600</property>
<property name="default_height">500</property>
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
<property name="border_width">2</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkMenuBar" id="menubar1">
+ <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="menuitem1">
+ <object class="GtkMenuItem" id="menuitem1">
<property name="visible">True</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu1">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="export">
+ <object class="GtkMenuItem" id="export">
<property name="visible">True</property>
<property name="label" translatable="yes">_Export</property>
<property name="use_underline">True</property>
<accelerator key="E" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="new_folder">
+ <object class="GtkMenuItem" id="new_folder">
<property name="visible">True</property>
<property name="label" translatable="yes">New _folder</property>
<property name="use_underline">True</property>
<accelerator key="M" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="new_entry">
+ <object class="GtkMenuItem" id="new_entry">
<property name="visible">True</property>
<property name="label" translatable="yes">New _entry</property>
<property name="use_underline">True</property>
<accelerator key="N" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem2">
+ <object class="GtkMenuItem" id="menuitem2">
<property name="visible">True</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu2">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="edit_selected">
+ <object class="GtkMenuItem" id="edit_selected">
<property name="visible">True</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="delete_selected">
+ <object class="GtkMenuItem" id="delete_selected">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Deletes selected nodes</property>
<property name="label" translatable="yes">_Delete</property>
<property name="use_underline">True</property>
<accelerator key="Delete" signal="activate" modifiers="GDK_CONTROL_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="select_all">
+ <object class="GtkMenuItem" id="select_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_Select all</property>
<property name="use_underline">True</property>
<accelerator key="A" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="clear_selection">
+ <object class="GtkMenuItem" id="clear_selection">
<property name="visible">True</property>
<property name="label" translatable="yes">_Clear selection</property>
<property name="use_underline">True</property>
<accelerator key="U" signal="activate" modifiers="GDK_MOD1_MASK"/>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem3">
+ <object class="GtkMenuItem" id="menuitem3">
<property name="visible">True</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu4">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="expand">
+ <object class="GtkMenuItem" id="expand">
<property name="visible">True</property>
<property name="label" translatable="yes">_Expand</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu5">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu5">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="expand_all">
+ <object class="GtkMenuItem" id="expand_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_directories">
+ <object class="GtkMenuItem" id="expand_directories">
<property name="visible">True</property>
<property name="label" translatable="yes">_Directories</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="expand_addresses">
+ <object class="GtkMenuItem" id="expand_addresses">
<property name="visible">True</property>
<property name="label" translatable="yes">Add_resses</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse">
+ <object class="GtkMenuItem" id="collapse">
<property name="visible">True</property>
<property name="label" translatable="yes">_Collapse</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu6">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu6">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="collapse_all">
+ <object class="GtkMenuItem" id="collapse_all">
<property name="visible">True</property>
<property name="label" translatable="yes">_All</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_directories">
+ <object class="GtkMenuItem" id="collapse_directories">
<property name="visible">True</property>
<property name="label" translatable="yes">_Directories</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="collapse_addresses">
+ <object class="GtkMenuItem" id="collapse_addresses">
<property name="visible">True</property>
<property name="label" translatable="yes">Add_resses</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="launch">
+ <object class="GtkMenuItem" id="launch">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Launches the selected addresses</property>
<property name="label" translatable="yes">_Launch</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="hotlistScrolled">
+ <object class="GtkScrolledWindow" id="hotlistScrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">automatic</property>
<property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkViewport" id="hotlistViewport">
+ <object class="GtkViewport" id="hotlistViewport">
<property name="visible">True</property>
<property name="resize_mode">queue</property>
<child>
- <widget class="GtkDrawingArea" id="hotlistDrawingArea">
+ <object class="GtkDrawingArea" id="hotlistDrawingArea">
<property name="visible">True</property>
<property name="app_paintable">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/hotlist.gtk3.ui b/gtk/res/hotlist.gtk3.ui
new file mode 100644
index 000000000..78a81672b
--- /dev/null
+++ b/gtk/res/hotlist.gtk3.ui
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="wndHotlist">
+ <property name="can_focus">False</property>
+ <property name="title" translatable="yes">NetSurf Bookmarks</property>
+ <property name="window_position">mouse</property>
+ <property name="default_width">600</property>
+ <property name="default_height">500</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="menuitem1">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="export">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Export</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="new_folder">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">New _folder</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="new_entry">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">New _entry</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem2">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="edit_selected">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Edit</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="delete_selected">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Delete</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="select_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Select all</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="clear_selection">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Clear selection</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="menuitem3">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_View</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Expand</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="expand_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_directories">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Directories</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="expand_addresses">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add_resses</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Collapse</property>
+ <property name="use_underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu" id="menu5">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkMenuItem" id="collapse_all">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_All</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_directories">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Directories</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="collapse_addresses">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Add_resses</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="launch">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">_Launch</property>
+ <property name="use_underline">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="hotlistScrolled">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport" id="hotlistViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="hotlistDrawingArea">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/login.glade b/gtk/res/login.gtk2.ui
index c46740591..552b173ed 100644
--- a/gtk/res/login.glade
+++ b/gtk/res/login.gtk2.ui
@@ -1,33 +1,32 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<?xml version="1.0"?>
<!--*- mode: xml -*-->
-<glade-interface>
- <widget class="GtkDialog" id="wndLogin">
+<interface>
+ <object class="GtkDialog" id="wndLogin">
<property name="title" translatable="yes">Site Authentication</property>
<property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox2">
+ <object class="GtkVBox" id="dialog-vbox2">
<property name="visible">True</property>
<child>
- <widget class="GtkHBox" id="hbox12">
+ <object class="GtkHBox" id="hbox12">
<property name="visible">True</property>
<property name="border_width">3</property>
<child>
- <widget class="GtkImage" id="image3">
+ <object class="GtkImage" id="image3">
<property name="visible">True</property>
<property name="yalign">0.10000000149011612</property>
<property name="xpad">12</property>
<property name="icon_size">6</property>
<property name="icon_name">gtk-dialog-authentication</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkTable" id="table5">
+ <object class="GtkTable" id="table5">
<property name="visible">True</property>
<property name="border_width">1</property>
<property name="n_rows">4</property>
@@ -35,188 +34,190 @@
<property name="column_spacing">11</property>
<property name="row_spacing">10</property>
<child>
- <widget class="GtkLabel" id="labelLoginHost">
+ <object class="GtkLabel" id="labelLoginHost">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">moo.yoo.com</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label57">
+ <object class="GtkLabel" id="label57">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Password</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label56">
+ <object class="GtkLabel" id="label56">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Username</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label54">
+ <object class="GtkLabel" id="label54">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Host</property>
- </widget>
+ </object>
<packing>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label55">
+ <object class="GtkLabel" id="label55">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Realm</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="labelLoginRealm">
+ <object class="GtkLabel" id="labelLoginRealm">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">my sekr3t area</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
- <property name="x_options"></property>
+ <property name="x_options"/>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entryLoginPass">
+ <object class="GtkEntry" id="entryLoginPass">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="visibility">False</property>
<property name="activates_default">True</property>
<property name="text" translatable="yes">opensesame</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
- <property name="y_options"></property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entryLoginUser">
+ <object class="GtkEntry" id="entryLoginUser">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<property name="text" translatable="yes">sesame</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
- <property name="y_options"></property>
+ <property name="y_options"/>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="padding">1</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area2">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="buttonLoginCan">
+ <object class="GtkButton" id="buttonLoginCan">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-cancel</property>
<property name="use_stock">True</property>
- <property name="response_id">-6</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkButton" id="buttonLoginOK">
+ <object class="GtkButton" id="buttonLoginOK">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
- <property name="response_id">-5</property>
<child>
- <widget class="GtkAlignment" id="alignment14">
+ <object class="GtkAlignment" id="alignment14">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="has_default">True</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<child>
- <widget class="GtkHBox" id="hbox11">
+ <object class="GtkHBox" id="hbox11">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkImage" id="image2">
+ <object class="GtkImage" id="image2">
<property name="visible">True</property>
<property name="stock">gtk-ok</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label49">
+ <object class="GtkLabel" id="label49">
<property name="visible">True</property>
<property name="label" translatable="yes">Login</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ <action-widgets>
+ <action-widget response="-6">buttonLoginCan</action-widget>
+ <action-widget response="-5">buttonLoginOK</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/login.gtk3.ui b/gtk/res/login.gtk3.ui
new file mode 100644
index 000000000..552b173ed
--- /dev/null
+++ b/gtk/res/login.gtk3.ui
@@ -0,0 +1,223 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkDialog" id="wndLogin">
+ <property name="title" translatable="yes">Site Authentication</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ALWAYS</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox12">
+ <property name="visible">True</property>
+ <property name="border_width">3</property>
+ <child>
+ <object class="GtkImage" id="image3">
+ <property name="visible">True</property>
+ <property name="yalign">0.10000000149011612</property>
+ <property name="xpad">12</property>
+ <property name="icon_size">6</property>
+ <property name="icon_name">gtk-dialog-authentication</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table5">
+ <property name="visible">True</property>
+ <property name="border_width">1</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">11</property>
+ <property name="row_spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="labelLoginHost">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">moo.yoo.com</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Password</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label56">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Username</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label54">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Host</property>
+ </object>
+ <packing>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label55">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Realm</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="labelLoginRealm">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">my sekr3t area</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryLoginPass">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="visibility">False</property>
+ <property name="activates_default">True</property>
+ <property name="text" translatable="yes">opensesame</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryLoginUser">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="text" translatable="yes">sesame</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="buttonLoginCan">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonLoginOK">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment14">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="has_default">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox11">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image2">
+ <property name="visible">True</property>
+ <property name="stock">gtk-ok</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label49">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Login</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">buttonLoginCan</action-widget>
+ <action-widget response="-5">buttonLoginOK</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/menu_cursor.png b/gtk/res/menu_cursor.png
new file mode 100644
index 000000000..ccbbbd2d4
--- /dev/null
+++ b/gtk/res/menu_cursor.png
Binary files differ
diff --git a/gtk/res/menu_cursor.xbm b/gtk/res/menu_cursor.xbm
new file mode 100644
index 000000000..1257ac1f4
--- /dev/null
+++ b/gtk/res/menu_cursor.xbm
@@ -0,0 +1,6 @@
+#define menu_cursor_width 16
+#define menu_cursor_height 16
+static char menu_cursor_bits[] = {
+ 0x00, 0x00, 0x80, 0x7F, 0x88, 0x40, 0x9E, 0x5E, 0x88, 0x40, 0x80, 0x56,
+ 0x80, 0x40, 0x80, 0x5A, 0x80, 0x40, 0x80, 0x5E, 0x80, 0x40, 0x80, 0x56,
+ 0x80, 0x40, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00 };
diff --git a/gtk/res/menu_cursor_mask.xbm b/gtk/res/menu_cursor_mask.xbm
new file mode 100644
index 000000000..09789d51b
--- /dev/null
+++ b/gtk/res/menu_cursor_mask.xbm
@@ -0,0 +1,6 @@
+#define menu_cursor_mask_width 16
+#define menu_cursor_mask_height 16
+static char menu_cursor_mask_bits[] = {
+ 0xC0, 0xFF, 0xC8, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xC8, 0xFF,
+ 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF,
+ 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0x00, 0x00 };
diff --git a/gtk/res/menu_cursor_mask.xpm b/gtk/res/menu_cursor_mask.xpm
new file mode 100644
index 000000000..985d46cc6
--- /dev/null
+++ b/gtk/res/menu_cursor_mask.xpm
@@ -0,0 +1,22 @@
+/* XPM */
+static char * menu_cursor_mask_xpm[] = {
+"16 16 3 1",
+" c None",
+". c #FFFFFF",
+"+ c #000000",
+" ..........",
+" . .++++++++.",
+"...+. .+......+.",
+".++++..+.++++.+.",
+"...+. .+......+.",
+" . .+.++.+.+.",
+" .+......+.",
+" .+.+.++.+.",
+" .+......+.",
+" .+.++++.+.",
+" .+......+.",
+" .+.++.+.+.",
+" .+......+.",
+" .++++++++.",
+" ..........",
+" "};
diff --git a/gtk/res/netsurf.glade b/gtk/res/netsurf.gtk2.ui
index abd981e41..68812b364 100644
--- a/gtk/res/netsurf.glade
+++ b/gtk/res/netsurf.gtk2.ui
@@ -1,27 +1,47 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<?xml version="1.0"?>
<!--Generated with glade3 3.4.5 on Wed Apr 7 17:10:28 2010 -->
-<glade-interface>
- <widget class="GtkWindow" id="wndBrowser">
+<interface>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">26</property>
+ <property name="page_size">10</property>
+ <property name="value">0.5357142857142857</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">26</property>
+ <property name="page_size">10</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkUIManager" id="uimanager1">
+ <ui>
+ <menubar name="menubar"/>
+ </ui>
+ </object>
+ <object class="GtkWindow" id="wndBrowser">
<property name="title" translatable="yes">NetSurf</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
<child>
- <widget class="GtkVBox" id="vbox14">
+ <object class="GtkVBox" id="vbox14">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuBar" id="menubar">
+ <object class="GtkMenuBar" constructor="uimanager1" id="menubar">
<property name="visible">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolbar" id="toolbar">
+ <object class="GtkToolbar" id="toolbar">
<property name="visible">True</property>
<property name="toolbar_style">GTK_TOOLBAR_BOTH_HORIZ</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -29,112 +49,110 @@
</packing>
</child>
<child>
- <widget class="GtkToolbar" id="searchbar">
+ <object class="GtkToolbar" id="searchbar">
<property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
<child>
- <widget class="GtkToolButton" id="closeSearchButton">
+ <object class="GtkToolButton" id="closeSearchButton">
<property name="visible">True</property>
<property name="stock_id">gtk-close</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolItem" id="searchLabelItem">
+ <object class="GtkToolItem" id="searchLabelItem">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="searchlabel">
+ <object class="GtkLabel" id="searchlabel">
<property name="visible">True</property>
<property name="xpad">4</property>
<property name="label" translatable="yes">Match</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolItem" id="toolSearch">
+ <object class="GtkToolItem" id="toolSearch">
<property name="visible">True</property>
<child>
- <widget class="GtkEntry" id="searchEntry">
+ <object class="GtkEntry" id="searchEntry">
<property name="visible">True</property>
<property name="can_focus">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolButton" id="searchBackButton">
+ <object class="GtkToolButton" id="searchBackButton">
<property name="visible">True</property>
<property name="label" translatable="yes">Search _Back</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-go-back</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolButton" id="searchForwardButton">
+ <object class="GtkToolButton" id="searchForwardButton">
<property name="visible">True</property>
<property name="label" translatable="yes">Search _Forward</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-go-forward</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolItem" id="checkAllSearchItem">
+ <object class="GtkToolItem" id="checkAllSearchItem">
<property name="visible">True</property>
<child>
- <widget class="GtkCheckButton" id="checkAllSearch">
+ <object class="GtkCheckButton" id="checkAllSearch">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">show all matches</property>
+ <property name="tooltip-text" translatable="yes">show all matches</property>
<property name="label" translatable="yes">All </property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
<child>
- <widget class="GtkToolItem" id="caseSensItem">
+ <object class="GtkToolItem" id="caseSensItem">
<property name="visible">True</property>
<child>
- <widget class="GtkCheckButton" id="caseSensButton">
+ <object class="GtkCheckButton" id="caseSensButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Match case when searching</property>
+ <property name="tooltip-text" translatable="yes">Match case when searching</property>
<property name="label" translatable="yes">Case</property>
<property name="relief">GTK_RELIEF_NONE</property>
<property name="use_underline">True</property>
- <property name="response_id">0</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -142,7 +160,7 @@
</packing>
</child>
<child>
- <widget class="GtkNotebook" id="notebook">
+ <object class="GtkNotebook" id="notebook">
<property name="visible">True</property>
<property name="show_tabs">False</property>
<property name="show_border">False</property>
@@ -150,138 +168,45 @@
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
<child>
<placeholder/>
</child>
- <child>
+ <child type="tab">
<placeholder/>
- <packing>
- <property name="type">tab</property>
- </packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">3</property>
</packing>
</child>
- </widget>
- </child>
- </widget>
- <widget class="GtkWindow" id="tabContentsWindow">
- <child>
- <widget class="GtkTable" id="tabContents">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <child>
- <widget class="GtkLayout" id="layout">
- <property name="visible">True</property>
- <property name="app_paintable">True</property>
- </widget>
- </child>
- <child>
- <widget class="GtkStatusbar" id="resizer">
- <property name="height_request">1</property>
- <property name="visible">True</property>
- <property name="spacing">2</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHPaned" id="hpaned1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <child>
- <widget class="GtkLabel" id="status_bar">
- <property name="width_request">1</property>
- <property name="visible">True</property>
- <property name="xalign">0</property>
- <property name="xpad">4</property>
- <property name="label" translatable="yes">Status</property>
- </widget>
- <packing>
- <property name="resize">False</property>
- <property name="shrink">False</property>
- </packing>
- </child>
- <child>
- <widget class="GtkHScrollbar" id="hscrollbar">
- <property name="visible">True</property>
- <property name="adjustment">0.5357142857142857 0 100 26 10 10</property>
- </widget>
- <packing>
- <property name="resize">True</property>
- <property name="shrink">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options">GTK_FILL</property>
- </packing>
- </child>
- <child>
- <widget class="GtkVScrollbar" id="vscrollbar">
- <property name="visible">True</property>
- <property name="adjustment">0 0 100 26 10 10</property>
- </widget>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="x_options"></property>
- </packing>
- </child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/netsurf.gtk3.ui b/gtk/res/netsurf.gtk3.ui
new file mode 100644
index 000000000..ce47c6370
--- /dev/null
+++ b/gtk/res/netsurf.gtk3.ui
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkWindow" id="wndBrowser">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="box1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="searchbar">
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">both</property>
+ <child>
+ <object class="GtkToolButton" id="closeSearchButton">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">gtk-close</property>
+ <property name="stock_id">gtk-close</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="searchLabelItem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <child>
+ <object class="GtkLabel" id="searchlabel">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xpad">4</property>
+ <property name="label" translatable="yes">Match</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="toolSearch">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <child>
+ <object class="GtkEntry" id="searchEntry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="searchBackButton">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Search _Back</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-go-back</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="searchForwardButton">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="label" translatable="yes">Search _Forward</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-go-forward</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="checkAllSearchItem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <child>
+ <object class="GtkCheckButton" id="checkAllSearch">
+ <property name="label" translatable="yes">All</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolItem" id="caseSensItem">
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="use_action_appearance">False</property>
+ <child>
+ <object class="GtkCheckButton" id="caseSensButton">
+ <property name="label" translatable="yes">Case</property>
+ <property name="use_action_appearance">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <property name="scrollable">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/options.glade b/gtk/res/options.gtk2.ui
index 75313e38e..0f50ecce6 100644
--- a/gtk/res/options.glade
+++ b/gtk/res/options.gtk2.ui
@@ -1,8 +1,8 @@
<?xml version="1.0"?>
-<glade-interface>
- <!-- interface-requires gtk+ 2.6 -->
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy toplevel-contextual -->
- <widget class="GtkDialog" id="dlgPreferences">
+ <object class="GtkDialog" id="dlgPreferences">
<property name="border_width">5</property>
<property name="title" translatable="yes">Netsurf Preferences</property>
<property name="window_position">center-on-parent</property>
@@ -10,40 +10,43 @@
<property name="type_hint">dialog</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox6">
+ <object class="GtkVBox" id="dialog-vbox6">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkNotebook" id="notebook2">
+ <object class="GtkNotebook" id="notebook2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">4</property>
<child>
- <widget class="GtkVBox" id="vbox16">
+ <object class="GtkVBox" id="vbox_general">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame14">
+ <object class="GtkFrame" id="frame14">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment18">
+ <object class="GtkAlignment" id="alignment18">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkHBox" id="hbox16">
+ <object class="GtkHBox" id="hbox16">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="spacing">5</property>
<child>
- <widget class="GtkLabel" id="label64">
+ <object class="GtkLabel" id="label64">
<property name="visible">True</property>
<property name="label" translatable="yes">URL</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -51,104 +54,100 @@
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entryHomePageURL">
+ <object class="GtkEntry" id="entryHomePageURL">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">The page to visit when the Home button is pressed, or a new window is opened.</property>
<property name="invisible_char">&#x25CF;</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox1">
+ <object class="GtkHBox" id="hbox1">
<property name="visible">True</property>
<property name="spacing">5</property>
<child>
- <widget class="GtkButton" id="setCurrentPage">
+ <object class="GtkButton" id="setCurrentPage">
<property name="label" translatable="yes">Current Page</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="padding">5</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkButton" id="setDefaultPage">
+ <object class="GtkButton" id="setDefaultPage">
<property name="label" translatable="yes">Default Page</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="padding">5</property>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label65">
+ <child type="label">
+ <object class="GtkLabel" id="label65">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Home page&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox6">
+ <object class="GtkHBox" id="hbox6">
<property name="visible">True</property>
<child>
- <widget class="GtkFrame" id="frame15">
+ <object class="GtkFrame" id="frame15">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment19">
+ <object class="GtkAlignment" id="alignment19">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox17">
+ <object class="GtkVBox" id="vbox17">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<property name="homogeneous">True</property>
<child>
- <widget class="GtkCheckButton" id="checkHideAdverts">
+ <object class="GtkCheckButton" id="checkHideAdverts">
<property name="label" translatable="yes">Hide advertisements</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Attempt to hide images from known advertisement servers.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -156,15 +155,14 @@
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkDisablePopups">
+ <object class="GtkCheckButton" id="checkDisablePopups">
<property name="label" translatable="yes">Disable pop-up windows</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Stop pop-up windows normally containing adverts appearing.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -172,58 +170,56 @@
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkDisablePlugins">
+ <object class="GtkCheckButton" id="checkDisablePlugins">
<property name="label" translatable="yes">Disable plug-ins</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Do not allow embedded applets or plugins.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label66">
+ <child type="label">
+ <object class="GtkLabel" id="label66">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Content blocking&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame7">
+ <object class="GtkFrame" id="frame7">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment7">
+ <object class="GtkAlignment" id="alignment7">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox8">
+ <object class="GtkHBox" id="hbox8">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
<child>
- <widget class="GtkVBox" id="combolanguagevbox">
+ <object class="GtkVBox" id="combolanguagevbox">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
@@ -233,7 +229,7 @@
<child>
<placeholder/>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -243,56 +239,54 @@
<child>
<placeholder/>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label20">
+ <child type="label">
+ <object class="GtkLabel" id="label20">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Content Language&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame16">
+ <object class="GtkFrame" id="frame16">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment20">
+ <object class="GtkAlignment" id="alignment20">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox18">
+ <object class="GtkVBox" id="vbox18">
<property name="visible">True</property>
<property name="border_width">1</property>
+ <property name="orientation">vertical</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkHBox" id="hbox17">
+ <object class="GtkHBox" id="hbox17">
<property name="visible">True</property>
<property name="border_width">4</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkLabel" id="label67">
+ <object class="GtkLabel" id="label67">
<property name="visible">True</property>
<property name="label" translatable="yes">Keep history for</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -300,13 +294,12 @@
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinHistoryAge">
+ <object class="GtkSpinButton" id="spinHistoryAge">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Visited pages are kept in memory for this many days</property>
- <property name="adjustment">14 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -314,52 +307,48 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label68">
+ <object class="GtkLabel" id="label68">
<property name="visible">True</property>
<property name="label" translatable="yes">days</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkHoverURLs">
+ <object class="GtkCheckButton" id="checkHoverURLs">
<property name="label" translatable="yes">Hover URLs by pointer in local history</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Show a tooltip showing the URL of a page in the local history tree.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label69">
+ <child type="label">
+ <object class="GtkLabel" id="label69">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;History&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -367,29 +356,29 @@
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame17">
+ <object class="GtkFrame" id="frame17">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment21">
+ <object class="GtkAlignment" id="alignment21">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox19">
+ <object class="GtkVBox" id="vbox19">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<property name="homogeneous">True</property>
<child>
- <widget class="GtkCheckButton" id="checkDisplayRecentURLs">
+ <object class="GtkCheckButton" id="checkDisplayRecentURLs">
<property name="label" translatable="yes">Display recently visited URLs as you type</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Show a drop-down list of recent addresses when typing into the address bar.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -397,84 +386,76 @@
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkSendReferer">
+ <object class="GtkCheckButton" id="checkSendReferer">
<property name="label" translatable="yes">Send site referral information</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">When requesting items or pages, tell the server what linked to them.</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- <child>
- <placeholder/>
- </child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label70">
+ <child type="label">
+ <object class="GtkLabel" id="label70">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Misc&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">3</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label71">
+ <child type="tab">
+ <object class="GtkLabel" id="label71">
<property name="visible">True</property>
<property name="label" translatable="yes">General</property>
- </widget>
+ </object>
<packing>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox20">
+ <object class="GtkVBox" id="vbox_network">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame18">
+ <object class="GtkFrame" id="frame18">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment22">
+ <object class="GtkAlignment" id="alignment22">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkTable" id="table7">
+ <object class="GtkTable" id="table7">
<property name="visible">True</property>
<property name="n_rows">4</property>
<property name="n_columns">2</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
- <widget class="GtkEntry" id="entryProxyUser">
+ <object class="GtkEntry" id="entryProxyUser">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If your proxy server requires authentication, enter your username here.</property>
<property name="invisible_char">&#x25CF;</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -484,13 +465,9 @@
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="comboProxyType">
+ <object class="GtkComboBox" id="comboProxyType">
<property name="visible">True</property>
- <property name="items" translatable="yes">No proxy
-Simple proxy
-Basic authentication
-NTLM authentication</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -498,24 +475,23 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox18">
+ <object class="GtkHBox" id="hbox18">
<property name="visible">True</property>
<child>
- <widget class="GtkEntry" id="entryProxyHost">
+ <object class="GtkEntry" id="entryProxyHost">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Host name of your proxy server.</property>
<property name="invisible_char">&#x25CF;</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label72">
+ <object class="GtkLabel" id="label72">
<property name="visible">True</property>
<property name="label" translatable="yes">:</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -523,19 +499,18 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entryProxyPort">
+ <object class="GtkEntry" id="entryProxyPort">
<property name="width_request">64</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Port number to connect to on proxy server.</property>
<property name="invisible_char">&#x25CF;</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -545,13 +520,12 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkEntry" id="entryProxyPassword">
+ <object class="GtkEntry" id="entryProxyPassword">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">If your proxy server requires authentication, enter your password here.</property>
<property name="visibility">False</property>
<property name="invisible_char">&#x25CF;</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -561,11 +535,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label75">
+ <object class="GtkLabel" id="label75">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Host</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
@@ -574,22 +548,22 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label76">
+ <object class="GtkLabel" id="label76">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Proxy type</property>
- </widget>
+ </object>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label74">
+ <object class="GtkLabel" id="label74">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Username</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
@@ -598,11 +572,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label73">
+ <object class="GtkLabel" id="label73">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Password</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
@@ -610,38 +584,35 @@ NTLM authentication</property>
<property name="y_options"></property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label77">
+ <child type="label">
+ <object class="GtkLabel" id="label77">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;HTTP Proxy&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame19">
+ <object class="GtkFrame" id="frame19">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment23">
+ <object class="GtkAlignment" id="alignment23">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkTable" id="table8">
+ <object class="GtkTable" id="table8">
<property name="visible">True</property>
<property name="border_width">3</property>
<property name="n_rows">3</property>
@@ -649,13 +620,12 @@ NTLM authentication</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
- <widget class="GtkSpinButton" id="spinMaxFetchers">
+ <object class="GtkSpinButton" id="spinMaxFetchers">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Maximum number of concurrent items to fetch at once.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -663,13 +633,12 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinFetchesPerHost">
+ <object class="GtkSpinButton" id="spinFetchesPerHost">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Maximum number of item fetches per web server.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -679,13 +648,12 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinCachedConnections">
+ <object class="GtkSpinButton" id="spinCachedConnections">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Number of connections to keep incase they are needed again.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -695,21 +663,21 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label78">
+ <object class="GtkLabel" id="label78">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Maximum fetchers</property>
- </widget>
+ </object>
<packing>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label79">
+ <object class="GtkLabel" id="label79">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Fetches per host</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
@@ -717,11 +685,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label80">
+ <object class="GtkLabel" id="label80">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Cached connections</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
@@ -737,218 +705,206 @@ NTLM authentication</property>
<child>
<placeholder/>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label81">
+ <child type="label">
+ <object class="GtkLabel" id="label81">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Fetching&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label82">
+ <child type="tab">
+ <object class="GtkLabel" id="label82">
<property name="visible">True</property>
<property name="label" translatable="yes">Network</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox21">
+ <object class="GtkVBox" id="vbox_rendering">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame20">
+ <object class="GtkFrame" id="frame20">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment24">
+ <object class="GtkAlignment" id="alignment24">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox2">
+ <object class="GtkVBox" id="vbox2">
<property name="visible">True</property>
<child>
- <widget class="GtkCheckButton" id="checkResampleImages">
+ <object class="GtkCheckButton" id="checkResampleImages">
<property name="label" translatable="yes">Resample images when not at natural size</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Resample images when not at natural size</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label83">
+ <child type="label">
+ <object class="GtkLabel" id="label83">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Quality&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame21">
+ <object class="GtkFrame" id="frame21">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment25">
+ <object class="GtkAlignment" id="alignment25">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox23">
+ <object class="GtkVBox" id="vbox23">
<property name="visible">True</property>
<child>
- <widget class="GtkHBox" id="hbox19">
+ <object class="GtkHBox" id="hbox19">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label84">
+ <object class="GtkLabel" id="label84">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Limit speed to</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinAnimationSpeed">
+ <object class="GtkSpinButton" id="spinAnimationSpeed">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Do not update animations any more often than this.</property>
- <property name="adjustment">0 0 100 0.10000000149 1 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
<property name="digits">1</property>
<property name="numeric">True</property>
<property name="update_policy">if-valid</property>
- </widget>
+ </object>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label85">
+ <object class="GtkLabel" id="label85">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">seconds between frames</property>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkDisableAnimations">
+ <object class="GtkCheckButton" id="checkDisableAnimations">
<property name="label" translatable="yes">Disable animations</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Display only the first frame of animated images.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label86">
+ <child type="label">
+ <object class="GtkLabel" id="label86">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Animations&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label87">
+ <child type="tab">
+ <object class="GtkLabel" id="label87">
<property name="visible">True</property>
<property name="label" translatable="yes">Rendering</property>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox24">
+ <object class="GtkVBox" id="vbox_style">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame22">
+ <object class="GtkFrame" id="frame22">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment26">
+ <object class="GtkAlignment" id="alignment26">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkTable" id="table9">
+ <object class="GtkTable" id="table9">
<property name="visible">True</property>
<property name="border_width">2</property>
<property name="n_rows">6</property>
@@ -956,13 +912,13 @@ NTLM authentication</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
- <widget class="GtkFontButton" id="fontSansSerif">
+ <object class="GtkFontButton" id="fontSansSerif">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="show_style">False</property>
<property name="show_size">False</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -970,22 +926,22 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label88">
+ <object class="GtkLabel" id="label88">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Sans-serif</property>
- </widget>
+ </object>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label89">
+ <object class="GtkLabel" id="label89">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Serif</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
@@ -994,11 +950,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label90">
+ <object class="GtkLabel" id="label90">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Monospace</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
@@ -1007,11 +963,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label91">
+ <object class="GtkLabel" id="label91">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Cursive</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
@@ -1020,11 +976,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label92">
+ <object class="GtkLabel" id="label92">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Fantasy</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
@@ -1033,11 +989,11 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label93">
+ <object class="GtkLabel" id="label93">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Default</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
@@ -1046,13 +1002,13 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkFontButton" id="fontSerif">
+ <object class="GtkFontButton" id="fontSerif">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="show_style">False</property>
<property name="show_size">False</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1063,13 +1019,13 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkFontButton" id="fontMonospace">
+ <object class="GtkFontButton" id="fontMonospace">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="show_style">False</property>
<property name="show_size">False</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1080,13 +1036,13 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkFontButton" id="fontCursive">
+ <object class="GtkFontButton" id="fontCursive">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="show_style">False</property>
<property name="show_size">False</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1097,13 +1053,13 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkFontButton" id="fontFantasy">
+ <object class="GtkFontButton" id="fontFantasy">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="show_style">False</property>
<property name="show_size">False</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1114,14 +1070,9 @@ NTLM authentication</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="comboDefault">
+ <object class="GtkComboBox" id="comboDefault">
<property name="visible">True</property>
- <property name="items" translatable="yes">Sans-serif
-Serif
-Monospace
-Cursive
-Fantasy</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1131,75 +1082,71 @@ Fantasy</property>
<property name="y_options"></property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label94">
+ <child type="label">
+ <object class="GtkLabel" id="label94">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Font faces&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame23">
+ <object class="GtkFrame" id="frame23">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment27">
+ <object class="GtkAlignment" id="alignment27">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkTable" id="table10">
+ <object class="GtkTable" id="table10">
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">4</property>
<property name="column_spacing">3</property>
<property name="row_spacing">3</property>
<child>
- <widget class="GtkButton" id="fontPreview">
+ <object class="GtkButton" id="fontPreview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">View the changes in the browser window immediately.</property>
<child>
- <widget class="GtkHBox" id="hbox3">
+ <object class="GtkHBox" id="hbox3">
<property name="visible">True</property>
<property name="border_width">2</property>
<child>
- <widget class="GtkImage" id="image1">
+ <object class="GtkImage" id="image1">
<property name="visible">True</property>
<property name="stock">gtk-apply</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label1">
+ <object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="label" translatable="yes">_Preview</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
@@ -1210,13 +1157,12 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinDefaultSize">
+ <object class="GtkSpinButton" id="spinDefaultSize">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">The base-line font size to use.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1225,13 +1171,12 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMinimumSize">
+ <object class="GtkSpinButton" id="spinMinimumSize">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Do not allow text to be displayed any smaller than this.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1242,11 +1187,11 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label97">
+ <object class="GtkLabel" id="label97">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">pt</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
@@ -1254,11 +1199,11 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label98">
+ <object class="GtkLabel" id="label98">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">pt</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
@@ -1268,11 +1213,11 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label96">
+ <object class="GtkLabel" id="label96">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Minimum</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
@@ -1281,59 +1226,52 @@ Fantasy</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label95">
+ <object class="GtkLabel" id="label95">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Default</property>
- </widget>
+ </object>
<packing>
<property name="x_options">GTK_FILL</property>
<property name="y_options"></property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label99">
+ <child type="label">
+ <object class="GtkLabel" id="label99">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Font size&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame6">
+ <object class="GtkFrame" id="frame6">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment6">
+ <object class="GtkAlignment" id="alignment6">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkTable" id="table3">
+ <object class="GtkTable" id="table3">
<property name="visible">True</property>
<property name="n_columns">2</property>
<property name="column_spacing">10</property>
<property name="row_spacing">3</property>
<child>
- <widget class="GtkComboBox" id="comboButtonType">
+ <object class="GtkComboBox" id="comboButtonType">
<property name="visible">True</property>
- <property name="items" translatable="yes">Small icons
-Large icons
-Large icons and text
-Text only</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -1342,75 +1280,72 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label19">
+ <object class="GtkLabel" id="label19">
<property name="visible">True</property>
<property name="label" translatable="yes">Toolbar buttons</property>
<property name="justify">right</property>
- </widget>
+ </object>
<packing>
<property name="x_options"></property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label18">
+ <child type="label">
+ <object class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">&lt;b&gt;Icons&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">3</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label100">
+ <child type="tab">
+ <object class="GtkLabel" id="label100">
<property name="visible">True</property>
<property name="label" translatable="yes">Style</property>
- </widget>
+ </object>
<packing>
<property name="position">3</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox25">
+ <object class="GtkVBox" id="vbox_cache">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame24">
+ <object class="GtkFrame" id="frame24">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment28">
+ <object class="GtkAlignment" id="alignment28">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox20">
+ <object class="GtkHBox" id="hbox20">
<property name="visible">True</property>
<property name="border_width">2</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label101">
+ <object class="GtkLabel" id="label101">
<property name="visible">True</property>
<property name="label" translatable="yes">Size</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1418,13 +1353,12 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMemoryCacheSize">
+ <object class="GtkSpinButton" id="spinMemoryCacheSize">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">How much memory to use for caching recently viewed objects in memory.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1432,31 +1366,28 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label102">
+ <object class="GtkLabel" id="label102">
<property name="visible">True</property>
<property name="label" translatable="yes">MB</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label103">
+ <child type="label">
+ <object class="GtkLabel" id="label103">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Memory cache&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1464,28 +1395,29 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame25">
+ <object class="GtkFrame" id="frame25">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment29">
+ <object class="GtkAlignment" id="alignment29">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox26">
+ <object class="GtkVBox" id="vbox26">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
- <widget class="GtkHBox" id="hbox21">
+ <object class="GtkHBox" id="hbox21">
<property name="visible">True</property>
<property name="spacing">3</property>
<child>
- <widget class="GtkLabel" id="label104">
+ <object class="GtkLabel" id="label104">
<property name="visible">True</property>
<property name="label" translatable="yes">Duration</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1493,13 +1425,12 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinDiscCacheAge">
+ <object class="GtkSpinButton" id="spinDiscCacheAge">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">How long to keep cached items around on disc.</property>
- <property name="adjustment">1 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1507,23 +1438,23 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label105">
+ <object class="GtkLabel" id="label105">
<property name="visible">True</property>
<property name="label" translatable="yes">days</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox22">
+ <object class="GtkHBox" id="hbox22">
<property name="visible">True</property>
<property name="border_width">4</property>
<property name="spacing">4</property>
@@ -1531,25 +1462,24 @@ Text only</property>
<placeholder/>
</child>
<child>
- <widget class="GtkButton" id="button4">
+ <object class="GtkButton" id="button4">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Flush cached items that are older than the maximum permitted age.</property>
<child>
- <widget class="GtkAlignment" id="alignment30">
+ <object class="GtkAlignment" id="alignment30">
<property name="visible">True</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<child>
- <widget class="GtkHBox" id="hbox23">
+ <object class="GtkHBox" id="hbox23">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkImage" id="image399">
+ <object class="GtkImage" id="image399">
<property name="visible">True</property>
<property name="stock">gtk-delete</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1557,23 +1487,23 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label106">
+ <object class="GtkLabel" id="label106">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="label" translatable="yes">Perform maintainance</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1583,90 +1513,86 @@ Text only</property>
<child>
<placeholder/>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label107">
+ <child type="label">
+ <object class="GtkLabel" id="label107">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Disc cache&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">4</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label108">
+ <child type="tab">
+ <object class="GtkLabel" id="label108">
<property name="visible">True</property>
<property name="label" translatable="yes">Cache</property>
- </widget>
+ </object>
<packing>
<property name="position">4</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox_advanced">
+ <object class="GtkVBox" id="vbox_advanced">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame_downloads">
+ <object class="GtkFrame" id="frame_downloads">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment1">
+ <object class="GtkAlignment" id="alignment1">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox4">
+ <object class="GtkVBox" id="vbox4">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkCheckButton" id="checkClearDownloads">
+ <object class="GtkCheckButton" id="checkClearDownloads">
<property name="label" translatable="yes">Automatically clear downloads when completed</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Erase the download from the list as soon as it completes.</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkRequestOverwrite">
+ <object class="GtkCheckButton" id="checkRequestOverwrite">
<property name="label" translatable="yes">Request confirmation before overwriting files</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Ask before overwriting files when downloading.</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1674,14 +1600,14 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox2">
+ <object class="GtkHBox" id="hbox2">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label4">
+ <object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="xpad">2</property>
<property name="label" translatable="yes">Download directory</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1690,62 +1616,60 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkFileChooserButton" id="fileChooserDownloads">
+ <object class="GtkFileChooserButton" id="fileChooserDownloads">
<property name="visible">True</property>
- <property name="show_hidden">True</property>
<property name="action">select-folder</property>
+ <property name="show_hidden">True</property>
<property name="width_chars">25</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label3">
+ <child type="label">
+ <object class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Downloads&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame_tabs">
+ <object class="GtkFrame" id="frame_tabs">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment8">
+ <object class="GtkAlignment" id="alignment8">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="advanced_tabs_vbox">
+ <object class="GtkVBox" id="advanced_tabs_vbox">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkCheckButton" id="checkShowSingleTab">
+ <object class="GtkCheckButton" id="checkShowSingleTab">
<property name="label" translatable="yes">Show tab bar with only one tab</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1753,41 +1677,41 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkFocusNew">
+ <object class="GtkCheckButton" id="checkFocusNew">
<property name="label" translatable="yes">Shift focus to new tab</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkNewBlank">
+ <object class="GtkCheckButton" id="checkNewBlank">
<property name="label" translatable="yes">Open blank window</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox10">
+ <object class="GtkHBox" id="hbox10">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label26">
+ <object class="GtkLabel" id="label26">
<property name="visible">True</property>
<property name="xalign">0.4699999988079071</property>
<property name="xpad">2</property>
<property name="label" translatable="yes">Tabs position</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1796,56 +1720,49 @@ Text only</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="comboTabPosition">
+ <object class="GtkComboBox" id="comboTabPosition">
<property name="visible">True</property>
- <property name="items" translatable="yes">Top
-Left
-Right
-Bottom</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">3</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label21">
+ <child type="label">
+ <object class="GtkLabel" id="label21">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Tabs&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame_view_source">
+ <object class="GtkFrame" id="frame_view_source">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment10">
+ <object class="GtkAlignment" id="alignment10">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox11">
+ <object class="GtkHBox" id="hbox11">
<property name="visible">True</property>
<child>
- <widget class="GtkRadioButton" id="sourceButtonWindow">
+ <object class="GtkRadioButton" id="sourceButtonWindow">
<property name="label" translatable="yes">in own window </property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -1853,7 +1770,7 @@ Bottom</property>
<property name="use_underline">True</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1861,35 +1778,32 @@ Bottom</property>
</packing>
</child>
<child>
- <widget class="GtkRadioButton" id="sourceButtonTab">
+ <object class="GtkRadioButton" id="sourceButtonTab">
<property name="label" translatable="yes">in new tab</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label24">
+ <child type="label">
+ <object class="GtkLabel" id="label24">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;View Source&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1897,86 +1811,62 @@ Bottom</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame_search">
+ <object class="GtkFrame" id="frame_search">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment9">
+ <object class="GtkAlignment" id="alignment9">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox9">
+ <object class="GtkHBox" id="hbox9">
<property name="visible">True</property>
<child>
- <widget class="GtkCheckButton" id="checkUrlSearch">
+ <object class="GtkCheckButton" id="checkUrlSearch">
<property name="label" translatable="yes">Search from URL bar </property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label23">
+ <object class="GtkLabel" id="label23">
<property name="visible">True</property>
<property name="label" translatable="yes">Default provider</property>
<property name="justify">right</property>
- </widget>
+ </object>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkComboBox" id="comboSearch">
- <property name="visible">True</property>
- <property name="items" translatable="yes">Google
-Yahoo!
-Microsoft live
-Business.com
-Omgili
-BBC News
-Ubuntu packages
-Creative commons
-Ask
-Answers
-Dictionary.com
-Youtube
-AeroMp3
-AOL
-Baidu
-Amazon
-Ebay
-IMDB
-Espn
-Wikipedia
-DuckDuckGo</property>
- </widget>
+ <object class="GtkComboBox" id="comboSearch">
+ <property name="visible">True</property>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label22">
+ <child type="label">
+ <object class="GtkLabel" id="label22">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Search&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -1984,28 +1874,28 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame_select_themes">
+ <object class="GtkFrame" id="frame_select_themes">
<property name="visible">True</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment11">
+ <object class="GtkAlignment" id="alignment11">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="themehbox">
+ <object class="GtkHBox" id="themehbox">
<property name="visible">True</property>
<child>
<placeholder/>
</child>
<child>
- <widget class="GtkButton" id="buttonaddtheme">
+ <object class="GtkButton" id="buttonaddtheme">
<property name="label" translatable="yes">Add theme&#x2026;</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2013,71 +1903,68 @@ DuckDuckGo</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label25">
+ <child type="label">
+ <object class="GtkLabel" id="label25">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Select themes&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">4</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">5</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label109">
+ <child type="tab">
+ <object class="GtkLabel" id="label109">
<property name="visible">True</property>
<property name="label" translatable="yes">Advanced</property>
- </widget>
+ </object>
<packing>
<property name="position">5</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox5">
+ <object class="GtkVBox" id="vbox_export">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkFrame" id="frame2">
+ <object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment2">
+ <object class="GtkAlignment" id="alignment2">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox4">
+ <object class="GtkHBox" id="hbox4">
<property name="visible">True</property>
<property name="homogeneous">True</property>
<child>
- <widget class="GtkTable" id="table1">
+ <object class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="column_spacing">4</property>
<property name="row_spacing">5</property>
<child>
- <widget class="GtkLabel" id="label10">
+ <object class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="label" translatable="yes">mm</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
@@ -2086,23 +1973,22 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label9">
+ <object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="label" translatable="yes">mm</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMarginBottom">
+ <object class="GtkSpinButton" id="spinMarginBottom">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set the bottom margin</property>
- <property name="adjustment">0 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -2111,37 +1997,36 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMarginTop">
+ <object class="GtkSpinButton" id="spinMarginTop">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set the top margin</property>
- <property name="adjustment">0 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label6">
+ <object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Bottom</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label5">
+ <object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Top</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2149,17 +2034,17 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkTable" id="table2">
+ <object class="GtkTable" id="table2">
<property name="visible">True</property>
<property name="n_rows">2</property>
<property name="n_columns">3</property>
<property name="column_spacing">4</property>
<property name="row_spacing">5</property>
<child>
- <widget class="GtkLabel" id="label12">
+ <object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="label" translatable="yes">mm</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
@@ -2168,23 +2053,22 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label11">
+ <object class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="label" translatable="yes">mm</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMarginRight">
+ <object class="GtkSpinButton" id="spinMarginRight">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set the right margin</property>
- <property name="adjustment">0 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
@@ -2193,95 +2077,90 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinMarginLeft">
+ <object class="GtkSpinButton" id="spinMarginLeft">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set the left margin</property>
- <property name="adjustment">0 0 100 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label8">
+ <object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Right</property>
- </widget>
+ </object>
<packing>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label7">
+ <object class="GtkLabel" id="label7">
<property name="visible">True</property>
<property name="xalign">0.89999997615814209</property>
<property name="label" translatable="yes">Left</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="frame">
+ <child type="label">
+ <object class="GtkLabel" id="frame">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Margins&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame3">
+ <object class="GtkFrame" id="frame3">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment3">
+ <object class="GtkAlignment" id="alignment3">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkHBox" id="hbox5">
+ <object class="GtkHBox" id="hbox5">
<property name="visible">True</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkLabel" id="label14">
+ <object class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="label" translatable="yes">Scale</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinExportScale">
+ <object class="GtkSpinButton" id="spinExportScale">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="tooltip" translatable="yes">Set the scaling for the document - this way more content can fit in a page</property>
- <property name="adjustment">0 0 1000 1 10 0</property>
+ <property name="adjustment"></property>
<property name="climb_rate">1</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2289,30 +2168,27 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label15">
+ <object class="GtkLabel" id="label15">
<property name="visible">True</property>
<property name="label" translatable="yes">%</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label13">
+ <child type="label">
+ <object class="GtkLabel" id="label13">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Scaling&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2320,131 +2196,127 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame4">
+ <object class="GtkFrame" id="frame4">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment4">
+ <object class="GtkAlignment" id="alignment4">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox6">
+ <object class="GtkVBox" id="vbox6">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkCheckButton" id="checkSuppressImages">
+ <object class="GtkCheckButton" id="checkSuppressImages">
<property name="label" translatable="yes">Suppress images</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkRemoveBackgrounds">
+ <object class="GtkCheckButton" id="checkRemoveBackgrounds">
<property name="label" translatable="yes">Remove backgrounds</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkFitPage">
+ <object class="GtkCheckButton" id="checkFitPage">
<property name="label" translatable="yes">Fit page</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label16">
+ <child type="label">
+ <object class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame5">
+ <object class="GtkFrame" id="frame5">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkAlignment" id="alignment5">
+ <object class="GtkAlignment" id="alignment5">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkVBox" id="vbox7">
+ <object class="GtkVBox" id="vbox7">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkCheckButton" id="checkCompressPDF">
+ <object class="GtkCheckButton" id="checkCompressPDF">
<property name="label" translatable="yes">Compress PDF</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkCheckButton" id="checkPasswordPDF">
+ <object class="GtkCheckButton" id="checkPasswordPDF">
<property name="label" translatable="yes">Set a password for PDF</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label17">
+ <child type="label">
+ <object class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2452,64 +2324,62 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox7">
+ <object class="GtkHBox" id="hbox7">
<property name="visible">True</property>
<property name="border_width">10</property>
<child>
- <widget class="GtkButton" id="setDefaultExportOptions">
+ <object class="GtkButton" id="setDefaultExportOptions">
<property name="label" translatable="yes">Default</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip" translatable="yes">Reset export settings to defaults</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="position">4</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">6</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel" id="label2">
+ <child type="tab">
+ <object class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="label" translatable="yes">Export</property>
- </widget>
+ </object>
<packing>
<property name="position">6</property>
<property name="tab_fill">False</property>
- <property name="type">tab</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area7">
+ <object class="GtkHButtonBox" id="dialog-action_area7">
<property name="visible">True</property>
<property name="layout_style">edge</property>
<child>
- <widget class="GtkButton" id="help">
+ <object class="GtkButton" id="help">
<property name="label">gtk-help</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
@@ -2517,28 +2387,31 @@ DuckDuckGo</property>
</packing>
</child>
<child>
- <widget class="GtkButton" id="close">
+ <object class="GtkButton" id="close">
<property name="label">gtk-close</property>
- <property name="response_id">-7</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ <action-widgets>
+ <action-widget response="0">help</action-widget>
+ <action-widget response="-7">close</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/options.gtk3.ui b/gtk/res/options.gtk3.ui
new file mode 100644
index 000000000..b6254a34d
--- /dev/null
+++ b/gtk/res/options.gtk3.ui
@@ -0,0 +1,2709 @@
+<?xml version="1.0"?>
+<interface>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">14</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment10">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment11">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment12">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment13">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment14">
+ <property name="upper">1000</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">1</property>
+ <property name="step_increment">0.10000000149</property>
+ <property name="page_size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment6">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment7">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment8">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment9">
+ <property name="upper">100</property>
+ <property name="lower">0</property>
+ <property name="page_increment">10</property>
+ <property name="step_increment">1</property>
+ <property name="page_size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkListStore" id="model1">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">No proxy</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Simple proxy</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Basic authentication</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">NTLM authentication</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="model2">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Sans-serif</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Serif</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Monospace</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Cursive</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Fantasy</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="model3">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Small icons</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Large icons</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Large icons and text</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Text only</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="model4">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Top</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Left</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Right</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Bottom</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="model5">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Google</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Yahoo!</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Microsoft live</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Business.com</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Omgili</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">BBC News</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Ubuntu packages</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Creative commons</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Ask</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Answers</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Dictionary.com</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Youtube</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">AeroMp3</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">AOL</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Baidu</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Amazon</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Ebay</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">IMDB</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Espn</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Wikipedia</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">DuckDuckGo</col>
+ </row>
+ </data>
+ </object>
+ <!-- interface-requires gtk+ 2.6 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkDialog" id="dlgPreferences">
+ <property name="border_width">5</property>
+ <property name="title" translatable="yes">Netsurf Preferences</property>
+ <property name="window_position">center-on-parent</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="type_hint">dialog</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox6">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkNotebook" id="notebook2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="border_width">4</property>
+ <child>
+ <object class="GtkVBox" id="vbox16">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame14">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment18">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label64">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">URL</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryHomePageURL">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">The page to visit when the Home button is pressed, or a new window is opened.</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkButton" id="setCurrentPage">
+ <property name="label" translatable="yes">Current Page</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="padding">5</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="setDefaultPage">
+ <property name="label" translatable="yes">Default Page</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="padding">5</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label65">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Home page&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame15">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment19">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkHideAdverts">
+ <property name="label" translatable="yes">Hide advertisements</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Attempt to hide images from known advertisement servers.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkDisablePopups">
+ <property name="label" translatable="yes">Disable pop-up windows</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Stop pop-up windows normally containing adverts appearing.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkDisablePlugins">
+ <property name="label" translatable="yes">Disable plug-ins</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Do not allow embedded applets or plugins.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label66">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Content blocking&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame7">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment7">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox8">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkVBox" id="combolanguagevbox">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label20">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Content Language&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame16">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment20">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="border_width">1</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkHBox" id="hbox17">
+ <property name="visible">True</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label67">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Keep history for</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinHistoryAge">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Visited pages are kept in memory for this many days</property>
+ <property name="adjustment">adjustment1</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label68">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">days</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkHoverURLs">
+ <property name="label" translatable="yes">Hover URLs by pointer in local history</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Show a tooltip showing the URL of a page in the local history tree.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label69">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;History&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame17">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment21">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkDisplayRecentURLs">
+ <property name="label" translatable="yes">Display recently visited URLs as you type</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Show a drop-down list of recent addresses when typing into the address bar.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkSendReferer">
+ <property name="label" translatable="yes">Send site referral information</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">When requesting items or pages, tell the server what linked to them.</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label70">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Misc&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label71">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">General</property>
+ </object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox20">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame18">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment22">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table7">
+ <property name="visible">True</property>
+ <property name="n_rows">4</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">3</property>
+ <property name="row_spacing">3</property>
+ <child>
+ <object class="GtkEntry" id="entryProxyUser">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">If your proxy server requires authentication, enter your username here.</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboProxyType">
+ <property name="visible">True</property>
+ <property name="model">model1</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox18">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkEntry" id="entryProxyHost">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Host name of your proxy server.</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label72">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryProxyPort">
+ <property name="width_request">64</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Port number to connect to on proxy server.</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryProxyPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">If your proxy server requires authentication, enter your password here.</property>
+ <property name="visibility">False</property>
+ <property name="invisible_char">&#x25CF;</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label75">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Host</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label76">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Proxy type</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label74">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Username</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label73">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Password</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label77">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;HTTP Proxy&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame19">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment23">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table8">
+ <property name="visible">True</property>
+ <property name="border_width">3</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">3</property>
+ <property name="row_spacing">3</property>
+ <child>
+ <object class="GtkSpinButton" id="spinMaxFetchers">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Maximum number of concurrent items to fetch at once.</property>
+ <property name="adjustment">adjustment2</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinFetchesPerHost">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Maximum number of item fetches per web server.</property>
+ <property name="adjustment">adjustment3</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinCachedConnections">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Number of connections to keep incase they are needed again.</property>
+ <property name="adjustment">adjustment4</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label78">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Maximum fetchers</property>
+ </object>
+ <packing>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label79">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Fetches per host</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label80">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Cached connections</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label81">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Fetching&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label82">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Network</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox21">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame20">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment24">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkResampleImages">
+ <property name="label" translatable="yes">Resample images when not at natural size</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Resample images when not at natural size</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label83">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Quality&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame21">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment25">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox23">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox19">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label84">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Limit speed to</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinAnimationSpeed">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Do not update animations any more often than this.</property>
+ <property name="adjustment">adjustment5</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">1</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">if-valid</property>
+ </object>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label85">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">seconds between frames</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkDisableAnimations">
+ <property name="label" translatable="yes">Disable animations</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Display only the first frame of animated images.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label86">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Animations&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label87">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Rendering</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox24">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame22">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment26">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table9">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <property name="n_rows">6</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">3</property>
+ <property name="row_spacing">3</property>
+ <child>
+ <object class="GtkFontButton" id="fontSansSerif">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="show_style">False</property>
+ <property name="show_size">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label88">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Sans-serif</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label89">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Serif</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label90">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Monospace</property>
+ </object>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label91">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Cursive</property>
+ </object>
+ <packing>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label92">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Fantasy</property>
+ </object>
+ <packing>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label93">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Default</property>
+ </object>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontSerif">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="show_style">False</property>
+ <property name="show_size">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontMonospace">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="show_style">False</property>
+ <property name="show_size">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontCursive">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="show_style">False</property>
+ <property name="show_size">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFontButton" id="fontFantasy">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="show_style">False</property>
+ <property name="show_size">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboDefault">
+ <property name="visible">True</property>
+ <property name="model">model2</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer2"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label94">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Font faces&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame23">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment27">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table10">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">4</property>
+ <property name="column_spacing">3</property>
+ <property name="row_spacing">3</property>
+ <child>
+ <object class="GtkButton" id="fontPreview">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">View the changes in the browser window immediately.</property>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-apply</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Preview</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ <property name="x_padding">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinDefaultSize">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">The base-line font size to use.</property>
+ <property name="adjustment">adjustment6</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMinimumSize">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Do not allow text to be displayed any smaller than this.</property>
+ <property name="adjustment">adjustment7</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label97">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">pt</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label98">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">pt</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label96">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Minimum</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label95">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Default</property>
+ </object>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label99">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Font size&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame6">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment6">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkTable" id="table3">
+ <property name="visible">True</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">10</property>
+ <property name="row_spacing">3</property>
+ <child>
+ <object class="GtkComboBox" id="comboButtonType">
+ <property name="visible">True</property>
+ <property name="model">model3</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer3"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label19">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Toolbar buttons</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="x_options"/>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label18">
+ <property name="visible">True</property>
+ <property name="xpad">5</property>
+ <property name="label" translatable="yes">&lt;b&gt;Icons&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label100">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Style</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox25">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame24">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment28">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox20">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label101">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Size</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMemoryCacheSize">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">How much memory to use for caching recently viewed objects in memory.</property>
+ <property name="adjustment">adjustment8</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label102">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">MB</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label103">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Memory cache&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame25">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment29">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox26">
+ <property name="visible">True</property>
+ <property name="spacing">5</property>
+ <child>
+ <object class="GtkHBox" id="hbox21">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkLabel" id="label104">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Duration</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinDiscCacheAge">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">How long to keep cached items around on disc.</property>
+ <property name="adjustment">adjustment9</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label105">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">days</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox22">
+ <property name="visible">True</property>
+ <property name="border_width">4</property>
+ <property name="spacing">4</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkButton" id="button4">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Flush cached items that are older than the maximum permitted age.</property>
+ <child>
+ <object class="GtkAlignment" id="alignment30">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox23">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image399">
+ <property name="visible">True</property>
+ <property name="stock">gtk-delete</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label106">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="label" translatable="yes">Perform maintainance</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label107">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Disc cache&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label108">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cache</property>
+ </object>
+ <packing>
+ <property name="position">4</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox_advanced">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame_downloads">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox4">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkClearDownloads">
+ <property name="label" translatable="yes">Automatically clear downloads when completed</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Erase the download from the list as soon as it completes.</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkRequestOverwrite">
+ <property name="label" translatable="yes">Request confirmation before overwriting files</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Ask before overwriting files when downloading.</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="xpad">2</property>
+ <property name="label" translatable="yes">Download directory</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFileChooserButton" id="fileChooserDownloads">
+ <property name="visible">True</property>
+ <property name="show_hidden">True</property>
+ <property name="action">select-folder</property>
+ <property name="width_chars">25</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Downloads&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_tabs">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment8">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="advanced_tabs_vbox">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkShowSingleTab">
+ <property name="label" translatable="yes">Show tab bar with only one tab</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkFocusNew">
+ <property name="label" translatable="yes">Shift focus to new tab</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkNewBlank">
+ <property name="label" translatable="yes">Open blank window</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox10">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label26">
+ <property name="visible">True</property>
+ <property name="xalign">0.4699999988079071</property>
+ <property name="xpad">2</property>
+ <property name="label" translatable="yes">Tabs position</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">2</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboTabPosition">
+ <property name="visible">True</property>
+ <property name="model">model4</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer4"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label21">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Tabs&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_view_source">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment10">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox11">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkRadioButton" id="sourceButtonWindow">
+ <property name="label" translatable="yes">in own window </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="sourceButtonTab">
+ <property name="label" translatable="yes">in new tab</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label24">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;View Source&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_search">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment9">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox9">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkUrlSearch">
+ <property name="label" translatable="yes">Search from URL bar </property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label23">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Default provider</property>
+ <property name="justify">right</property>
+ </object>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="comboSearch">
+ <property name="visible">True</property>
+ <property name="model">model5</property>
+ <child>
+ <object class="GtkCellRendererText" id="renderer5"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label22">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Search&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame_select_themes">
+ <property name="visible">True</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment11">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="themehbox">
+ <property name="visible">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonaddtheme">
+ <property name="label" translatable="yes">Add theme&#x2026;</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Select themes&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label109">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ </object>
+ <packing>
+ <property name="position">5</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox5">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkFrame" id="frame2">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment2">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label10">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">mm</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">mm</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMarginBottom">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set the bottom margin</property>
+ <property name="adjustment">adjustment10</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMarginTop">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set the top margin</property>
+ <property name="adjustment">adjustment11</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Bottom</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Top</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="table2">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">3</property>
+ <property name="column_spacing">4</property>
+ <property name="row_spacing">5</property>
+ <child>
+ <object class="GtkLabel" id="label12">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">mm</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label11">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">mm</property>
+ </object>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMarginRight">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set the right margin</property>
+ <property name="adjustment">adjustment12</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinMarginLeft">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set the left margin</property>
+ <property name="adjustment">adjustment13</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Right</property>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="xalign">0.89999997615814209</property>
+ <property name="label" translatable="yes">Left</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="frame">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Margins&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame3">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="visible">True</property>
+ <property name="spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="label14">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Scale</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="spinExportScale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip-text" translatable="yes">Set the scaling for the document - this way more content can fit in a page</property>
+ <property name="adjustment">adjustment14</property>
+ <property name="climb_rate">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label15">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">%</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label13">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Scaling&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame4">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment4">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox6">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkSuppressImages">
+ <property name="label" translatable="yes">Suppress images</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkRemoveBackgrounds">
+ <property name="label" translatable="yes">Remove backgrounds</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkFitPage">
+ <property name="label" translatable="yes">Fit page</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label16">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Appearance&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame5">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment5">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkVBox" id="vbox7">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkCheckButton" id="checkCompressPDF">
+ <property name="label" translatable="yes">Compress PDF</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="checkPasswordPDF">
+ <property name="label" translatable="yes">Set a password for PDF</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label17">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Advanced&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="border_width">10</property>
+ <child>
+ <object class="GtkButton" id="setDefaultExportOptions">
+ <property name="label" translatable="yes">Default</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip-text" translatable="yes">Reset export settings to defaults</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Export</property>
+ </object>
+ <packing>
+ <property name="position">6</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area7">
+ <property name="visible">True</property>
+ <property name="layout_style">edge</property>
+ <child>
+ <object class="GtkButton" id="help">
+ <property name="label">gtk-help</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="close">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-7">close</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/password.glade b/gtk/res/password.glade
deleted file mode 100644
index 27a16a085..000000000
--- a/gtk/res/password.glade
+++ /dev/null
@@ -1,443 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="wndPDFPassword">
- <property name="title" translatable="yes">PDF Password</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_CENTER</property>
- <property name="modal">True</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
-
- <child>
- <widget class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="icon_size">6</property>
- <property name="icon_name">gtk-dialog-authentication</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.10000000149</property>
- <property name="xpad">12</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="vbox1">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkHBox" id="hbox2">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Owner password</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.899999976158</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">15</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="entryPDFOwnerPassword">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">False</property>
- <property name="max_length">20</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">False</property>
- <property name="width_chars">20</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox3">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Repeat password</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.899999976158</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">15</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="entryPDFOwnerPassword1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">False</property>
- <property name="max_length">20</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">False</property>
- <property name="width_chars">20</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox4">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="label" translatable="yes">User password</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.899999976158</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">15</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="entryPDFUserPassword">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">False</property>
- <property name="max_length">20</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">False</property>
- <property name="width_chars">20</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="hbox5">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Repeat password</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.899999976158</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">15</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkEntry" id="entryPDFUserPassword1">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">False</property>
- <property name="max_length">20</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char">●</property>
- <property name="activates_default">False</property>
- <property name="width_chars">20</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHButtonBox" id="hbuttonbox1">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <property name="spacing">10</property>
-
- <child>
- <widget class="GtkButton" id="buttonPDFSetPassword">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkHBox" id="hbox7">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image7">
- <property name="visible">True</property>
- <property name="stock">gtk-dialog-authentication</property>
- <property name="icon_size">4</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Use these as passwords</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="buttonPDFNoPassword">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkAlignment" id="alignment1">
- <property name="visible">True</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xscale">1</property>
- <property name="yscale">1</property>
- <property name="top_padding">0</property>
- <property name="bottom_padding">0</property>
- <property name="left_padding">0</property>
- <property name="right_padding">0</property>
-
- <child>
- <widget class="GtkHBox" id="hbox6">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image8">
- <property name="visible">True</property>
- <property name="stock">gtk-cancel</property>
- <property name="icon_size">4</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="label9">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Do not set any passwords</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
-</glade-interface>
diff --git a/gtk/res/password.gtk2.ui b/gtk/res/password.gtk2.ui
new file mode 100644
index 000000000..eb51e4f8f
--- /dev/null
+++ b/gtk/res/password.gtk2.ui
@@ -0,0 +1,415 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkWindow" id="wndPDFPassword">
+ <property name="title" translatable="yes">PDF Password</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">True</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="icon_size">6</property>
+ <property name="icon_name">gtk-dialog-authentication</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.10000000149</property>
+ <property name="xpad">12</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Owner password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFOwnerPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Repeat password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFOwnerPassword1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">User password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFUserPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Repeat password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFUserPassword1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkButton" id="buttonPDFSetPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-authentication</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Use these as passwords</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonPDFNoPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-cancel</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Do not set any passwords</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/password.gtk3.ui b/gtk/res/password.gtk3.ui
new file mode 100644
index 000000000..eb51e4f8f
--- /dev/null
+++ b/gtk/res/password.gtk3.ui
@@ -0,0 +1,415 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkWindow" id="wndPDFPassword">
+ <property name="title" translatable="yes">PDF Password</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">True</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="icon_size">6</property>
+ <property name="icon_name">gtk-dialog-authentication</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.10000000149</property>
+ <property name="xpad">12</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Owner password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFOwnerPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox3">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Repeat password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFOwnerPassword1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox4">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">User password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFUserPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="hbox5">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Repeat password</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.899999976158</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">15</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="entryPDFUserPassword1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">False</property>
+ <property name="max_length">20</property>
+ <property name="text" translatable="yes"/>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">&#x25CF;</property>
+ <property name="activates_default">False</property>
+ <property name="width_chars">20</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkButton" id="buttonPDFSetPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image7">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-authentication</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Use these as passwords</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="buttonPDFNoPassword">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">1</property>
+ <property name="yscale">1</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image8">
+ <property name="visible">True</property>
+ <property name="stock">gtk-cancel</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label9">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Do not set any passwords</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/source.glade b/gtk/res/source.gtk2.ui
index 144179bb1..84c3e0cf5 100644
--- a/gtk/res/source.glade
+++ b/gtk/res/source.gtk2.ui
@@ -1,183 +1,185 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Mon Apr 20 21:28:45 2009 -->
-<glade-interface>
- <widget class="GtkWindow" id="wndSource">
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkWindow" id="wndSource">
<child>
- <widget class="GtkVBox" id="vbox1">
+ <object class="GtkVBox" id="vbox1">
<property name="visible">True</property>
+ <property name="orientation">vertical</property>
<child>
- <widget class="GtkMenuBar" id="menubar1">
+ <object class="GtkMenuBar" id="menubar1">
<property name="visible">True</property>
<child>
- <widget class="GtkMenuItem" id="menuitem1">
+ <object class="GtkMenuItem" id="menuitem1">
<property name="visible">True</property>
<property name="label" translatable="yes">_File</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu1">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu1">
<property name="visible">True</property>
<child>
- <widget class="GtkImageMenuItem" id="source_save_as">
+ <object class="GtkImageMenuItem" id="source_save_as">
+ <property name="label">gtk-save-as</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-save-as</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="S" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_print">
+ <object class="GtkImageMenuItem" id="source_print">
+ <property name="label">gtk-print</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-print</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="P" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="P" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
<child>
- <widget class="GtkSeparatorMenuItem" id="separatormenuitem1">
+ <object class="GtkSeparatorMenuItem" id="separatormenuitem1">
<property name="visible">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_close">
+ <object class="GtkImageMenuItem" id="source_close">
+ <property name="label">gtk-close</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-close</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem2">
+ <object class="GtkMenuItem" id="menuitem2">
<property name="visible">True</property>
<property name="label" translatable="yes">_Edit</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu2">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu2">
<property name="visible">True</property>
<child>
- <widget class="GtkImageMenuItem" id="source_select_all">
+ <object class="GtkImageMenuItem" id="source_select_all">
+ <property name="label">gtk-select-all</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-select-all</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="A" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_cut">
+ <object class="GtkImageMenuItem" id="source_cut">
+ <property name="label">gtk-cut</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-cut</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_copy">
+ <object class="GtkImageMenuItem" id="source_copy">
+ <property name="label">gtk-copy</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-copy</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_paste">
+ <object class="GtkImageMenuItem" id="source_paste">
+ <property name="label">gtk-paste</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-paste</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_delete">
+ <object class="GtkImageMenuItem" id="source_delete">
+ <property name="label">gtk-delete</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-delete</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="Delete" modifiers="" signal="activate"/>
- </widget>
+ <accelerator key="Delete" signal="activate"/>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem3">
+ <object class="GtkMenuItem" id="menuitem3">
<property name="visible">True</property>
<property name="label" translatable="yes">_View</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu4">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu4">
<property name="visible">True</property>
<child>
- <widget class="GtkImageMenuItem" id="source_zoom_in">
+ <object class="GtkImageMenuItem" id="source_zoom_in">
+ <property name="label">gtk-zoom-in</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-zoom-in</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="plus" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="plus" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_zoom_out">
+ <object class="GtkImageMenuItem" id="source_zoom_out">
+ <property name="label">gtk-zoom-out</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-zoom-out</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="minus" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="minus" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
<child>
- <widget class="GtkImageMenuItem" id="source_zoom_normal">
+ <object class="GtkImageMenuItem" id="source_zoom_normal">
+ <property name="label">gtk-zoom-100</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-zoom-100</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- <accelerator key="0" modifiers="GDK_CONTROL_MASK" signal="activate"/>
- </widget>
+ <accelerator key="0" signal="activate" modifiers="GDK_CONTROL_MASK"/>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkMenuItem" id="menuitem4">
+ <object class="GtkMenuItem" id="menuitem4">
<property name="visible">True</property>
<property name="label" translatable="yes">_Help</property>
<property name="use_underline">True</property>
- <child>
- <widget class="GtkMenu" id="menu3">
+ <child type="submenu">
+ <object class="GtkMenu" id="menu3">
<property name="visible">True</property>
<child>
- <widget class="GtkImageMenuItem" id="source_about">
+ <object class="GtkImageMenuItem" id="source_about">
+ <property name="label">gtk-about</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">gtk-about</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkScrolledWindow" id="sourcescrolled">
+ <object class="GtkScrolledWindow" id="sourcescrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="hscrollbar_policy">automatic</property>
+ <property name="vscrollbar_policy">automatic</property>
<child>
- <widget class="GtkTextView" id="source_view">
+ <object class="GtkTextView" id="source_view">
<property name="width_request">600</property>
<property name="height_request">400</property>
<property name="visible">True</property>
@@ -185,18 +187,18 @@
<property name="pixels_above_lines">1</property>
<property name="pixels_below_lines">1</property>
<property name="editable">False</property>
- <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="wrap_mode">word</property>
<property name="left_margin">3</property>
<property name="right_margin">3</property>
<property name="accepts_tab">False</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/source.gtk3.ui b/gtk/res/source.gtk3.ui
new file mode 100644
index 000000000..b972315d3
--- /dev/null
+++ b/gtk/res/source.gtk3.ui
@@ -0,0 +1,179 @@
+<?xml version="1.0"?>
+<!--Generated with glade3 3.4.5 on Mon Apr 20 21:28:45 2009 -->
+<interface>
+ <object class="GtkUIManager" id="uimanager1">
+ <child>
+ <object class="GtkActionGroup" id="actiongroup1">
+ <child>
+ <object class="GtkAction" id="menuitem1">
+ <property name="name">menuitem1</property>
+ <property name="label" translatable="yes">_File</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_save_as">
+ <property name="stock_id" translatable="yes">gtk-save-as</property>
+ <property name="name">source_save_as</property>
+ </object>
+ <accelerator key="S" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_print">
+ <property name="stock_id" translatable="yes">gtk-print</property>
+ <property name="name">source_print</property>
+ </object>
+ <accelerator key="P" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_close">
+ <property name="stock_id" translatable="yes">gtk-close</property>
+ <property name="name">source_close</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem2">
+ <property name="name">menuitem2</property>
+ <property name="label" translatable="yes">_Edit</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_select_all">
+ <property name="stock_id" translatable="yes">gtk-select-all</property>
+ <property name="name">source_select_all</property>
+ </object>
+ <accelerator key="A" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_cut">
+ <property name="stock_id" translatable="yes">gtk-cut</property>
+ <property name="name">source_cut</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_copy">
+ <property name="stock_id" translatable="yes">gtk-copy</property>
+ <property name="name">source_copy</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_paste">
+ <property name="stock_id" translatable="yes">gtk-paste</property>
+ <property name="name">source_paste</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_delete">
+ <property name="stock_id" translatable="yes">gtk-delete</property>
+ <property name="name">source_delete</property>
+ </object>
+ <accelerator key="Delete" modifiers=""/>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem3">
+ <property name="name">menuitem3</property>
+ <property name="label" translatable="yes">_View</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_zoom_in">
+ <property name="stock_id" translatable="yes">gtk-zoom-in</property>
+ <property name="name">source_zoom_in</property>
+ </object>
+ <accelerator key="plus" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_zoom_out">
+ <property name="stock_id" translatable="yes">gtk-zoom-out</property>
+ <property name="name">source_zoom_out</property>
+ </object>
+ <accelerator key="minus" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_zoom_normal">
+ <property name="stock_id" translatable="yes">gtk-zoom-100</property>
+ <property name="name">source_zoom_normal</property>
+ </object>
+ <accelerator key="0" modifiers="GDK_CONTROL_MASK"/>
+ </child>
+ <child>
+ <object class="GtkAction" id="menuitem4">
+ <property name="name">menuitem4</property>
+ <property name="label" translatable="yes">_Help</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkAction" id="source_about">
+ <property name="stock_id" translatable="yes">gtk-about</property>
+ <property name="name">source_about</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <ui>
+ <menubar name="menubar1">
+ <menu action="menuitem1">
+ <menuitem action="source_save_as"/>
+ <menuitem action="source_print"/>
+ <separator/>
+ <menuitem action="source_close"/>
+ </menu>
+ <menu action="menuitem2">
+ <menuitem action="source_select_all"/>
+ <menuitem action="source_cut"/>
+ <menuitem action="source_copy"/>
+ <menuitem action="source_paste"/>
+ <menuitem action="source_delete"/>
+ </menu>
+ <menu action="menuitem3">
+ <menuitem action="source_zoom_in"/>
+ <menuitem action="source_zoom_out"/>
+ <menuitem action="source_zoom_normal"/>
+ </menu>
+ <menu action="menuitem4">
+ <menuitem action="source_about"/>
+ </menu>
+ </menubar>
+ </ui>
+ </object>
+ <object class="GtkWindow" id="wndSource">
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkMenuBar" constructor="uimanager1" id="menubar1">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="sourcescrolled">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <child>
+ <object class="GtkTextView" id="source_view">
+ <property name="width_request">600</property>
+ <property name="height_request">400</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="pixels_above_lines">1</property>
+ <property name="pixels_below_lines">1</property>
+ <property name="editable">False</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="left_margin">3</property>
+ <property name="right_margin">3</property>
+ <property name="accepts_tab">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/ssl.glade b/gtk/res/ssl.gtk2.ui
index 5d0570987..90f449ddd 100644
--- a/gtk/res/ssl.glade
+++ b/gtk/res/ssl.gtk2.ui
@@ -1,8 +1,7 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<?xml version="1.0"?>
<!--*- mode: xml -*-->
-<glade-interface>
- <widget class="GtkDialog" id="wndSSLProblem">
+<interface>
+ <object class="GtkDialog" id="wndSSLProblem">
<property name="border_width">1</property>
<property name="title" translatable="yes">SSL certificate problem</property>
<property name="modal">True</property>
@@ -10,195 +9,194 @@
<property name="default_height">250</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox3">
+ <object class="GtkVBox" id="dialog-vbox3">
<property name="visible">True</property>
<child>
- <widget class="GtkHBox" id="hbox15">
+ <object class="GtkHBox" id="hbox15">
<property name="visible">True</property>
<child>
- <widget class="GtkImage" id="image6">
+ <object class="GtkImage" id="image6">
<property name="visible">True</property>
<property name="yalign">0</property>
<property name="icon_size">6</property>
<property name="icon_name">gtk-dialog-warning</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox13">
+ <object class="GtkVBox" id="vbox13">
<property name="visible">True</property>
<child>
- <widget class="GtkLabel" id="label62">
+ <object class="GtkLabel" id="label62">
<property name="visible">True</property>
<property name="label" translatable="yes">NetSurf failed to verify the authenticity of an SSL certificate. Please verify the details presented below.</property>
<property name="justify">GTK_JUSTIFY_CENTER</property>
<property name="wrap">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkFrame" id="frame13">
+ <object class="GtkFrame" id="frame13">
<property name="visible">True</property>
<property name="border_width">5</property>
<property name="label_xalign">0</property>
<child>
- <widget class="GtkAlignment" id="alignment17">
+ <object class="GtkAlignment" id="alignment17">
<property name="visible">True</property>
<property name="left_padding">12</property>
<child>
- <widget class="GtkScrolledWindow" id="SSLScrolled">
+ <object class="GtkScrolledWindow" id="SSLScrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
- <widget class="GtkViewport" id="SSLViewport">
+ <object class="GtkViewport" id="SSLViewport">
<property name="visible">True</property>
<property name="resize_mode">GTK_RESIZE_QUEUE</property>
<child>
- <widget class="GtkDrawingArea" id="SSLDrawingArea">
+ <object class="GtkDrawingArea" id="SSLDrawingArea">
<property name="visible">True</property>
<property name="app_paintable">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- <child>
- <widget class="GtkLabel" id="label63">
+ <child type="label">
+ <object class="GtkLabel" id="label63">
<property name="visible">True</property>
<property name="label" translatable="yes">&lt;b&gt;Certificate chain&lt;/b&gt;</property>
<property name="use_markup">True</property>
- </widget>
- <packing>
- <property name="type">label_item</property>
- </packing>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="position">2</property>
</packing>
</child>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area3">
+ <object class="GtkHButtonBox" id="dialog-action_area3">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="sslreject">
+ <object class="GtkButton" id="sslreject">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
- <property name="response_id">-6</property>
<child>
- <widget class="GtkAlignment" id="alignment16">
+ <object class="GtkAlignment" id="alignment16">
<property name="visible">True</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<child>
- <widget class="GtkHBox" id="hbox14">
+ <object class="GtkHBox" id="hbox14">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkImage" id="image5">
+ <object class="GtkImage" id="image5">
<property name="visible">True</property>
<property name="stock">gtk-cancel</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label61">
+ <object class="GtkLabel" id="label61">
<property name="visible">True</property>
<property name="label" translatable="yes">Reject</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkButton" id="sslaccept">
+ <object class="GtkButton" id="sslaccept">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
- <property name="response_id">-5</property>
<child>
- <widget class="GtkAlignment" id="alignment15">
+ <object class="GtkAlignment" id="alignment15">
<property name="visible">True</property>
<property name="xscale">0</property>
<property name="yscale">0</property>
<child>
- <widget class="GtkHBox" id="hbox13">
+ <object class="GtkHBox" id="hbox13">
<property name="visible">True</property>
<property name="spacing">2</property>
<child>
- <widget class="GtkImage" id="image4">
+ <object class="GtkImage" id="image4">
<property name="visible">True</property>
<property name="stock">gtk-apply</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label60">
+ <object class="GtkLabel" id="label60">
<property name="visible">True</property>
<property name="label" translatable="yes">Accept</property>
<property name="use_underline">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ <action-widgets>
+ <action-widget response="-6">sslreject</action-widget>
+ <action-widget response="-5">sslaccept</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/ssl.gtk3.ui b/gtk/res/ssl.gtk3.ui
new file mode 100644
index 000000000..90f449ddd
--- /dev/null
+++ b/gtk/res/ssl.gtk3.ui
@@ -0,0 +1,202 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkDialog" id="wndSSLProblem">
+ <property name="border_width">1</property>
+ <property name="title" translatable="yes">SSL certificate problem</property>
+ <property name="modal">True</property>
+ <property name="default_width">500</property>
+ <property name="default_height">250</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox3">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkHBox" id="hbox15">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkImage" id="image6">
+ <property name="visible">True</property>
+ <property name="yalign">0</property>
+ <property name="icon_size">6</property>
+ <property name="icon_name">gtk-dialog-warning</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox13">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkLabel" id="label62">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">NetSurf failed to verify the authenticity of an SSL certificate. Please verify the details presented below.</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="frame13">
+ <property name="visible">True</property>
+ <property name="border_width">5</property>
+ <property name="label_xalign">0</property>
+ <child>
+ <object class="GtkAlignment" id="alignment17">
+ <property name="visible">True</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkScrolledWindow" id="SSLScrolled">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <object class="GtkViewport" id="SSLViewport">
+ <property name="visible">True</property>
+ <property name="resize_mode">GTK_RESIZE_QUEUE</property>
+ <child>
+ <object class="GtkDrawingArea" id="SSLDrawingArea">
+ <property name="visible">True</property>
+ <property name="app_paintable">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label63">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">&lt;b&gt;Certificate chain&lt;/b&gt;</property>
+ <property name="use_markup">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area3">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="sslreject">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment16">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox14">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image5">
+ <property name="visible">True</property>
+ <property name="stock">gtk-cancel</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label61">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reject</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="sslaccept">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <child>
+ <object class="GtkAlignment" id="alignment15">
+ <property name="visible">True</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <child>
+ <object class="GtkHBox" id="hbox13">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkImage" id="image4">
+ <property name="visible">True</property>
+ <property name="stock">gtk-apply</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label60">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Accept</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="-6">sslreject</action-widget>
+ <action-widget response="-5">sslaccept</action-widget>
+ </action-widgets>
+ </object>
+</interface>
diff --git a/gtk/res/tabcontents.gtk2.ui b/gtk/res/tabcontents.gtk2.ui
new file mode 100644
index 000000000..1c7d99bc3
--- /dev/null
+++ b/gtk/res/tabcontents.gtk2.ui
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 2.12 -->
+ <!-- interface-naming-policy toplevel-contextual -->
+ <object class="GtkTable" id="tabContents">
+ <property name="visible">True</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <child>
+ <object class="GtkLayout" id="layout">
+ <property name="visible">True</property>
+ <property name="app_paintable">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="resizer">
+ <property name="height_request">1</property>
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkLabel" id="status_bar">
+ <property name="width_request">1</property>
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="xpad">4</property>
+ <property name="label" translatable="yes">Status</property>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHScrollbar" id="hscrollbar">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVScrollbar" id="vscrollbar">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options"></property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/tabcontents.gtk3.ui b/gtk/res/tabcontents.gtk3.ui
new file mode 100644
index 000000000..28d09e074
--- /dev/null
+++ b/gtk/res/tabcontents.gtk3.ui
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <object class="GtkGrid" id="tabContents">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">2</property>
+ <property name="column_spacing">2</property>
+ <child>
+ <object class="GtkLayout" id="layout">
+ <property name="visible">True</property>
+ <property name="app_paintable">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrollbar" id="vscrollbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="vexpand">True</property>
+ <property name="orientation">vertical</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkStatusbar" id="resizer">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">2</property>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="hpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel" id="status_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="xpad">4</property>
+ <property name="label" translatable="yes">Status</property>
+ <property name="single_line_mode">True</property>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrollbar" id="hscrollbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">1</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/toolbar.glade b/gtk/res/toolbar.glade
deleted file mode 100644
index 9e2a338b5..000000000
--- a/gtk/res/toolbar.glade
+++ /dev/null
@@ -1,206 +0,0 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="toolbarwindow">
- <property name="width_request">700</property>
- <property name="height_request">450</property>
- <property name="title" translatable="yes"></property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
-
- <child>
- <widget class="GtkVBox" id="windowvbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkLabel" id="toolbarlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Move items from store to toolbar Rearrange items in toolbar Move items from toolbar to store</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkScrolledWindow" id="scrolledwindow1">
- <property name="visible">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <widget class="GtkViewport" id="viewport1">
- <property name="visible">True</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
-
- <child>
- <widget class="GtkVBox" id="widgetvbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <placeholder/>
- </child>
- </widget>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkHBox" id="buttonhbox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkButton" id="resetbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
-
- <child>
- <widget class="GtkHBox" id="button1hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child>
- <widget class="GtkImage" id="image1">
- <property name="visible">True</property>
- <property name="stock">gtk-refresh</property>
- <property name="icon_size">4</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="refreshbuttonlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Reset to defaults</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">10</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <placeholder/>
- </child>
-
- <child>
- <widget class="GtkButton" id="okbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="label">gtk-apply</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">10</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkButton" id="cancelbutton">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- </child>
-</widget>
-
-</glade-interface>
diff --git a/gtk/res/toolbar.gtk2.ui b/gtk/res/toolbar.gtk2.ui
new file mode 100644
index 000000000..d84db5c8c
--- /dev/null
+++ b/gtk/res/toolbar.gtk2.ui
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkWindow" id="toolbarwindow">
+ <property name="width_request">700</property>
+ <property name="height_request">450</property>
+ <property name="title" translatable="yes"/>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <child>
+ <object class="GtkVBox" id="windowvbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="toolbarlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move items from store to toolbar Rearrange items in toolbar Move items from toolbar to store</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <object class="GtkVBox" id="widgetvbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="buttonhbox">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkButton" id="resetbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkHBox" id="button1hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-refresh</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="refreshbuttonlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reset to defaults</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="label">gtk-apply</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="cancelbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/toolbar.gtk3.ui b/gtk/res/toolbar.gtk3.ui
new file mode 100644
index 000000000..d84db5c8c
--- /dev/null
+++ b/gtk/res/toolbar.gtk3.ui
@@ -0,0 +1,189 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkWindow" id="toolbarwindow">
+ <property name="width_request">700</property>
+ <property name="height_request">450</property>
+ <property name="title" translatable="yes"/>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <child>
+ <object class="GtkVBox" id="windowvbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="toolbarlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Move items from store to toolbar Rearrange items in toolbar Move items from toolbar to store</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+ <child>
+ <object class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <child>
+ <object class="GtkVBox" id="widgetvbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHBox" id="buttonhbox">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkButton" id="resetbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <child>
+ <object class="GtkHBox" id="button1hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <child>
+ <object class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-refresh</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="refreshbuttonlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Reset to defaults</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <object class="GtkButton" id="okbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="label">gtk-apply</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="cancelbutton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/res/warning.glade b/gtk/res/warning.gtk2.ui
index edfa18076..e4fb4e662 100644
--- a/gtk/res/warning.glade
+++ b/gtk/res/warning.gtk2.ui
@@ -1,50 +1,49 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<?xml version="1.0"?>
<!--*- mode: xml -*-->
-<glade-interface>
- <widget class="GtkWindow" id="wndWarning">
+<interface>
+ <object class="GtkWindow" id="wndWarning">
<property name="title" translatable="yes">Warning from NetSurf</property>
<property name="window_position">GTK_WIN_POS_CENTER</property>
<property name="icon_name">gtk-dialog-warning</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="urgency_hint">True</property>
<child>
- <widget class="GtkVBox" id="vbox32">
+ <object class="GtkVBox" id="vbox32">
<property name="visible">True</property>
<property name="border_width">2</property>
<child>
- <widget class="GtkHBox" id="hbox30">
+ <object class="GtkHBox" id="hbox30">
<property name="visible">True</property>
<property name="border_width">3</property>
<child>
- <widget class="GtkImage" id="image519">
+ <object class="GtkImage" id="image519">
<property name="visible">True</property>
<property name="xpad">12</property>
<property name="icon_size">6</property>
<property name="icon_name">gtk-dialog-warning</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="labelWarning">
+ <object class="GtkLabel" id="labelWarning">
<property name="visible">True</property>
<property name="label" translatable="yes">Help help help! I'm being held prisoner by a bunch of RISC OS zealots!</property>
<property name="wrap">True</property>
- </widget>
+ </object>
<packing>
<property name="padding">1</property>
<property name="position">1</property>
</packing>
</child>
- </widget>
+ </object>
</child>
<child>
- <widget class="GtkHSeparator" id="hseparator2">
+ <object class="GtkHSeparator" id="hseparator2">
<property name="visible">True</property>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="padding">3</property>
@@ -52,28 +51,27 @@
</packing>
</child>
<child>
- <widget class="GtkHButtonBox" id="hbuttonbox2">
+ <object class="GtkHButtonBox" id="hbuttonbox2">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="button14">
+ <object class="GtkButton" id="button14">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_default">True</property>
<property name="label">gtk-ok</property>
<property name="use_stock">True</property>
- <property name="response_id">0</property>
- <signal name="clicked" handler="gtk_widget_hide" object="wndWarning"/>
- </widget>
+ <signal handler="gtk_widget_hide" name="clicked" object="wndWarning"/>
+ </object>
</child>
- </widget>
+ </object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
- </widget>
+ </object>
</child>
- </widget>
-</glade-interface>
+ </object>
+</interface>
diff --git a/gtk/res/warning.gtk3.ui b/gtk/res/warning.gtk3.ui
new file mode 100644
index 000000000..e4fb4e662
--- /dev/null
+++ b/gtk/res/warning.gtk3.ui
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--*- mode: xml -*-->
+<interface>
+ <object class="GtkWindow" id="wndWarning">
+ <property name="title" translatable="yes">Warning from NetSurf</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="icon_name">gtk-dialog-warning</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="urgency_hint">True</property>
+ <child>
+ <object class="GtkVBox" id="vbox32">
+ <property name="visible">True</property>
+ <property name="border_width">2</property>
+ <child>
+ <object class="GtkHBox" id="hbox30">
+ <property name="visible">True</property>
+ <property name="border_width">3</property>
+ <child>
+ <object class="GtkImage" id="image519">
+ <property name="visible">True</property>
+ <property name="xpad">12</property>
+ <property name="icon_size">6</property>
+ <property name="icon_name">gtk-dialog-warning</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="labelWarning">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Help help help! I'm being held prisoner by a bunch of RISC OS zealots!</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="padding">1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="hseparator2">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">3</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="button14">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <signal handler="gtk_widget_hide" name="clicked" object="wndWarning"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c
index 34e0d514b..f09dc446c 100644
--- a/gtk/scaffolding.c
+++ b/gtk/scaffolding.c
@@ -88,8 +88,6 @@
#include "utils/log.h"
-/** Obtain a GTK widget handle from glade xml object */
-#define GET_WIDGET(x) glade_xml_get_widget(g->xml, (x))
/** Macro to define a handler for menu, button and activate events. */
#define MULTIHANDLER(q)\
@@ -139,7 +137,7 @@ struct gtk_scaffolding {
int toolbarbase;
int historybase;
- GladeXML *xml;
+ GtkBuilder *xml;
struct gtk_history_window *history_window;
GtkDialog *preferences_dialog;
@@ -565,8 +563,9 @@ MULTIHANDLER(newtab)
if (nsoption_bool(new_blank)) {
browser_window_create(NULL, bw, NULL, false, true);
GtkWidget *window = gtk_notebook_get_nth_page(g->notebook, -1);
- gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &((GdkColor)
- {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF}));
+ nsgtk_widget_override_background_color(window,
+ GTK_STATE_NORMAL,
+ 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
} else {
const char *url = nsoption_charp(homepage_url);
@@ -1285,8 +1284,10 @@ MULTIHANDLER(savedomtree)
if (bw->current_content &&
content_get_type(bw->current_content) ==
CONTENT_HTML) {
+#ifdef FIXME
xmlDebugDumpDocument(fh,
html_get_document(bw->current_content));
+#endif
}
fclose(fh);
@@ -1409,7 +1410,7 @@ MULTIHANDLER(localhistory)
gtk_widget_show(GTK_WIDGET(g->history_window->window));
gtk_window_move(g->history_window->window, x + g->historybase, y +
g->toolbarbase);
- gdk_window_raise(GTK_WIDGET(g->history_window->window)->window);
+ gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(g->history_window->window)));
return TRUE;
}
@@ -1417,7 +1418,7 @@ MULTIHANDLER(localhistory)
MULTIHANDLER(globalhistory)
{
gtk_widget_show(GTK_WIDGET(wndHistory));
- gdk_window_raise(GTK_WIDGET(wndHistory)->window);
+ gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(wndHistory)));
return TRUE;
}
@@ -1436,7 +1437,7 @@ MULTIHANDLER(addbookmarks)
MULTIHANDLER(showbookmarks)
{
gtk_widget_show(GTK_WIDGET(wndHotlist));
- gdk_window_raise(GTK_WIDGET(wndHotlist)->window);
+ gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(wndHotlist)));
gtk_window_set_focus(wndHotlist, NULL);
return TRUE;
@@ -1445,7 +1446,7 @@ MULTIHANDLER(showbookmarks)
MULTIHANDLER(showcookies)
{
gtk_widget_show(GTK_WIDGET(wndCookies));
- gdk_window_raise(GTK_WIDGET(wndCookies)->window);
+ gdk_window_raise(gtk_widget_get_window(GTK_WIDGET(wndCookies)));
return TRUE;
}
@@ -1519,10 +1520,49 @@ BUTTONHANDLER(history)
#undef CHECKHANDLER
#undef BUTTONHANDLER
+#if GTK_CHECK_VERSION(3,0,0)
+
+static gboolean
+nsgtk_history_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
+{
+ struct rect clip;
+ struct gtk_history_window *hw = (struct gtk_history_window *)data;
+ struct browser_window *bw =
+ nsgtk_get_browser_window(hw->g->top_level);
+
+ struct redraw_context ctx = {
+ .interactive = true,
+ .background_images = true,
+ .plot = &nsgtk_plotters
+ };
+ double x1;
+ double y1;
+ double x2;
+ double y2;
+
+ current_widget = widget;
+ current_cr = cr;
+
+ cairo_clip_extents(cr, &x1, &y1, &x2, &y2);
+
+ clip.x0 = x1;
+ clip.y0 = y1;
+ clip.x1 = x2;
+ clip.y1 = y2;
+
+ ctx.plot->clip(&clip);
+
+ history_redraw(bw->history, &ctx);
+
+ current_widget = NULL;
+
+ return FALSE;
+}
+#else
/* signal handler functions for the local history window */
-static gboolean nsgtk_history_expose_event(GtkWidget *widget,
- GdkEventExpose *event, gpointer g)
+static gboolean
+nsgtk_history_draw_event(GtkWidget *widget, GdkEventExpose *event, gpointer g)
{
struct rect clip;
struct gtk_history_window *hw = (struct gtk_history_window *)g;
@@ -1537,7 +1577,7 @@ static gboolean nsgtk_history_expose_event(GtkWidget *widget,
current_widget = widget;
- current_cr = gdk_cairo_create(widget->window);
+ current_cr = gdk_cairo_create(gtk_widget_get_window(widget));
clip.x0 = event->area.x;
clip.y0 = event->area.y;
@@ -1547,13 +1587,14 @@ static gboolean nsgtk_history_expose_event(GtkWidget *widget,
history_redraw(bw->history, &ctx);
- current_widget = NULL;
-
cairo_destroy(current_cr);
+ current_widget = NULL;
+
return FALSE;
}
+#endif /* GTK_CHECK_VERSION(3,0,0) */
static gboolean nsgtk_history_button_press_event(GtkWidget *widget,
GdkEventButton *event, gpointer g)
@@ -1654,6 +1695,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
char *searchname;
int i;
GtkAccelGroup *group;
+ GError* error = NULL;
if (g == NULL) {
warn_user("NoMemory", 0);
@@ -1669,9 +1711,18 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
/* load the window template from the glade xml file, and extract
* widget references from it for later use.
*/
- g->xml = glade_xml_new(glade_file_location->netsurf,
- "wndBrowser", NULL);
- glade_xml_signal_autoconnect(g->xml);
+ g->xml = gtk_builder_new();
+ if (!gtk_builder_add_from_file(g->xml, glade_file_location->netsurf, &error)) {
+ g_warning("Couldn't load builder file: \"%s\"", error->message);
+ g_error_free (error);
+ return NULL;
+ }
+
+ gtk_builder_connect_signals(g->xml, NULL);
+
+/** Obtain a GTK widget handle from glade xml object */
+#define GET_WIDGET(x) GTK_WIDGET (gtk_builder_get_object(g->xml, (x)))
+
g->window = GTK_WINDOW(GET_WIDGET("wndBrowser"));
g->notebook = GTK_NOTEBOOK(GET_WIDGET("notebook"));
g->tool_bar = GTK_TOOLBAR(GET_WIDGET("toolbar"));
@@ -1694,7 +1745,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
g->search->checkAll = GTK_CHECK_BUTTON(GET_WIDGET("checkAllSearch"));
g->search->caseSens = GTK_CHECK_BUTTON(GET_WIDGET("caseSensButton"));
-
+#undef GET_WIDGET
for (i = BACK_BUTTON; i < PLACEHOLDER_BUTTON; i++) {
g->buttons[i] = malloc(sizeof(struct nsgtk_button_connect));
@@ -1724,7 +1775,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
group = gtk_accel_group_new();
gtk_window_add_accel_group(g->window, group);
- g->menu_bar = nsgtk_menu_bar_create(GTK_MENU_SHELL(glade_xml_get_widget(g->xml, "menubar")), group);
+ g->menu_bar = nsgtk_menu_bar_create(GTK_MENU_SHELL(gtk_builder_get_object(g->xml, "menubar")), group);
g->preferences_dialog = NULL;
@@ -1838,9 +1889,9 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
GDK_EXPOSURE_MASK |
GDK_POINTER_MOTION_MASK |
GDK_BUTTON_PRESS_MASK);
- gtk_widget_modify_bg(GTK_WIDGET(g->history_window->drawing_area),
+ nsgtk_widget_override_background_color(GTK_WIDGET(g->history_window->drawing_area),
GTK_STATE_NORMAL,
- &((GdkColor) { 0, 0xffff, 0xffff, 0xffff } ));
+ 0, 0xffff, 0xffff, 0xffff);
gtk_scrolled_window_add_with_viewport(g->history_window->scrolled,
GTK_WIDGET(g->history_window->drawing_area));
gtk_widget_show(GTK_WIDGET(g->history_window->drawing_area));
@@ -1868,8 +1919,9 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel)
g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
/* connect history window signals to their handlers */
- CONNECT(g->history_window->drawing_area, "expose_event",
- nsgtk_history_expose_event, g->history_window);
+ nsgtk_connect_draw_event(GTK_WIDGET(g->history_window->drawing_area),
+ G_CALLBACK(nsgtk_history_draw_event),
+ g->history_window);
/*CONNECT(g->history_window->drawing_area, "motion_notify_event",
nsgtk_history_motion_notify_event, g->history_window);*/
CONNECT(g->history_window->drawing_area, "button_press_event",
diff --git a/gtk/scaffolding.h b/gtk/scaffolding.h
index 4769ad8df..cf75f0af3 100644
--- a/gtk/scaffolding.h
+++ b/gtk/scaffolding.h
@@ -20,7 +20,7 @@
#define NETSURF_GTK_SCAFFOLDING_H 1
#include <gtk/gtk.h>
-#include <glade/glade.h>
+//#include <glade/glade.h>
#include <glib.h>
#include "desktop/gui.h"
diff --git a/gtk/search.c b/gtk/search.c
index fc2f3f2c3..1c002d523 100644
--- a/gtk/search.c
+++ b/gtk/search.c
@@ -20,10 +20,12 @@
/** \file
* Free text search (front component)
*/
+#include <stdint.h>
#include <ctype.h>
#include <string.h>
#include <gdk/gdkkeysyms.h>
+#include "gtk/compat.h"
#include "gtk/search.h"
#include "gtk/scaffolding.h"
#include "gtk/window.h"
@@ -37,7 +39,6 @@
#include "desktop/selection.h"
#include "render/box.h"
#include "render/html.h"
-#include "utils/config.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
@@ -171,7 +172,7 @@ gboolean nsgtk_search_entry_activate(GtkWidget *widget, gpointer data)
gboolean nsgtk_search_entry_key(GtkWidget *widget, GdkEventKey *event,
gpointer data)
{
- if (event->keyval == GDK_Escape) {
+ if (event->keyval == GDK_KEY(Escape)) {
struct gtk_scaffolding *g = (struct gtk_scaffolding *)data;
nsgtk_scaffolding_toggle_search_bar_visibility(g);
}
diff --git a/gtk/tabs.c b/gtk/tabs.c
index 13f6d393d..b258a20ad 100644
--- a/gtk/tabs.c
+++ b/gtk/tabs.c
@@ -16,8 +16,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <glade/glade.h>
+#include <stdint.h>
#include <string.h>
+
+#include "gtk/compat.h"
#include "gtk/window.h"
#include "gtk/gui.h"
#include "desktop/browser.h"
@@ -37,10 +39,16 @@ static void nsgtk_tab_update_size(GtkWidget *hbox, GtkStyle *previous_style,
PangoFontMetrics *metrics;
PangoContext *context;
int char_width, h, w;
+ GtkStyleContext *style;
+ GtkStateFlags state;
+
+ state = nsgtk_widget_get_state_flags(hbox);
+ style = nsgtk_widget_get_style_context(hbox);
context = gtk_widget_get_pango_context(hbox);
- metrics = pango_context_get_metrics(context, hbox->style->font_desc,
- pango_context_get_language(context));
+ metrics = pango_context_get_metrics(context,
+ nsgtk_style_context_get_font(style, state),
+ pango_context_get_language(context));
char_width = pango_font_metrics_get_approximate_digit_width(metrics);
pango_font_metrics_unref(metrics);
@@ -59,9 +67,8 @@ static void nsgtk_tab_update_size(GtkWidget *hbox, GtkStyle *previous_style,
static GtkWidget *nsgtk_tab_label_setup(struct gui_window *window)
{
GtkWidget *hbox, *label, *button, *close;
- GtkRcStyle *rcstyle;
- hbox = gtk_hbox_new(FALSE, 2);
+ hbox = nsgtk_hbox_new(FALSE, 2);
if (nsoption_bool(new_blank) == true)
label = gtk_label_new("New Tab");
@@ -81,10 +88,13 @@ static GtkWidget *nsgtk_tab_label_setup(struct gui_window *window)
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
gtk_widget_set_tooltip_text(button, "Close this tab.");
+#ifdef FIXME
+ GtkRcStyle *rcstyle;
rcstyle = gtk_rc_style_new();
rcstyle->xthickness = rcstyle->ythickness = 0;
gtk_widget_modify_style(button, rcstyle);
g_object_unref(rcstyle);
+#endif
g_signal_connect_swapped(button, "clicked",
G_CALLBACK(nsgtk_window_destroy_browser), window);
diff --git a/gtk/theme.c b/gtk/theme.c
index 26206110e..a8c33225c 100644
--- a/gtk/theme.c
+++ b/gtk/theme.c
@@ -254,7 +254,7 @@ void nsgtk_theme_add(const char *themename)
}
g_signal_connect_swapped(notification, "response",
G_CALLBACK(gtk_widget_destroy), notification);
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(notification)->vbox), label);
+ gtk_container_add(GTK_CONTAINER(gtk_dialog_get_action_area(GTK_DIALOG(notification))), label);
gtk_widget_show_all(notification);
/* update combo */
diff --git a/gtk/toolbar.c b/gtk/toolbar.c
index 7fa2764df..0e5ef4e1d 100644
--- a/gtk/toolbar.c
+++ b/gtk/toolbar.c
@@ -43,7 +43,7 @@ struct nsgtk_toolbar_custom_store {
GtkWidget *widgetvbox;
GtkWidget *currentbar;
char numberh; /* current horizontal location while adding */
- GladeXML *glade; /* button widgets to store */
+ GtkBuilder *glade; /* button widgets to store */
int buttonlocations[PLACEHOLDER_BUTTON];
int currentbutton;
bool fromstore;
@@ -123,10 +123,10 @@ void nsgtk_toolbar_customization_init(nsgtk_scaffolding *g)
nsgtk_window_get_signalhandler(
nsgtk_scaffolding_top_level(list),
NSGTK_WINDOW_SIGNAL_REDRAW));
- gtk_widget_modify_bg(GTK_WIDGET(nsgtk_window_get_layout(
+ nsgtk_widget_override_background_color(
+ GTK_WIDGET(nsgtk_window_get_layout(
nsgtk_scaffolding_top_level(list))),
- GTK_STATE_NORMAL, &((GdkColor)
- {0, 0xEEEE, 0xEEEE, 0xEEEE}));
+ GTK_STATE_NORMAL, 0, 0xEEEE, 0xEEEE, 0xEEEE);
if (list == g) {
list = nsgtk_scaffolding_iterate(list);
@@ -188,6 +188,7 @@ void nsgtk_toolbar_customization_init(nsgtk_scaffolding *g)
void nsgtk_toolbar_window_open(nsgtk_scaffolding *g)
{
int x = 0, y = 0;
+ GError* error = NULL;
struct nsgtk_theme *theme =
nsgtk_theme_load(GTK_ICON_SIZE_LARGE_TOOLBAR);
if (theme == NULL) {
@@ -195,22 +196,29 @@ void nsgtk_toolbar_window_open(nsgtk_scaffolding *g)
nsgtk_toolbar_cancel_clicked(NULL, g);
return;
}
- window->glade = glade_xml_new(glade_file_location->toolbar,
- "toolbarwindow", NULL);
- if (window->glade == NULL) {
+
+ window->glade = gtk_builder_new();
+ if (!gtk_builder_add_from_file(window->glade,
+ glade_file_location->toolbar,
+ &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free (error);
warn_user(messages_get("NoMemory"), 0);
nsgtk_toolbar_cancel_clicked(NULL, g);
+ return;
}
- glade_xml_signal_autoconnect(window->glade);
- window->window = glade_xml_get_widget(window->glade, "toolbarwindow");
+ gtk_builder_connect_signals(window->glade, NULL);
+
+ window->window = GTK_WIDGET(gtk_builder_get_object(window->glade, "toolbarwindow"));
if (window->window == NULL) {
warn_user(messages_get("NoMemory"), 0);
nsgtk_toolbar_cancel_clicked(NULL, g);
free(theme);
return;
}
- window->widgetvbox = glade_xml_get_widget(window->glade, "widgetvbox");
+
+ window->widgetvbox = GTK_WIDGET(gtk_builder_get_object(window->glade, "widgetvbox"));
if (window->widgetvbox == NULL) {
warn_user(messages_get("NoMemory"), 0);
nsgtk_toolbar_cancel_clicked(NULL, g);
@@ -251,12 +259,14 @@ void nsgtk_toolbar_window_open(nsgtk_scaffolding *g)
GTK_WIN_POS_CENTER_ON_PARENT);
gtk_window_get_position(nsgtk_scaffolding_window(g), &x, &y);
gtk_window_move(GTK_WINDOW(window->window), x, y + 100);
- g_signal_connect(glade_xml_get_widget(window->glade, "cancelbutton"),
- "clicked", G_CALLBACK(
- nsgtk_toolbar_cancel_clicked), g);
- g_signal_connect(glade_xml_get_widget(window->glade, "okbutton"),
+ g_signal_connect(GTK_WIDGET(gtk_builder_get_object(window->glade, "cancelbutton")),
+ "clicked",
+ G_CALLBACK(nsgtk_toolbar_cancel_clicked),
+ g);
+
+ g_signal_connect(GTK_WIDGET(gtk_builder_get_object(window->glade, "okbutton")),
"clicked", G_CALLBACK(nsgtk_toolbar_persist), g);
- g_signal_connect(glade_xml_get_widget(window->glade, "resetbutton"),
+ g_signal_connect(GTK_WIDGET(gtk_builder_get_object(window->glade, "resetbutton")),
"clicked", G_CALLBACK(nsgtk_toolbar_reset), g);
g_signal_connect(window->window, "delete-event",
G_CALLBACK(nsgtk_toolbar_delete), g);
@@ -396,10 +406,7 @@ void nsgtk_toolbar_close(nsgtk_scaffolding *g)
gtk_widget_show_all(GTK_WIDGET(nsgtk_scaffolding_toolbar(
list)));
nsgtk_scaffolding_set_sensitivity(list);
- gtk_widget_modify_bg(GTK_WIDGET(nsgtk_window_get_layout(
- nsgtk_scaffolding_top_level(list))),
- GTK_STATE_NORMAL, &((GdkColor)
- {0, 0xFFFF, 0xFFFF, 0xFFFF}));
+ nsgtk_widget_override_background_color(GTK_WIDGET(nsgtk_window_get_layout(nsgtk_scaffolding_top_level(list))), GTK_STATE_NORMAL, 0, 0xFFFF, 0xFFFF, 0xFFFF);
g_signal_handler_unblock(GTK_WIDGET(
nsgtk_window_get_layout(
nsgtk_scaffolding_top_level(list))),
@@ -1044,8 +1051,9 @@ void nsgtk_toolbar_customization_load(nsgtk_scaffolding *g)
return;
}
val = fgets(buffer, sizeof buffer, f);
- if (val == NULL)
+ if (val == NULL) {
LOG(("empty read toolbar settings"));
+ }
fclose(f);
i = BACK_BUTTON;
ii = BACK_BUTTON;
diff --git a/gtk/treeview.c b/gtk/treeview.c
index 7e690e7db..ca936ef5f 100644
--- a/gtk/treeview.c
+++ b/gtk/treeview.c
@@ -22,14 +22,16 @@
*/
#include <assert.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
#include <stdio.h>
#include <limits.h>
+#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
#include "desktop/tree.h"
#include "desktop/tree_url_node.h"
#include "desktop/plotters.h"
+#include "gtk/compat.h"
#include "gtk/gui.h"
#include "gtk/plotters.h"
#include "gtk/treeview.h"
@@ -164,9 +166,40 @@ static void nsgtk_tree_get_window_dimensions(int *width, int *height, void *data
}
}
+#if GTK_CHECK_VERSION(3,0,0)
+
+static gboolean
+nsgtk_tree_window_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
+{
+ struct tree *tree = (struct tree *)data;
+ struct redraw_context ctx = {
+ .interactive = true,
+ .background_images = true,
+ .plot = &nsgtk_plotters
+ };
+ double x1;
+ double y1;
+ double x2;
+ double y2;
+
+ current_widget = widget;
+ current_cr = cr;
+
+ cairo_clip_extents(cr, &x1, &y1, &x2, &y2);
+
+ tree_set_redraw(tree, true);
+ tree_draw(tree, 0, 0, x1, y1, x2 - x1, y2 - y1, &ctx);
+
+ current_widget = NULL;
+
+ return FALSE;
+}
+
+#else
+
/* signal handler functions for a tree window */
-gboolean nsgtk_tree_window_expose_event(GtkWidget *widget,
- GdkEventExpose *event, gpointer g)
+static gboolean
+nsgtk_tree_window_draw_event(GtkWidget *widget, GdkEventExpose *event, gpointer g)
{
struct tree *tree = (struct tree *) g;
struct redraw_context ctx = {
@@ -182,7 +215,7 @@ gboolean nsgtk_tree_window_expose_event(GtkWidget *widget,
height = event->area.height;
current_widget = widget;
- current_cr = gdk_cairo_create(widget->window);
+ current_cr = gdk_cairo_create(gtk_widget_get_window(widget));
tree_set_redraw(tree, true);
tree_draw(tree, 0, 0, x, y, width, height, &ctx);
@@ -193,6 +226,8 @@ gboolean nsgtk_tree_window_expose_event(GtkWidget *widget,
return FALSE;
}
+#endif
+
void nsgtk_tree_window_hide(GtkWidget *widget, gpointer g)
{
struct nsgtk_treeview *tw = g;
@@ -382,81 +417,85 @@ gboolean nsgtk_tree_window_keypress_event(GtkWidget *widget, GdkEventKey *event,
edited = tree_is_edited(tree);
switch (event->keyval) {
- case GDK_Home:
- case GDK_KP_Home:
+ case GDK_KEY(Home):
+ case GDK_KEY(KP_Home):
if (edited)
break;
scroll = vscroll;
- value = scroll->lower;
+ value = gtk_adjustment_get_lower(scroll);
break;
- case GDK_End:
- case GDK_KP_End:
+ case GDK_KEY(End):
+ case GDK_KEY(KP_End):
if (edited)
break;
scroll = vscroll;
- value = scroll->upper - vpage;
- if (value < scroll->lower)
- value = scroll->lower;
+ value = gtk_adjustment_get_upper(scroll) - vpage;
+ if (value < gtk_adjustment_get_lower(scroll))
+ value = gtk_adjustment_get_lower(scroll);
break;
- case GDK_Left:
- case GDK_KP_Left:
+ case GDK_KEY(Left):
+ case GDK_KEY(KP_Left):
if (edited)
break;
scroll = hscroll;
value = gtk_adjustment_get_value(scroll) -
- scroll->step_increment;
- if (value < scroll->lower)
- value = scroll->lower;
+ gtk_adjustment_get_step_increment(scroll);
+ if (value < gtk_adjustment_get_lower(scroll))
+ value = gtk_adjustment_get_lower(scroll);
break;
- case GDK_Up:
- case GDK_KP_Up:
+ case GDK_KEY(Up):
+ case GDK_KEY(KP_Up):
scroll = vscroll;
value = gtk_adjustment_get_value(scroll) -
- scroll->step_increment;
- if (value < scroll->lower)
- value = scroll->lower;
+ gtk_adjustment_get_step_increment(scroll);
+ if (value < gtk_adjustment_get_lower(scroll))
+ value = gtk_adjustment_get_lower(scroll);
break;
- case GDK_Right:
- case GDK_KP_Right:
+ case GDK_KEY(Right):
+ case GDK_KEY(KP_Right):
if (edited)
break;
scroll = hscroll;
value = gtk_adjustment_get_value(scroll) +
- scroll->step_increment;
- if (value > scroll->upper - hpage)
- value = scroll->upper - hpage;
+ gtk_adjustment_get_step_increment(scroll);
+ if (value > gtk_adjustment_get_upper(scroll) - hpage)
+ value = gtk_adjustment_get_upper(scroll) - hpage;
break;
- case GDK_Down:
- case GDK_KP_Down:
+ case GDK_KEY(Down):
+ case GDK_KEY(KP_Down):
scroll = vscroll;
value = gtk_adjustment_get_value(scroll) +
- scroll->step_increment;
- if (value > scroll->upper - vpage)
- value = scroll->upper - vpage;
+ gtk_adjustment_get_step_increment(scroll);
+ if (value > gtk_adjustment_get_upper(scroll) - vpage)
+ value = gtk_adjustment_get_upper(scroll) - vpage;
break;
- case GDK_Page_Up:
- case GDK_KP_Page_Up:
+ case GDK_KEY(Page_Up):
+ case GDK_KEY(KP_Page_Up):
scroll = vscroll;
value = gtk_adjustment_get_value(scroll) -
- scroll->page_increment;
- if (value < scroll->lower)
- value = scroll->lower;
+ gtk_adjustment_get_page_increment(scroll);
+
+ if (value < gtk_adjustment_get_lower(scroll))
+ value = gtk_adjustment_get_lower(scroll);
+
break;
- case GDK_Page_Down:
- case GDK_KP_Page_Down:
+ case GDK_KEY(Page_Down):
+ case GDK_KEY(KP_Page_Down):
scroll = vscroll;
value = gtk_adjustment_get_value(scroll) +
- scroll->page_increment;
- if (value > scroll->upper - vpage)
- value = scroll->upper - vpage;
+ gtk_adjustment_get_page_increment(scroll);
+
+ if (value > gtk_adjustment_get_upper(scroll) - vpage)
+ value = gtk_adjustment_get_upper(scroll) - vpage;
break;
+
default:
tree_keypress(tree, nskey);
return TRUE;
@@ -483,6 +522,8 @@ struct nsgtk_treeview *nsgtk_treeview_create(unsigned int flags,
{
struct nsgtk_treeview *tv;
+ assert(drawing_area != NULL);
+
tv = malloc(sizeof(struct nsgtk_treeview));
if (tv == NULL) {
LOG(("malloc failed"));
@@ -497,15 +538,14 @@ struct nsgtk_treeview *nsgtk_treeview_create(unsigned int flags,
tv->mouse_state = 0;
tv->mouse_pressed = false;
- gtk_widget_modify_bg(GTK_WIDGET(drawing_area), GTK_STATE_NORMAL,
- &((GdkColor) { 0, 0xffff, 0xffff, 0xffff } ));
+ nsgtk_widget_override_background_color(GTK_WIDGET(drawing_area),
+ GTK_STATE_NORMAL,
+ 0, 0xffff, 0xffff, 0xffff);
+
+ nsgtk_connect_draw_event(GTK_WIDGET(drawing_area), G_CALLBACK(nsgtk_tree_window_draw_event), tv->tree);
#define CONNECT(obj, sig, callback, ptr) \
g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
-
- CONNECT(drawing_area, "expose_event",
- nsgtk_tree_window_expose_event,
- tv->tree);
CONNECT(drawing_area, "button_press_event",
nsgtk_tree_window_button_press_event,
tv);
diff --git a/gtk/window.c b/gtk/window.c
index 14a17df40..bf5f022da 100644
--- a/gtk/window.c
+++ b/gtk/window.c
@@ -22,7 +22,9 @@
#include <limits.h>
#include <assert.h>
+#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
#include "content/hlcache.h"
#include "gtk/window.h"
@@ -43,6 +45,8 @@
#include "utils/log.h"
#include "utils/utils.h"
+extern const GdkPixdata menu_cursor_pixdata;
+
struct gui_window {
/** The gtk scaffold object containing menu, buttons, url bar, [tabs],
* drawing area, etc that may contain one or more gui_windows.
@@ -143,10 +147,12 @@ float nsgtk_get_scale_for_gui(struct gui_window *g)
return g->bw->scale;
}
-static gboolean nsgtk_window_expose_event(GtkWidget *widget,
- GdkEventExpose *event, gpointer data)
+#if GTK_CHECK_VERSION(3,0,0)
+
+static gboolean
+nsgtk_window_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
{
- struct gui_window *g = data;
+ struct gui_window *gw = data;
struct gui_window *z;
struct rect clip;
struct redraw_context ctx = {
@@ -155,34 +161,85 @@ static gboolean nsgtk_window_expose_event(GtkWidget *widget,
.plot = &nsgtk_plotters
};
- assert(g);
- assert(g->bw);
+ double x1;
+ double y1;
+ double x2;
+ double y2;
+
+ assert(gw);
+ assert(gw->bw);
+
+ for (z = window_list; z && z != gw; z = z->next)
+ continue;
+ assert(z);
+ assert(GTK_WIDGET(gw->layout) == widget);
+
+ current_widget = (GtkWidget *)gw->layout;
+ current_cr = cr;
+
+ cairo_clip_extents(cr, &x1, &y1, &x2, &y2);
+
+ clip.x0 = x1;
+ clip.y0 = y1;
+ clip.x1 = x2;
+ clip.y1 = y2;
+
+ browser_window_redraw(gw->bw, 0, 0, &clip, &ctx);
+
+ if (gw->careth != 0) {
+ nsgtk_plot_caret(gw->caretx, gw->carety, gw->careth);
+ }
+
+ current_widget = NULL;
+
+ return FALSE;
+}
+
+#else
+
+static gboolean
+nsgtk_window_draw_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
+{
+ struct gui_window *gw = data;
+ struct gui_window *z;
+ struct rect clip;
+ struct redraw_context ctx = {
+ .interactive = true,
+ .background_images = true,
+ .plot = &nsgtk_plotters
+ };
- for (z = window_list; z && z != g; z = z->next)
+ assert(gw);
+ assert(gw->bw);
+
+ for (z = window_list; z && z != gw; z = z->next)
continue;
assert(z);
- assert(GTK_WIDGET(g->layout) == widget);
+ assert(GTK_WIDGET(gw->layout) == widget);
- current_widget = (GtkWidget *)g->layout;
- current_cr = gdk_cairo_create(g->layout->bin_window);
+ current_widget = (GtkWidget *)gw->layout;
+ current_cr = gdk_cairo_create(gtk_layout_get_bin_window(gw->layout));
clip.x0 = event->area.x;
clip.y0 = event->area.y;
clip.x1 = event->area.x + event->area.width;
clip.y1 = event->area.y + event->area.height;
- browser_window_redraw(g->bw, 0, 0, &clip, &ctx);
+ browser_window_redraw(gw->bw, 0, 0, &clip, &ctx);
- if (g->careth != 0) {
- nsgtk_plot_caret(g->caretx, g->carety, g->careth);
+ if (gw->careth != 0) {
+ nsgtk_plot_caret(gw->caretx, gw->carety, gw->careth);
}
- current_widget = NULL;
cairo_destroy(current_cr);
+ current_widget = NULL;
+
return FALSE;
}
+#endif
+
static gboolean nsgtk_window_motion_notify_event(GtkWidget *widget,
GdkEventMotion *event, gpointer data)
{
@@ -320,79 +377,102 @@ static gboolean nsgtk_window_scroll_event(GtkWidget *widget,
{
struct gui_window *g = data;
double value;
- GtkAdjustment *vscroll = gtk_layout_get_vadjustment(g->layout);
- GtkAdjustment *hscroll = gtk_layout_get_hadjustment(g->layout);
- GtkAdjustment *scroll;
- const GtkAllocation *const alloc =
- &GTK_WIDGET(g->layout)->allocation;
+ GtkAdjustment *vscroll = nsgtk_layout_get_vadjustment(g->layout);
+ GtkAdjustment *hscroll = nsgtk_layout_get_hadjustment(g->layout);
+ GtkAllocation alloc;
+ LOG(("%d", event->direction));
switch (event->direction) {
case GDK_SCROLL_LEFT:
if (browser_window_scroll_at_point(g->bw,
event->x / g->bw->scale,
event->y / g->bw->scale,
- -100, 0) == true)
- /* Core handled it */
- return TRUE;
-
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) -
- (scroll->step_increment * 2);
- if (value < scroll->lower)
- value = scroll->lower;
+ -100, 0) != true) {
+ /* core did not handle event do horizontal scroll */
+
+ value = gtk_adjustment_get_value(hscroll) -
+ (gtk_adjustment_get_step_increment(hscroll) *2);
+
+ if (value < gtk_adjustment_get_lower(hscroll)) {
+ value = gtk_adjustment_get_lower(hscroll);
+ }
+
+ gtk_adjustment_set_value(hscroll, value);
+ }
break;
case GDK_SCROLL_UP:
if (browser_window_scroll_at_point(g->bw,
event->x / g->bw->scale,
event->y / g->bw->scale,
- 0, -100) == true)
- /* Core handled it */
- return TRUE;
-
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) -
- (scroll->step_increment * 2);
- if (value < scroll->lower)
- value = scroll->lower;
+ 0, -100) != true) {
+ /* core did not handle event change vertical
+ * adjustment.
+ */
+
+ value = gtk_adjustment_get_value(vscroll) -
+ (gtk_adjustment_get_step_increment(vscroll) * 2);
+
+ if (value < gtk_adjustment_get_lower(vscroll)) {
+ value = gtk_adjustment_get_lower(vscroll);
+ }
+
+ gtk_adjustment_set_value(vscroll, value);
+ }
break;
case GDK_SCROLL_RIGHT:
if (browser_window_scroll_at_point(g->bw,
event->x / g->bw->scale,
event->y / g->bw->scale,
- 100, 0) == true)
- /* Core handled it */
- return TRUE;
-
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) +
- (scroll->step_increment * 2);
- if (value > scroll->upper - alloc->width)
- value = scroll->upper - alloc->width;
+ 100, 0) != true) {
+
+ /* core did not handle event change horizontal
+ * adjustment.
+ */
+
+ value = gtk_adjustment_get_value(hscroll) +
+ (gtk_adjustment_get_step_increment(hscroll) * 2);
+
+ /* @todo consider gtk_widget_get_allocated_width() */
+ gtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+
+ if (value > gtk_adjustment_get_upper(hscroll) - alloc.width) {
+ value = gtk_adjustment_get_upper(hscroll) -
+ alloc.width;
+ }
+
+ gtk_adjustment_set_value(hscroll, value);
+ }
break;
case GDK_SCROLL_DOWN:
if (browser_window_scroll_at_point(g->bw,
event->x / g->bw->scale,
event->y / g->bw->scale,
- 0, 100) == true)
- /* Core handled it */
- return TRUE;
-
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) +
- (scroll->step_increment * 2);
- if (value > scroll->upper - alloc->height)
- value = scroll->upper - alloc->height;
+ 0, 100) != true) {
+ /* core did not handle event change vertical
+ * adjustment.
+ */
+
+ value = gtk_adjustment_get_value(vscroll) +
+ (gtk_adjustment_get_step_increment(vscroll) * 2);
+ /* @todo consider gtk_widget_get_allocated_height */
+ gtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+
+ if (value > gtk_adjustment_get_upper(vscroll) - alloc.height) {
+ value = gtk_adjustment_get_upper(vscroll) -
+ alloc.height;
+ }
+
+ gtk_adjustment_set_value(vscroll, value);
+ }
break;
default:
- return TRUE;
+ break;
}
- gtk_adjustment_set_value(scroll, value);
-
return TRUE;
}
@@ -405,88 +485,104 @@ static gboolean nsgtk_window_keypress_event(GtkWidget *widget,
if (browser_window_key_press(g->bw, nskey))
return TRUE;
- if ((event->state & 0x7) == 0) {
- double value;
- GtkAdjustment *vscroll = gtk_layout_get_vadjustment(g->layout);
- GtkAdjustment *hscroll = gtk_layout_get_hadjustment(g->layout);
- GtkAdjustment *scroll;
- const GtkAllocation *const alloc =
- &GTK_WIDGET(g->layout)->allocation;
-
- switch (event->keyval) {
- default:
- return TRUE;
-
- case GDK_Home:
- case GDK_KP_Home:
- scroll = vscroll;
- value = scroll->lower;
- break;
-
- case GDK_End:
- case GDK_KP_End:
- scroll = vscroll;
- value = scroll->upper - alloc->height;
- if (value < scroll->lower)
- value = scroll->lower;
- break;
-
- case GDK_Left:
- case GDK_KP_Left:
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) -
- scroll->step_increment;
- if (value < scroll->lower)
- value = scroll->lower;
- break;
-
- case GDK_Up:
- case GDK_KP_Up:
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) -
- scroll->step_increment;
- if (value < scroll->lower)
- value = scroll->lower;
- break;
-
- case GDK_Right:
- case GDK_KP_Right:
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) +
- scroll->step_increment;
- if (value > scroll->upper - alloc->width)
- value = scroll->upper - alloc->width;
- break;
-
- case GDK_Down:
- case GDK_KP_Down:
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) +
- scroll->step_increment;
- if (value > scroll->upper - alloc->height)
- value = scroll->upper - alloc->height;
- break;
-
- case GDK_Page_Up:
- case GDK_KP_Page_Up:
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) -
- scroll->page_increment;
- if (value < scroll->lower)
- value = scroll->lower;
- break;
-
- case GDK_Page_Down:
- case GDK_KP_Page_Down:
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) +
- scroll->page_increment;
- if (value > scroll->upper - alloc->height)
- value = scroll->upper - alloc->height;
- break;
- }
+ if ((event->state & 0x7) != 0)
+ return TRUE;
+
+ double value;
+ GtkAdjustment *vscroll = nsgtk_layout_get_vadjustment(g->layout);
+ GtkAdjustment *hscroll = nsgtk_layout_get_hadjustment(g->layout);
+ GtkAllocation alloc;
+
+ /* @todo consider gtk_widget_get_allocated_width() */
+ gtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+
+ switch (event->keyval) {
+
+ case GDK_KEY(Home):
+ case GDK_KEY(KP_Home):
+ value = gtk_adjustment_get_lower(vscroll);
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ case GDK_KEY(End):
+ case GDK_KEY(KP_End):
+ value = gtk_adjustment_get_upper(vscroll) - alloc.height;
+
+ if (value < gtk_adjustment_get_lower(vscroll))
+ value = gtk_adjustment_get_lower(vscroll);
+
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ case GDK_KEY(Left):
+ case GDK_KEY(KP_Left):
+ value = gtk_adjustment_get_value(hscroll) -
+ gtk_adjustment_get_step_increment(hscroll);
+
+ if (value < gtk_adjustment_get_lower(hscroll))
+ value = gtk_adjustment_get_lower(hscroll);
+
+ gtk_adjustment_set_value(hscroll, value);
+ break;
+
+ case GDK_KEY(Up):
+ case GDK_KEY(KP_Up):
+ value = gtk_adjustment_get_value(vscroll) -
+ gtk_adjustment_get_step_increment(vscroll);
+
+ if (value < gtk_adjustment_get_lower(vscroll))
+ value = gtk_adjustment_get_lower(vscroll);
+
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ case GDK_KEY(Right):
+ case GDK_KEY(KP_Right):
+ value = gtk_adjustment_get_value(hscroll) +
+ gtk_adjustment_get_step_increment(hscroll);
+
+ if (value > gtk_adjustment_get_upper(hscroll) - alloc.width)
+ value = gtk_adjustment_get_upper(hscroll) - alloc.width;
+
+ gtk_adjustment_set_value(hscroll, value);
+ break;
+
+ case GDK_KEY(Down):
+ case GDK_KEY(KP_Down):
+ value = gtk_adjustment_get_value(vscroll) +
+ gtk_adjustment_get_step_increment(vscroll);
+
+ if (value > gtk_adjustment_get_upper(vscroll) - alloc.height)
+ value = gtk_adjustment_get_upper(vscroll) - alloc.height;
+
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ case GDK_KEY(Page_Up):
+ case GDK_KEY(KP_Page_Up):
+ value = gtk_adjustment_get_value(vscroll) -
+ gtk_adjustment_get_page_increment(vscroll);
+
+ if (value < gtk_adjustment_get_lower(vscroll))
+ value = gtk_adjustment_get_lower(vscroll);
+
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ case GDK_KEY(Page_Down):
+ case GDK_KEY(KP_Page_Down):
+ value = gtk_adjustment_get_value(vscroll) +
+ gtk_adjustment_get_page_increment(vscroll);
+
+ if (value > gtk_adjustment_get_upper(vscroll) - alloc.height)
+ value = gtk_adjustment_get_upper(vscroll) - alloc.height;
+
+ gtk_adjustment_set_value(vscroll, value);
+ break;
+
+ default:
+ break;
- gtk_adjustment_set_value(scroll, value);
}
return TRUE;
@@ -558,26 +654,27 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
/* Construct our primary elements */
/* top-level document (not a frame) => create a new tab */
- GladeXML *xml = glade_xml_new(glade_file_location->netsurf,
- "tabContents", NULL);
- if (!xml) {
- warn_user("MiscError", "Failed to create tab contents");
- free(g);
+ GError* error = NULL;
+ GtkBuilder* xml = gtk_builder_new();
+ if (!gtk_builder_add_from_file(xml,
+ glade_file_location->tabcontents,
+ &error)) {
+ g_warning ("Couldn't load builder file: %s", error->message);
+ g_error_free(error);
return 0;
}
- GtkWidget *tab_contents = glade_xml_get_widget(xml, "tabContents");
- g->layout = GTK_LAYOUT(glade_xml_get_widget(xml, "layout"));
- g->status_bar = GTK_LABEL(glade_xml_get_widget(xml, "status_bar"));
- g->paned = GTK_PANED(glade_xml_get_widget(xml, "hpaned1"));
+ g->layout = GTK_LAYOUT(gtk_builder_get_object(xml, "layout"));
+ g->status_bar = GTK_LABEL(gtk_builder_get_object(xml, "status_bar"));
+ g->paned = GTK_PANED(gtk_builder_get_object(xml, "hpaned1"));
/* connect the scrollbars to the layout widget */
- gtk_layout_set_hadjustment(g->layout,
+ nsgtk_layout_set_hadjustment(g->layout,
gtk_range_get_adjustment(GTK_RANGE(
- glade_xml_get_widget(xml, "hscrollbar"))));
- gtk_layout_set_vadjustment(g->layout,
+ gtk_builder_get_object(xml, "hscrollbar"))));
+ nsgtk_layout_set_vadjustment(g->layout,
gtk_range_get_adjustment(GTK_RANGE(
- glade_xml_get_widget(xml, "vscrollbar"))));
+ gtk_builder_get_object(xml, "vscrollbar"))));
/* add the tab to the scaffold */
bool tempback = true;
@@ -592,6 +689,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
tempback = true;
break;
}
+
+ GtkWidget *tab_contents = GTK_WIDGET(gtk_builder_get_object(xml, "tabContents"));
g_object_set_data(G_OBJECT(tab_contents), "gui_window", g);
nsgtk_tab_add(g, tab_contents, tempback);
@@ -620,14 +719,15 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
nsgtk_widget_set_can_focus(GTK_WIDGET(g->layout), TRUE);
/* set the default background colour of the drawing area to white. */
- gtk_widget_modify_bg(GTK_WIDGET(g->layout), GTK_STATE_NORMAL,
- &((GdkColor) { 0, 0xffff, 0xffff, 0xffff } ));
+ nsgtk_widget_override_background_color(GTK_WIDGET(g->layout),
+ GTK_STATE_NORMAL, 0, 0xffff, 0xffff, 0xffff);
+
+
+ nsgtk_connect_draw_event(GTK_WIDGET(g->layout), G_CALLBACK(nsgtk_window_draw_event), g);
#define CONNECT(obj, sig, callback, ptr) \
g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
- g->signalhandler[NSGTK_WINDOW_SIGNAL_REDRAW] =
- CONNECT(g->layout, "expose_event",
- nsgtk_window_expose_event, g);
+
CONNECT(g->layout, "motion_notify_event",
nsgtk_window_motion_notify_event, g);
g->signalhandler[NSGTK_WINDOW_SIGNAL_CLICK] =
@@ -665,16 +765,19 @@ void nsgtk_reflow_all_windows(void)
void nsgtk_window_process_reformats(void)
{
struct gui_window *g;
+ GtkAllocation alloc;
browser_reformat_pending = false;
for (g = window_list; g; g = g->next) {
- GtkWidget *widget = GTK_WIDGET(g->layout);
if (!g->bw->reformat_pending)
continue;
+
g->bw->reformat_pending = false;
- browser_window_reformat(g->bw, false,
- widget->allocation.width,
- widget->allocation.height);
+
+ /* @todo consider gtk_widget_get_allocated_width() */
+ gtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+
+ browser_window_reformat(g->bw, false, alloc.width, alloc.height);
}
}
@@ -797,8 +900,8 @@ void gui_window_set_status(struct gui_window *g, const char *text)
bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
{
- GtkAdjustment *vadj = gtk_layout_get_vadjustment(g->layout);
- GtkAdjustment *hadj = gtk_layout_get_hadjustment(g->layout);
+ GtkAdjustment *vadj = nsgtk_layout_get_vadjustment(g->layout);
+ GtkAdjustment *hadj = nsgtk_layout_get_hadjustment(g->layout);
assert(vadj);
assert(hadj);
@@ -811,8 +914,8 @@ bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
void gui_window_set_scroll(struct gui_window *g, int sx, int sy)
{
- GtkAdjustment *vadj = gtk_layout_get_vadjustment(g->layout);
- GtkAdjustment *hadj = gtk_layout_get_hadjustment(g->layout);
+ GtkAdjustment *vadj = nsgtk_layout_get_vadjustment(g->layout);
+ GtkAdjustment *hadj = nsgtk_layout_get_hadjustment(g->layout);
gdouble vlower, vpage, vupper, hlower, hpage, hupper, x = (double)sx, y = (double)sy;
assert(vadj);
@@ -853,35 +956,13 @@ void gui_window_update_extent(struct gui_window *g)
static GdkCursor *nsgtk_create_menu_cursor(void)
{
- static char menu_cursor_bits[] = {
- 0x00, 0x00, 0x80, 0x7F, 0x88, 0x40, 0x9E, 0x5E, 0x88, 0x40, 0x80, 0x56,
- 0x80, 0x40, 0x80, 0x5A, 0x80, 0x40, 0x80, 0x5E, 0x80, 0x40, 0x80, 0x56,
- 0x80, 0x40, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, };
-
- static char menu_cursor_mask_bits[] = {
- 0xC0, 0xFF, 0xC8, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xC8, 0xFF,
- 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF,
- 0xC0, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0x00, 0x00, };
-
- static GdkCursor *r;
- static GdkColor fg = { 0, 0, 0, 0 };
- static GdkColor bg = { 0, 65535, 65535, 65535 };
-
- GdkPixmap *source, *mask;
-
- if (r != NULL)
- return r;
-
- source = gdk_bitmap_create_from_data(NULL, menu_cursor_bits,
- 16, 16);
- mask = gdk_bitmap_create_from_data (NULL, menu_cursor_mask_bits,
- 16, 16);
-
- r = gdk_cursor_new_from_pixmap(source, mask, &fg, &bg, 0, 3);
- g_object_unref(source);
- g_object_unref(mask);
+ GdkCursor *cursor = NULL;
+ GdkPixbuf *pixbuf;
+ pixbuf = gdk_pixbuf_from_pixdata(&menu_cursor_pixdata, FALSE, NULL);
+ cursor = gdk_cursor_new_from_pixbuf(gdk_display_get_default(), pixbuf, 0, 3);
+ g_object_unref (pixbuf);
- return r;
+ return cursor;
}
void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
@@ -961,10 +1042,11 @@ void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
gtk_widget_get_display(
GTK_WIDGET(g->layout)),
cursortype);
- gdk_window_set_cursor(GTK_WIDGET(g->layout)->window, cursor);
+ gdk_window_set_cursor(gtk_widget_get_window(GTK_WIDGET(g->layout)),
+ cursor);
if (!nullcursor)
- gdk_cursor_unref(cursor);
+ nsgdk_cursor_unref(cursor);
}
void gui_window_hide_pointer(struct gui_window *g)
@@ -1015,8 +1097,13 @@ void gui_drag_save_selection(struct selection *s, struct gui_window *g)
void gui_window_get_dimensions(struct gui_window *g, int *width, int *height,
bool scaled)
{
- *width = GTK_WIDGET(g->layout)->allocation.width;
- *height = GTK_WIDGET(g->layout)->allocation.height;
+ GtkAllocation alloc;
+
+ /* @todo consider gtk_widget_get_allocated_width() */
+ gtk_widget_get_allocation(GTK_WIDGET(g->layout), &alloc);
+
+ *width = alloc.width;
+ *height = alloc.height;
if (scaled) {
*width /= g->bw->scale;
diff --git a/image/rsvg.c b/image/rsvg.c
index 68d677054..d70364703 100644
--- a/image/rsvg.c
+++ b/image/rsvg.c
@@ -238,7 +238,7 @@ static void rsvg_destroy(struct content *c)
rsvg_content *d = (rsvg_content *) c;
if (d->bitmap != NULL) bitmap_destroy(d->bitmap);
- if (d->rsvgh != NULL) rsvg_handle_free(d->rsvgh);
+ if (d->rsvgh != NULL) g_object_unref(d->rsvgh);
if (d->ct != NULL) cairo_destroy(d->ct);
if (d->cs != NULL) cairo_surface_destroy(d->cs);