From 7872dc57fd3380df584eece25dad5746619b363c Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sat, 3 Apr 2004 02:59:35 +0000 Subject: [project @ 2004-04-03 02:59:34 by jmb] Implement page info dialog box. svn path=/import/netsurf/; revision=709 --- riscos/dialog.c | 3 ++- riscos/gui.h | 8 +++++++- riscos/menus.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 53 insertions(+), 4 deletions(-) (limited to 'riscos') diff --git a/riscos/dialog.c b/riscos/dialog.c index ba369aa1f..72d58decb 100644 --- a/riscos/dialog.c +++ b/riscos/dialog.c @@ -29,7 +29,7 @@ wimp_w dialog_info, dialog_saveas, dialog_config, dialog_config_br, #ifdef WITH_AUTH dialog_401li, #endif - dialog_zoom; + dialog_zoom, dialog_pageinfo; ; wimp_menu* theme_menu = NULL; @@ -75,6 +75,7 @@ void ro_gui_dialog_init(void) dialog_config_prox = ro_gui_dialog_create("config_prox"); dialog_config_th = ro_gui_dialog_create("config_th"); dialog_zoom = ro_gui_dialog_create("zoom"); + dialog_pageinfo = ro_gui_dialog_create("pageinfo"); set_browser_choices(); set_proxy_choices(); diff --git a/riscos/gui.h b/riscos/gui.h index 940e32f23..bbeb5fa17 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -20,7 +20,7 @@ #define THEMES_DIR ".Themes" extern wimp_w dialog_info, dialog_saveas, dialog_config, dialog_config_br, - dialog_config_prox, dialog_config_th, dialog_zoom; + dialog_config_prox, dialog_config_th, dialog_zoom, dialog_pageinfo; extern wimp_w history_window; extern wimp_menu *iconbar_menu, *browser_menu, *combo_menu, *theme_menu; extern int iconbar_menu_height; @@ -252,4 +252,10 @@ void schedule_run(void); #define ICON_SAVE_OK 2 #define ICON_SAVE_CANCEL 3 +#define ICON_PAGEINFO_TITLE 0 +#define ICON_PAGEINFO_URL 1 +#define ICON_PAGEINFO_ENC 2 +#define ICON_PAGEINFO_TYPE 3 +#define ICON_PAGEINFO_ICON 4 + #endif diff --git a/riscos/menus.c b/riscos/menus.c index b317edb6a..d5790e730 100644 --- a/riscos/menus.c +++ b/riscos/menus.c @@ -13,6 +13,7 @@ #include #include +#include "libxml/encoding.h" #include "oslib/wimp.h" #include "netsurf/desktop/gui.h" #include "netsurf/riscos/constdata.h" @@ -25,6 +26,7 @@ static void translate_menu(wimp_menu *menu); +static void ro_gui_menu_pageinfo(wimp_message_menu_warning *warning); static wimp_menu *current_menu; static int current_menu_x, current_menu_y; @@ -61,7 +63,7 @@ static wimp_menu *browser_export_menu = (wimp_menu *) &export_menu; static wimp_MENU(5) page_menu = { { "Page" }, 7,2,7,0, 200, 44, 0, { - { 0, wimp_NO_SUB_MENU, DEFAULT_FLAGS, { "Info" } }, + { wimp_MENU_GIVE_WARNING, wimp_NO_SUB_MENU, DEFAULT_FLAGS, { "Info" } }, { wimp_MENU_GIVE_WARNING, wimp_NO_SUB_MENU, DEFAULT_FLAGS, { "Save" } }, { wimp_MENU_GIVE_WARNING, wimp_NO_SUB_MENU, DEFAULT_FLAGS, { "SaveComp" } }, { 0, (wimp_menu *) &export_menu, DEFAULT_FLAGS, { "Export" } }, @@ -126,6 +128,7 @@ void ro_gui_menus_init(void) translate_menu(browser_view_menu); iconbar_menu->entries[0].sub_menu = (wimp_menu *) dialog_info; + browser_page_menu->entries[0].sub_menu = (wimp_menu*) dialog_pageinfo; browser_page_menu->entries[1].sub_menu = (wimp_menu *) dialog_saveas; browser_page_menu->entries[2].sub_menu = (wimp_menu *) dialog_saveas; browser_export_menu->entries[0].sub_menu = (wimp_menu *) dialog_saveas; @@ -288,7 +291,7 @@ void ro_gui_menu_selection(wimp_selection *selection) /** - * Handle Message_MenuWarning by opening the save dialog. + * Handle Message_MenuWarning */ void ro_gui_menu_warning(wimp_message_menu_warning *warning) @@ -316,6 +319,10 @@ void ro_gui_menu_warning(wimp_message_menu_warning *warning) gui_current_save_type = GUI_SAVE_COMPLETE; break; + case 0: /* Page info */ + ro_gui_menu_pageinfo(warning); + return; + case 1: default: /* Save */ gui_current_save_type = GUI_SAVE_SOURCE; @@ -377,3 +384,38 @@ void ro_gui_menu_prepare_save(struct content *c) ro_gui_set_icon_string(dialog_saveas, ICON_SAVE_ICON, icon); ro_gui_set_icon_string(dialog_saveas, ICON_SAVE_PATH, name); } + +void ro_gui_menu_pageinfo(wimp_message_menu_warning *warning) +{ + struct content *c = current_gui->data.browser.bw->current_content; + os_error *error; + char icon_buf[20] = "file_xxx"; + const char *icon = icon_buf; + const char *title = "-"; + const char *url = "-"; + const char *enc = "-"; + const char *mime = "-"; + + if (c->title != 0) title = c->title; + if (c->url != 0) url = c->url; + if (c->mime_type != 0) mime = c->mime_type; + + sprintf(icon_buf, "file_%x", ro_content_filetype(c)); + + if (c->type == CONTENT_HTML) { + enc = xmlGetCharEncodingName(c->data.html.encoding); + } + + ro_gui_set_icon_string(dialog_pageinfo, ICON_PAGEINFO_ICON, icon); + ro_gui_set_icon_string(dialog_pageinfo, ICON_PAGEINFO_TITLE, title); + ro_gui_set_icon_string(dialog_pageinfo, ICON_PAGEINFO_URL, url); + ro_gui_set_icon_string(dialog_pageinfo, ICON_PAGEINFO_ENC, enc); + ro_gui_set_icon_string(dialog_pageinfo, ICON_PAGEINFO_TYPE, mime); + + error = xwimp_create_sub_menu((wimp_menu *) dialog_pageinfo, + warning->pos.x, warning->pos.y); + if (error) { + LOG(("0x%x: %s\n", error->errnum, error->errmess)); + warn_user(error->errmess); + } +} -- cgit v1.2.3