static void save_settings(void) { apply_settings(); // Save settings nsoption_write( (const char*)&options ); nsoption_read( (const char*)&options ); close_settings(); form_alert(1, "[1][Some options require an netsurf restart!][OK]"); deskmenu_update(); }
static short on_aes_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]) { short retval = 0; GRECT clip, work; static short edit_idx = 0; struct gemtk_wm_scroll_info_s *slid; 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]) { 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); }
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; /* For font driver popup: */ int num_font_drivers = 2; /* Just a small collection of locales, each country has at least one ATARI-clone user! :) */ int num_locales = 15; short x, y; int choice, i; switch(index) { case SETTINGS_SAVE: OBJ_UNCHECK(index); OBJ_REDRAW(index); save_settings(); break; case SETTINGS_ABORT: OBJ_UNCHECK(index); OBJ_REDRAW(index); close_settings(); break; 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); // point mn_tree tree to states popup: pop_menu.mn_tree = gemtk_obj_get_tree(POP_FONT_RENDERER); pop_menu.mn_menu = 0; pop_menu.mn_item = POP_FONT_RENDERER_INTERNAL; pop_menu.mn_scroll = SCROLL_NO; pop_menu.mn_keystate = 0; // find the selected menu item and uncheck others: for(i=pop_menu.mn_item; i<=num_font_drivers; i++) { get_string(pop_menu.mn_tree, i, spare); tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER); if (strcasecmp(&spare[2], tmp)) { menu_icheck(pop_menu.mn_tree, i, 0); } else { menu_icheck(pop_menu.mn_tree, i, 1); } set_string(pop_menu.mn_tree, i, spare); } menu_popup(&pop_menu, x, y, &me_data); choice = me_data.mn_item; if( choice > 0 && choice <= num_font_drivers ) { get_string(pop_menu.mn_tree, choice, spare); for(i=2; i<(int)strlen(spare); i++) { spare[i]= (char)tolower(spare[i]); } set_text(SETTINGS_BT_SEL_FONT_RENDERER, (char*)&spare[2], LABEL_FONT_RENDERER_MAX_LEN); OBJ_REDRAW(SETTINGS_BT_SEL_FONT_RENDERER); } } 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); // point mn_tree tree to states popup: pop_menu.mn_tree = gemtk_obj_get_tree(POP_LANGUAGE); pop_menu.mn_menu = 0; pop_menu.mn_item = POP_LANGUAGE_CS; pop_menu.mn_scroll = SCROLL_NO; pop_menu.mn_keystate = 0; // find the selected menu item and uncheck others: for(i=pop_menu.mn_item; i<=num_locales; i++) { get_string(pop_menu.mn_tree, i, spare); tmp = gemtk_obj_get_text(dlgtree, SETTINGS_BT_SEL_LOCALE); if (strcasecmp(&spare[2], tmp)) { menu_icheck(pop_menu.mn_tree, i, 0); } else { menu_icheck(pop_menu.mn_tree, i, 1); } set_string(pop_menu.mn_tree, i, spare); } menu_popup(&pop_menu, x, y, &me_data); choice = me_data.mn_item; if( choice > 0 && choice <= num_locales ) { get_string(pop_menu.mn_tree, choice, spare); for(i=2; i<(int)strlen(spare); i++) { spare[i]= (char)tolower(spare[i]); } set_text(SETTINGS_BT_SEL_LOCALE, (char*)&spare[2], 5); } OBJ_REDRAW(SETTINGS_BT_SEL_LOCALE); break; /* case SETTINGS_INPUT_TOOLBAR_BGCOLOR: objc_offset( FORM(win), SETTINGS_INPUT_TOOLBAR_BGCOLOR, &x, &y ); choice = color_popup(x, y, tmp_option_atari_toolbar_bg); snprintf( spare, 255, "%06x", choice ); tmp_option_atari_toolbar_bg = choice; ObjcStrCpy( dlgtree, SETTINGS_INPUT_TOOLBAR_BGCOLOR, spare ); is_button = true; OBJ_REDRAW(SETTINGS_INPUT_TOOLBAR_BGCOLOR); break; */ /* case SETTINGS_BT_TOOLBAR_ICONSET: objc_offset( FORM(win), SETTINGS_BT_TOOLBAR_ICONSET, &x, &y ); tmp = toolbar_iconset_popup(x,y); if( tmp != NULL ){ ObjcStrCpy( dlgtree, SETTINGS_BT_TOOLBAR_ICONSET, tmp ); } is_button = true; break; */ case SETTINGS_INC_MEM_CACHE: case SETTINGS_DEC_MEM_CACHE: if( index == SETTINGS_DEC_MEM_CACHE ) tmp_option_memory_cache_size -= 0.1; else tmp_option_memory_cache_size += 0.1; if( tmp_option_memory_cache_size < 0.5 ) tmp_option_memory_cache_size = 0.5; if( tmp_option_memory_cache_size > 999.9 ) tmp_option_memory_cache_size = 999.9; snprintf( spare, 255, "%03.1f", 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_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); } }
int main(int argc, char **argv) { char *dicts_list = NULL; regimen_t regimen = usually_regimen; // GCC warning fix int opt; struct option long_options[] = { {OPT_SEARCH_USUALLY, required_argument, NULL, 'u'}, // + {OPT_SEARCH_FIRST_CONCURRENCE, required_argument, NULL, 'f'}, // + {OPT_SEARCH_WORD_COMBINATIONS, required_argument, NULL, 'c'}, // + {OPT_SEARCH_LIST, required_argument, NULL, 'l'}, // + {OPT_SEARCH_ILL_DEFINED, required_argument, NULL, 'i'}, // + {OPT_SEARCH_SOUND, required_argument, NULL, 's'}, // + {OPT_DICT_CONNECT, required_argument, NULL, '0'}, // - {OPT_DICT_DISCONNECT, required_argument, NULL, '1'}, // - {OPT_DICT_PRINT_DICTS_LIST, no_argument, NULL, '2'}, // - {OPT_DICT_PRINT_DICT_INFO, required_argument, NULL, '3'}, // - {OPT_DICT_USE_LIST, required_argument, NULL, '5'}, // - {OPT_DICT_PRINT_INDEX, required_argument, NULL, '6'}, // - {OPT_MISC_MAX_TRANSLATE_COUNT, required_argument, NULL, 'm'}, // + {OPT_MISC_ILL_DEFINED_SEARCH_PERCENT, required_argument, NULL, 'p'}, // + {OPT_MISC_SHOW_TIME, no_argument, NULL, 't'}, // + {OPT_SETTINGS_OUTPUT_FORMAT, required_argument, NULL, '7'}, // - {OPT_SETTINGS_USE_ESCS, required_argument, NULL, '8'}, // - {OPT_SETTINGS_USE_CSS, required_argument, NULL, '9'}, // - {OPT_INFO_HELP, no_argument, NULL, 'h'}, // + {OPT_INFO_VERSION, no_argument, NULL, 'v'}, // + {OPT_INFO_DEBUG, no_argument, NULL, 'd'}, // + {0, 0, 0, 0} }; int error_count = 0; clock_t begin_time_label, end_time_label; bool use_default_function_flag = true; bool show_time_flag = false; begin_time_label = clock(); if ( init_settings() != 0 ) { fprintf(stderr, "Cannot initialize default \"%s\" settings\n", MYNAME); return 1; } while ( (opt = getopt_long(argc, argv, ":u:f:c:l:i:s:m:p:thvd", long_options, NULL)) != -1 ) { switch ( opt ) { case 'u' : case 'f' : case 'c' : case 'l' : case 'i' : { switch ( opt ) { case 'u' : regimen = usually_regimen; break; case 'f' : regimen = first_concurrence_regimen; break; case 'c' : regimen = word_combinations_regimen; break; case 'l' : regimen = list_regimen; break; case 'i' : regimen = ill_defined_regimen; break; } error_count += managed_find_word(optarg, regimen, dicts_list); use_default_function_flag = false; break; } case 's' : { error_count += find_sound(optarg); use_default_function_flag = false; break; } case '0' : { error_count += connect_dict(optarg); use_default_function_flag = false; break; } case '1' : { error_count += disconnect_dict(optarg); use_default_function_flag = false; break; } case '2' : { error_count += print_dicts_list(); use_default_function_flag = false; break; } case '3' : { error_count += print_dict_info(optarg); use_default_function_flag = false; break; } case '5' : { dicts_list = optarg; use_default_function_flag = false; break; } case '6' : { error_count += build_linear_index(optarg); use_default_function_flag = false; break; } case 'm' : { set_settings_max_translate_count(optarg); use_default_function_flag = false; break; } case 'p' : { set_settings_ill_defined_search_percent(optarg); use_default_function_flag = false; break; } case '7' : { set_settings_output_format(optarg); use_default_function_flag = false; break; } case '8' : { set_settings_use_terminal_escapes_flag(optarg); use_default_function_flag = false; break; } case '9' : { set_settings_use_css_flag(optarg); use_default_function_flag = false; break; } case 't' : { show_time_flag = true; use_default_function_flag = false; break; } case 'h' : { help(); use_default_function_flag = false; break; } case 'v' : { version(); use_default_function_flag = false; break; } case 'd' : { debug(); use_default_function_flag = false; break; } case ':' : { fprintf(stderr, "Option \"-%c\" requires an argument: ignored\n", optopt); --error_count; break; } case '?' : default : { fprintf(stderr, "Invalid option \"-%c\": ignored\n", optopt); use_default_function_flag = false; break; } } } if ( argc == 2 && use_default_function_flag ) { error_count += managed_find_word(argv[1], usually_regimen, NULL); } else if ( argc != 2 && use_default_function_flag ) { fprintf(stderr, "Bad options syntax, try \"%s --help\"\n", MYNAME); --error_count; } if ( close_settings() != 0 ) fprintf(stderr, "Warning: cannot close \"%s\" settings\n", MYNAME); if ( show_time_flag ) { end_time_label = clock(); if ( begin_time_label != -1 && end_time_label != -1 ) fprintf(stderr, "Search time: %.2f sec\n", ((double) (end_time_label - begin_time_label)) / CLOCKS_PER_SEC); } return abs(error_count); }