From ec034af671ef48d131ea749870120e3c8ba12319 Mon Sep 17 00:00:00 2001 From: Rob Kendrick Date: Mon, 20 Apr 2009 20:31:13 +0000 Subject: Apply contributions from Mark Benjamin and Chris Tarnowski, with some reworking from me. Beware; glade nastyness ahead. svn path=/trunk/netsurf/; revision=7136 --- gtk/dialogs/gtk_options.c | 187 +- gtk/gtk_scaffolding.c | 349 ++- gtk/gtk_scaffolding.h | 38 + gtk/gtk_tabs.c | 42 +- gtk/gtk_tabs.h | 2 +- gtk/gtk_window.c | 84 +- gtk/gtk_window.h | 41 +- gtk/options.h | 25 +- gtk/res/arrow_down_8x32.png | Bin 0 -> 206 bytes gtk/res/blankpage | 32 + gtk/res/languages | 261 ++ gtk/res/netsurf.glade | 151 +- gtk/res/options.glade | 5826 +++++++++++++++++-------------------------- gtk/res/source.glade | 202 ++ 14 files changed, 3390 insertions(+), 3850 deletions(-) create mode 100644 gtk/res/arrow_down_8x32.png create mode 100644 gtk/res/blankpage create mode 100644 gtk/res/languages create mode 100644 gtk/res/source.glade (limited to 'gtk') diff --git a/gtk/dialogs/gtk_options.c b/gtk/dialogs/gtk_options.c index 40c70b6c9..aec96e124 100644 --- a/gtk/dialogs/gtk_options.c +++ b/gtk/dialogs/gtk_options.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include "utils/log.h" @@ -59,6 +60,7 @@ DECLARE(checkDisablePlugins); DECLARE(spinHistoryAge); DECLARE(checkHoverURLs); DECLARE(checkDisplayRecentURLs); +DECLARE(comboLanguage); DECLARE(checkSendReferer); DECLARE(checkShowSingleTab); @@ -85,12 +87,16 @@ DECLARE(spinDefaultSize); DECLARE(spinMinimumSize); DECLARE(fontPreview); +DECLARE(comboButtonType); + DECLARE(spinMemoryCacheSize); DECLARE(spinDiscCacheAge); DECLARE(checkClearDownloads); DECLARE(checkRequestOverwrite); DECLARE(fileChooserDownloads); +DECLARE(checkFocusNew); +DECLARE(checkNewBlank); DECLARE(spinMarginTop); DECLARE(spinMarginBottom); @@ -135,12 +141,14 @@ GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent) { CONNECT(setCurrentPage, "clicked"); CONNECT(setDefaultPage, "clicked"); CONNECT(checkHideAdverts, "toggled"); - /* mike: why are these commented out? + CONNECT(checkDisablePopups, "toggled"); CONNECT(checkDisablePlugins, "toggled"); CONNECT(spinHistoryAge, "focus-out-event"); CONNECT(checkHoverURLs, "toggled"); - */ + + CONNECT(comboLanguage, "changed"); + CONNECT(checkDisplayRecentURLs, "toggled"); CONNECT(checkSendReferer, "toggled"); CONNECT(checkShowSingleTab, "toggled"); @@ -167,6 +175,8 @@ GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent) { CONNECT(spinDefaultSize, "value-changed"); CONNECT(spinMinimumSize, "value-changed"); CONNECT(fontPreview, "clicked"); + + CONNECT(comboButtonType, "changed"); CONNECT(spinMemoryCacheSize, "value-changed"); CONNECT(spinDiscCacheAge, "value-changed"); @@ -175,6 +185,9 @@ GtkDialog* nsgtk_options_init(struct browser_window *bw, GtkWindow *parent) { CONNECT(checkRequestOverwrite, "toggled"); CONNECT(fileChooserDownloads, "current-folder-changed"); + CONNECT(checkFocusNew, "toggled"); + CONNECT(checkNewBlank, "toggled"); + CONNECT(spinMarginTop, "value-changed"); CONNECT(spinMarginBottom, "value-changed"); CONNECT(spinMarginLeft, "value-changed"); @@ -251,12 +264,78 @@ void nsgtk_options_load(void) { char b[20]; int proxytype = 0; + if (option_button_type == 0) { + GtkSettings *settings = gtk_settings_get_default(); + GtkIconSize tooliconsize; + GtkToolbarStyle toolbarstyle; + g_object_get(settings, "gtk-toolbar-icon-size", &tooliconsize, + "gtk-toolbar-style", &toolbarstyle, NULL); + switch (toolbarstyle) { + case GTK_TOOLBAR_ICONS: + option_button_type = (tooliconsize == + GTK_ICON_SIZE_SMALL_TOOLBAR) ? 1 : 2; + break; + case GTK_TOOLBAR_TEXT: + option_button_type = 4; + break; + case GTK_TOOLBAR_BOTH: + case GTK_TOOLBAR_BOTH_HORIZ: + default: + option_button_type = 3; + break; + } + } + + /* Following language loading needs reworking. rjek (20/04/2009) */ + if (option_accept_language == NULL) { + option_accept_language = (char *) malloc(3); + strcpy(option_accept_language, "en"); + } + + GtkVBox *combolanguagevbox = GTK_VBOX(glade_xml_get_widget(gladeFile, "combolanguagevbox")); + comboLanguage = gtk_combo_box_new_text(); + gchar * languagefile = g_strconcat(res_dir_location, "languages", NULL); + FILE * f; + char * in = malloc(6); + char temp; + temp = 1; + int temprowcount = 0; + int final = 58; + f = fopen(languagefile, "r"); + int i = 0; + while ((temp != '\0') && (fread(&temp, 1, 1, f))) { + if (temp == '\n') { + in[i] = '\0'; + i = 0; + gtk_combo_box_append_text(GTK_COMBO_BOX(comboLanguage), in); + if (strcmp(in, option_accept_language) == 0) { + final = temprowcount; + } else { + temprowcount++; + } + } else { + in[i++] = temp; + } + } + fclose(f); + free(in); + gtk_combo_box_set_active(GTK_COMBO_BOX(comboLanguage), final); + gtk_widget_set_tooltip_text(GTK_WIDGET(comboLanguage), + "set preferred language for web pages"); + gtk_box_pack_start(GTK_BOX(combolanguagevbox), comboLanguage, FALSE, FALSE, 0); + gtk_widget_show(comboLanguage); SET_ENTRY(entryHomePageURL, option_homepage_url ? option_homepage_url : ""); SET_BUTTON(setCurrentPage); SET_BUTTON(setDefaultPage); SET_CHECK(checkHideAdverts, option_block_ads); + + SET_CHECK(checkDisablePopups, option_disable_popups); + SET_CHECK(checkDisablePlugins, option_disable_plugins); + SET_SPIN(spinHistoryAge, option_history_age); + SET_CHECK(checkHoverURLs, option_hover_urls); + SET_CHECK(checkDisplayRecentURLs, option_url_suggestion); SET_CHECK(checkSendReferer, option_send_referer); SET_CHECK(checkShowSingleTab, option_show_single_tab); @@ -297,6 +376,8 @@ void nsgtk_options_load(void) SET_SPIN(spinDefaultSize, option_font_size / 10); SET_SPIN(spinMinimumSize, option_font_min_size / 10); SET_BUTTON(fontPreview); + + SET_COMBO(comboButtonType, option_button_type -1); SET_SPIN(spinMemoryCacheSize, option_memory_cache_size >> 20); SET_SPIN(spinDiscCacheAge, option_disc_cache_age); @@ -305,6 +386,9 @@ void nsgtk_options_load(void) SET_CHECK(checkRequestOverwrite, option_request_overwrite); SET_FILE_CHOOSER(fileChooserDownloads, option_downloads_directory); + SET_CHECK(checkFocusNew, option_focus_new); + SET_CHECK(checkNewBlank, option_new_blank); + SET_SPIN(spinMarginTop, option_margin_top); SET_SPIN(spinMarginBottom, option_margin_bottom); SET_SPIN(spinMarginLeft, option_margin_left); @@ -334,7 +418,11 @@ static gboolean on_dialog_close (GtkDialog *dlg, gboolean stay_alive) { LOG(("Writing options to file")); options_write(options_file_location); - if (stay_alive) gtk_widget_hide(GTK_WIDGET(wndPreferences)); + if ((stay_alive) && GTK_IS_WIDGET(dlg)) + gtk_widget_hide(GTK_WIDGET(dlg)); + else { + stay_alive = FALSE; + } return stay_alive; } @@ -394,6 +482,15 @@ static gboolean on_dialog_close (GtkDialog *dlg, gboolean stay_alive) return FALSE; \ } +static gboolean on_comboLanguage_changed(GtkWidget *widget, gpointer data) +{ + LOG(("Signal emitted from 'comboLanguage'")); + strcpy(option_accept_language, + gtk_combo_box_get_active_text(GTK_COMBO_BOX(comboLanguage))); + + return FALSE; +} + ENTRY_CHANGED(entryHomePageURL, option_homepage_url) END_HANDLER @@ -428,22 +525,22 @@ COMBO_CHANGED(comboProxyType, proxy_type) LOG(("proxy type: %d", proxy_type)); switch (proxy_type) { - case 0: - option_http_proxy = false; - option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NONE; - break; - case 1: - option_http_proxy = true; - option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NONE; - break; - case 2: - option_http_proxy = true; - option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_BASIC; - break; - case 3: - option_http_proxy = true; - option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NTLM; - break; + case 0: + option_http_proxy = false; + option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NONE; + break; + case 1: + option_http_proxy = true; + option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NONE; + break; + case 2: + option_http_proxy = true; + option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_BASIC; + break; + case 3: + option_http_proxy = true; + option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NTLM; + break; } gboolean sensitive = (!proxy_type == 0); gtk_widget_set_sensitive (entryProxyHost, sensitive); @@ -500,6 +597,18 @@ CHECK_CHANGED(checkDisableAnimations, option_animate_images); option_animate_images = !option_animate_images; END_HANDLER +CHECK_CHANGED(checkDisablePopups, option_disable_popups) +END_HANDLER + +CHECK_CHANGED(checkDisablePlugins, option_disable_plugins) +END_HANDLER + +SPIN_CHANGED(spinHistoryAge, option_history_age) +END_HANDLER + +CHECK_CHANGED(checkHoverURLs, option_hover_urls) +END_HANDLER + FONT_CHANGED(fontSansSerif, option_font_sans) END_HANDLER @@ -531,6 +640,40 @@ BUTTON_CLICKED(fontPreview) nsgtk_reflow_all_windows(); END_HANDLER +COMBO_CHANGED(comboButtonType, option_button_type) + option_button_type++; + struct gui_window *current; + current = window_list; + while (current) { + switch(option_button_type) { + case 1: + gtk_toolbar_set_style(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_TOOLBAR_ICONS); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_ICON_SIZE_SMALL_TOOLBAR); + break; + case 2: + gtk_toolbar_set_style(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_TOOLBAR_ICONS); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_ICON_SIZE_LARGE_TOOLBAR); + break; + case 3: + gtk_toolbar_set_style(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_TOOLBAR_BOTH); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_ICON_SIZE_LARGE_TOOLBAR); + break; + case 4: + gtk_toolbar_set_style(GTK_TOOLBAR(current->scaffold->tool_bar), + GTK_TOOLBAR_TEXT); + default: + break; + } + current = current->next; + } +END_HANDLER + SPIN_CHANGED(spinMemoryCacheSize, option_memory_cache_size) option_memory_cache_size <<= 20; END_HANDLER @@ -547,6 +690,12 @@ END_HANDLER FILE_CHOOSER_CHANGED(fileChooserDownloads, option_downloads_directory) END_HANDLER +CHECK_CHANGED(checkFocusNew, option_focus_new) +END_HANDLER + +CHECK_CHANGED(checkNewBlank, option_new_blank) +END_HANDLER + SPIN_CHANGED(spinMarginTop, option_margin_top) END_HANDLER diff --git a/gtk/gtk_scaffolding.c b/gtk/gtk_scaffolding.c index abf42eda4..bbe2362ed 100644 --- a/gtk/gtk_scaffolding.c +++ b/gtk/gtk_scaffolding.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include "content/content.h" #include "desktop/browser.h" @@ -41,6 +40,7 @@ #include "gtk/gtk_completion.h" #include "gtk/dialogs/gtk_options.h" #include "gtk/dialogs/gtk_about.h" +#include "gtk/dialogs/gtk_source.h" #include "gtk/gtk_download.h" #include "gtk/gtk_gui.h" #include "gtk/gtk_history.h" @@ -65,42 +65,6 @@ struct gtk_history_window; -struct gtk_scaffolding { - GtkWindow *window; - GtkNotebook *notebook; - GtkEntry *url_bar; - GtkEntryCompletion *url_bar_completion; - GtkStatusbar *status_bar; - GtkMenuItem *edit_menu; - GtkMenuItem *tabs_menu; - GtkToolbar *tool_bar; - GtkToolButton *back_button; - GtkToolButton *forward_button; - GtkToolButton *stop_button; - GtkToolButton *reload_button; - GtkMenuBar *menu_bar; - GtkMenuItem *back_menu; - GtkMenuItem *forward_menu; - GtkMenuItem *stop_menu; - GtkMenuItem *reload_menu; - GtkImage *throbber; - GtkPaned *status_pane; - - GladeXML *xml; - - GladeXML *popup_xml; - GtkMenu *popup_menu; - - struct gtk_history_window *history_window; - GtkDialog *preferences_dialog; - - int throb_frame; - struct gui_window *top_level; - int being_destroyed; - - bool fullscreen; -}; - struct gtk_history_window { struct gtk_scaffolding *g; GtkWindow *window; @@ -130,6 +94,7 @@ static gboolean nsgtk_window_edit_menu_hidden(GtkWidget *widget, static gboolean nsgtk_window_popup_menu_hidden(GtkWidget *widget, struct gtk_scaffolding *g); static gboolean nsgtk_window_back_button_clicked(GtkWidget *, gpointer); +static gboolean nsgtk_window_history_button_clicked(GtkWidget *, gpointer); static gboolean nsgtk_window_forward_button_clicked(GtkWidget *, gpointer); static gboolean nsgtk_window_stop_button_clicked(GtkWidget *, gpointer); static gboolean nsgtk_window_reload_button_clicked(GtkWidget *, gpointer); @@ -137,12 +102,12 @@ static gboolean nsgtk_window_home_button_clicked(GtkWidget *, gpointer); static gboolean nsgtk_window_url_activate_event(GtkWidget *, gpointer); static gboolean nsgtk_window_url_changed(GtkWidget *, GdkEventKey *, gpointer); -static guint nsgtk_scaffolding_update_save_link_sensitivity( +static guint nsgtk_scaffolding_update_link_operations_sensitivity( struct gtk_scaffolding *g, GladeXML *xml, gdouble x, gdouble y, gboolean hide); static guint nsgtk_scaffolding_update_edit_actions_sensitivity( struct gtk_scaffolding *g, GladeXML *xml, gboolean hide); -static void nsgtk_scaffolding_enable_save_link_sensitivity( +static void nsgtk_scaffolding_enable_link_operations_sensitivity( struct gtk_scaffolding *g, GladeXML *xml); static void nsgtk_scaffolding_enable_edit_actions_sensitivity( struct gtk_scaffolding *g, GladeXML *xml); @@ -187,6 +152,7 @@ MENUPROTO(zoom_in); MENUPROTO(normal_size); MENUPROTO(zoom_out); MENUPROTO(full_screen); +MENUPROTO(view_source); MENUPROTO(menu_bar); MENUPROTO(tool_bar); MENUPROTO(status_bar); @@ -213,6 +179,8 @@ MENUPROTO(about); /* Popup context menu (also shares edit menu handlers) */ MENUPROTO(save_link); +MENUPROTO(open_link_in_focused_tab); +MENUPROTO(open_link_in_background_tab); /* structure used by nsgtk_attach_menu_handlers to connect menu items to * their handling functions. @@ -244,6 +212,7 @@ static struct menu_events menu_events[] = { MENUEVENT(normal_size), MENUEVENT(zoom_out), MENUEVENT(full_screen), + MENUEVENT(view_source), MENUEVENT(menu_bar), MENUEVENT(tool_bar), MENUEVENT(status_bar), @@ -293,6 +262,8 @@ GtkWindow *nsgtk_get_window_for_scaffold(struct gtk_scaffolding *g) gboolean nsgtk_window_delete_event(GtkWidget *widget, gpointer data) { + struct gtk_scaffolding *g = data; + gtk_widget_destroy(GTK_WIDGET(g->window)); if (open_windows == 1 && nsgtk_check_for_downloads(GTK_WINDOW(widget))) return TRUE; else @@ -302,17 +273,19 @@ gboolean nsgtk_window_delete_event(GtkWidget *widget, gpointer data) void nsgtk_window_destroy_event(GtkWidget *widget, gpointer data) { struct gtk_scaffolding *g = data; - LOG(("Being Destroyed = %d", g->being_destroyed)); - gtk_widget_destroy(GTK_WIDGET(g->history_window->window)); + LOG(("Being Destroyed = %d", g->being_destroyed)); + if (g->history_window->window) { + gtk_widget_destroy(GTK_WIDGET(g->history_window->window)); + } gtk_widget_destroy(GTK_WIDGET(g->window)); - + if (--open_windows == 0) netsurf_quit = true; - if (!g->being_destroyed) { - g->being_destroyed = 1; - nsgtk_window_destroy_browser(g->top_level); - } + if (!g->being_destroyed) { + g->being_destroyed = 1; + nsgtk_window_destroy_browser(g->top_level); + } } void nsgtk_scaffolding_destroy(nsgtk_scaffolding *scaffold) @@ -342,7 +315,8 @@ void nsgtk_window_update_back_forward(struct gtk_scaffolding *g) gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(g->popup_xml, "popupBack")), history_back_available(bw->history)); gtk_widget_set_sensitive(GTK_WIDGET(glade_xml_get_widget(g->popup_xml, - "popupForward")), history_forward_available(bw->history)); + "popupForward")), + history_forward_available(bw->history)); /* update the url bar, particularly necessary when tabbing */ if ((bw->current_content) && bw->current_content->url) @@ -353,8 +327,8 @@ void nsgtk_window_update_back_forward(struct gtk_scaffolding *g) * for it. */ history_size(bw->history, &width, &height); - gtk_widget_set_size_request(GTK_WIDGET(g->history_window->drawing_area), - width, height); + gtk_widget_set_size_request(GTK_WIDGET(g->history_window->drawing_area) + , width, height); gtk_widget_queue_draw(GTK_WIDGET(g->history_window->drawing_area)); } @@ -392,7 +366,7 @@ static gboolean nsgtk_window_edit_menu_hidden(GtkWidget *widget, static gboolean nsgtk_window_popup_menu_hidden(GtkWidget *widget, struct gtk_scaffolding *g) { - nsgtk_scaffolding_enable_save_link_sensitivity(g, g->popup_xml); + nsgtk_scaffolding_enable_link_operations_sensitivity(g, g->popup_xml); nsgtk_scaffolding_enable_edit_actions_sensitivity(g, g->popup_xml); return TRUE; } @@ -411,6 +385,27 @@ gboolean nsgtk_window_back_button_clicked(GtkWidget *widget, gpointer data) return TRUE; } +/* TODO: add resize handling */ +gboolean nsgtk_window_history_button_clicked(GtkWidget *widget, gpointer data) +{ + struct gtk_scaffolding *gw = (struct gtk_scaffolding *)data; + + /* if entries of the same url but different frag_ids have been added + * the history needs redrawing (what is done in the throbber code in + * other cases) + */ + nsgtk_window_update_back_forward(gw); + + gtk_window_set_default_size(gw->history_window->window, 500, 150); + gtk_window_set_position(gw->history_window->window, GTK_WIN_POS_MOUSE); + gtk_window_set_transient_for(gw->history_window->window, gw->window); + gtk_window_set_opacity(gw->history_window->window, 0.9); + gtk_widget_show(GTK_WIDGET(gw->history_window->window)); + gdk_window_raise(GTK_WIDGET(gw->history_window->window)->window); + + return TRUE; +} + gboolean nsgtk_window_forward_button_clicked(GtkWidget *widget, gpointer data) { struct gtk_scaffolding *g = data; @@ -523,8 +518,12 @@ MENUHANDLER(new_tab) struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; struct browser_window *bw = nsgtk_get_browser_for_gui(gw->top_level); const char *url = gtk_entry_get_text(GTK_ENTRY(gw->url_bar)); + + if (option_new_blank) + browser_window_create(0, bw, NULL, false, true); - browser_window_create(url, bw, NULL, false, true); + else + browser_window_create(url, bw, NULL, false, true); return TRUE; } @@ -638,7 +637,7 @@ MENUHANDLER(print) GtkPrintOperation *print_op; GtkPageSetup *page_setup; GtkPrintSettings *gtk_print_settings; - GtkPrintOperationResult res; + GtkPrintOperationResult res = GTK_PRINT_OPERATION_RESULT_ERROR; struct print_settings *settings; print_op = gtk_print_operation_new(); @@ -676,8 +675,8 @@ MENUHANDLER(print) G_CALLBACK(gtk_print_signal_draw_page), NULL); g_signal_connect(print_op, "end_print", G_CALLBACK(gtk_print_signal_end_print), settings); - - res = gtk_print_operation_run(print_op, + if (bw->current_content->type != CONTENT_TEXTPLAIN) + res = gtk_print_operation_run(print_op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, gw->window, NULL); @@ -702,7 +701,12 @@ MENUHANDLER(print) MENUHANDLER(close_window) { struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; - + + /* close all tabs first */ + gint numbertabs = gtk_notebook_get_n_pages(gw->notebook); + while (numbertabs-- > 1) { + nsgtk_tab_close_current(gw->notebook); + } gtk_widget_destroy(GTK_WIDGET(gw->window)); return TRUE; @@ -712,7 +716,7 @@ MENUHANDLER(quit) { struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; - if (!nsgtk_check_for_downloads(gw->window)) + if (nsgtk_check_for_downloads(gw->window) == false) netsurf_quit = true; return TRUE; } @@ -732,6 +736,42 @@ MENUHANDLER(save_link) return TRUE; } +MENUHANDLER(open_link_in_focused_tab) +{ + temp_open_background = 0; + struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; + struct gui_window *gui = gw->top_level; + struct browser_window *bw = nsgtk_get_browser_for_gui(gui); + + if (current_menu_link_box == NULL) + return FALSE; + + browser_window_create(current_menu_link_box->href, bw, NULL, true, + true); + temp_open_background = -1; + + return TRUE; +} + +MENUHANDLER(open_link_in_background_tab) +{ + struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; + struct gui_window *gui = gw->top_level; + struct browser_window *bw = nsgtk_get_browser_for_gui(gui); + + temp_open_background = 1; + + if (current_menu_link_box == NULL) + return FALSE; + + browser_window_create(current_menu_link_box->href, bw, NULL, true, + true); + temp_open_background = -1; + + return TRUE; +} + + MENUHANDLER(cut) { struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; @@ -852,6 +892,14 @@ MENUHANDLER(full_screen) return TRUE; } +MENUHANDLER(view_source) +{ + struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; + nsgtk_source_dialog_init(gw->window, + nsgtk_get_browser_for_gui(gw->top_level)); + return TRUE; +} + MENUHANDLER(menu_bar) { struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; @@ -921,7 +969,8 @@ MENUHANDLER(save_window_size) struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; option_toolbar_status_width = gtk_paned_get_position(gw->status_pane); - gtk_window_get_position(gw->window, &option_window_x, &option_window_y); + gtk_window_get_position(gw->window, &option_window_x, + &option_window_y); gtk_window_get_size(gw->window, &option_window_width, &option_window_height); @@ -1067,12 +1116,7 @@ MENUHANDLER(home) MENUHANDLER(local_history) { - struct gtk_scaffolding *gw = (struct gtk_scaffolding *)g; - - gtk_widget_show(GTK_WIDGET(gw->history_window->window)); - gdk_window_raise(GTK_WIDGET(gw->history_window->window)->window); - - return TRUE; + return nsgtk_window_history_button_clicked(GTK_WIDGET(widget), g); } MENUHANDLER(global_history) @@ -1124,7 +1168,8 @@ gboolean nsgtk_history_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer g) { struct gtk_history_window *hw = (struct gtk_history_window *)g; - struct browser_window *bw = nsgtk_get_browser_for_gui(hw->g->top_level); + struct browser_window *bw = + nsgtk_get_browser_for_gui(hw->g->top_level); current_widget = widget; current_drawable = widget->window; @@ -1148,7 +1193,8 @@ gboolean nsgtk_history_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer g) { struct gtk_history_window *hw = (struct gtk_history_window *)g; - struct browser_window *bw = nsgtk_get_browser_for_gui(hw->g->top_level); + struct browser_window *bw = + nsgtk_get_browser_for_gui(hw->g->top_level); LOG(("X=%g, Y=%g", event->x, event->y)); @@ -1188,6 +1234,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) g->stop_button = GTK_TOOL_BUTTON(GET_WIDGET("toolStop")); g->reload_button = GTK_TOOL_BUTTON(GET_WIDGET("toolReload")); g->back_menu = GTK_MENU_ITEM(GET_WIDGET("back")); + g->history_button = GTK_TOOL_BUTTON(GET_WIDGET("toolHistory")); g->forward_menu = GTK_MENU_ITEM(GET_WIDGET("forward")); g->stop_menu = GTK_MENU_ITEM(GET_WIDGET("stop")); g->reload_menu = GTK_MENU_ITEM(GET_WIDGET("reload")); @@ -1209,13 +1256,63 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) } else { gtk_window_set_default_size(g->window, 600, 600); } + + if (option_button_type == 0) { + GtkSettings *settings = gtk_settings_get_default(); + GtkIconSize tooliconsize; + GtkToolbarStyle toolbarstyle; + g_object_get(settings, "gtk-toolbar-icon-size", &tooliconsize, + "gtk-toolbar-style", &toolbarstyle, NULL); + switch (toolbarstyle) { + case GTK_TOOLBAR_ICONS: + option_button_type = (tooliconsize == + GTK_ICON_SIZE_SMALL_TOOLBAR) ? + 1 : 2; + break; + case GTK_TOOLBAR_TEXT: + option_button_type = 4; + break; + case GTK_TOOLBAR_BOTH: + case GTK_TOOLBAR_BOTH_HORIZ: + default: + option_button_type = 3; + break; + } + } + + switch (option_button_type) { + case 1: + gtk_toolbar_set_style(GTK_TOOLBAR(g->tool_bar), + GTK_TOOLBAR_ICONS); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(g->tool_bar), + GTK_ICON_SIZE_SMALL_TOOLBAR); + break; + case 2: + gtk_toolbar_set_style(GTK_TOOLBAR(g->tool_bar), + GTK_TOOLBAR_ICONS); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(g->tool_bar), + GTK_ICON_SIZE_LARGE_TOOLBAR); + break; + case 3: + gtk_toolbar_set_style(GTK_TOOLBAR(g->tool_bar), + GTK_TOOLBAR_BOTH); + gtk_toolbar_set_icon_size(GTK_TOOLBAR(g->tool_bar), + GTK_ICON_SIZE_LARGE_TOOLBAR); + break; + case 4: + gtk_toolbar_set_style(GTK_TOOLBAR(g->tool_bar), + GTK_TOOLBAR_TEXT); + default: + break; + } nsgtk_tab_init(GTK_WIDGET(g->notebook)); /* set the URL entry box to expand, as we can't do this from within * glade because of the way it emulates toolbars. */ - gtk_tool_item_set_expand(GTK_TOOL_ITEM(GET_WIDGET("toolURLBar")), TRUE); + gtk_tool_item_set_expand(GTK_TOOL_ITEM(GET_WIDGET("toolURLBar")), + TRUE); /* disable toolbar buttons that make no sense initially. */ gtk_widget_set_sensitive(GTK_WIDGET(g->back_button), FALSE); @@ -1292,16 +1389,20 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) G_CALLBACK(nsgtk_window_tabs_num_changed), g); /* connect signals to handlers. */ - CONNECT(g->window, "delete-event", nsgtk_window_delete_event, NULL); + CONNECT(g->window, "delete-event", nsgtk_window_delete_event, g); CONNECT(g->window, "destroy", nsgtk_window_destroy_event, g); /* toolbar, URL bar, and menu bar signal handlers */ CONNECT(g->edit_menu, "show", nsgtk_window_edit_menu_clicked, g); CONNECT(g->edit_menu, "hide", nsgtk_window_edit_menu_hidden, g); - CONNECT(g->back_button, "clicked", nsgtk_window_back_button_clicked, g); + CONNECT(g->back_button, "clicked", nsgtk_window_back_button_clicked, + g); CONNECT(g->forward_button, "clicked", nsgtk_window_forward_button_clicked, g); - CONNECT(g->stop_button, "clicked", nsgtk_window_stop_button_clicked, g); + CONNECT(g->history_button, "clicked", + nsgtk_window_history_button_clicked, g); + CONNECT(g->stop_button, "clicked", nsgtk_window_stop_button_clicked, + g); CONNECT(g->reload_button, "clicked", nsgtk_window_reload_button_clicked, g); CONNECT(GET_WIDGET("toolHome"), "clicked", @@ -1312,7 +1413,7 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) /* set up the menu signal handlers */ nsgtk_attach_menu_handlers(g->xml, g); - g->being_destroyed = 0; + g->being_destroyed = 0; g->fullscreen = false; @@ -1333,13 +1434,21 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) CONNECT(glade_xml_get_widget(g->popup_xml, "popupReload"), "activate", nsgtk_window_reload_button_clicked, g); CONNECT(glade_xml_get_widget(g->popup_xml, "save_link_popup"), - "activate", nsgtk_on_save_link_activate, g); + "activate", nsgtk_on_save_link_activate, g); + CONNECT(glade_xml_get_widget(g->popup_xml, + "open_link_in_focused_tab_popup"), + "activate", + nsgtk_on_open_link_in_focused_tab_activate, g); + CONNECT(glade_xml_get_widget(g->popup_xml, + "open_link_in_background_tab_popup"), + "activate", + nsgtk_on_open_link_in_background_tab_activate, g); CONNECT(glade_xml_get_widget(g->popup_xml, "cut_popup"), "activate", nsgtk_on_cut_activate, g); CONNECT(glade_xml_get_widget(g->popup_xml, "copy_popup"), "activate", nsgtk_on_copy_activate, g); CONNECT(glade_xml_get_widget(g->popup_xml, "paste_popup"),"activate", - nsgtk_on_paste_activate, g); + nsgtk_on_paste_activate, g); #define POPUP_ATTACH(x, y) gtk_menu_item_set_submenu( \ GTK_MENU_ITEM(glade_xml_get_widget(g->popup_xml, x)),\ @@ -1353,7 +1462,8 @@ nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel) #undef POPUP_ATTACH /* hides redundant popup menu items */ - GList *widgets = glade_xml_get_widget_prefix(g->popup_xml, "menupopup"); + GList *widgets = glade_xml_get_widget_prefix(g->popup_xml, + "menupopup"); for (; widgets != NULL; widgets = widgets->next) gtk_widget_hide(GTK_WIDGET(widgets->data)); @@ -1463,7 +1573,7 @@ void nsgtk_scaffolding_popup_menu(struct gtk_scaffolding *g, GtkWidget *widget = NULL; available_menu_options |= - nsgtk_scaffolding_update_save_link_sensitivity(g, + nsgtk_scaffolding_update_link_operations_sensitivity(g, g->popup_xml, x, y, TRUE); available_menu_options |= nsgtk_scaffolding_update_edit_actions_sensitivity(g, @@ -1471,7 +1581,7 @@ void nsgtk_scaffolding_popup_menu(struct gtk_scaffolding *g, /* Hide the separator as well */ if (!available_menu_options) { - widget = glade_xml_get_widget(g->popup_xml, "separator"); + widget = glade_xml_get_widget(g->popup_xml, "separator1"); gtk_widget_hide(widget); } @@ -1479,11 +1589,18 @@ void nsgtk_scaffolding_popup_menu(struct gtk_scaffolding *g, gtk_get_current_event_time()); } -static guint nsgtk_scaffolding_update_save_link_sensitivity( +static guint nsgtk_scaffolding_update_link_operations_sensitivity( struct gtk_scaffolding *g, GladeXML *xml, gdouble x, gdouble y, gboolean hide) { - GtkWidget *widget = glade_xml_get_widget_prefix(xml, "save_link")->data; + gboolean is_sensitive; + GtkWidget *widget1, *widget2, *widget3; + + widget1 = glade_xml_get_widget_prefix(xml, "save_link")->data; + widget2 = glade_xml_get_widget_prefix(xml, + "open_link_in_focused_tab")->data; + widget3 = glade_xml_get_widget_prefix(xml, + "open_link_in_background_tab")->data; struct browser_window *bw = nsgtk_get_browser_for_gui(g->top_level); current_menu_link_box = NULL; @@ -1492,12 +1609,17 @@ static guint nsgtk_scaffolding_update_save_link_sensitivity( x, y); } - gtk_widget_set_sensitive(widget, current_menu_link_box != NULL); - - if (hide && !current_menu_link_box) - gtk_widget_hide(widget); - - return (current_menu_link_box ? 1 : 0); + is_sensitive = (current_menu_link_box != NULL) ? TRUE : FALSE; + gtk_widget_set_sensitive(widget1, is_sensitive); + gtk_widget_set_sensitive(widget2, is_sensitive); + gtk_widget_set_sensitive(widget3, is_sensitive); + + if (hide == TRUE && current_menu_link_box == NULL) { + gtk_widget_hide(widget1); + gtk_widget_hide(widget2); + gtk_widget_hide(widget3); + } + return is_sensitive; } static guint nsgtk_scaffolding_update_edit_actions_sensitivity( @@ -1542,34 +1664,53 @@ static guint nsgtk_scaffolding_update_edit_actions_sensitivity( return (can_paste | can_cut | can_copy); } -static void nsgtk_scaffolding_enable_save_link_sensitivity( +static void nsgtk_scaffolding_enable_link_operations_sensitivity( struct gtk_scaffolding *g, GladeXML *xml) { - GtkWidget *widget; + GtkWidget *widget1; + GtkWidget *widget2; + GtkWidget *widget3; + + widget1 = glade_xml_get_widget_prefix(xml, "save_link")->data; + widget2 = glade_xml_get_widget_prefix(xml, + "open_link_in_focused_tab")->data; + widget3 = glade_xml_get_widget_prefix(xml, + "open_link_in_background_tab")->data; + + gtk_widget_set_sensitive(widget1, TRUE); + gtk_widget_show(widget1); + gtk_widget_set_sensitive(widget2, TRUE); + gtk_widget_show(widget2); + gtk_widget_set_sensitive(widget3, TRUE); + gtk_widget_show(widget3); + - widget = glade_xml_get_widget_prefix(xml, "save_link")->data; - gtk_widget_set_sensitive (widget, TRUE); - gtk_widget_show(widget); } static void nsgtk_scaffolding_enable_edit_actions_sensitivity( struct gtk_scaffolding *g, GladeXML *xml) { - GtkWidget *widget; - - widget = glade_xml_get_widget_prefix(xml, "copy")->data; - gtk_widget_set_sensitive (widget, TRUE); - gtk_widget_show(widget); - - widget = glade_xml_get_widget_prefix(xml, "cut")->data; - gtk_widget_set_sensitive (widget, TRUE); - gtk_widget_show(widget); - widget = glade_xml_get_widget_prefix(xml, "paste")->data; - gtk_widget_set_sensitive (widget, TRUE); - gtk_widget_show(widget); - - widget = glade_xml_get_widget(xml, "separator"); - gtk_widget_show(widget); -} + GtkWidget *widget1; + GtkWidget *widget2; + GtkWidget *widget3; + GtkWidget *widget4; + GtkWidget *widget5; + widget1 = glade_xml_get_widget(xml, "separator"); + widget2 = glade_xml_get_widget(xml, "separator1"); + widget3 = glade_xml_get_widget_prefix(xml, "copy")->data; + widget4 = glade_xml_get_widget_prefix(xml, "cut")->data; + widget5 = glade_xml_get_widget_prefix(xml, "paste")->data; + + gtk_widget_set_sensitive(widget3, TRUE); + gtk_widget_set_sensitive(widget4, TRUE); + gtk_widget_set_sensitive(widget5, TRUE); + + gtk_widget_show(widget1); + gtk_widget_show(widget2); + gtk_widget_show(widget3); + gtk_widget_show(widget4); + gtk_widget_show(widget5); + +} diff --git a/gtk/gtk_scaffolding.h b/gtk/gtk_scaffolding.h index 5ac0cfc97..f4b6bffd5 100644 --- a/gtk/gtk_scaffolding.h +++ b/gtk/gtk_scaffolding.h @@ -20,11 +20,49 @@ #define NETSURF_GTK_SCAFFOLDING_H 1 #include +#include #include "desktop/gui.h" #include "desktop/plotters.h" typedef struct gtk_scaffolding nsgtk_scaffolding; +struct gtk_scaffolding { + GtkWindow *window; + GtkNotebook *notebook; + GtkEntry *url_bar; + GtkEntryCompletion *url_bar_completion; + GtkStatusbar *status_bar; + GtkMenuItem *edit_menu; + GtkMenuItem *tabs_menu; + GtkToolbar *tool_bar; + GtkToolButton *back_button; + GtkToolButton *history_button; + GtkToolButton *forward_button; + GtkToolButton *stop_button; + GtkToolButton *reload_button; + GtkMenuBar *menu_bar; + GtkMenuItem *back_menu; + GtkMenuItem *forward_menu; + GtkMenuItem *stop_menu; + GtkMenuItem *reload_menu; + GtkImage *throbber; + GtkPaned *status_pane; + + GladeXML *xml; + + GladeXML *popup_xml; + GtkMenu *popup_menu; + + struct gtk_history_window *history_window; + GtkDialog *preferences_dialog; + + int throb_frame; + struct gui_window *top_level; + int being_destroyed; + + bool fullscreen; +}; + GtkWindow *nsgtk_get_window_for_scaffold(struct gtk_scaffolding *g); nsgtk_scaffolding *nsgtk_new_scaffolding(struct gui_window *toplevel); diff --git a/gtk/gtk_tabs.c b/gtk/gtk_tabs.c index 3e495af1d..b54f3cfb9 100644 --- a/gtk/gtk_tabs.c +++ b/gtk/gtk_tabs.c @@ -17,11 +17,13 @@ */ #include +#include #include "gtk/gtk_window.h" #include "gtk/gtk_gui.h" #include "desktop/browser.h" #include "content/content.h" #include "desktop/options.h" +#include "utils/utils.h" #include "gtk/options.h" #include "gtk/gtk_tabs.h" @@ -54,18 +56,32 @@ void nsgtk_tab_init(GtkWidget *tabs) nsgtk_tab_options_changed(tabs); } -void nsgtk_tab_add(struct gui_window *window) +void nsgtk_tab_add(struct gui_window *window, bool background) { - GtkNotebook *tabs = nsgtk_scaffolding_get_notebook(window); + GtkWidget *tabs = GTK_WIDGET(nsgtk_scaffolding_get_notebook(window)); GtkWidget *tabBox = nsgtk_tab_label_setup(window); - - gtk_notebook_append_page(tabs, - GTK_WIDGET(window->scrolledwindow), - tabBox); - + gint remember = gtk_notebook_get_current_page(GTK_NOTEBOOK(tabs)); + gtk_notebook_append_page(GTK_NOTEBOOK(tabs), + GTK_WIDGET(window->scrolledwindow), tabBox); + /*causes gtk errors can't set a parent + gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(tabs), + GTK_WIDGET(window->scrolledwindow), true); */ gtk_widget_show_all(GTK_WIDGET(window->scrolledwindow)); - - gtk_notebook_set_current_page(tabs, gtk_notebook_get_n_pages(tabs) - 1); + gtk_notebook_set_current_page(GTK_NOTEBOOK(tabs), + gtk_notebook_get_n_pages(GTK_NOTEBOOK(tabs)) - 1); + if (option_new_blank) { + /*char *blankpage = malloc(strlen(res_dir_location) + + SLEN("file:///blankpage") + 1); + blankpage = g_strconcat("file:///", res_dir_location, + "blankpage", NULL); */ + /* segfaults + struct browser_window *bw = nsgtk_get_browser_for_gui(window); + browser_window_go(bw, blankpage, 0, true); */ + /* free(blankpage); */ + } + if (background) + gtk_notebook_set_current_page(GTK_NOTEBOOK(tabs), remember); + gtk_widget_grab_focus(GTK_WIDGET(window->scaffold->url_bar)); } void nsgtk_tab_visibility_update(GtkNotebook *notebook, GtkWidget *child, @@ -97,7 +113,10 @@ GtkWidget *nsgtk_tab_label_setup(struct gui_window *window) hbox = gtk_hbox_new(FALSE, 2); - label = gtk_label_new("Loading..."); + if (option_new_blank == true) + label = gtk_label_new("New Tab"); + else + label = gtk_label_new("Loading..."); gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); gtk_label_set_single_line_mode(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); @@ -178,6 +197,7 @@ void nsgtk_tab_close_current(GtkNotebook *notebook) if (gtk_notebook_get_n_pages(notebook) < 2) return; /* wicked things happen if we close the last tab */ - gtk_notebook_remove_page(notebook, curr_page); nsgtk_window_destroy_browser(gw); + /* deletes 2 notebook tabs at a time! + gtk_notebook_remove_page(notebook, curr_page); */ } diff --git a/gtk/gtk_tabs.h b/gtk/gtk_tabs.h index c618fd948..88f703017 100644 --- a/gtk/gtk_tabs.h +++ b/gtk/gtk_tabs.h @@ -22,7 +22,7 @@ struct gui_window; void nsgtk_tab_init(GtkWidget *tabs); -void nsgtk_tab_add(struct gui_window *window); +void nsgtk_tab_add(struct gui_window *window, bool background); void nsgtk_tab_set_title(struct gui_window *g, const char *title); void nsgtk_tab_options_changed(GtkWidget *tabs); void nsgtk_tab_close_current(GtkNotebook *notebook); diff --git a/gtk/gtk_window.c b/gtk/gtk_window.c index 1784f5926..7b8fe5ec1 100644 --- a/gtk/gtk_window.c +++ b/gtk/gtk_window.c @@ -18,12 +18,14 @@ */ #include +#include #include "gtk/gtk_window.h" #include "desktop/browser.h" #include "desktop/options.h" #include "desktop/textinput.h" #include "desktop/selection.h" #include "gtk/gtk_gui.h" +#include "gtk/options.h" #include "gtk/gtk_scaffolding.h" #include "gtk/gtk_plotters.h" #include "gtk/gtk_schedule.h" @@ -34,7 +36,8 @@ #include #include -static struct gui_window *window_list = 0; /**< first entry in win list*/ +struct gui_window *window_list = 0; /**< first entry in win list*/ +int temp_open_background = -1; static uint32_t gdkkey_to_nskey(GdkEventKey *); static void nsgtk_gui_window_attach_child(struct gui_window *parent, @@ -110,21 +113,21 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, g->careth = 0; /* Attach ourselves to the list (push_top) */ - if (window_list) - window_list->prev = g; - g->next = window_list; - g->prev = NULL; - window_list = g; - - if (bw->parent != NULL) - /* Find our parent's scaffolding */ - g->scaffold = bw->parent->window->scaffold; - else if (new_tab) - g->scaffold = clone->window->scaffold; - else - /* Now construct and attach a scaffold */ - g->scaffold = nsgtk_new_scaffolding(g); - + if (window_list) + window_list->prev = g; + g->next = window_list; + g->prev = NULL; + window_list = g; + + if (bw->parent != NULL) + /* Find our parent's scaffolding */ + g->scaffold = bw->parent->window->scaffold; + else if (new_tab) { + g->scaffold = clone->window->scaffold; + } + else + /* Now construct and attach a scaffold */ + g->scaffold = nsgtk_new_scaffolding(g); /* Construct our primary elements */ g->fixed = GTK_FIXED(gtk_fixed_new()); @@ -141,19 +144,32 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, g->viewport = GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN(g->scrolledwindow))); g->tab = NULL; - if (bw->parent != NULL) - /* Attach ourselves into our parent at the right point */ - nsgtk_gui_window_attach_child(bw->parent->window, g); - else - /* Attach our viewport into the scaffold */ - nsgtk_tab_add(g); + if (bw->parent != NULL) + /* Attach ourselves into our parent at the right point */ + nsgtk_gui_window_attach_child(bw->parent->window, g); + else { + /* Attach our viewport into the scaffold */ + bool tempback = true; + switch (temp_open_background) { + case -1: + tempback = !(option_focus_new); + break; + case 0: + tempback = false; + break; + case 1: + tempback = true; + break; + } + nsgtk_tab_add(g, tempback); + } - gtk_container_set_border_width(GTK_CONTAINER(g->viewport), 0); - gtk_viewport_set_shadow_type(g->viewport, GTK_SHADOW_NONE); - if (g->scrolledwindow) - gtk_widget_show(GTK_WIDGET(g->scrolledwindow)); - /* And enable visibility from our viewport down */ - gtk_widget_show_all(GTK_WIDGET(g->viewport)); + gtk_container_set_border_width(GTK_CONTAINER(g->viewport), 0); + gtk_viewport_set_shadow_type(g->viewport, GTK_SHADOW_NONE); + if (g->scrolledwindow) + gtk_widget_show(GTK_WIDGET(g->scrolledwindow)); + /* And enable visibility from our viewport down */ + gtk_widget_show_all(GTK_WIDGET(g->viewport)); switch(bw->scrolling) { case SCROLLING_NO: @@ -636,14 +652,14 @@ void gui_window_destroy(struct gui_window *g) assert(g != NULL); assert(g->bw != NULL); LOG((" Scaffolding: %p", g->scaffold)); - LOG((" Window name: %s", g->bw->name)); + LOG((" Window name: %s", g->bw->name)); - /* If we're a top-level gui_window, destroy our scaffold */ - if (g->scrolledwindow == NULL) { - gtk_widget_destroy(GTK_WIDGET(g->viewport)); - nsgtk_scaffolding_destroy(g->scaffold); + /* If we're a top-level gui_window, destroy our scaffold */ + if (g->scrolledwindow == NULL) { + gtk_widget_destroy(GTK_WIDGET(g->viewport)); + nsgtk_scaffolding_destroy(g->scaffold); } else { - gtk_widget_destroy(GTK_WIDGET(g->scrolledwindow)); + gtk_widget_destroy(GTK_WIDGET(g->scrolledwindow)); } free(g); diff --git a/gtk/gtk_window.h b/gtk/gtk_window.h index 0f99549a7..71c86bca5 100644 --- a/gtk/gtk_window.h +++ b/gtk/gtk_window.h @@ -24,33 +24,33 @@ #include "gtk/gtk_scaffolding.h" struct gui_window { - /* All gui_window objects have an ultimate scaffold */ - nsgtk_scaffolding *scaffold; - /* A gui_window is the rendering of a browser_window */ - struct browser_window *bw; - struct browser_mouse *mouse; + /* All gui_window objects have an ultimate scaffold */ + nsgtk_scaffolding *scaffold; + /* A gui_window is the rendering of a browser_window */ + struct browser_window *bw; + struct browser_mouse *mouse; - /* These are the storage for the rendering */ + /* These are the storage for the rendering */ int caretx, carety, careth; gui_pointer_shape current_pointer; int last_x, last_y; - /* Within GTK, a gui_window is a scrolled window - * with a viewport inside - * with a gtkfixed in that - * with a drawing area in that - * The scrolled window is optional and only chosen - * for frames which need it. Otherwise we just use - * a viewport. - */ - GtkWidget *tab; - GtkScrolledWindow *scrolledwindow; + /* Within GTK, a gui_window is a scrolled window + * with a viewport inside + * with a gtkfixed in that + * with a drawing area in that + * The scrolled window is optional and only chosen + * for frames which need it. Otherwise we just use + * a viewport. + */ + GtkWidget *tab; + GtkScrolledWindow *scrolledwindow; GtkViewport *viewport; - GtkFixed *fixed; + GtkFixed *fixed; GtkDrawingArea *drawing_area; - /* Keep gui_windows in a list for cleanup later */ - struct gui_window *next, *prev; + /* Keep gui_windows in a list for cleanup later */ + struct gui_window *next, *prev; }; struct browser_mouse { @@ -63,6 +63,9 @@ struct browser_mouse { browser_mouse_state state; }; +extern struct gui_window * window_list; +extern int temp_open_background; + void nsgtk_reflow_all_windows(void); void nsgtk_window_process_reformats(void); diff --git a/gtk/options.h b/gtk/options.h index fe24b1880..ec48c326d 100644 --- a/gtk/options.h +++ b/gtk/options.h @@ -27,6 +27,13 @@ extern bool option_request_overwrite; extern char *option_downloads_directory; extern char *option_url_file; extern bool option_show_single_tab; +extern int option_button_type; +extern bool option_disable_popups; +extern bool option_disable_plugins; +extern int option_history_age; +extern bool option_hover_urls; +extern bool option_focus_new; +extern bool option_new_blank; #define EXTRA_OPTION_DEFINE \ bool option_render_resample = false; \ @@ -34,7 +41,14 @@ bool option_downloads_clear = false; \ bool option_request_overwrite = true; \ char *option_downloads_directory = 0; \ char *option_url_file = 0; \ -bool option_show_single_tab = false; +bool option_show_single_tab = false; \ +int option_button_type = 0; \ +bool option_disable_popups = false; \ +bool option_disable_plugins = false; \ +int option_history_age = 0; \ +bool option_hover_urls = false; \ +bool option_focus_new = false; \ +bool option_new_blank = false; #define EXTRA_OPTION_TABLE \ { "render_resample", OPTION_BOOL, &option_render_resample }, \ @@ -42,6 +56,13 @@ bool option_show_single_tab = false; { "request_overwrite", OPTION_BOOL, &option_request_overwrite }, \ { "downloads_directory",OPTION_STRING, &option_downloads_directory }, \ { "url_file", OPTION_STRING, &option_url_file }, \ -{ "show_single_tab", OPTION_BOOL, &option_show_single_tab }, +{ "show_single_tab", OPTION_BOOL, &option_show_single_tab }, \ +{ "button_type", OPTION_INTEGER, &option_button_type}, \ +{ "disable_popups", OPTION_BOOL, &option_disable_popups}, \ +{ "disable_plugins", OPTION_BOOL, &option_disable_plugins}, \ +{ "history_age", OPTION_INTEGER, &option_history_age}, \ +{ "hover_urls", OPTION_BOOL, &option_hover_urls}, \ +{ "focus_new", OPTION_BOOL, &option_focus_new}, \ +{ "new_blank", OPTION_BOOL, &option_new_blank} #endif diff --git a/gtk/res/arrow_down_8x32.png b/gtk/res/arrow_down_8x32.png new file mode 100644 index 000000000..475b4ff61 Binary files /dev/null and b/gtk/res/arrow_down_8x32.png differ diff --git a/gtk/res/blankpage b/gtk/res/blankpage new file mode 100644 index 000000000..1b9698cad --- /dev/null +++ b/gtk/res/blankpage @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gtk/res/languages b/gtk/res/languages new file mode 100644 index 000000000..095f083b4 --- /dev/null +++ b/gtk/res/languages @@ -0,0 +1,261 @@ +aa +ab +ae +af +ak +am +an +ar +ar-ae +ar-bh +ar-dz +ar-eg +ar-iq +ar-jo +ar-kw +ar-lb +ar-ly +ar-ma +ar-om +ar-qa +ar-sa +ar-sy +ar-tn +ar-ye +as +ast +av +az +ba +be +bg +bh +bi +bm +bn +bo +br +bs +ca +ce +ch +co +cr +cs +cu +cv +cy +da +de +de-at +de-ch +de-de +de-li +de-lu +dv +dz +ee +el +en +en-au +en-bz +en-ca +en-gb +en-ie +en-jm +en-nz +en-ph +en-tt +en-us +en-za +en-zw +eo +es +es-ar +es-bo +es-cl +es-co +es-cr +es-do +es-ec +es-es +es-gt +es-hn +es-mx +es-ni +es-pa +es-pe +es-pr +es-py +es-sv +es-uy +es-ve +et +eu +fa +fa-ir +ff +fi +fj +fo +fr +fr-be +fr-ca +fr-ch +fr-fr +fr-lu +fr-mc +fur +fy +ga +gd +gl +gn +gu +gv +ha +he +hi +ho +hsb +hr +ht +hu +hy +hz +ia +id +ie +ig +ii +ik +io +is +it +it-ch +iu +ja +jv +ka +kg +ki +kk +kl +km +kn +ko +ko-kp +ko-kr +kok +kr +ks +ku +kv +kw +ky +la +lb +lg +li +ln +lo +lt +lu +lv +mg +mh +mi +mk +mk-mk +ml +mn +mo +mr +ms +mt +my +na +nb +nd +ne +ng +nl +nl-be +nn +no +nr +nso +nv +ny +oc +oj +om +or +os +pa +pa-in +pa-pk +pi +pl +ps +pt +pt-br +qu +rm +rn +ro +ro-mo +ru +ru-mo +sa +sc +sd +sg +si +sk +sl +so +sq +sr +ss +st +su +sv +sv-fi +sv-se +sw +ta +te +tg +th +ti +tig +tk +tl +tlh +tn +to +tr +ts +tt +tw +ty +ug +uk +ur +uz +ve +vi +vo +wa +wo +xh +yi +yo +za +zh +zh-cn +zh-hk +zh-sg +zh-tw +zu diff --git a/gtk/res/netsurf.glade b/gtk/res/netsurf.glade index 67ea942da..13d5e716c 100644 --- a/gtk/res/netsurf.glade +++ b/gtk/res/netsurf.glade @@ -417,6 +417,19 @@ + + + True + View S_ource + True + + + True + gtk-index + + + + True @@ -777,7 +790,19 @@ gtk-go-back - False + True + + + + + True + False + False + True + arrow_down_8x32.png + + + True @@ -786,7 +811,7 @@ gtk-go-forward - False + True @@ -795,7 +820,7 @@ gtk-stop - False + True @@ -804,7 +829,7 @@ gtk-refresh - False + True @@ -813,7 +838,7 @@ gtk-home - False + True @@ -823,13 +848,10 @@ True True + True - - False - False - @@ -842,10 +864,6 @@ - - False - False - @@ -938,106 +956,106 @@ 11 10 - + True - True - True - sesame + 0 + moo.yoo.com 1 2 - 2 - 3 - + - + True - True - False - True - opensesame + 0 + Password - 1 - 2 3 4 - + - + True 0 - my sekr3t area + Username - 1 - 2 - 1 - 2 + 2 + 3 - + True 0 - Realm + Host - 1 - 2 - + True 0 - Host + Realm + 1 + 2 - + True 0 - Username + my sekr3t area - 2 - 3 + 1 + 2 + 1 + 2 - + True - 0 - Password + True + False + True + opensesame + 1 + 2 3 4 - + - + True - 0 - moo.yoo.com + True + True + sesame 1 2 - + 2 + 3 + @@ -1389,6 +1407,25 @@ + + + True + Open Link in _New Tab + True + + + + + True + Open Link in Back_ground Tab + True + + + + + True + + True @@ -1417,6 +1454,11 @@ + + + True + + True @@ -1431,11 +1473,6 @@ - - - True - - True diff --git a/gtk/res/options.glade b/gtk/res/options.glade index 7d0dcfbe4..6bc5cc41e 100644 --- a/gtk/res/options.glade +++ b/gtk/res/options.glade @@ -1,3612 +1,2232 @@ - - - + + + - - - 5 - Netsurf Preferences - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_CENTER_ON_PARENT - False - True - True - True - False - False - GDK_WINDOW_TYPE_HINT_DIALOG - GDK_GRAVITY_NORTH_WEST - True - False - False - - - - True - False - 2 - - - - True - GTK_BUTTONBOX_EDGE - - - - True - False - True - gtk-help - True - GTK_RELIEF_NORMAL - True - 0 - - - - - - True - True - gtk-close - True - GTK_RELIEF_NORMAL - True - -7 - - - - - 0 - False - True - GTK_PACK_END - - - - - - 4 - True - True - True - True - GTK_POS_TOP - False - False - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - 5 - True - False - 5 - - - - True - URL - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - The page to visit when the Home button is pressed, or a new window is opened. - True - True - True - 0 - - True - - False - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - False - 5 - - - - True - True - Current Page - True - GTK_RELIEF_NORMAL - True - - - 5 - True - True - - - - - - True - True - Default Page - True - GTK_RELIEF_NORMAL - True - - - 5 - True - True - GTK_PACK_END - - - - - 0 - True - True - - - - - - - - - - True - <b>Home page</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - True - 0 - - - - True - Attempt to hide images from known advertisement servers. - True - Hide advertisements - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - False - Stop pop-up windows normally containing adverts appearing. - True - Disable pop-up windows - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - False - Do not allow the embedded of applets and plugins. - True - Disable plug-ins - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - - - True - <b>Content blocking</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - 1 - True - False - 2 - - - - 4 - True - False - 4 - - - - True - Keep history for - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - False - Visited pages are forgotten after this many days - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 14 0 100 1 10 10 - - - 0 - False - False - - - - - - True - days - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - True - False - Show a tooltip showing the URL of a page in the local history tree. - True - Hover URLs by pointer in local history - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - - - True - <b>History</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - True - 0 - - - - True - Show a drop-down list of recent addresses when typing into the address bar. - True - Display recently visited URLs as you type - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - When requesting items or pages, tell the server what linked to them. - True - Send site referral information - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - False - False - - - - - - True - True - Show tab bar with only one tab - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - - - True - <b>Misc</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - General - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 4 - 2 - False - 3 - 3 - - - - True - If your proxy server requires authentication, enter your password here. - True - True - False - 0 - - True - - False - - - 1 - 2 - 3 - 4 - - - - - - - True - Proxy type - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - Host - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - Username - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - Password - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - - - - - - - - True - False - 0 - - - - True - Host name of your proxy server. - True - True - True - 0 - - True - - False - - - 0 - True - True - - - - - - True - : - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - 64 - True - Port number to connect to on proxy server. - True - True - True - 0 - - True - - False - - - 0 - True - True - - - - - 1 - 2 - 1 - 2 - - - - - - - - True - No proxy + + 5 + Netsurf Preferences + GTK_WIN_POS_CENTER_ON_PARENT + True + GDK_WINDOW_TYPE_HINT_DIALOG + False + + + True + 2 + + + True + True + 4 + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + 5 + 5 + + + True + URL + + + False + False + + + + + True + True + The page to visit when the Home button is pressed, or a new window is opened. + + + 1 + + + + + + + True + 5 + + + True + True + Current Page + True + 0 + + + 5 + + + + + True + True + Default Page + True + 0 + + + 5 + GTK_PACK_END + 1 + + + + + 1 + + + + + + + + + True + <b>Home page</b> + True + + + label_item + + + + + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + True + + + True + True + True + Attempt to hide images from known advertisement servers. + Hide advertisements + True + 0 + True + + + False + False + + + + + True + True + True + Stop pop-up windows normally containing adverts appearing. + Disable pop-up windows + True + 0 + True + + + False + False + 1 + + + + + True + True + True + Do not allow embedded applets or plugins. + Disable plug-ins + True + 0 + True + + + False + False + 2 + + + + + + + + + True + <b>Content blocking</b> + True + + + label_item + + + + + False + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + + + + True + + + + + + + + + + + + False + False + 1 + + + + + + + + + + + + True + <b>Content Language</b> + True + + + label_item + + + + + 1 + + + + + False + 1 + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 1 + 2 + + + True + 4 + 4 + + + True + Keep history for + + + False + False + + + + + True + True + Visited pages are kept in memory for this many days + 14 0 100 1 10 10 + 1 + + + False + False + 1 + + + + + True + days + + + False + False + 2 + + + + + + + True + True + Show a tooltip showing the URL of a page in the local history tree. + Hover URLs by pointer in local history + True + 0 + True + + + False + False + 1 + + + + + + + + + True + <b>History</b> + True + + + label_item + + + + + False + False + 2 + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + True + + + True + True + Show a drop-down list of recent addresses when typing into the address bar. + Display recently visited URLs as you type + True + 0 + True + + + False + False + + + + + True + True + When requesting items or pages, tell the server what linked to them. + Send site referral information + True + 0 + True + True + + + False + False + 1 + + + + + True + True + Show tab bar with only one tab + True + 0 + True + + + False + False + 2 + + + + + + + + + True + <b>Misc</b> + True + + + label_item + + + + + False + 3 + + + + + + + True + General + + + tab + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 4 + 2 + 3 + 3 + + + True + True + If your proxy server requires authentication, enter your password here. + False + + + 1 + 2 + 3 + 4 + + + + + + True + 0 + Proxy type + + + + + + + + + True + 0 + Host + + + 1 + 2 + + + + + + + True + 0 + Username + + + 2 + 3 + + + + + + + True + 0 + Password + + + 3 + 4 + + + + + + + True + + + True + True + Host name of your proxy server. + + + + + True + : + + + False + False + 1 + + + + + 64 + True + True + Port number to connect to on proxy server. + + + False + 2 + + + + + 1 + 2 + 1 + 2 + + + + + + True + No proxy Simple proxy Basic authentication NTLM authentication - False - True - - - 1 - 2 - 0 - 1 - - - - - - - True - If your proxy server requires authentication, enter your username here. - True - True - True - 0 - - True - - False - - - 1 - 2 - 2 - 3 - - - - - - - - - - - True - <b>HTTP Proxy</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - 3 - True - 3 - 2 - False - 3 - 3 - - - - True - Maximum number of concurrent items to fetch at once. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 1 - 2 - 0 - 1 - - - - - - - True - Maximum number of item fetches per web server. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 1 - 2 - 1 - 2 - - - - - - - True - Number of connections to keep incase they are needed again. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 1 - 2 - 2 - 3 - - - - - - - True - Cached connections - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - True - Fetches per host - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - True - Maximum fetchers - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - - - - True - <b>Fetching</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Network - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Resample images when not at natural size - True - Resample images when not at natural size - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - True - True - - - - - - - - - - True - <b>Quality</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - False - 5 - - - - True - Limit speed to - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Do not update animations any more often than this. - True - 1 - 1 - True - GTK_UPDATE_IF_VALID - False - False - 0 0 100 0.10000000149 1 1 - - - 0 - True - False - - - - - - True - seconds between frames - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - 0 - True - True - - - - - - True - Display only the first frame of animated images. - True - Disable animations - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - - - - - True - <b>Animations</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - False - True - - - - - - True - Rendering - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - 2 - True - 6 - 2 - False - 3 - 3 - - - - True - True - False - False - False - False - True - - - 1 - 2 - 0 - 1 - - - - - - - True - Sans-serif + + + 1 + 2 + + + + + + True + True + If your proxy server requires authentication, enter your username here. + + + 1 + 2 + 2 + 3 + + + + + + + + + + True + <b>HTTP Proxy</b> + True + + + label_item + + + + + False + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 3 + 3 + 2 + 3 + 3 + + + True + True + Maximum number of concurrent items to fetch at once. + 1 0 100 1 10 10 + 1 + + + 1 + 2 + + + + + + True + True + Maximum number of item fetches per web server. + 1 0 100 1 10 10 + 1 + + + 1 + 2 + 1 + 2 + + + + + + True + True + Number of connections to keep incase they are needed again. + 1 0 100 1 10 10 + 1 + + + 1 + 2 + 2 + 3 + + + + + + True + 0 + Cached connections + + + 2 + 3 + + + + + + True + 0 + Fetches per host + + + 1 + 2 + + + + + + True + 0 + Maximum fetchers + + + + + + + + + + + + True + <b>Fetching</b> + True + + + label_item + + + + + False + 1 + + + + + 1 + + + + + True + Network + + + tab + 1 + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Resample images when not at natural size + Resample images when not at natural size + True + 0 + True + True + + + + + + + + + True + <b>Quality</b> + True + + + label_item + + + + + False + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + 5 + + + True + Limit speed to + + + False + False + + + + + True + True + Do not update animations any more often than this. + 0 0 100 0.10000000149 1 1 + 1 + 1 + True + GTK_UPDATE_IF_VALID + + + False + 1 + + + + + True + seconds between frames + + + 2 + + + + + + + True + True + Display only the first frame of animated images. + Disable animations + True + 0 + True + + + False + False + 1 + + + + + + + + + True + <b>Animations</b> + True + + + label_item + + + + + False + False + 1 + + + + + 2 + + + + + True + Rendering + + + tab + 2 + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 2 + 6 + 2 + 3 + 3 + + + True + True + 0 + False + False + + + 1 + 2 + + + + + + True + Sans-serif Serif Monospace Cursive Fantasy - False - True - - - 1 - 2 - 5 - 6 - - - - - - - - True - True - False - False - False - False - True - - - 1 - 2 - 4 - 5 - - - - - - - - True - True - False - False - False - False - True - - - 1 - 2 - 3 - 4 - - - - - - - - True - True - False - False - False - False - True - - - 1 - 2 - 2 - 3 - - - - - - - - True - True - False - False - False - False - True - - - 1 - 2 - 1 - 2 - - - - - - - - True - Default - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 5 - 6 - - - - - - - - True - Fantasy - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 4 - 5 - - - - - - - - True - Cursive - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 3 - 4 - - - - - - - - True - Monospace - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 2 - 3 - - - - - - - - True - Serif - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - Sans-serif - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - - - - - True - <b>Font faces</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - 2 - 4 - False - 3 - 3 - - - - True - pt - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - - - True - pt - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - - True - Do not allow text to be displayed any smaller than this. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 1 - 2 - 1 - 2 - - - - - - - - True - The base-line font size to use. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 1 - 2 - 0 - 1 - - - - - - - - True - Minimum - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - - - True - Default - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - - - True - View the changes in the browser window immediately. - True - GTK_RELIEF_NORMAL - True - - - - 2 - True - False - 0 - - - - True - gtk-apply - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - True - True - - - - - - True - _Preview - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - True - True - - - - - - - 3 - 4 - 0 - 2 - 2 - - - - - - - - - - - - True - <b>Font size</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Fonts - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - 2 - True - False - 6 - - - - True - Size - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - How much memory to use for caching recently viewed objects in memory. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 0 - False - False - - - - - - True - MB - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - - True - <b>Memory cache</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 5 - - - - True - False - 3 - - - - True - Duration - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - How long to keep cached items around on disc. - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 1 0 100 1 10 10 - - - 0 - False - False - - - - - - True - days - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - 0 - True - True - - - - - - 4 - True - False - 4 - - - - - - - - True - Flush cached items that are older than the maximum permitted age. - True - GTK_RELIEF_NORMAL - True - - - - True - 0.5 - 0.5 - 0 - 0 - 0 - 0 - 0 - 0 - - - - True - False - 2 - - - - True - gtk-delete - 4 - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - - True - False - Perform maintainance - True - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - 0 - False - False - - - - - - - - - - True - <b>Disc cache</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Cache - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - Erase the download from the list as soon as it completes. - True - Automatically clear downloads when completed - True - GTK_RELIEF_NORMAL - True - True - False - True - - - 0 - True - True - - - - - - True - Ask before overwriting files when downloading. - True - Request confirmation before overwriting files - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - False - False - - - - - - True - False - 0 - - - - True - Download directory: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - False - - - - - - True - Select A File - GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER - True - False - False - 25 - - - 0 - True - True - - - - - 0 - True - True - - - - - - - - - - True - <b>Downloads</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - False - True - - - - - - True - Downloads - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - False - 0 - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - True - 0 - - - - True - 2 - 3 - False - 5 - 4 - - - - True - Top: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - True - Bottom: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - True - Set the top margin - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - 1 - 2 - 0 - 1 - - - - - - True - Set the bottom margin - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - 1 - 2 - 1 - 2 - - - - - - True - mm - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - True - mm - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - 0 - False - False - - - - - - True - 2 - 3 - False - 5 - 4 - - - - True - Left: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 0 - 1 - - - - - - True - Right: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - 1 - 1 - 2 - - - - - - True - Set the left margin - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - 1 - 2 - 0 - 1 - - - - - - True - Set the right margin - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 100 1 10 10 - - - 1 - 2 - 1 - 2 - - - - - - True - mm - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 0 - 1 - - - - - - True - mm - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 2 - 3 - 1 - 2 - - - - - 0 - False - False - - - - - - - - - - True - <b>Margins</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - True - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 4 - - - - True - Scale: - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - True - - - - - - True - Set the scaling for the document - this way more content can fit in a page - True - 1 - 0 - False - GTK_UPDATE_ALWAYS - False - False - 0 0 1000 1 10 10 - - - 0 - False - False - - - - - - True - % - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - 0 - False - True - - - - - - - - - - True - <b>Scaling</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Suppress images - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - True - True - - - - - - True - True - Remove backgrounds - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - True - True - - - - - - True - True - Fit page - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - True - True - - - - - - - - - - True - <b>Appearance</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - True - False - - - - - - 5 - True - 0 - 0.5 - GTK_SHADOW_NONE - - - - True - 0.5 - 0.5 - 1 - 1 - 0 - 0 - 12 - 0 - - - - True - False - 0 - - - - True - True - Compress PDF - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - True - True - - - - - - True - True - Set a password for PDF - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 0 - True - True - - - - - - - - - - True - <b>Advanced</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - label_item - - - - - 0 - False - False - - - - - - 10 - True - False - 0 - - - - True - Reset export settings to defaults - True - Default - True - GTK_RELIEF_NORMAL - True - - - 0 - False - False - - - - - 0 - False - True - - - - - False - True - - - - - - True - Export - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - + + + 1 + 2 + 5 + 6 + GTK_FILL + + + + + + True + True + 0 + False + False + + + 1 + 2 + 4 + 5 + GTK_FILL + + + + + + True + True + 0 + False + False + + + 1 + 2 + 3 + 4 + GTK_FILL + + + + + + True + True + 0 + False + False + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + + True + True + 0 + False + False + + + 1 + 2 + 1 + 2 + GTK_FILL + + + + + + True + 0 + Default + + + 5 + 6 + + + + + + + True + 0 + Fantasy + + + 4 + 5 + + + + + + + True + 0 + Cursive + + + 3 + 4 + + + + + + + True + 0 + Monospace + + + 2 + 3 + + + + + + + True + 0 + Serif + + + 1 + 2 + + + + + + + True + 0 + Sans-serif + + + + + + + + + + + + + True + <b>Font faces</b> + True + + + label_item + + + + + False + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 2 + 4 + 3 + 3 + + + True + 0 + pt + + + 2 + 3 + 1 + 2 + + + + + + True + 0 + pt + + + 2 + 3 + + + + + + True + True + Do not allow text to be displayed any smaller than this. + 1 0 100 1 10 10 + 1 + + + 1 + 2 + 1 + 2 + + + + + + + True + True + The base-line font size to use. + 1 0 100 1 10 10 + 1 + + + 1 + 2 + + + + + + + True + 0 + Minimum + + + 1 + 2 + + + + + + + True + 0 + Default + + + + + + + + + True + True + View the changes in the browser window immediately. + 0 + + + True + 2 + + + True + gtk-apply + + + + + True + _Preview + True + + + 1 + + + + + + + 3 + 4 + 2 + + + 2 + + + + + + + + + True + <b>Font size</b> + True + + + label_item + + + + + False + 1 + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 2 + 10 + 3 + + + True + Toolbar buttons + GTK_JUSTIFY_RIGHT + + + + + + + + True + Small icons +Large icons +Large icons and text +Text only + + + 1 + 2 + + + + + + + + + + + True + 5 + <b>Icons</b> + True + + + label_item + + + + + 2 + + + + + 3 + + + + + True + Style + + + tab + 3 + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 2 + 6 + + + True + Size + + + False + False + + + + + True + True + How much memory to use for caching recently viewed objects in memory. + 1 0 100 1 10 10 + 1 + + + False + False + 1 + + + + + True + MB + + + False + False + 2 + + + + + + + + + True + <b>Memory cache</b> + True + + + label_item + + + + + False + False + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 5 + + + True + 3 + + + True + Duration + + + False + False + + + + + True + True + How long to keep cached items around on disc. + 1 0 100 1 10 10 + 1 + + + False + False + 1 + + + + + True + days + + + False + False + 2 + + + + + + + True + 4 + 4 + + + + + + True + True + Flush cached items that are older than the maximum permitted age. + 0 + + + True + 0 + 0 + + + True + 2 + + + True + gtk-delete + + + False + False + + + + + True + False + Perform maintainance + True + + + False + False + 1 + + + + + + + + + False + False + 1 + + + + + + + + False + False + 1 + + + + + + + + + True + <b>Disc cache</b> + True + + + label_item + + + + + False + 1 + + + + + 4 + + + + + True + Cache + + + tab + 4 + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Erase the download from the list as soon as it completes. + Automatically clear downloads when completed + True + 0 + True + True + + + + + True + True + Ask before overwriting files when downloading. + Request confirmation before overwriting files + True + 0 + True + + + False + False + 1 + + + + + True + + + True + Download directory: + + + False + False + + + + + True + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER + 25 + + + 1 + + + + + 2 + + + + + + + + + True + <b>Downloads</b> + True + + + label_item + + + + + False + + + + + True + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Shift focus to new tab + 0 + True + + + 20 + + + + + True + True + Open blank window + 0 + True + + + 20 + 1 + + + + + + + + + True + <b>On opening new tabs</b> + True + + + label_item + + + + + False + False + 1 + + + + + + + + 5 + + + + + True + Advanced + + + tab + 5 + False + + + + + True + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + True + + + True + 2 + 3 + 4 + 5 + + + True + Top: + + + + + True + Bottom: + + + 1 + 2 + + + + + True + True + Set the top margin + 0 0 100 1 10 10 + 1 + + + 1 + 2 + + + + + True + True + Set the bottom margin + 0 0 100 1 10 10 + 1 + + + 1 + 2 + 1 + 2 + + + + + True + mm + + + 2 + 3 + + + + + True + mm + + + 2 + 3 + 1 + 2 + + + + + False + False + + + + + True + 2 + 3 + 4 + 5 + + + True + Left: + + + + + True + Right: + + + 1 + 2 + + + + + True + True + Set the left margin + 0 0 100 1 10 10 + 1 + + + 1 + 2 + + + + + True + True + Set the right margin + 0 0 100 1 10 10 + 1 + + + 1 + 2 + 1 + 2 + + + + + True + mm + + + 2 + 3 + + + + + True + mm + + + 2 + 3 + 1 + 2 + + + + + False + False + 1 + + + + + + + + + True + <b>Margins</b> + True + + + label_item + + + + + False + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + 4 + + + True + Scale: + + + False + + + + + True + True + Set the scaling for the document - this way more content can fit in a page + 0 0 1000 1 10 10 + 1 + + + False + False + 1 + + + + + True + % + + + False + 2 + + + + + + + + + True + <b>Scaling</b> + True + + + label_item + + + + + False + False + 1 + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Suppress images + True + 0 + True + + + + + True + True + Remove backgrounds + True + 0 + True + + + 1 + + + + + True + True + Fit page + True + 0 + True + + + 2 + + + + + + + + + True + <b>Appearance</b> + True + + + label_item + + + + + False + 2 + + + + + True + 5 + 0 + GTK_SHADOW_NONE + + + True + 12 + + + True + + + True + True + Compress PDF + True + 0 + True + + + + + True + True + Set a password for PDF + True + 0 + True + + + 1 + + + + + + + + + True + <b>Advanced</b> + True + + + label_item + + + + + False + False + 3 + + + + + True + 10 + + + True + True + Reset export settings to defaults + Default + True + 0 + + + False + False + + + + + False + 4 + + + + + 6 + + + + + True + Export + + + tab + 6 + False + + + + + 1 + + + + + True + GTK_BUTTONBOX_EDGE + + + True + False + True + gtk-help + True + 0 + + + + + True + True + gtk-close + True + -7 + + + 1 + + + + + False + GTK_PACK_END + + + + + diff --git a/gtk/res/source.glade b/gtk/res/source.glade new file mode 100644 index 000000000..144179bb1 --- /dev/null +++ b/gtk/res/source.glade @@ -0,0 +1,202 @@ + + + + + + + + True + + + True + + + True + _File + True + + + True + + + True + gtk-save-as + True + True + + + + + + True + gtk-print + True + True + + + + + + True + + + + + True + gtk-close + True + True + + + + + + + + + True + _Edit + True + + + True + + + True + gtk-select-all + True + True + + + + + + True + gtk-cut + True + True + + + + + True + gtk-copy + True + True + + + + + True + gtk-paste + True + True + + + + + True + gtk-delete + True + True + + + + + + + + + + True + _View + True + + + True + + + True + gtk-zoom-in + True + True + + + + + + True + gtk-zoom-out + True + True + + + + + + True + gtk-zoom-100 + True + True + + + + + + + + + + True + _Help + True + + + True + + + True + gtk-about + True + True + + + + + + + + + False + + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + + + 600 + 400 + True + True + 1 + 1 + False + GTK_WRAP_WORD + 3 + 3 + False + + + + + 1 + + + + + + -- cgit v1.2.3