diff options
author | Vincent Sanders <vince@kyllikki.org> | 2016-05-05 22:28:51 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2016-05-15 13:44:34 +0100 |
commit | d21447d096a320a08b3efb2b8768fad0dcdcfd64 (patch) | |
tree | 1a83814b7c9e94b2f13c473261f23dd3a17dee64 /atari/settings.c | |
parent | 2cbb337756d9af5bda4d594964d446439f602551 (diff) | |
download | netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.gz netsurf-d21447d096a320a08b3efb2b8768fad0dcdcfd64.tar.bz2 |
move frontends into sub directory
Diffstat (limited to 'atari/settings.c')
-rw-r--r-- | atari/settings.c | 990 |
1 files changed, 0 insertions, 990 deletions
diff --git a/atari/settings.c b/atari/settings.c deleted file mode 100644 index b6df12760..000000000 --- a/atari/settings.c +++ /dev/null @@ -1,990 +0,0 @@ -/* - * Copyright 2013 Ole Loots <ole@monochrom.net> - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <assert.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <time.h> -#include <limits.h> -#include <unistd.h> -#include <string.h> -#include <stdbool.h> -#include <cflib.h> -#include <gem.h> - -#include "utils/dirent.h" -#include "utils/nsoption.h" -#include "utils/log.h" -#include "desktop/plot_style.h" - -#include "atari/gui.h" -#include "atari/res/netsurf.rsh" -#include "atari/settings.h" -#include "atari/deskmenu.h" -#include "atari/misc.h" -#include "atari/plot/plot.h" -#include "atari/bitmap.h" -#include "atari/findfile.h" -#include "atari/gemtk/gemtk.h" - -extern char options[PATH_MAX]; -extern GRECT desk_area; - -static float tmp_option_minimum_gif_delay; -static unsigned tmp_option_memory_cache_size; -static unsigned int tmp_option_disc_cache_size; -static unsigned int tmp_option_expire_url; -static unsigned int tmp_option_disc_cache_age; -static unsigned int tmp_option_font_min_size; -static unsigned int tmp_option_font_size; -static unsigned int tmp_option_min_reflow_period; -static unsigned int tmp_option_max_fetchers; -static unsigned int tmp_option_max_fetchers_per_host; -static unsigned int tmp_option_max_cached_fetch_handles; - -static int num_locales = 0; -static char **locales = NULL; -static short h_aes_win = 0; -static GUIWIN * settings_guiwin = NULL; -static OBJECT * dlgtree; - -/* Available font engines for the font engine selection popup: */ -static const char *font_engines[] = { - -#ifdef WITH_FREETYPE_FONT_DRIVER - "freetype", -#endif - -#ifdef WITH_INTERNAL_FONT_DRIVER - "internal", -#endif - -#ifdef WITH_VDI_FONT_DRIVER - "vdi", -#endif -}; - -/* Available GUI timeouts for the timeout selection popup: */ -static const char *gui_timeouts[] = { - "0", "5", "10" -}; - -#define OBJ_SELECTED(idx) ((bool)((dlgtree[idx].ob_state & OS_SELECTED)!=0)) - -#define OBJ_CHECK(idx) (dlgtree[idx].ob_state |= (OS_SELECTED)); - -#define OBJ_UNCHECK(idx) (dlgtree[idx].ob_state &= ~(OS_SELECTED)); - -#define OBJ_REDRAW(idx) gemtk_wm_exec_redraw(settings_guiwin, \ - gemtk_obj_screen_rect(dlgtree, idx)); - -#define DISABLE_OBJ(idx) (dlgtree[idx].ob_state |= OS_DISABLED); \ - gemtk_wm_exec_redraw(settings_guiwin, \ - gemtk_obj_screen_rect(dlgtree, idx)); - -#define ENABLE_OBJ(idx) (dlgtree[idx].ob_state &= ~(OS_DISABLED)); \ - gemtk_wm_exec_redraw(settings_guiwin, \ - gemtk_obj_screen_rect(dlgtree, idx)); - -#define FORMEVENT(idx) form_event(idx, 0); - -#define INPUT_HOMEPAGE_URL_MAX_LEN 44 -#define INPUT_LOCALE_MAX_LEN 6 -#define INPUT_PROXY_HOST_MAX_LEN 31 -#define INPUT_PROXY_USERNAME_MAX_LEN 36 -#define INPUT_PROXY_PASSWORD_MAX_LEN 36 -#define INPUT_PROXY_PORT_MAX_LEN 5 -#define INPUT_MIN_REFLOW_PERIOD_MAX_LEN 4 -#define LABEL_FONT_RENDERER_MAX_LEN 8 -#define LABEL_PATH_MAX_LEN 40 -#define LABEL_ICONSET_MAX_LEN 8 -#define INPUT_TOOLBAR_COLOR_MAX_LEN 6 - - -static void display_settings(void); -static void form_event(int index, int external); -static void apply_settings(void); -static void save_settings(void); - - -static void set_text( short idx, char * text, int len ) -{ - char spare[255]; - - if( len > 254 ) - len = 254; - if( text != NULL ) { - strncpy(spare, text, 254); - } else { - strcpy(spare, ""); - } - - set_string( dlgtree, idx, spare); -} - - - - -/** - * Toogle all objects which are directly influenced by other GUI elements - * ( like checkbox ) - */ -static void toggle_objects(void) -{ - /* enable / disable (refresh) objects depending on radio button values: */ - /* Simulate GUI events which trigger refresh of bound elements: */ - FORMEVENT(SETTINGS_CB_USE_PROXY); - FORMEVENT(SETTINGS_CB_PROXY_AUTH); - FORMEVENT(SETTINGS_BT_SEL_FONT_RENDERER); -} - -static char **read_locales(void) -{ - char buf[PATH_MAX]; - char tmp_locale[16]; - char **locales = NULL; - - FILE * fp_locales = NULL; - - atari_find_resource(buf, "languages", "./res/languages"); - - fp_locales = fopen(buf, "r"); - - if (fp_locales == NULL) { - atari_warn_user("Failed to load locales: %s",buf); - return(NULL); - } else { - LOG("Reading locales from: %s...", buf); - } - - /* Count items: */ - num_locales = 0; - while (fgets(tmp_locale, 16, fp_locales) != NULL) { - num_locales++; - } - - locales = malloc(sizeof(char*)*num_locales); - - rewind(fp_locales); - int i = 0; - while (fgets(tmp_locale, 16, fp_locales) != NULL) { - int len = strlen(tmp_locale); - tmp_locale[len-1] = 0; - len--; - locales[i] = malloc(len+1); - // do not copy the last \n - snprintf(locales[i], 16, "%s", tmp_locale); - i++; - } - - fclose(fp_locales); - - return(locales); -} - - -static void save_settings(void) -{ - apply_settings(); - // Save settings - nsoption_write( (const char*)&options, NULL, NULL); - nsoption_read( (const char*)&options , NULL); - close_settings(); - form_alert(1, "[1][Some options require an netsurf restart!][OK]"); - deskmenu_update(); -} - -/* this gets called each time the settings dialog is opened: */ -static void display_settings(void) -{ - char spare[255]; - // read current settings and display them - - - /* "Browser" tab: */ - set_text( SETTINGS_EDIT_HOMEPAGE, nsoption_charp(homepage_url), - INPUT_HOMEPAGE_URL_MAX_LEN ); - - if( nsoption_bool(block_advertisements) ) { - OBJ_CHECK( SETTINGS_CB_HIDE_ADVERTISEMENT ); - } else { - OBJ_UNCHECK( SETTINGS_CB_HIDE_ADVERTISEMENT ); - } - if( nsoption_bool(target_blank) ) { - OBJ_UNCHECK( SETTINGS_CB_DISABLE_POPUP_WINDOWS ); - } else { - OBJ_CHECK( SETTINGS_CB_DISABLE_POPUP_WINDOWS ); - } - if( nsoption_bool(send_referer) ) { - OBJ_CHECK( SETTINGS_CB_SEND_HTTP_REFERRER ); - } else { - OBJ_UNCHECK( SETTINGS_CB_SEND_HTTP_REFERRER ); - } - if( nsoption_bool(do_not_track) ) { - OBJ_CHECK( SETTINGS_CB_SEND_DO_NOT_TRACK ); - } else { - OBJ_UNCHECK( SETTINGS_CB_SEND_DO_NOT_TRACK ); - } - - set_text( SETTINGS_BT_SEL_LOCALE, - nsoption_charp(accept_language) ? nsoption_charp(accept_language) : (char*)"en", - INPUT_LOCALE_MAX_LEN ); - - sprintf(spare, "%d", nsoption_int(atari_gui_poll_timeout)); - set_text(SETTINGS_BT_GUI_TOUT, spare, 2); - - tmp_option_expire_url = nsoption_int(expire_url); - snprintf( spare, 255, "%02d", nsoption_int(expire_url) ); - set_text( SETTINGS_EDIT_HISTORY_AGE, spare, 3); - - /* "Cache" tab: */ - tmp_option_memory_cache_size = nsoption_int(memory_cache_size) / (1024*1024); - snprintf( spare, 255, "%d", tmp_option_memory_cache_size ); - set_text( SETTINGS_STR_MAX_MEM_CACHE, spare, 4 ); - - tmp_option_disc_cache_size = nsoption_int(disc_cache_size) / (1024*1024); - snprintf( spare, 255, "%d", tmp_option_disc_cache_size ); - set_text( SETTINGS_STR_MAX_DISC_CACHE, spare, 4 ); - - tmp_option_disc_cache_age = nsoption_int(disc_cache_age); - snprintf( spare, 255, "%02d", tmp_option_disc_cache_age ); - set_text( SETTINGS_EDIT_CACHE_AGE, spare, 3 ); - - /* "Paths" tab: */ - set_text( SETTINGS_EDIT_DOWNLOAD_PATH, nsoption_charp(downloads_path), - LABEL_PATH_MAX_LEN ); - set_text( SETTINGS_EDIT_HOTLIST_FILE, nsoption_charp(hotlist_file), - LABEL_PATH_MAX_LEN ); - set_text( SETTINGS_EDIT_CA_BUNDLE, nsoption_charp(ca_bundle), - LABEL_PATH_MAX_LEN ); - set_text( SETTINGS_EDIT_CA_CERTS_PATH, nsoption_charp(ca_path), - LABEL_PATH_MAX_LEN ); - set_text( SETTINGS_EDIT_EDITOR, nsoption_charp(atari_editor), - LABEL_PATH_MAX_LEN ); - - /* "Rendering" tab: */ - set_text( SETTINGS_BT_SEL_FONT_RENDERER, nsoption_charp(atari_font_driver), - LABEL_FONT_RENDERER_MAX_LEN ); - SET_BIT(dlgtree[SETTINGS_CB_TRANSPARENCY].ob_state, - OS_SELECTED, nsoption_int(atari_transparency) ? 1 : 0 ); - SET_BIT(dlgtree[SETTINGS_CB_ENABLE_ANIMATION].ob_state, - OS_SELECTED, nsoption_bool(animate_images) ? 1 : 0 ); - SET_BIT(dlgtree[SETTINGS_CB_FG_IMAGES].ob_state, - OS_SELECTED, nsoption_bool(foreground_images) ? 1 : 0 ); - SET_BIT(dlgtree[SETTINGS_CB_BG_IMAGES].ob_state, - OS_SELECTED, nsoption_bool(background_images) ? 1 : 0 ); - - - // TODO: enable this option? - /* SET_BIT(dlgtree[SETTINGS_CB_INCREMENTAL_REFLOW].ob_state, - OS_SELECTED, nsoption_bool(incremental_reflow) ? 1 : 0 );*/ - - SET_BIT(dlgtree[SETTINGS_CB_ANTI_ALIASING].ob_state, - OS_SELECTED, nsoption_int(atari_font_monochrom) ? 0 : 1 ); - - - // TODO: activate this option? - tmp_option_min_reflow_period = nsoption_int(min_reflow_period); - snprintf( spare, 255, "%04d", tmp_option_min_reflow_period ); - set_text( SETTINGS_EDIT_MIN_REFLOW_PERIOD, spare, - INPUT_MIN_REFLOW_PERIOD_MAX_LEN ); - - - tmp_option_minimum_gif_delay = (float)nsoption_int(minimum_gif_delay) / (float)100; - snprintf( spare, 255, "%01.1f", tmp_option_minimum_gif_delay ); - set_text( SETTINGS_EDIT_MIN_GIF_DELAY, spare, 3 ); - - /* "Network" tab: */ - set_text( SETTINGS_EDIT_PROXY_HOST, nsoption_charp(http_proxy_host), - INPUT_PROXY_HOST_MAX_LEN ); - snprintf( spare, 255, "%5d", nsoption_int(http_proxy_port) ); - set_text( SETTINGS_EDIT_PROXY_PORT, spare, - INPUT_PROXY_PORT_MAX_LEN ); - - set_text( SETTINGS_EDIT_PROXY_USERNAME, nsoption_charp(http_proxy_auth_user), - INPUT_PROXY_USERNAME_MAX_LEN ); - set_text( SETTINGS_EDIT_PROXY_PASSWORD, nsoption_charp(http_proxy_auth_pass), - INPUT_PROXY_PASSWORD_MAX_LEN ); - SET_BIT(dlgtree[SETTINGS_CB_USE_PROXY].ob_state, - OS_SELECTED, nsoption_bool(http_proxy) ? 1 : 0 ); - SET_BIT(dlgtree[SETTINGS_CB_PROXY_AUTH].ob_state, - OS_SELECTED, nsoption_int(http_proxy_auth) ? 1 : 0 ); - - tmp_option_max_cached_fetch_handles = nsoption_int(max_cached_fetch_handles); - snprintf( spare, 255, "%2d", nsoption_int(max_cached_fetch_handles) ); - set_text( SETTINGS_EDIT_MAX_CACHED_CONNECTIONS, spare , 2 ); - - tmp_option_max_fetchers = nsoption_int(max_fetchers); - snprintf( spare, 255, "%2d", nsoption_int(max_fetchers) ); - set_text( SETTINGS_EDIT_MAX_FETCHERS, spare , 2 ); - - tmp_option_max_fetchers_per_host = nsoption_int(max_fetchers_per_host); - snprintf( spare, 255, "%2d", nsoption_int(max_fetchers_per_host) ); - set_text( SETTINGS_EDIT_MAX_FETCHERS_PER_HOST, spare , 2 ); - - - /* "Style" tab: */ - tmp_option_font_min_size = nsoption_int(font_min_size); - snprintf( spare, 255, "%3d", nsoption_int(font_min_size) ); - set_text( SETTINGS_EDIT_MIN_FONT_SIZE, spare , 3 ); - - tmp_option_font_size = nsoption_int(font_size); - snprintf( spare, 255, "%3d", nsoption_int(font_size) ); - set_text( SETTINGS_EDIT_DEF_FONT_SIZE, spare , 3 ); - - toggle_objects(); -} - -static void handle_filesystem_select_button(short rsc_bt) -{ - bool require_path = false; - bool is_folder = false; - short rsc_te = 0; // The textarea that is bound to the button - const char * title = ""; - const char * path = NULL; - - // TODO: localize String: - switch (rsc_bt) { - - - case SETTINGS_BT_SEL_DOWNLOAD_DIR: - title = "Select Download Directory:"; - rsc_te = SETTINGS_EDIT_DOWNLOAD_PATH; - require_path = true; - break; - - case SETTINGS_BT_SEL_HOTLIST: - title = "Select Hotlist File:"; - rsc_te = SETTINGS_EDIT_HOTLIST_FILE; - break; - - case SETTINGS_BT_SEL_CA_BUNDLE: - title = "Select CA Bundle File:"; - rsc_te = SETTINGS_EDIT_CA_BUNDLE; - break; - - case SETTINGS_BT_SEL_CA_CERTS: - title = "Select Certs Directory:"; - rsc_te = SETTINGS_EDIT_CA_CERTS_PATH; - require_path = true; - break; - - case SETTINGS_BT_SEL_EDITOR: - title = "Select Editor Application:"; - rsc_te = SETTINGS_EDIT_EDITOR; - break; - - default: - break; - }; - - assert(rsc_te != 0); - - if (require_path == false) { - path = file_select(title, ""); - if (path != NULL) { - gemtk_obj_set_str_safe(dlgtree, rsc_te, path); - } - } - else { - do { - /* display file selector: */ - path = file_select(title, ""); - if (path) { - is_folder = is_dir(path); - } - if ((is_folder == false) && (path != NULL)) { - gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT, "Folder Required!"); - } - } while ((is_folder == false) && (path != NULL)); - - if ((is_folder == true) && (path != NULL)) { - gemtk_obj_set_str_safe(dlgtree, rsc_te, path); - } - } - - OBJ_UNCHECK(rsc_bt); - OBJ_REDRAW(rsc_bt); - OBJ_REDRAW(rsc_te); -} - -static void form_event(int index, int external) -{ - char spare[255]; - bool is_button = false; - bool checked = OBJ_SELECTED(index); - char * tmp; - MENU pop_menu, me_data; - - short x, y; - int choice; - - switch(index) { - - case SETTINGS_CB_USE_PROXY: - if( checked ) { - ENABLE_OBJ(SETTINGS_EDIT_PROXY_HOST); - ENABLE_OBJ(SETTINGS_EDIT_PROXY_PORT); - ENABLE_OBJ(SETTINGS_CB_PROXY_AUTH); - } else { - DISABLE_OBJ(SETTINGS_EDIT_PROXY_HOST); - DISABLE_OBJ(SETTINGS_EDIT_PROXY_PORT); - DISABLE_OBJ(SETTINGS_CB_PROXY_AUTH); - } - FORMEVENT(SETTINGS_CB_PROXY_AUTH); - OBJ_REDRAW(SETTINGS_CB_USE_PROXY); - break; - - case SETTINGS_CB_PROXY_AUTH: - if( checked && OBJ_SELECTED( SETTINGS_CB_USE_PROXY ) ) { - ENABLE_OBJ(SETTINGS_EDIT_PROXY_USERNAME); - ENABLE_OBJ(SETTINGS_EDIT_PROXY_PASSWORD); - } else { - DISABLE_OBJ(SETTINGS_EDIT_PROXY_USERNAME); - DISABLE_OBJ(SETTINGS_EDIT_PROXY_PASSWORD); - } - break; - - case SETTINGS_CB_ENABLE_ANIMATION: - if( checked ) { - ENABLE_OBJ( SETTINGS_EDIT_MIN_GIF_DELAY ); - } else { - DISABLE_OBJ( SETTINGS_EDIT_MIN_GIF_DELAY ); - } - break; - - case SETTINGS_BT_SEL_FONT_RENDERER: - if( external ) { - objc_offset(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER, &x, &y); - tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER); - // point mn_tree tree to font renderer popup: - pop_menu.mn_tree = gemtk_obj_create_popup_tree(font_engines, - NOF_ELEMENTS(font_engines), tmp, false, - -1, -1); - - assert(pop_menu.mn_tree != NULL); - - pop_menu.mn_menu = 0; - pop_menu.mn_item = 1; - pop_menu.mn_scroll = SCROLL_NO; - pop_menu.mn_keystate = 0; - - /* Show the popup: */ - menu_popup(&pop_menu, x, y, &me_data); - choice = me_data.mn_item; - - /* Process selection: */ - if (choice > 0 && choice <= (short)NOF_ELEMENTS(font_engines)) { - get_string(pop_menu.mn_tree, choice, spare); - set_text(SETTINGS_BT_SEL_FONT_RENDERER, - (char*)&spare[2], - LABEL_FONT_RENDERER_MAX_LEN); - OBJ_REDRAW(SETTINGS_BT_SEL_FONT_RENDERER); - } - - gemtk_obj_destroy_popup_tree(pop_menu.mn_tree); - } - tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER); - if (strcasecmp(tmp, "freetype") == 0) { - ENABLE_OBJ(SETTINGS_CB_ANTI_ALIASING); - } else { - DISABLE_OBJ(SETTINGS_CB_ANTI_ALIASING); - } - break; - - case SETTINGS_BT_SEL_LOCALE: - objc_offset(dlgtree, SETTINGS_BT_SEL_LOCALE, &x, &y); - - if(num_locales < 1 || locales == NULL){ - locales = read_locales(); - } - - if (num_locales < 1 || locales == NULL) { - // point mn_tree tree to states popup: - num_locales = 15; - pop_menu.mn_tree = gemtk_obj_get_tree(POP_LANGUAGE); - pop_menu.mn_item = POP_LANGUAGE_CS; - } else { - // point mn_tree tree to dynamic list: - tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_LOCALE); - pop_menu.mn_tree = gemtk_obj_create_popup_tree((const char**)locales, - num_locales, tmp, false, - -1, 100); - - pop_menu.mn_item = 0; - } - - pop_menu.mn_menu = 0; - pop_menu.mn_scroll = SCROLL_YES; - pop_menu.mn_keystate = 0; - - /* display popup: */ - menu_popup(&pop_menu, x, y, &me_data); - - /* Process user selection: */ - choice = me_data.mn_item; - if( choice > 0 && choice <= num_locales ) { - get_string(pop_menu.mn_tree, choice, spare); - set_text(SETTINGS_BT_SEL_LOCALE, (char*)&spare[2], 5); - } - - gemtk_obj_destroy_popup_tree(pop_menu.mn_tree); - - OBJ_REDRAW(SETTINGS_BT_SEL_LOCALE); - break; - - case SETTINGS_BT_GUI_TOUT: - objc_offset(dlgtree, SETTINGS_BT_GUI_TOUT, &x, &y); - tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_GUI_TOUT); - pop_menu.mn_tree = gemtk_obj_create_popup_tree(gui_timeouts, - NOF_ELEMENTS(gui_timeouts), tmp, false, -1, - 100); - - pop_menu.mn_item = 0; - pop_menu.mn_menu = 0; - pop_menu.mn_scroll = SCROLL_NO; - pop_menu.mn_keystate = 0; - - /* Display popup: */ - menu_popup(&pop_menu, x, y, &me_data); - - /* Process user selection: */ - choice = me_data.mn_item; - if( choice > 0 && choice <= (int)NOF_ELEMENTS(gui_timeouts)) { - get_string(pop_menu.mn_tree, choice, spare); - set_text(SETTINGS_BT_GUI_TOUT, (char*)&spare[2], 5); - } - - gemtk_obj_destroy_popup_tree(pop_menu.mn_tree); - - OBJ_REDRAW(SETTINGS_BT_GUI_TOUT); - break; - - case SETTINGS_BT_SEL_DOWNLOAD_DIR: - case SETTINGS_BT_SEL_HOTLIST: - case SETTINGS_BT_SEL_CA_BUNDLE: - case SETTINGS_BT_SEL_CA_CERTS: - case SETTINGS_BT_SEL_EDITOR: - handle_filesystem_select_button(index); - break; - - case SETTINGS_INC_MEM_CACHE: - case SETTINGS_DEC_MEM_CACHE: - if( index == SETTINGS_DEC_MEM_CACHE ) - tmp_option_memory_cache_size -= 1; - else - tmp_option_memory_cache_size += 1; - - if( tmp_option_memory_cache_size < 0 ) - tmp_option_memory_cache_size = 1; - if( tmp_option_memory_cache_size > 999 ) - tmp_option_memory_cache_size = 999; - snprintf( spare, 255, "%02d", tmp_option_memory_cache_size ); - set_text( SETTINGS_STR_MAX_MEM_CACHE, spare, 5 ); - is_button = true; - OBJ_REDRAW(SETTINGS_STR_MAX_MEM_CACHE); - break; - - case SETTINGS_INC_DISC_CACHE: - case SETTINGS_DEC_DISC_CACHE: - if( index == SETTINGS_DEC_DISC_CACHE ) - tmp_option_disc_cache_size -= 1; - else - tmp_option_disc_cache_size += 1; - - if( tmp_option_disc_cache_size < 0 ) - tmp_option_disc_cache_size = 1; - if( tmp_option_disc_cache_size > 9999 ) - tmp_option_disc_cache_size = 9999; - snprintf( spare, 255, "%02d", tmp_option_disc_cache_size ); - set_text( SETTINGS_STR_MAX_DISC_CACHE, spare, 5 ); - is_button = true; - OBJ_REDRAW(SETTINGS_STR_MAX_DISC_CACHE); - break; - - case SETTINGS_INC_CACHE_AGE: - case SETTINGS_DEC_CACHE_AGE: - if( index == SETTINGS_INC_CACHE_AGE ) - tmp_option_disc_cache_age += 1; - else - tmp_option_disc_cache_age -= 1; - - if( tmp_option_disc_cache_age > 99 ) - tmp_option_disc_cache_age = 0; - - snprintf( spare, 255, "%02d", tmp_option_disc_cache_age ); - set_text( SETTINGS_EDIT_CACHE_AGE, spare, 2 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_CACHE_AGE); - break; - - case SETTINGS_INC_CACHED_CONNECTIONS: - case SETTINGS_DEC_CACHED_CONNECTIONS: - if( index == SETTINGS_INC_CACHED_CONNECTIONS ) - tmp_option_max_cached_fetch_handles += 1; - else - tmp_option_max_cached_fetch_handles -= 1; - if( tmp_option_max_cached_fetch_handles > 31 ) - tmp_option_max_cached_fetch_handles = 31; - - snprintf( spare, 255, "%02d", tmp_option_max_cached_fetch_handles ); - set_text( SETTINGS_EDIT_MAX_CACHED_CONNECTIONS, spare, 2 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MAX_CACHED_CONNECTIONS); - break; - - case SETTINGS_INC_MAX_FETCHERS: - case SETTINGS_DEC_MAX_FETCHERS: - if( index == SETTINGS_INC_MAX_FETCHERS ) - tmp_option_max_fetchers += 1; - else - tmp_option_max_fetchers -= 1; - if( tmp_option_max_fetchers > 31 ) - tmp_option_max_fetchers = 31; - - snprintf( spare, 255, "%02d", tmp_option_max_fetchers ); - set_text( SETTINGS_EDIT_MAX_FETCHERS, spare, 2 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MAX_FETCHERS); - break; - - case SETTINGS_INC_MAX_FETCHERS_PER_HOST: - case SETTINGS_DEC_MAX_FETCHERS_PER_HOST: - if( index == SETTINGS_INC_MAX_FETCHERS_PER_HOST ) - tmp_option_max_fetchers_per_host += 1; - else - tmp_option_max_fetchers_per_host -= 1; - if( tmp_option_max_fetchers_per_host > 31 ) - tmp_option_max_fetchers_per_host = 31; - - snprintf( spare, 255, "%02d", tmp_option_max_fetchers_per_host ); - set_text( SETTINGS_EDIT_MAX_FETCHERS_PER_HOST, spare, 2 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MAX_FETCHERS_PER_HOST); - break; - - case SETTINGS_INC_HISTORY_AGE: - case SETTINGS_DEC_HISTORY_AGE: - if( index == SETTINGS_INC_HISTORY_AGE ) - tmp_option_expire_url += 1; - else - tmp_option_expire_url -= 1; - - if( tmp_option_expire_url > 99 ) - tmp_option_expire_url = 0; - - snprintf( spare, 255, "%02d", tmp_option_expire_url ); - set_text( SETTINGS_EDIT_HISTORY_AGE, spare, 2 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_HISTORY_AGE); - break; - - case SETTINGS_INC_GIF_DELAY: - case SETTINGS_DEC_GIF_DELAY: - if( index == SETTINGS_INC_GIF_DELAY ) - tmp_option_minimum_gif_delay += 0.1; - else - tmp_option_minimum_gif_delay -= 0.1; - - if( tmp_option_minimum_gif_delay < 0.1 ) - tmp_option_minimum_gif_delay = 0.1; - if( tmp_option_minimum_gif_delay > 9.0 ) - tmp_option_minimum_gif_delay = 9.0; - snprintf( spare, 255, "%01.1f", tmp_option_minimum_gif_delay ); - set_text( SETTINGS_EDIT_MIN_GIF_DELAY, spare, 3 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MIN_GIF_DELAY); - break; - - case SETTINGS_INC_MIN_FONT_SIZE: - case SETTINGS_DEC_MIN_FONT_SIZE: - if( index == SETTINGS_INC_MIN_FONT_SIZE ) - tmp_option_font_min_size += 1; - else - tmp_option_font_min_size -= 1; - - if( tmp_option_font_min_size > 500 ) - tmp_option_font_min_size = 500; - if( tmp_option_font_min_size < 10 ) - tmp_option_font_min_size = 10; - - snprintf( spare, 255, "%03d", tmp_option_font_min_size ); - set_text( SETTINGS_EDIT_MIN_FONT_SIZE, spare, 3 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MIN_FONT_SIZE); - break; - - case SETTINGS_INC_DEF_FONT_SIZE: - case SETTINGS_DEC_DEF_FONT_SIZE: - if( index == SETTINGS_INC_DEF_FONT_SIZE ) - tmp_option_font_size += 1; - else - tmp_option_font_size -= 1; - - if( tmp_option_font_size > 999 ) - tmp_option_font_size = 999; - if( tmp_option_font_size < 50 ) - tmp_option_font_size = 50; - - snprintf( spare, 255, "%03d", tmp_option_font_size ); - set_text( SETTINGS_EDIT_DEF_FONT_SIZE, spare, 3 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_DEF_FONT_SIZE); - break; - - case SETTINGS_INC_INCREMENTAL_REFLOW: - case SETTINGS_DEC_INCREMENTAL_REFLOW: - if( index == SETTINGS_INC_INCREMENTAL_REFLOW ) - tmp_option_min_reflow_period += 1; - else - tmp_option_min_reflow_period -= 1; - - if( tmp_option_min_reflow_period > 9999 ) - tmp_option_min_reflow_period = 10; - - snprintf( spare, 255, "%04d", tmp_option_min_reflow_period ); - set_text( SETTINGS_EDIT_MIN_REFLOW_PERIOD, spare, 4 ); - is_button = true; - OBJ_REDRAW(SETTINGS_EDIT_MIN_REFLOW_PERIOD); - break; - - default: - break; - } - - if( is_button ) { - // remove selection indicator from button element: - OBJ_UNCHECK(index); - OBJ_REDRAW(index); - } -} - - -static void apply_settings(void) -{ - /* "Network" tab: */ - nsoption_set_bool(http_proxy, OBJ_SELECTED(SETTINGS_CB_USE_PROXY)); - if ( OBJ_SELECTED(SETTINGS_CB_PROXY_AUTH) ) { - nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_BASIC); - } else { - nsoption_set_int(http_proxy_auth, OPTION_HTTP_PROXY_AUTH_NONE); - } - nsoption_set_charp(http_proxy_auth_pass, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_PROXY_PASSWORD)); - nsoption_set_charp(http_proxy_auth_user, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_PROXY_USERNAME)); - nsoption_set_charp(http_proxy_host, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_PROXY_HOST)); - nsoption_set_int(http_proxy_port, - atoi( gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_PROXY_PORT) )); - nsoption_set_int(max_fetchers_per_host, - atoi( gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_MAX_FETCHERS_PER_HOST))); - nsoption_set_int(max_cached_fetch_handles, - atoi( gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_MAX_CACHED_CONNECTIONS))); - nsoption_set_int(max_fetchers, - atoi( gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_MAX_FETCHERS) )); - nsoption_set_bool(foreground_images, - OBJ_SELECTED( SETTINGS_CB_FG_IMAGES )); - nsoption_set_bool(background_images, - OBJ_SELECTED( SETTINGS_CB_BG_IMAGES )); - - /* "Style" tab: */ - nsoption_set_int(font_min_size, tmp_option_font_min_size); - nsoption_set_int(font_size, tmp_option_font_size); - - /* "Rendering" tab: */ - nsoption_set_charp(atari_font_driver, - gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER)); - nsoption_set_int(atari_transparency, - OBJ_SELECTED(SETTINGS_CB_TRANSPARENCY)); - nsoption_set_bool(animate_images, - OBJ_SELECTED(SETTINGS_CB_ENABLE_ANIMATION)); - nsoption_set_int(minimum_gif_delay, - (int)(tmp_option_minimum_gif_delay*100+0.5)); - /* nsoption_set_bool(incremental_reflow, - OBJ_SELECTED(SETTINGS_CB_INCREMENTAL_REFLOW));*/ - nsoption_set_int(min_reflow_period, tmp_option_min_reflow_period); - nsoption_set_int(atari_font_monochrom, - !OBJ_SELECTED( SETTINGS_CB_ANTI_ALIASING )); - - /* "Paths" tabs: */ - nsoption_set_charp(ca_bundle, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_CA_BUNDLE)); - nsoption_set_charp(ca_path, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_CA_CERTS_PATH)); - nsoption_set_charp(homepage_url, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_CA_CERTS_PATH)); - nsoption_set_charp(hotlist_file, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_HOTLIST_FILE)); - nsoption_set_charp(atari_editor, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_EDITOR)); - nsoption_set_charp(downloads_path, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_DOWNLOAD_PATH)); - - /* "Cache" tab: */ - tmp_option_memory_cache_size = atoi(gemtk_obj_get_text(dlgtree, - SETTINGS_STR_MAX_MEM_CACHE)); - tmp_option_expire_url = atoi(gemtk_obj_get_text(dlgtree, - SETTINGS_EDIT_HISTORY_AGE)); - tmp_option_disc_cache_size = atoi(gemtk_obj_get_text(dlgtree, - SETTINGS_STR_MAX_DISC_CACHE)); - tmp_option_disc_cache_age = atoi(gemtk_obj_get_text(dlgtree, - SETTINGS_EDIT_CACHE_AGE)); - nsoption_set_int(memory_cache_size, - tmp_option_memory_cache_size * (1024*1024)); - - nsoption_set_int(expire_url, tmp_option_expire_url); - - nsoption_set_int(disc_cache_size, tmp_option_disc_cache_size * (1024*1024)); - - nsoption_set_int(disc_cache_age, tmp_option_disc_cache_age); - - - /* "Browser" tab: */ - nsoption_set_bool(target_blank, - !OBJ_SELECTED(SETTINGS_CB_DISABLE_POPUP_WINDOWS)); - nsoption_set_bool(block_advertisements, - OBJ_SELECTED(SETTINGS_CB_HIDE_ADVERTISEMENT)); - nsoption_set_charp(accept_language, - gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_LOCALE)); - nsoption_set_int(atari_gui_poll_timeout, - atoi(gemtk_obj_get_text(dlgtree, SETTINGS_BT_GUI_TOUT))); - nsoption_set_bool(send_referer, - OBJ_SELECTED(SETTINGS_CB_SEND_HTTP_REFERRER)); - nsoption_set_bool(do_not_track, - OBJ_SELECTED(SETTINGS_CB_SEND_DO_NOT_TRACK)); - nsoption_set_charp(homepage_url, - gemtk_obj_get_text(dlgtree, SETTINGS_EDIT_HOMEPAGE)); -} - -static short on_aes_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]) -{ - short retval = 0; - - if ((ev_out->emo_events & MU_MESAG) != 0) { - // handle message - // printf("settings win msg: %d\n", msg[0]); - switch (msg[0]) { - - - case WM_CLOSED: - // TODO: this needs to iterate through all gui windows and - // check if the rootwin is this window... - close_settings(); - break; - - case WM_SIZED: - gemtk_wm_update_slider(win, GEMTK_WM_VH_SLIDER); - break; - - case WM_MOVED: - break; - - case WM_TOOLBAR: - switch(msg[4]) { - case TOOLBAR_SETTINGS_SAVE: - save_settings(); - break; - - case TOOLBAR_SETTINGS_ABORT: - close_settings(); - break; - default: - break; - } - break; - - case GEMTK_WM_WM_FORM_CLICK: - form_event(msg[4], 1); - break; - - default: - break; - } - } - - if ((ev_out->emo_events & MU_KEYBD) != 0) { - } - - if ((ev_out->emo_events & MU_BUTTON) != 0) { - } - - return(retval); -} - -void open_settings(void) -{ - if (h_aes_win == 0) { - - GRECT curr, area; - OBJECT * toolbartree; - struct gemtk_wm_scroll_info_s *slid; - uint32_t kind = CLOSER | NAME | MOVER | VSLIDE | HSLIDE | UPARROW - | DNARROW | LFARROW | RTARROW | SIZER; - - dlgtree = gemtk_obj_get_tree(SETTINGS); - toolbartree = gemtk_obj_get_tree(TOOLBAR_SETTINGS); - area.g_x = area.g_y = 0; - area.g_w = MIN(dlgtree->ob_width, desk_area.g_w); - area.g_h = MIN(dlgtree->ob_height, desk_area.g_h); - wind_calc_grect(WC_BORDER, kind, &area, &area); - h_aes_win = wind_create_grect(kind, &area); - wind_set_str(h_aes_win, WF_NAME, "Settings"); - settings_guiwin = gemtk_wm_add(h_aes_win, GEMTK_WM_FLAG_DEFAULTS, - on_aes_event); - curr.g_w = MIN(dlgtree->ob_width, desk_area.g_w); - curr.g_h = MIN(dlgtree->ob_height, desk_area.g_h-64); - curr.g_x = 1; - curr.g_y = (desk_area.g_h / 2) - (curr.g_h / 2); - - wind_calc_grect(WC_BORDER, kind, &curr, &curr); - - dlgtree->ob_x = curr.g_x; - dlgtree->ob_y = curr.g_y; - - /* set current config values: */ - display_settings(); - - wind_open_grect(h_aes_win, &curr); - - gemtk_wm_set_toolbar(settings_guiwin, toolbartree, 0, 0); - gemtk_wm_set_form(settings_guiwin, dlgtree, 0); - gemtk_wm_set_scroll_grid(settings_guiwin, 32, 32); - gemtk_wm_get_grect(settings_guiwin, GEMTK_WM_AREA_CONTENT, &area); - - slid = gemtk_wm_get_scroll_info(settings_guiwin); - gemtk_wm_set_content_units(settings_guiwin, - (dlgtree->ob_width/slid->x_unit_px), - (dlgtree->ob_height/slid->y_unit_px)); - gemtk_wm_update_slider(settings_guiwin, GEMTK_WM_VH_SLIDER); - } -} - -void close_settings(void) -{ - LOG("closing"); - gemtk_wm_remove(settings_guiwin); - settings_guiwin = NULL; - wind_close(h_aes_win); - wind_delete(h_aes_win); - h_aes_win = 0; - LOG("Done"); -} - |