ro_treeview *ro_treeview_create(wimp_w window, struct toolbar *toolbar, struct ro_treeview_callbacks *callbacks, unsigned int flags) { ro_treeview *tv; /* Claim memory for the treeview block, and create a tree. */ tv = malloc(sizeof(ro_treeview)); if (tv == NULL) return NULL; tv->w = window; tv->tb = toolbar; /* Set the tree redraw origin at a default 0,0 RO units. */ tv->origin.x = 0; tv->origin.y = 0; /* Set the tree size as 0,0 to indicate that we don't know. */ tv->size.x = 0; tv->size.y = 0; /* Set the tree window extent to 0,0, to indicate that we * don't know. */ tv->extent.x = 0; tv->extent.y = 0; /* Set that there is no drag opperation at the moment */ tv->drag = TREE_NO_DRAG; tv->tree = tree_create(flags, &ro_tree_callbacks, tv); if (tv->tree == NULL) { free(tv); return NULL; } /* Record the callback info. */ tv->callbacks = callbacks; /* Register wimp events to handle the supplied window. */ ro_gui_wimp_event_register_redraw_window(tv->w, ro_treeview_redraw); ro_gui_wimp_event_register_scroll_window(tv->w, ro_treeview_scroll); ro_gui_wimp_event_register_pointer_entering_window(tv->w, ro_treeview_pointer_entering); ro_gui_wimp_event_register_open_window(tv->w, ro_treeview_open); ro_gui_wimp_event_register_mouse_click(tv->w, ro_treeview_mouse_click); ro_gui_wimp_event_register_keypress(tv->w, ro_treeview_keypress); ro_gui_wimp_event_set_user_data(tv->w, tv); return tv; }
void ro_gui_history_init(void) { history_window = ro_gui_dialog_create("history"); ro_gui_wimp_event_register_redraw_window(history_window, ro_gui_history_redraw); ro_gui_wimp_event_register_mouse_click(history_window, ro_gui_history_click); ro_gui_wimp_event_set_help_prefix(history_window, "HelpHistory"); }
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; }
void ro_gui_debugwin_open(void) { #ifdef ENABLE_DEBUGWIN ro_gui_wimp_event_register_close_window(dialog_debug, ro_gui_debugwin_close); ro_gui_wimp_event_register_redraw_window(dialog_debug, ro_gui_debugwin_redraw); ro_gui_debugwin_resize(); ro_gui_dialog_open(dialog_debug); schedule_remove(ro_gui_debugwin_update, 0); schedule(DEBUGWIN_UPDATE, ro_gui_debugwin_update, 0); #endif }
/** * Create a text area * * \param parent Parent window * \param icon Icon in parent window to replace * \param flags Text area flags * \param font_family RUfl font family to use, or NULL for default * \param font_size Font size to use (pt * 16), or 0 for default * \param font_style Font style to use, or 0 for default * \return Opaque handle for textarea or 0 on error */ uintptr_t ro_textarea_create(wimp_w parent, wimp_i icon, unsigned int flags, const char *font_family, unsigned int font_size, rufl_style font_style) { struct text_area *ret; os_error *error; ret = malloc(sizeof(struct text_area)); if (!ret) { LOG(("malloc failed")); return 0; } ret->parent = parent; ret->icon = icon; ret->magic = MAGIC; ret->flags = flags; ret->text = malloc(64); if (!ret->text) { LOG(("malloc failed")); free(ret); return 0; } ret->text[0] = '\0'; ret->text_alloc = 64; ret->text_len = 1; ret->caret_pos.line = ret->caret_pos.char_off = (unsigned int)-1; // ret->selection_start = (unsigned int)-1; // ret->selection_end = (unsigned int)-1; ret->font_family = strdup(font_family ? font_family : "Corpus"); if (!ret->font_family) { LOG(("strdup failed")); free(ret->text); free(ret); return 0; } ret->font_size = font_size ? font_size : 192 /* 12pt */; ret->font_style = font_style ? font_style : rufl_WEIGHT_400; /** \todo Better line height calculation */ ret->line_height = (int)(((ret->font_size * 1.3) / 16) * 2.0) + 1; ret->line_spacing = ret->line_height / 8; ret->line_count = 0; ret->lines = 0; if (flags & TEXTAREA_READONLY) text_area_definition.title_fg = 0xff; else text_area_definition.title_fg = wimp_COLOUR_BLACK; error = xwimp_create_window(&text_area_definition, &ret->window); if (error) { LOG(("xwimp_create_window: 0x%x: %s", error->errnum, error->errmess)); free(ret->font_family); free(ret->text); free(ret); return 0; } /* set the window dimensions */ if (!ro_textarea_update((uintptr_t)ret)) { ro_textarea_destroy((uintptr_t)ret); return 0; } /* and register our event handlers */ ro_gui_wimp_event_set_user_data(ret->window, ret); ro_gui_wimp_event_register_mouse_click(ret->window, ro_textarea_mouse_click); ro_gui_wimp_event_register_keypress(ret->window, ro_textarea_key_press); ro_gui_wimp_event_register_redraw_window(ret->window, ro_textarea_redraw); ro_gui_wimp_event_register_open_window(ret->window, ro_textarea_open); return (uintptr_t)ret; }
/** * Initialise global history tree */ void ro_gui_global_history_initialise(void) { char s[MAXIMUM_URL_LENGTH]; FILE *fp; /* create our window */ global_history_window = ro_gui_dialog_create("tree"); ro_gui_set_window_title(global_history_window, messages_get("GlobalHistory")); ro_gui_wimp_event_register_redraw_window(global_history_window, ro_gui_tree_redraw); ro_gui_wimp_event_register_open_window(global_history_window, ro_gui_tree_open); ro_gui_wimp_event_register_mouse_click(global_history_window, ro_gui_global_history_click); /* Create an empty tree */ global_history_tree = calloc(sizeof(struct tree), 1); if (!global_history_tree) { warn_user("NoMemory", 0); return; } global_history_tree->root = tree_create_folder_node(NULL, "Root"); if (!global_history_tree->root) { warn_user("NoMemory", 0); free(global_history_tree); global_history_tree = NULL; return; } global_history_tree->root->expanded = true; ro_gui_global_history_initialise_nodes(); global_history_tree->handle = (int)global_history_window; global_history_tree->movable = false; ro_gui_wimp_event_set_user_data(global_history_window, global_history_tree); ro_gui_wimp_event_register_keypress(global_history_window, ro_gui_tree_keypress); /* Create our toolbar */ global_history_tree->toolbar = ro_gui_theme_create_toolbar(NULL, THEME_HISTORY_TOOLBAR); if (global_history_tree->toolbar) ro_gui_theme_attach_toolbar(global_history_tree->toolbar, global_history_window); /* load recent URLs */ fp = fopen(option_recent_path, "r"); if (!fp) LOG(("Failed to open file '%s' for reading", option_recent_path)); else { while (fgets(s, MAXIMUM_URL_LENGTH, fp)) { if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; global_history_add_recent(s); } fclose(fp); } global_history_init = true; urldb_iterate_entries(global_history_add_internal); global_history_init = false; tree_initialise(global_history_tree); }