From 90a15a9753a4e882a4a0d7ce04fdae9ec5d29683 Mon Sep 17 00:00:00 2001 From: François Revel Date: Tue, 3 Jun 2008 19:07:09 +0000 Subject: The BeOS-specific part of the BeOS (and Haiku) port, modeled mostly from the GTK version. Some fixes are needed elsewhere but non-obvious ones I'll post on the mailing list for discussion. Currently it opens windows with a toolbar, url and status bar, a (yet empty) menu bar. Rendering seems to work including scrolling at scale 1 (other non-tested). framesets seems broken though. svn path=/trunk/netsurf/; revision=4253 --- beos/beos_options.cpp | 273 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 beos/beos_options.cpp (limited to 'beos/beos_options.cpp') diff --git a/beos/beos_options.cpp b/beos/beos_options.cpp new file mode 100644 index 000000000..c56c38a43 --- /dev/null +++ b/beos/beos_options.cpp @@ -0,0 +1,273 @@ +/* + * Copyright 2006 Rob Kendrick + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include +extern "C" { +#include "utils/log.h" +#include "desktop/options.h" +} +#include "beos/options.h" +#include "beos/beos_gui.h" +#include "beos/beos_scaffolding.h" +#include "beos/beos_options.h" +//#include "beos/beos_window.h" +#include +#include + +BWindow *wndPreferences; + +#if 0 /* GTK */ +GtkWindow *wndPreferences; + +static GtkWidget *entryHomePageURL, + *checkHideAdverts, + *checkDisablePopups, + *checkDisablePlugins, + *spinHistoryAge, + *checkHoverURLs, + *checkRequestOverwrite, + *checkDisplayRecentURLs, + *checkSendReferer, + + *comboProxyType, + *entryProxyHost, + *entryProxyPort, + *entryProxyUser, + *entryProxyPassword, + *spinMaxFetchers, + *spinFetchesPerHost, + *spinCachedConnections, + + *checkUseCairo, + *checkResampleImages, + *spinAnimationSpeed, + *checkDisableAnimations, + + *fontSansSerif, + *fontSerif, + *fontMonospace, + *fontCursive, + *fontFantasy, + *comboDefault, + *spinDefaultSize, + *spinMinimumSize, + + *spinMemoryCacheSize, + *spinDiscCacheAge; + +#define FIND_WIDGET(x) (x) = glade_xml_get_widget(gladeWindows, #x); if ((x) == NULL) LOG(("Unable to find widget '%s'!", #x)) +#endif + +void nsbeos_options_init(void) { +#if 0 /* GTK */ + wndPreferences = GTK_WINDOW(glade_xml_get_widget(gladeWindows, + "wndPreferences")); + + /* get widget objects */ + FIND_WIDGET(entryHomePageURL); + FIND_WIDGET(checkHideAdverts); + FIND_WIDGET(checkDisablePopups); + FIND_WIDGET(checkDisablePlugins); + FIND_WIDGET(spinHistoryAge); + FIND_WIDGET(checkHoverURLs); + FIND_WIDGET(checkRequestOverwrite); + FIND_WIDGET(checkDisplayRecentURLs); + FIND_WIDGET(checkSendReferer); + + FIND_WIDGET(comboProxyType); + FIND_WIDGET(entryProxyHost); + FIND_WIDGET(entryProxyPort); + FIND_WIDGET(entryProxyUser); + FIND_WIDGET(entryProxyPassword); + FIND_WIDGET(spinMaxFetchers); + FIND_WIDGET(spinFetchesPerHost); + FIND_WIDGET(spinCachedConnections); + + FIND_WIDGET(checkUseCairo); + FIND_WIDGET(checkResampleImages); + FIND_WIDGET(spinAnimationSpeed); + FIND_WIDGET(checkDisableAnimations); + + FIND_WIDGET(fontSansSerif); + FIND_WIDGET(fontSerif); + FIND_WIDGET(fontMonospace); + FIND_WIDGET(fontCursive); + FIND_WIDGET(fontFantasy); + FIND_WIDGET(comboDefault); + FIND_WIDGET(spinDefaultSize); + FIND_WIDGET(spinMinimumSize); + + FIND_WIDGET(spinMemoryCacheSize); + FIND_WIDGET(spinDiscCacheAge); + +#endif + /* set the widgets to reflect the current options */ + nsbeos_options_load(); +} + +#if 0 /* GTK */ +#define SET_ENTRY(x, y) gtk_entry_set_text(GTK_ENTRY((x)), (y)) +#define SET_SPIN(x, y) gtk_spin_button_set_value(GTK_SPIN_BUTTON((x)), (y)) +#define SET_CHECK(x, y) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON((x)), (y)) +#define SET_COMBO(x, y) gtk_combo_box_set_active(GTK_COMBO_BOX((x)), (y)) +#define SET_FONT(x, y) gtk_font_button_set_font_name(GTK_FONT_BUTTON((x)), (y)) +#endif + +void nsbeos_options_load(void) { +#warning WRITEME +#if 0 /* GTK */ + char b[20]; + int proxytype = 0; + + SET_ENTRY(entryHomePageURL, + option_homepage_url ? option_homepage_url : ""); + SET_CHECK(checkHideAdverts, option_block_ads); + SET_CHECK(checkDisplayRecentURLs, option_url_suggestion); + SET_CHECK(checkSendReferer, option_send_referer); + + switch (option_http_proxy_auth) { + case OPTION_HTTP_PROXY_AUTH_NONE: + proxytype = 1; + break; + case OPTION_HTTP_PROXY_AUTH_BASIC: + proxytype = 2; + break; + case OPTION_HTTP_PROXY_AUTH_NTLM: + proxytype = 3; + break; + } + + if (option_http_proxy == false) + proxytype = 0; + + SET_COMBO(comboProxyType, proxytype); + SET_ENTRY(entryProxyHost, + option_http_proxy_host ? option_http_proxy_host : ""); + snprintf(b, 20, "%d", option_http_proxy_port); + SET_ENTRY(entryProxyPort, b); + SET_ENTRY(entryProxyUser, option_http_proxy_auth_user ? + option_http_proxy_auth_user : ""); + SET_ENTRY(entryProxyPassword, option_http_proxy_auth_pass ? + option_http_proxy_auth_pass : ""); + + SET_SPIN(spinMaxFetchers, option_max_fetchers); + SET_SPIN(spinFetchesPerHost, option_max_fetchers_per_host); + SET_SPIN(spinCachedConnections, option_max_cached_fetch_handles); + + SET_CHECK(checkUseCairo, option_render_cairo); + SET_CHECK(checkResampleImages, option_render_resample); + SET_SPIN(spinAnimationSpeed, option_minimum_gif_delay / 100); + SET_CHECK(checkDisableAnimations, !option_animate_images); + + SET_FONT(fontSansSerif, option_font_sans); + SET_FONT(fontSerif, option_font_serif); + SET_FONT(fontMonospace, option_font_mono); + SET_FONT(fontCursive, option_font_cursive); + SET_FONT(fontFantasy, option_font_fantasy); + SET_COMBO(comboDefault, option_font_default - 1); + SET_SPIN(spinDefaultSize, option_font_size / 10); + SET_SPIN(spinMinimumSize, option_font_min_size / 10); + + SET_SPIN(spinMemoryCacheSize, option_memory_cache_size >> 20); + SET_SPIN(spinDiscCacheAge, option_disc_cache_age); +#endif +} + +#if 0 /* GTK */ +#define GET_ENTRY(x, y) if ((y)) free((y)); \ + (y) = strdup(gtk_entry_get_text(GTK_ENTRY((x)))) +#define GET_CHECK(x, y) (y) = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON((x))) +#define GET_SPIN(x, y) (y) = gtk_spin_button_get_value(GTK_SPIN_BUTTON((x))) +#define GET_COMBO(x, y) (y) = gtk_combo_box_get_active(GTK_COMBO_BOX((x))) +#define GET_FONT(x, y) if ((y)) free((y)); \ + (y) = strdup(gtk_font_button_get_font_name(GTK_FONT_BUTTON((x)))) +#endif + +void nsbeos_options_save(void) { +#warning WRITEME +#if 0 /* GTK */ + char *b = NULL; + int i; + + GET_ENTRY(entryHomePageURL, option_homepage_url); + GET_CHECK(checkDisplayRecentURLs, option_url_suggestion); + + GET_COMBO(comboProxyType, i); + LOG(("proxy type: %d", i)); + switch (i) + { + 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; + default: + option_http_proxy = false; + option_http_proxy_auth = OPTION_HTTP_PROXY_AUTH_NONE; + break; + } + + GET_ENTRY(entryProxyHost, option_http_proxy_host); + GET_ENTRY(entryProxyPort, b); + option_http_proxy_port = atoi(b); + free(b); + GET_ENTRY(entryProxyUser, option_http_proxy_auth_user); + GET_ENTRY(entryProxyPassword, option_http_proxy_auth_pass); + + GET_SPIN(spinMaxFetchers, option_max_fetchers); + GET_SPIN(spinFetchesPerHost, option_max_fetchers_per_host); + GET_SPIN(spinCachedConnections, option_max_cached_fetch_handles); + + GET_CHECK(checkUseCairo, option_render_cairo); + GET_CHECK(checkResampleImages, option_render_resample); + GET_SPIN(spinAnimationSpeed, option_minimum_gif_delay); + option_minimum_gif_delay *= 100; + + GET_FONT(fontSansSerif, option_font_sans); + GET_FONT(fontSerif, option_font_serif); + GET_FONT(fontMonospace, option_font_mono); + GET_FONT(fontCursive, option_font_cursive); + GET_FONT(fontFantasy, option_font_fantasy); + GET_COMBO(comboDefault, option_font_default); + option_font_default++; + + GET_SPIN(spinDefaultSize, option_font_size); + option_font_size *= 10; + GET_SPIN(spinMinimumSize, option_font_min_size); + option_font_min_size *= 10; + + GET_SPIN(spinMemoryCacheSize, option_memory_cache_size); + option_memory_cache_size <<= 20; + + options_write(options_file_location); + nsgtk_reflow_all_windows(); +#endif +} -- cgit v1.2.3