bool ro_gui_options_content_initialise(wimp_w w) { /* set the current values */ ro_gui_set_icon_selected_state(w, CONTENT_BLOCK_ADVERTISEMENTS, nsoption_bool(block_ads)); ro_gui_set_icon_selected_state(w, CONTENT_BLOCK_POPUPS, nsoption_bool(block_popups)); ro_gui_set_icon_selected_state(w, CONTENT_NO_PLUGINS, nsoption_bool(no_plugins)); ro_gui_set_icon_selected_state(w, CONTENT_TARGET_BLANK, nsoption_bool(target_blank)); /* initialise all functions for a newly created window */ ro_gui_wimp_event_register_checkbox(w, CONTENT_BLOCK_ADVERTISEMENTS); ro_gui_wimp_event_register_checkbox(w, CONTENT_BLOCK_POPUPS); ro_gui_wimp_event_register_checkbox(w, CONTENT_NO_PLUGINS); ro_gui_wimp_event_register_checkbox(w, CONTENT_TARGET_BLANK); ro_gui_wimp_event_register_button(w, CONTENT_DEFAULT_BUTTON, ro_gui_options_content_default); ro_gui_wimp_event_register_cancel(w, CONTENT_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, CONTENT_OK_BUTTON, ro_gui_options_content_ok); ro_gui_wimp_event_set_help_prefix(w, "HelpContentConfig"); ro_gui_wimp_event_memorise(w); return true; }
void ro_gui_options_content_default(wimp_pointer *pointer) { /* set the default values */ ro_gui_set_icon_selected_state(pointer->w, CONTENT_BLOCK_ADVERTISEMENTS, false); ro_gui_set_icon_selected_state(pointer->w, CONTENT_BLOCK_POPUPS, false); ro_gui_set_icon_selected_state(pointer->w, CONTENT_NO_PLUGINS, false); ro_gui_set_icon_selected_state(pointer->w, CONTENT_TARGET_BLANK, true); }
bool ro_gui_options_home_initialise(wimp_w w) { /* set the current values */ ro_gui_set_icon_string(w, HOME_URL_FIELD, nsoption_charp(homepage_url) ? nsoption_charp(homepage_url) : "", true); ro_gui_set_icon_selected_state(w, HOME_OPEN_STARTUP, nsoption_bool(open_browser_at_startup)); ro_gui_set_icon_shaded_state(w, HOME_URL_GRIGHT, !ro_gui_url_suggest_prepare_menu()); /* initialise all functions for a newly created window */ ro_gui_wimp_event_register_menu_gright(w, HOME_URL_FIELD, HOME_URL_GRIGHT, ro_gui_url_suggest_menu); ro_gui_wimp_event_register_checkbox(w, HOME_OPEN_STARTUP); ro_gui_wimp_event_register_button(w, HOME_DEFAULT_BUTTON, ro_gui_options_home_default); ro_gui_wimp_event_register_cancel(w, HOME_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, HOME_OK_BUTTON, ro_gui_options_home_ok); ro_gui_wimp_event_register_menu_prepare(w, ro_gui_options_home_menu_prepare); ro_gui_wimp_event_set_help_prefix(w, "HelpHomeConfig"); ro_gui_wimp_event_memorise(w); return true; }
bool ro_gui_options_image_initialise(wimp_w w) { int i; /* load the sprite file */ if (example_users == 0) { char pathname[256]; snprintf(pathname, 256, "%s.Resources.Image", NETSURF_DIR); pathname[255] = '\0'; example_images = ro_gui_load_sprite_file(pathname); if (!example_images) return false; } example_users++; /* set the current values */ for (i = 0; (i < 4); i++) { if ((unsigned int)nsoption_int(plot_fg_quality) == tinct_options[i]) ro_gui_set_icon_string(w, IMAGE_FOREGROUND_FIELD, image_quality_menu->entries[i]. data.indirected_text.text, true); if ((unsigned int)nsoption_int(plot_bg_quality) == tinct_options[i]) ro_gui_set_icon_string(w, IMAGE_BACKGROUND_FIELD, image_quality_menu->entries[i]. data.indirected_text.text, true); } ro_gui_set_icon_decimal(w, IMAGE_SPEED_FIELD, nsoption_int(minimum_gif_delay), 2); ro_gui_set_icon_selected_state(w, IMAGE_DISABLE_ANIMATION, !nsoption_bool(animate_images)); ro_gui_options_update_shading(w); /* register icons */ ro_gui_wimp_event_register_menu_gright(w, IMAGE_FOREGROUND_FIELD, IMAGE_FOREGROUND_MENU, image_quality_menu); ro_gui_wimp_event_register_menu_gright(w, IMAGE_BACKGROUND_FIELD, IMAGE_BACKGROUND_MENU, image_quality_menu); ro_gui_wimp_event_register_text_field(w, IMAGE_SPEED_TEXT); ro_gui_wimp_event_register_numeric_field(w, IMAGE_SPEED_FIELD, IMAGE_SPEED_INC, IMAGE_SPEED_DEC, 0, 6000, 10, 2); ro_gui_wimp_event_register_checkbox(w, IMAGE_DISABLE_ANIMATION); ro_gui_wimp_event_register_text_field(w, IMAGE_SPEED_CS); ro_gui_wimp_event_register_redraw_window(w, ro_gui_options_image_redraw); ro_gui_wimp_event_register_mouse_click(w, ro_gui_options_image_click); ro_gui_wimp_event_register_menu_selection(w, ro_gui_options_image_update); ro_gui_wimp_event_register_cancel(w, IMAGE_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, IMAGE_OK_BUTTON, ro_gui_options_image_ok); ro_gui_wimp_event_set_help_prefix(w, "HelpImageConfig"); ro_gui_wimp_event_memorise(w); return true; }
bool ro_gui_options_interface_initialise(wimp_w w) { /* set the current values */ ro_gui_set_icon_selected_state(w, INTERFACE_STRIP_EXTNS_OPTION, nsoption_bool(strip_extensions)); ro_gui_set_icon_selected_state(w, INTERFACE_CONFIRM_OVWR_OPTION, nsoption_bool(confirm_overwrite)); ro_gui_set_icon_selected_state(w, INTERFACE_URL_COMPLETE_OPTION, nsoption_bool(url_suggestion)); ro_gui_set_icon_selected_state(w, INTERFACE_HISTORY_TOOLTIP_OPTION, nsoption_bool(history_tooltip)); ro_gui_set_icon_selected_state(w, INTERFACE_THUMBNAIL_ICONISE_OPTION, nsoption_bool(thumbnail_iconise)); ro_gui_set_icon_selected_state(w, INTERFACE_USE_EXTERNAL_HOTLIST, nsoption_bool(external_hotlists)); ro_gui_set_icon_string(w, INTERFACE_EXTERNAL_HOTLIST_APP, (nsoption_charp(external_hotlist_app)) ? nsoption_charp(external_hotlist_app) : "", false); ro_gui_set_icon_shaded_state(w, INTERFACE_EXTERNAL_HOTLIST_APP, !nsoption_bool(external_hotlists)); /* initialise all functions for a newly created window */ ro_gui_wimp_event_register_mouse_click(w, ro_gui_options_interface_click); ro_gui_wimp_event_register_button(w, INTERFACE_DEFAULT_BUTTON, ro_gui_options_interface_default); ro_gui_wimp_event_register_cancel(w, INTERFACE_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, INTERFACE_OK_BUTTON, ro_gui_options_interface_ok); ro_gui_wimp_event_set_help_prefix(w, "HelpInterfaceConfig"); ro_gui_wimp_event_memorise(w); return true; }
bool ro_gui_options_theme_click(wimp_pointer *pointer) { struct theme_descriptor *theme_default; struct toolbar_display *toolbar; switch (pointer->i) { case THEME_DEFAULT_BUTTON: theme_default = ro_gui_theme_find("Aletheia"); for (toolbar = toolbars; toolbar; toolbar = toolbar->next) ro_gui_set_icon_selected_state(theme_pane, toolbar->icon_number, (toolbar->descriptor == theme_default)); break; case THEME_CANCEL_BUTTON: ro_gui_wimp_event_restore(theme_pane); break; case THEME_OK_BUTTON: ro_gui_wimp_event_memorise(theme_pane); break; } return false; }
void ro_gui_options_interface_default(wimp_pointer *pointer) { ro_gui_set_icon_selected_state(pointer->w, INTERFACE_STRIP_EXTNS_OPTION, true); ro_gui_set_icon_selected_state(pointer->w, INTERFACE_CONFIRM_OVWR_OPTION, true); ro_gui_set_icon_selected_state(pointer->w, INTERFACE_URL_COMPLETE_OPTION, true); ro_gui_set_icon_selected_state(pointer->w, INTERFACE_HISTORY_TOOLTIP_OPTION, true); ro_gui_set_icon_selected_state(pointer->w, INTERFACE_THUMBNAIL_ICONISE_OPTION, true); ro_gui_set_icon_selected_state(pointer->w, INTERFACE_USE_EXTERNAL_HOTLIST, false); ro_gui_set_icon_string(pointer->w, INTERFACE_EXTERNAL_HOTLIST_APP, "", false); }
bool ro_gui_options_security_initialise(wimp_w w) { /* set the current values */ ro_gui_set_icon_selected_state(w, SECURITY_REFERRER, nsoption_bool(send_referer)); ro_gui_set_icon_integer(w, SECURITY_DURATION_FIELD, nsoption_int(expire_url)); /* initialise all functions for a newly created window */ ro_gui_wimp_event_register_checkbox(w, SECURITY_REFERRER); ro_gui_wimp_event_register_numeric_field(w, SECURITY_DURATION_FIELD, SECURITY_DURATION_DEC, SECURITY_DURATION_INC, 0, 365, 1, 0); ro_gui_wimp_event_register_button(w, SECURITY_DEFAULT_BUTTON, ro_gui_options_security_default); ro_gui_wimp_event_register_cancel(w, SECURITY_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, SECURITY_OK_BUTTON, ro_gui_options_security_ok); ro_gui_wimp_event_set_help_prefix(w, "HelpSecurityConfig"); ro_gui_wimp_event_memorise(w); return true; }
bool ro_gui_options_image_click(wimp_pointer *pointer) { unsigned int old_fg, old_bg, bg, fg; ro_gui_options_image_read(pointer->w, &old_bg, &old_fg); switch (pointer->i) { case IMAGE_DEFAULT_BUTTON: ro_gui_set_icon_string(pointer->w, IMAGE_FOREGROUND_FIELD, image_quality_menu->entries[3]. data.indirected_text.text, true); ro_gui_set_icon_string(pointer->w, IMAGE_BACKGROUND_FIELD, image_quality_menu->entries[2]. data.indirected_text.text, true); ro_gui_set_icon_decimal(pointer->w, IMAGE_SPEED_FIELD, 10, 2); ro_gui_set_icon_selected_state(pointer->w, IMAGE_DISABLE_ANIMATION, false); case IMAGE_DISABLE_ANIMATION: ro_gui_options_update_shading(pointer->w); break; case IMAGE_CANCEL_BUTTON: ro_gui_wimp_event_restore(pointer->w); break; default: return false; } ro_gui_options_image_read(pointer->w, &bg, &fg); if ((bg != old_bg) || (fg != old_fg)) ro_gui_options_image_update(pointer->w, pointer->i, NULL, NULL, NO_ACTION); return false; }
bool ro_gui_load_theme(char *path) { os_error *error; struct theme_file_header *file_header; char *workspace; int workspace_size, file_size, output_left; fileswitch_object_type obj_type; squash_output_status status; os_fw file_handle; char *raw_data; char *compressed; char *decompressed; /* Get memory for the header */ file_header = (struct theme_file_header *)calloc(1, sizeof (struct theme_file_header)); if (!file_header) { LOG(("No memory for calloc()")); warn_user("NoMemory", 0); } /* Load the header */ error = xosfind_openinw(osfind_NO_PATH, path, 0, &file_handle); if (error) { free(file_header); LOG(("xosfind_openinw: 0x%x: %s", error->errnum, error->errmess)); warn_user("FileError", error->errmess); return false; } if (file_handle == 0) { free(file_header); LOG(("File not present")); warn_user("FileError", error->errmess); return false; } error = xosgbpb_read_atw(file_handle, (char *)file_header, sizeof (struct theme_file_header), 0, &output_left); xosfind_closew(file_handle); if (error) { free(file_header); LOG(("xosbgpb_read_atw: 0x%x: %s", error->errnum, error->errmess)); warn_user("FileError", error->errmess); return false; } if (output_left > 0) { free(file_header); LOG(("Insufficient data")); warn_user("FileError", error->errmess); return false; } /* Check the header is OK */ if ((file_header->magic_value != 0x4d54534e) || (file_header->parser_version > 2)) return false; /* Try to load the sprite file */ if (file_header->decompressed_sprite_size > 0) { error = xosfile_read_stamped_no_path(path, &obj_type, 0, 0, &file_size, 0, 0); if (error) { free(file_header); LOG(("xosfile_read_stamped_no_path: 0x%x: %s", error->errnum, error->errmess)); warn_user("FileError", error->errmess); return false; } if (obj_type != fileswitch_IS_FILE) { free(file_header); return false; } raw_data = malloc(file_size); if (!raw_data) { free(file_header); LOG(("No memory for malloc()")); warn_user("NoMemory", 0); return false; } error = xosfile_load_stamped_no_path(path, (byte *)raw_data, 0, 0, 0, 0, 0); if (error) { free(raw_data); free(file_header); LOG(("xosfile_load_stamped_no_path: 0x%x: %s", error->errnum, error->errmess)); warn_user("FileError", error->errmess); return false; } /* Decompress the data */ decompressed = malloc(file_header->decompressed_sprite_size); if (!decompressed) { free(raw_data); free(file_header); LOG(("No memory for malloc()")); warn_user("NoMemory", 0); } error = xsquash_decompress_return_sizes(-1, &workspace_size, 0); if (error) { free(decompressed); free(raw_data); free(file_header); LOG(("xsquash_decompress_return_sizes: 0x%x: %s", error->errnum, error->errmess)); warn_user("MiscError", error->errmess); return false; } workspace = malloc(workspace_size); if (!workspace) { free(decompressed); free(raw_data); free(file_header); LOG(("No memory for malloc()")); warn_user("NoMemory", 0); return false; } compressed = raw_data + sizeof(struct theme_file_header); error = xsquash_decompress(0, /*squash_INPUT_ALL_PRESENT,*/ workspace, (byte *)compressed, file_header->compressed_sprite_size, (byte *)decompressed, file_header->decompressed_sprite_size, &status, 0, 0, 0, 0); free(workspace); free(raw_data); if (error) { free(decompressed); LOG(("xsquash_decompress: 0x%x: %s", error->errnum, error->errmess)); warn_user("MiscError", error->errmess); return false; } if (status != 0) { free(decompressed); return false; } if (theme_sprites) free(theme_sprites); theme_sprites = (osspriteop_area *)decompressed; } else { if (theme_sprites) free(theme_sprites); theme_sprites = NULL; } /* Set out values */ ro_gui_set_icon_string(dialog_main, ICON_MAIN_NAME, file_header->name); ro_gui_set_icon_string(dialog_main, ICON_MAIN_AUTHOR, file_header->author); ro_gui_set_icon_background_colour(dialog_main, ICON_MAIN_BROWSER_COLOUR, file_header->browser_bg); ro_gui_set_icon_background_colour(dialog_main, ICON_MAIN_HOTLIST_COLOUR, file_header->hotlist_bg); ro_gui_set_icon_background_colour(dialog_main, ICON_MAIN_STATUSBG_COLOUR, file_header->status_bg); ro_gui_set_icon_background_colour(dialog_main, ICON_MAIN_STATUSFG_COLOUR, file_header->status_fg); if (file_header->parser_version >= 2) { ro_gui_set_icon_selected_state(dialog_main, ICON_MAIN_THROBBER_LEFT, file_header->theme_flags & (1 << 0)); ro_gui_set_icon_selected_state(dialog_main, ICON_MAIN_THROBBER_REDRAW, file_header->theme_flags & (1 << 1)); } else { ro_gui_set_icon_selected_state(dialog_main, ICON_MAIN_THROBBER_LEFT, file_header->theme_flags); ro_gui_set_icon_selected_state(dialog_main, ICON_MAIN_THROBBER_REDRAW, true); } /* Remember the filename for saving later on */ if (theme_filename) free(theme_filename); theme_filename = malloc(strlen(path) + 1); sprintf(theme_filename, "%s", path); if (sprite_filename) free(sprite_filename); sprite_filename = NULL; /* Exit cleanly */ free(file_header); return true; }
bool ro_gui_options_theme_initialise(wimp_w w) { wimp_window_state state; wimp_icon_state icon_state; os_error *error; struct theme_descriptor *theme_choice; struct toolbar_display *toolbar; /* only allow one instance for now*/ if (theme_pane) return false; error = xwimp_create_window(&theme_pane_definition, &theme_pane); if (error) { LOG(("xwimp_create_window: 0x%x: %s", error->errnum, error->errmess)); return false; } state.w = w; error = xwimp_get_window_state(&state); if (error) { LOG(("xwimp_get_window_state: 0x%x: %s", error->errnum, error->errmess)); return false; } icon_state.w = w; icon_state.i = THEME_PANE_AREA; error = xwimp_get_icon_state(&icon_state); if (error) { LOG(("xwimp_get_icon_state: 0x%x: %s", error->errnum, error->errmess)); return false; } state.w = theme_pane; state.visible.x1 = state.visible.x0 + icon_state.icon.extent.x1 - 16 - ro_get_vscroll_width(theme_pane); state.visible.x0 += icon_state.icon.extent.x0 + 16; state.visible.y0 = state.visible.y1 + icon_state.icon.extent.y0 + 16; state.visible.y1 += icon_state.icon.extent.y1 - 28; LOG(("Y0 = %i, y1 = %i", icon_state.icon.extent.y0, icon_state.icon.extent.y1)); error = xwimp_open_window_nested(PTR_WIMP_OPEN(&state), w, wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT << wimp_CHILD_XORIGIN_SHIFT | wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT << wimp_CHILD_YORIGIN_SHIFT | wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT << wimp_CHILD_LS_EDGE_SHIFT | wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT << wimp_CHILD_BS_EDGE_SHIFT | wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT << wimp_CHILD_RS_EDGE_SHIFT | wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT << wimp_CHILD_TS_EDGE_SHIFT); if (error) { LOG(("xwimp_open_window_nested: 0x%x: %s", error->errnum, error->errmess)); return false; } /* load themes */ ro_gui_options_theme_load(); /* set the current selection */ theme_choice = ro_gui_theme_find(option_theme); if (!theme_choice) theme_choice = ro_gui_theme_find("Aletheia"); for (toolbar = toolbars; toolbar; toolbar = toolbar->next) ro_gui_set_icon_selected_state(theme_pane, toolbar->icon_number, (toolbar->descriptor == theme_choice)); ro_gui_wimp_event_memorise(theme_pane); ro_gui_wimp_event_set_help_prefix(theme_pane, "HelpThemePConfig"); ro_gui_wimp_event_register_mouse_click(w, ro_gui_options_theme_click); ro_gui_wimp_event_register_cancel(w, THEME_CANCEL_BUTTON); ro_gui_wimp_event_register_ok(w, THEME_OK_BUTTON, ro_gui_options_theme_ok); ro_gui_wimp_event_set_help_prefix(w, "HelpThemeConfig"); ro_gui_wimp_event_memorise(w); return true; }
void ro_gui_options_security_default(wimp_pointer *pointer) { /* set the default values */ ro_gui_set_icon_integer(pointer->w, SECURITY_DURATION_FIELD, 28); ro_gui_set_icon_selected_state(pointer->w, SECURITY_REFERRER, true); }
void ro_gui_options_home_default(wimp_pointer *pointer) { /* set the default values */ ro_gui_set_icon_string(pointer->w, HOME_URL_FIELD, "", true); ro_gui_set_icon_selected_state(pointer->w, HOME_OPEN_STARTUP, false); }