From 1548c232caffc716d66b04c0bf8bd3dd9ecfe9aa Mon Sep 17 00:00:00 2001 From: James Bursa Date: Wed, 27 Aug 2003 20:09:57 +0000 Subject: [project @ 2003-08-27 20:09:57 by bursa] Fix negative dimensions, more gui cleanup. svn path=/import/netsurf/; revision=252 --- riscos/gui.c | 450 ----------------------------------------------------------- 1 file changed, 450 deletions(-) (limited to 'riscos/gui.c') diff --git a/riscos/gui.c b/riscos/gui.c index f5da4663d..f1305d036 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -43,19 +43,6 @@ int gadget_subtract_x; int gadget_subtract_y; const char* HOME_URL = "file:///%3CNetSurf$Dir%3E/Resources/intro"; -wimp_menu* theme_menu = NULL; - - -struct ro_choices choices; -struct browser_choices browser_choices; -struct proxy_choices proxy_choices; -struct theme_choices theme_choices; - -int config_open = 0; -int config_br_open = 0; -int config_prox_open = 0; -int config_th_open = 0; - struct ro_gui_drag_info; typedef enum { mouseaction_NONE, @@ -240,86 +227,12 @@ gui_window* create_gui_browser_window(struct browser_window* bw) if ((bw->flags & browser_TOOLBAR) != 0) { ro_theme_window create_toolbar; -/* - struct wimp_window toolbar; - wimp_icon_create status_icon; - wimp_icon_create url_icon; - - toolbar.visible.x0 = 0; - toolbar.visible.y0 = 0; - toolbar.visible.x1 = 4096; - toolbar.visible.y1 = TOOLBAR_HEIGHT; - toolbar.xscroll = 0; - toolbar.yscroll = 0; - toolbar.next = wimp_TOP; - toolbar.flags = - wimp_WINDOW_MOVEABLE | wimp_WINDOW_NEW_FORMAT | - wimp_WINDOW_AUTO_REDRAW | wimp_WINDOW_FURNITURE_WINDOW; - toolbar.title_fg = wimp_COLOUR_BLACK; - toolbar.title_bg = wimp_COLOUR_LIGHT_GREY; - toolbar.work_fg = wimp_COLOUR_LIGHT_GREY; - toolbar.work_bg = wimp_COLOUR_VERY_LIGHT_GREY; - toolbar.scroll_outer = wimp_COLOUR_DARK_GREY; - toolbar.scroll_inner = wimp_COLOUR_MID_LIGHT_GREY; - toolbar.highlight_bg = wimp_COLOUR_CREAM; - toolbar.extra_flags = 0; - toolbar.extent.x0 = 0; - toolbar.extent.y0 = -TOOLBAR_HEIGHT; - toolbar.extent.x1 = 4096; - if ((bw->flags & browser_TOOLBAR) != 0) - { - toolbar.extent.y1 = TOOLBAR_HEIGHT; - } - else - { - toolbar.extent.y1 = 0; - } - toolbar.title_flags = wimp_ICON_TEXT; - toolbar.work_flags = wimp_BUTTON_CLICK_DRAG << wimp_ICON_BUTTON_TYPE_SHIFT; - toolbar.sprite_area = NULL; - toolbar.icon_count = 0; - toolbar.xmin = 0; - toolbar.ymin = 2; - g->data.browser.toolbar = wimp_create_window(&toolbar);*/ create_toolbar.type = THEME_TOOLBAR; create_toolbar.data.toolbar.indirected_url = g->url; create_toolbar.data.toolbar.indirected_status = g->status; g->data.browser.toolbar = ro_theme_create_window(current_theme, &create_toolbar); g->data.browser.toolbar_width = -1; - fprintf(stderr, "Created toolbar!"); -/* - status_icon.w = g->data.browser.toolbar; - status_icon.icon.extent.x0 = 0; - status_icon.icon.extent.y0 = -128; - status_icon.icon.extent.x1 = 4096; - status_icon.icon.extent.y1 = -64; - status_icon.icon.flags = - wimp_ICON_TEXT | wimp_ICON_BORDER | wimp_ICON_VCENTRED | - wimp_ICON_INDIRECTED | wimp_ICON_FILLED | - (wimp_BUTTON_NEVER << wimp_ICON_BUTTON_TYPE_SHIFT) | - (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | - (wimp_COLOUR_VERY_LIGHT_GREY << wimp_ICON_BG_COLOUR_SHIFT); - status_icon.icon.data.indirected_text.text = g->status; - status_icon.icon.data.indirected_text.validation = "R2;"; - status_icon.icon.data.indirected_text.size = 255; - wimp_create_icon(&status_icon); - - url_icon.w = g->data.browser.toolbar; - url_icon.icon.extent.x0 = 0; - url_icon.icon.extent.y0 = -64; - url_icon.icon.extent.x1 = 4096; - url_icon.icon.extent.y1 = 0; - url_icon.icon.flags = - wimp_ICON_TEXT | wimp_ICON_BORDER | wimp_ICON_VCENTRED | - wimp_ICON_INDIRECTED | wimp_ICON_FILLED | - (wimp_BUTTON_WRITE_CLICK_DRAG << wimp_ICON_BUTTON_TYPE_SHIFT) | - (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | - (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT); - url_icon.icon.data.indirected_text.text = g->url; - url_icon.icon.data.indirected_text.validation = "Pptr_write;"; - url_icon.icon.data.indirected_text.size = 255; - wimp_create_icon(&url_icon);*/ } g->redraw_safety = SAFE; @@ -2294,366 +2207,3 @@ void gui_remove_gadget(struct gui_gadget* g) } } - -void gui_show_choices() -{ - wimp_window_state open; - - if (!config_open) - options_to_ro(&OPTIONS, &choices); - - open.w = dialog_config; - wimp_get_window_state(&open); - open.next = wimp_TOP; - wimp_open_window(&open); - config_open = 1; - return; -} - -void set_icon_state(wimp_w w, wimp_i i, int state) -{ - if (state) - wimp_set_icon_state(w,i, wimp_ICON_SELECTED, wimp_ICON_SELECTED); - else - wimp_set_icon_state(w,i, 0, wimp_ICON_SELECTED); -} - -int get_icon_state(wimp_w w, wimp_i i) -{ - wimp_icon_state ic; - ic.w = w; - ic.i = i; - wimp_get_icon_state(&ic); - return (ic.icon.flags & wimp_ICON_SELECTED) != 0; -} - -void set_icon_string(wimp_w w, wimp_i i, char* text) -{ - wimp_icon_state ic; - ic.w = w; - ic.i = i; - wimp_get_icon_state(&ic); - strncpy(ic.icon.data.indirected_text.text, text, ic.icon.data.indirected_text.size); -} - -char* get_icon_string(wimp_w w, wimp_i i) -{ - wimp_icon_state ic; - ic.w = w; - ic.i = i; - wimp_get_icon_state(&ic); - return ic.icon.data.indirected_text.text; -} - -void set_icon_string_i(wimp_w w, wimp_i i, int num) -{ - char buffer[255]; - sprintf(buffer, "%d", num); - set_icon_string(w, i, buffer); -} - -void set_browser_choices(struct browser_choices* newchoices) -{ - memcpy(&browser_choices, newchoices, sizeof(struct browser_choices)); - set_icon_state(dialog_config_br, ICON_CONFIG_BR_GESTURES, browser_choices.use_mouse_gestures); - set_icon_state(dialog_config_br, ICON_CONFIG_BR_FORM, browser_choices.use_riscos_elements); - set_icon_state(dialog_config_br, ICON_CONFIG_BR_TEXT, browser_choices.allow_text_selection); - set_icon_state(dialog_config_br, ICON_CONFIG_BR_TOOLBAR, browser_choices.show_toolbar); - set_icon_state(dialog_config_br, ICON_CONFIG_BR_PREVIEW, browser_choices.show_print_preview); -} - -void get_browser_choices(struct browser_choices* newchoices) -{ - newchoices->use_mouse_gestures = get_icon_state(dialog_config_br, ICON_CONFIG_BR_GESTURES); - newchoices->use_riscos_elements = get_icon_state(dialog_config_br, ICON_CONFIG_BR_FORM); - newchoices->allow_text_selection = get_icon_state(dialog_config_br, ICON_CONFIG_BR_TEXT); - newchoices->show_toolbar = get_icon_state(dialog_config_br, ICON_CONFIG_BR_TOOLBAR); - newchoices->show_print_preview = get_icon_state(dialog_config_br, ICON_CONFIG_BR_PREVIEW); -} - -void set_proxy_choices(struct proxy_choices* newchoices) -{ - memcpy(&proxy_choices, newchoices, sizeof(struct proxy_choices)); - set_icon_state(dialog_config_prox, ICON_CONFIG_PROX_HTTP, proxy_choices.http); - set_icon_string(dialog_config_prox, ICON_CONFIG_PROX_HTTPHOST, proxy_choices.http_proxy); - set_icon_string_i(dialog_config_prox, ICON_CONFIG_PROX_HTTPPORT, proxy_choices.http_port); -} - -void get_proxy_choices(struct proxy_choices* newchoices) -{ - newchoices->http = get_icon_state(dialog_config_prox, ICON_CONFIG_PROX_HTTP); - strncpy(newchoices->http_proxy, get_icon_string(dialog_config_prox, ICON_CONFIG_PROX_HTTPHOST), 255); - newchoices->http_port = atoi(get_icon_string(dialog_config_prox, ICON_CONFIG_PROX_HTTPPORT)); -} - -osspriteop_area* theme_preview = NULL; - -void load_theme_preview(char* thname) -{ -if (theme_preview != NULL) - xfree(theme_preview); - -theme_preview = NULL; - - if (file_exists(THEMES_DIR, thname, "Preview", 0xff9)) - { -char filename[256]; -FILE* fp; -int size; - - - sprintf(filename, "%s.%s.Preview", THEMES_DIR, thname); - fp = fopen(filename, "rb"); - if (fp == 0) return; - if (fseek(fp, 0, SEEK_END) != 0) die("fseek() failed"); - if ((size = (int) ftell(fp)) == -1) die("ftell() failed"); - fclose(fp); - - theme_preview = xcalloc(size + 16, 1); - if (theme_preview == NULL) - return; - - theme_preview->size = size + 16; - theme_preview->sprite_count = 0; - theme_preview->first = 16; - theme_preview->used = 16; - osspriteop_clear_sprites(osspriteop_USER_AREA, theme_preview); - osspriteop_load_sprite_file(osspriteop_USER_AREA, theme_preview, filename); - - - } -} - -void set_theme_choices(struct theme_choices* newchoices) -{ - memcpy(&theme_choices, newchoices, sizeof(struct theme_choices)); - set_icon_string(dialog_config_th, ICON_CONFIG_TH_NAME, theme_choices.name); - load_theme_preview(theme_choices.name); -} - -void get_theme_choices(struct theme_choices* newchoices) -{ - strncpy(newchoices->name, get_icon_string(dialog_config_th, ICON_CONFIG_TH_NAME), 255); -} - -void ro_gui_show_browser_choices() -{ - wimp_window_state open; - - if (!config_br_open) - set_browser_choices(&choices.browser); - - open.w = dialog_config_br; - wimp_get_window_state(&open); - open.next = wimp_TOP; - wimp_open_window(&open); - config_br_open = 1; -} - -void ro_gui_show_proxy_choices() -{ - wimp_window_state open; - - if (!config_prox_open) - set_proxy_choices(&choices.proxy); - - open.w = dialog_config_prox; - wimp_get_window_state(&open); - open.next = wimp_TOP; - wimp_open_window(&open); - config_prox_open = 1; -} - -void ro_gui_show_theme_choices() -{ - wimp_window_state open; - - if (!config_th_open) - { - set_theme_choices(&choices.theme); - } - - open.w = dialog_config_th; - wimp_get_window_state(&open); - open.next = wimp_TOP; - wimp_open_window(&open); - config_th_open = 1; -} - - -void ro_gui_destroy_theme_menu() -{ - int i = 0; - LOG(("destroy?")); - - if (theme_menu == NULL) - return; - - LOG(("enumerating")); - while ((theme_menu->entries[i].menu_flags & wimp_MENU_LAST) == 0) - { - xfree(theme_menu->entries[i].data.indirected_text.text); - LOG(("freed")); - i++; - } - - LOG(("freeing menu")); - xfree(theme_menu); - theme_menu = NULL; - LOG(("destroyed")); -} - -int file_exists(char* base, char* dir, char* leaf, bits ftype) -{ - char buffer[256]; - fileswitch_object_type type; - bits load, exec; - int size; - fileswitch_attr attr; - bits file_type; - - snprintf(buffer, 255, "%s.%s.%s", base, dir, leaf); - LOG(("checking %s", buffer)); - if (xosfile_read_stamped_no_path(buffer, &type, &load, &exec, &size, &attr, &file_type) == NULL) - { - return (type == 1 && ftype == file_type); - } - - return 0; -} - -void ro_gui_build_theme_menu() -{ - wimp_menu* m; - int num = 0; - int i; - char* name[256]; - char buffer[256]; - osgbpb_system_info* info; - int context = 0, count = 1; - - LOG(("check for destroy")); - if (theme_menu != NULL) - ro_gui_destroy_theme_menu(); - - LOG(("enumerate themes")); - context = osgbpb_dir_entries_system_info(THEMES_DIR, buffer, 1, context, 256, 0, &count); - while (context != -1) - { - LOG(("called")); - info = (osgbpb_system_info*) buffer; - if (info->obj_type == 2 /* directory */) - { - if (file_exists(THEMES_DIR, info->name, "Templates", 0xfec) && - file_exists(THEMES_DIR, info->name, "Sprites", 0xff9) && - file_exists(THEMES_DIR, info->name, "IconNames", 0xfff) && - file_exists(THEMES_DIR, info->name, "IconSizes", 0xfff)) - { - LOG(("found")); - name[num] = malloc(strlen(info->name) + 2); - strcpy(name[num], info->name); - num++; - } - } - context = osgbpb_dir_entries_system_info(THEMES_DIR, buffer, 1, context, 256, 0, &count); - } - LOG(("mallocing")); - - m = malloc(sizeof(wimp_menu_base) + (num*2) * sizeof(wimp_menu_entry)); - strcpy(m->title_data.text, "Themes"); - m->title_fg = wimp_COLOUR_BLACK; - m->title_bg = wimp_COLOUR_LIGHT_GREY; - m->work_fg = wimp_COLOUR_BLACK; - m->work_bg = wimp_COLOUR_WHITE; - m->width = 256; - m->height = 44; - m->gap = 0; - - LOG(("building entries")); - for (i = 0; i < num; i++) - { - if (i < num - 1) - m->entries[i].menu_flags = 0; - else - { - LOG(("last one")); - m->entries[i].menu_flags = wimp_MENU_LAST; - } - - if (strcmp(name[i], theme_choices.name) == 0) - m->entries[i].menu_flags |= wimp_MENU_TICKED; - - m->entries[i].sub_menu = wimp_NO_SUB_MENU; - m->entries[i].icon_flags = (wimp_ICON_TEXT | wimp_ICON_FILLED | wimp_ICON_INDIRECTED | (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT)); - m->entries[i].data.indirected_text.text = name[i]; - m->entries[i].data.indirected_text.validation = BROWSER_VALIDATION; - m->entries[i].data.indirected_text.size = strlen(name[i]) + 1; - LOG(("entry %d", i)); - } - - LOG(("done")); - - theme_menu = m; -} - -void ro_gui_redraw_config_th(wimp_draw* redraw) -{ - int x, y, size; - osbool more; - wimp_icon_state preview; - wimp_window_state win; - osspriteop_trans_tab* trans_tab; - - win.w = dialog_config_th; - wimp_get_window_state(&win); - - preview.w = dialog_config_th; - preview.i = ICON_CONFIG_TH_PREVIEW; - wimp_get_icon_state(&preview); - - if (theme_preview != NULL) - { - x = preview.icon.extent.x0 + win.visible.x0 + 4; - y = preview.icon.extent.y0 + win.visible.y1 + 4; - - xcolourtrans_generate_table_for_sprite(theme_preview, "preview", -1, -1, 0, 0, 0, 0, &size); - trans_tab = malloc(size + 32); - xcolourtrans_generate_table_for_sprite(theme_preview, "preview", -1, -1, trans_tab, 0, 0, 0, &size); - - more = wimp_redraw_window(redraw); - while (more) - { - xosspriteop_put_sprite_scaled(osspriteop_NAME, theme_preview, "preview", x, y, 0, 0, trans_tab); - more = wimp_get_rectangle(redraw); - } - - xfree(trans_tab); - } - else - { - preview.icon.flags = wimp_ICON_TEXT | wimp_ICON_INDIRECTED | wimp_ICON_HCENTRED | wimp_ICON_VCENTRED | (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | (wimp_COLOUR_VERY_LIGHT_GREY << wimp_ICON_BG_COLOUR_SHIFT); - preview.icon.data.indirected_text.text = "No preview available"; - preview.icon.data.indirected_text.size = 21; - - more = wimp_redraw_window(redraw); - while (more) - { - wimp_plot_icon(&preview.icon); - more = wimp_get_rectangle(redraw); - } - - } - return; - -} - -void ro_gui_theme_menu_selection(char *theme) -{ - strcpy(theme_choices.name, theme); - set_icon_string(dialog_config_th, ICON_CONFIG_TH_NAME, theme_choices.name); - load_theme_preview(theme_choices.name); - wimp_set_icon_state(dialog_config_th, ICON_CONFIG_TH_NAME, 0, 0); - wimp_set_icon_state(dialog_config_th, ICON_CONFIG_TH_PREVIEW, 0, 0); - -} - -- cgit v1.2.3