From bf3ee089cb57765c48065423027eb4fffbe297f1 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Mon, 25 Apr 2016 23:11:55 +0100 Subject: use the miscellaneous table warning entry change all the frontends to provide the warning callback in the miscelaneous table instead of using the warn_user function. Changing all the warn_user callsites still requires completion. --- amiga/gui.c | 61 +++++++++++++++++----------------- amiga/misc.c | 5 ++- amiga/misc.h | 13 ++++++++ atari/gui.c | 3 +- atari/misc.c | 5 ++- atari/misc.h | 10 ++++++ beos/gui.cpp | 57 ++++++++++++++++---------------- cocoa/Makefile.target | 1 - cocoa/gui.m | 12 +++++++ cocoa/utils.m | 30 ----------------- desktop/gui_factory.c | 3 ++ desktop/gui_misc.h | 17 +++++++--- framebuffer/Makefile.target | 2 +- framebuffer/gui.c | 20 ++++++++++-- framebuffer/misc.c | 33 ------------------- gtk/gui.c | 13 +++++++- monkey/Makefile.target | 2 +- monkey/main.c | 8 +++++ monkey/utils.c | 30 ----------------- riscos/gui.c | 79 +++++++++++++++++++++++---------------------- riscos/gui.h | 1 + utils/utils.c | 12 +++++++ utils/utils.h | 12 +++++-- windows/Makefile.target | 2 +- windows/main.c | 23 ++++++++++++- windows/misc.c | 40 ----------------------- 26 files changed, 248 insertions(+), 246 deletions(-) delete mode 100644 cocoa/utils.m delete mode 100644 framebuffer/misc.c delete mode 100644 monkey/utils.c delete mode 100644 windows/misc.c diff --git a/amiga/gui.c b/amiga/gui.c index a7feb79d8..9227b7044 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -975,7 +975,7 @@ static void gui_init2(int argc, char** argv) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); } free(temp_homepage_url); } @@ -1034,7 +1034,7 @@ static void gui_init2(int argc, char** argv) } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); } free(temp_homepage_url); temp_homepage_url = NULL; @@ -1114,7 +1114,7 @@ static void gui_init2(int argc, char** argv) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); } } } @@ -1424,7 +1424,7 @@ bool ami_mouse_to_ns_coords(struct gui_window_2 *gwin, int *x, int *y, ami_gui_free_space_box(bbox); } else { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return false; } @@ -1448,7 +1448,7 @@ static void ami_gui_scroll_internal(struct gui_window_2 *gwin, int xs, int ys) &gwin->gw->scrolly); if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -1515,7 +1515,7 @@ static struct IBox *ami_ns_rect_to_ibox(struct gui_window_2 *gwin, const struct if(ibox == NULL) return NULL; if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return NULL; } @@ -1590,7 +1590,7 @@ static void gui_window_get_dimensions(struct gui_window *g, int *width, int *hei if(!g) return; if(ami_gui_get_space_box((Object *)g->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -1782,7 +1782,7 @@ static void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon) } if(ami_gui_get_space_box((Object *)g->shared->objects[GID_ICON], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -1971,7 +1971,7 @@ static void ami_handle_msg(void) drag_y_move = 0; if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); break; } @@ -2034,7 +2034,7 @@ static void ami_handle_msg(void) case WMHI_MOUSEBUTTONS: if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -2230,7 +2230,7 @@ static void ami_handle_msg(void) nsurl_unref(url); } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + amiga_warn_user(messages_get_errorcode(ret), 0); } } break; @@ -2269,7 +2269,7 @@ static void ami_handle_msg(void) nsurl_unref(url); } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + amiga_warn_user(messages_get_errorcode(ret), 0); } } @@ -2278,7 +2278,7 @@ static void ami_handle_msg(void) case GID_HOME: { if (nsurl_create(nsoption_charp(homepage_url), &url) != NSERROR_OK) { - warn_user("NoMemory", 0); + amiga_warn_user("NoMemory", 0); } else { browser_window_navigate(gwin->gw->bw, url, @@ -2599,7 +2599,7 @@ static void ami_handle_appmsg(void) nsurl *url; if (netsurf_path_to_nsurl(filename, &url) != NSERROR_OK) { - warn_user("NoMemory", 0); + amiga_warn_user("NoMemory", 0); } else { @@ -2634,7 +2634,7 @@ static void ami_handle_appmsg(void) nsurl *url; if (netsurf_path_to_nsurl(filename, &url) != NSERROR_OK) { - warn_user("NoMemory", 0); + amiga_warn_user("NoMemory", 0); } else { @@ -2701,7 +2701,7 @@ static void ami_handle_applib(void) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); } } break; @@ -2721,7 +2721,7 @@ static void ami_handle_applib(void) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); } } break; @@ -2870,7 +2870,7 @@ void ami_switch_tab(struct gui_window_2 *gwin, bool redraw) cur_gw = gwin->gw; if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -3488,7 +3488,7 @@ nserror ami_gui_new_blank_tab(struct gui_window_2 *gwin) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + amiga_warn_user(messages_get_errorcode(error), 0); return error; } @@ -3618,7 +3618,7 @@ static void ami_do_redraw_limits(struct gui_window *g, struct browser_window *bw if(g != g->shared->gw) return; if(ami_gui_get_space_box((Object *)g->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -3644,7 +3644,7 @@ static void ami_refresh_window(struct gui_window_2 *gwin) ami_set_pointer(gwin, GUI_POINTER_WAIT, false); if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -3806,7 +3806,7 @@ gui_window_create(struct browser_window *bw, if(!g) { - warn_user("NoMemory",""); + amiga_warn_user("NoMemory",""); return NULL; } @@ -3879,7 +3879,7 @@ gui_window_create(struct browser_window *bw, if(!g->shared) { - warn_user("NoMemory",""); + amiga_warn_user("NoMemory",""); return NULL; } @@ -4328,7 +4328,7 @@ gui_window_create(struct browser_window *bw, if(!g->shared->win) { - warn_user("NoMemory",""); + amiga_warn_user("NoMemory",""); FreeVec(g->shared); FreeVec(g); return NULL; @@ -4758,7 +4758,7 @@ static void amiga_window_reformat(struct gui_window *gw) if (gw != NULL) { if(ami_gui_get_space_box((Object *)gw->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } browser_window_reformat(gw->bw, false, bbox->Width, bbox->Height); @@ -4783,7 +4783,7 @@ static void ami_do_redraw(struct gui_window_2 *gwin) gwin->gw->scrolly = vcurrent; if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -4930,7 +4930,7 @@ static void gui_window_set_scroll(struct gui_window *g, int sx, int sy) if(!g->bw || browser_window_has_content(g->bw) == false) return; if(ami_gui_get_space_box((Object *)g->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -4985,7 +4985,7 @@ static void gui_window_update_extent(struct gui_window *g) if(g == g->shared->gw) { int width, height; if(ami_gui_get_space_box((Object *)g->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -5170,7 +5170,7 @@ static void gui_window_place_caret(struct gui_window *g, int x, int y, int heigh SetAPen(g->shared->win->RPort,3); if(ami_gui_get_space_box((Object *)g->shared->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return; } @@ -5265,7 +5265,7 @@ bool ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y) struct browser_window_features data; if(ami_gui_get_space_box((Object *)gwin->objects[GID_BROWSER], &bbox) != NSERROR_OK) { - warn_user("NoMemory", ""); + amiga_warn_user("NoMemory", ""); return false; } @@ -5469,6 +5469,7 @@ static struct gui_search_web_table amiga_search_web_table = { static struct gui_misc_table amiga_misc_table = { .schedule = ami_schedule, + .warning = amiga_warn_user, .quit = gui_quit, .launch_url = gui_launch_url, diff --git a/amiga/misc.c b/amiga/misc.c index dc87ae994..8618fd8b2 100755 --- a/amiga/misc.c +++ b/amiga/misc.c @@ -126,7 +126,8 @@ void ami_misc_fatal_error(const char *message) ami_misc_req(message, TDRIMAGE_ERROR); } -void warn_user(const char *warning, const char *detail) +/* exported interface documented in amiga/misc.h */ +nserror amiga_warn_user(const char *warning, const char *detail) { char *utf8warning = ami_utf8_easy(messages_get(warning)); STRPTR bodytext = ASPrintf("\33b%s\33n\n%s", @@ -136,6 +137,8 @@ void warn_user(const char *warning, const char *detail) if(bodytext) FreeVec(bodytext); if(utf8warning) free(utf8warning); + + return NSERROR_OK; } int32 ami_warn_user_multi(const char *body, const char *opt1, const char *opt2, struct Window *win) diff --git a/amiga/misc.h b/amiga/misc.h index 2544c7731..e8f58fad8 100644 --- a/amiga/misc.h +++ b/amiga/misc.h @@ -18,11 +18,24 @@ #ifndef AMIGA_MISC_H #define AMIGA_MISC_H + #include +#include "utils/errors.h" + extern struct gui_file_table *amiga_file_table; struct Window; +/** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +nserror amiga_warn_user(const char *warning, const char *detail); + void *ami_misc_allocvec_clear(int size, UBYTE value); /* Itempool cross-compatibility */ diff --git a/atari/gui.c b/atari/gui.c index 47b669353..810c7646f 100644 --- a/atari/gui.c +++ b/atari/gui.c @@ -1085,6 +1085,7 @@ static struct gui_fetch_table atari_fetch_table = { static struct gui_misc_table atari_misc_table = { .schedule = atari_schedule, + .warning = atari_warn_user, .quit = gui_quit, .cert_verify = gui_cert_verify, @@ -1193,7 +1194,7 @@ int main(int argc, char** argv) nsurl_unref(url); } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + atari_warn_user(messages_get_errorcode(ret), 0); } else { LOG("Entering Atari event mainloop..."); while (!atari_quit) { diff --git a/atari/misc.c b/atari/misc.c index b46afb5d0..8c940918b 100644 --- a/atari/misc.c +++ b/atari/misc.c @@ -53,7 +53,8 @@ struct is_process_running_callback_data { bool found; }; -void warn_user(const char *warning, const char *detail) +/* exported function documented in atari/misc/h */ +nserror atari_warn_user(const char *warning, const char *detail) { size_t len = 1 + ((warning != NULL) ? strlen(messages_get(warning)) : 0) + ((detail != 0) ? strlen(detail) : 0); @@ -62,6 +63,8 @@ void warn_user(const char *warning, const char *detail) printf("%s\n", message); gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT, message); + + return NSERROR_OK; } void die(const char *error) diff --git a/atari/misc.h b/atari/misc.h index a0e53d11e..0ccaaa7a8 100644 --- a/atari/misc.h +++ b/atari/misc.h @@ -89,4 +89,14 @@ long nkc_to_input_key(short nkc, long * ucs4_out); */ void die(const char * const error) __attribute__ ((noreturn)); +/** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +nserror atari_warn_user(const char *warning, const char *detail); + #endif diff --git a/beos/gui.cpp b/beos/gui.cpp index 5171b211a..fde049525 100644 --- a/beos/gui.cpp +++ b/beos/gui.cpp @@ -113,6 +113,29 @@ static int sEventPipe[2]; // #pragma mark - class NSBrowserFrameView +/** + * Display a warning for a serious problem (eg memory exhaustion). + * + * \param warning message key for warning message + * \param detail additional message, or 0 + */ +static nserror beos_warn_user(const char *warning, const char *detail) +{ + LOG("warn_user: %s (%s)", warning, detail); + BAlert *alert; + BString text(warning); + if (detail) + text << ":\n" << detail; + + alert = new BAlert("NetSurf Warning", text.String(), "Debug", "Ok", + NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); + if (alert->Go() < 1) { + debugger("warn_user"); + } + + return NSERROR_OK; +} + NSBrowserApplication::NSBrowserApplication() : BApplication("application/x-vnd.NetSurf") { @@ -672,7 +695,7 @@ static void gui_init(int argc, char** argv) nsurl_unref(url); } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + beos_warn_user(messages_get_errorcode(error), 0); } if (gFirstRefsReceived) { @@ -804,7 +827,7 @@ void nsbeos_gui_view_source(struct hlcache_handle *content) const char *source = content_get_source_data(content, &size); if (!content || !source) { - warn_user("MiscError", "No document source"); + beos_warn_user("MiscError", "No document source"); return; } @@ -826,7 +849,7 @@ void nsbeos_gui_view_source(struct hlcache_handle *content) * filename. */ const char *filename = filename_request(); if (!filename) { - warn_user("NoMemory", 0); + beos_warn_user("NoMemory", 0); return; } path.SetTo(TEMP_FILENAME_PREFIX); @@ -834,12 +857,12 @@ void nsbeos_gui_view_source(struct hlcache_handle *content) BFile file(path.Path(), B_WRITE_ONLY | B_CREATE_FILE); err = file.InitCheck(); if (err < B_OK) { - warn_user("IOError", strerror(err)); + beos_warn_user("IOError", strerror(err)); return; } err = file.Write(source, size); if (err < B_OK) { - warn_user("IOError", strerror(err)); + beos_warn_user("IOError", strerror(err)); return; } lwc_string *mime = content_get_mime_type(content); @@ -909,31 +932,11 @@ static nserror gui_launch_url(struct nsurl *url) char *args[2] = { (char *)nsurl_access(url), NULL }; status = be_roster->Launch(mimeType.String(), 1, args); if (status < B_OK) - warn_user("Cannot launch url", strerror(status)); + beos_warn_user("Cannot launch url", strerror(status)); return NSERROR_OK; } -/** - * Display a warning for a serious problem (eg memory exhaustion). - * - * \param warning message key for warning message - * \param detail additional message, or 0 - */ - -void warn_user(const char *warning, const char *detail) -{ - LOG("warn_user: %s (%s)", warning, detail); - BAlert *alert; - BString text(warning); - if (detail) - text << ":\n" << detail; - - alert = new BAlert("NetSurf Warning", text.String(), "Debug", "Ok", NULL, - B_WIDTH_AS_USUAL, B_WARNING_ALERT); - if (alert->Go() < 1) - debugger("warn_user"); -} void die(const char * const error) { @@ -965,11 +968,11 @@ static struct gui_fetch_table beos_fetch_table = { static struct gui_misc_table beos_misc_table = { beos_schedule, + beos_warn_user, gui_quit, gui_launch_url, NULL, //cert_verify gui_401login_open, - NULL, // warning NULL, // pdf_password (if we have Haru support) }; diff --git a/cocoa/Makefile.target b/cocoa/Makefile.target index af354d768..615c007ca 100644 --- a/cocoa/Makefile.target +++ b/cocoa/Makefile.target @@ -94,7 +94,6 @@ S_COCOA := \ plotter.m \ schedule.m \ selection.m \ - utils.m \ ArrowBox.m \ ArrowWindow.m \ BlackScroller.m \ diff --git a/cocoa/gui.m b/cocoa/gui.m index 351b6e5fa..78b4147a6 100644 --- a/cocoa/gui.m +++ b/cocoa/gui.m @@ -52,6 +52,17 @@ NSString * const kAlwaysCloseMultipleTabs = @"AlwaysCloseMultipleTabs"; struct browser_window; +static nserror cocoa_warn_user(const char *warning, const char *detail) +{ + NSRunAlertPanel( NSLocalizedString( @"Warning", @"Warning title" ), + NSLocalizedString( @"Warning %s%s%s", @"Warning message" ), + NSLocalizedString( @"OK", @"" ), nil, nil, + warning, detail != NULL ? ": " : "", + detail != NULL ? detail : "" ); + return NSERROR_OK; +} + + static struct gui_window * gui_window_create(struct browser_window *bw, struct gui_window *existing, @@ -299,6 +310,7 @@ struct gui_window_table *cocoa_window_table = &window_table; static struct gui_misc_table browser_table = { .schedule = cocoa_schedule, + .warning = cocoa_warn_user, .launch_url = gui_launch_url, .cert_verify = gui_cert_verify, diff --git a/cocoa/utils.m b/cocoa/utils.m deleted file mode 100644 index 2c73e9b49..000000000 --- a/cocoa/utils.m +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2011 Sven Weidauer - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#import - -#import "utils/utils.h" - -void warn_user(const char *warning, const char *detail) -{ - NSRunAlertPanel( NSLocalizedString( @"Warning", @"Warning title" ), - NSLocalizedString( @"Warning %s%s%s", @"Warning message" ), - NSLocalizedString( @"OK", @"" ), nil, nil, - warning, detail != NULL ? ": " : "", - detail != NULL ? detail : "" ); -} diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c index c15603e1c..956c508e6 100644 --- a/desktop/gui_factory.c +++ b/desktop/gui_factory.c @@ -719,6 +719,9 @@ static nserror verify_misc_register(struct gui_misc_table *gmt) if (gmt->schedule == NULL) { return NSERROR_BAD_PARAMETER; } + if (gmt->warning == NULL) { + return NSERROR_BAD_PARAMETER; + } /* fill in the optional entries with defaults */ if (gmt->quit == NULL) { diff --git a/desktop/gui_misc.h b/desktop/gui_misc.h index a46c85367..399d93895 100644 --- a/desktop/gui_misc.h +++ b/desktop/gui_misc.h @@ -57,6 +57,18 @@ struct gui_misc_table { */ nserror (*schedule)(int t, void (*callback)(void *p), void *p); + /** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message + * translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ + nserror (*warning)(const char *message, const char *detail); + + /* Optional entries */ /** @@ -86,11 +98,6 @@ struct gui_misc_table { void (*login)(struct nsurl *url, const char *realm, nserror (*cb)(bool proceed, void *pw), void *cbpw); - /** - * Warn the user of an event. - */ - void (*warning)(const char *warning, const char *detail); - /** * Prompt the user for a password for a PDF. */ diff --git a/framebuffer/Makefile.target b/framebuffer/Makefile.target index c0f5e2292..44fa5aa4a 100644 --- a/framebuffer/Makefile.target +++ b/framebuffer/Makefile.target @@ -174,7 +174,7 @@ $(eval $(foreach V,$(filter FB_FONT_$(NETSURF_FB_FONTLIB)_%,$(.VARIABLES)),$(cal # ---------------------------------------------------------------------------- # S_FRAMEBUFFER are sources purely for the framebuffer build -S_FRAMEBUFFER := gui.c framebuffer.c schedule.c misc.c bitmap.c fetch.c \ +S_FRAMEBUFFER := gui.c framebuffer.c schedule.c bitmap.c fetch.c \ findfile.c localhistory.c clipboard.c S_FRAMEBUFFER_FBTK := fbtk.c event.c fill.c bitmap.c user.c window.c \ diff --git a/framebuffer/gui.c b/framebuffer/gui.c index 11511fe0e..7e48b654e 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -108,6 +108,21 @@ static void die(const char *error) exit(1); } + +/** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +static nserror fb_warn_user(const char *warning, const char *detail) +{ + LOG("%s %s", warning, detail); + return NSERROR_OK; +} + /* queue a redraw operation, co-ordinates are relative to the window */ static void fb_queue_redraw(struct fbtk_widget_s *widget, int x0, int y0, int x1, int y1) @@ -1103,7 +1118,7 @@ fb_url_enter(void *pw, char *text) error = nsurl_create(text, &url); if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + fb_warn_user(messages_get_errorcode(error), 0); } else { browser_window_navigate(bw, url, NULL, BW_NAVIGATE_HISTORY, NULL, NULL, NULL); @@ -2056,6 +2071,7 @@ static struct gui_window_table framebuffer_window_table = { static struct gui_misc_table framebuffer_misc_table = { .schedule = framebuffer_schedule, + .warning = fb_warn_user, .quit = gui_quit, }; @@ -2156,7 +2172,7 @@ main(int argc, char** argv) nsurl_unref(url); } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + fb_warn_user(messages_get_errorcode(ret), 0); } else { framebuffer_run(); diff --git a/framebuffer/misc.c b/framebuffer/misc.c deleted file mode 100644 index f1f96816a..000000000 --- a/framebuffer/misc.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2008 Vincent Sanders - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include - -#include "utils/log.h" -#include "utils/messages.h" -#include "utils/utils.h" - -void warn_user(const char *warning, const char *detail) -{ - LOG("%s %s", warning, detail); -} - - diff --git a/gtk/gui.c b/gtk/gui.c index 5578f63cb..c17c128e2 100644 --- a/gtk/gui.c +++ b/gtk/gui.c @@ -480,7 +480,15 @@ static nserror gui_launch_url(struct nsurl *url) return NSERROR_NO_FETCH_HANDLER; } -void warn_user(const char *warning, const char *detail) +/** + * Warn the user of an event. + * + * \param[in] warning A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +static nserror nsgtk_warning(const char *warning, const char *detail) { char buf[300]; /* 300 is the size the RISC OS GUI uses */ static GtkWindow *nsgtk_warning_window; @@ -500,6 +508,8 @@ void warn_user(const char *warning, const char *detail) gtk_label_set_text(WarningLabel, buf); gtk_widget_show_all(GTK_WIDGET(nsgtk_warning_window)); + + return NSERROR_OK; } @@ -1013,6 +1023,7 @@ static nserror nsgtk_option_init(int *pargc, char** argv) static struct gui_misc_table nsgtk_misc_table = { .schedule = nsgtk_schedule, + .warning = nsgtk_warning, .quit = gui_quit, .launch_url = gui_launch_url, diff --git a/monkey/Makefile.target b/monkey/Makefile.target index f03290d22..5813573c8 100644 --- a/monkey/Makefile.target +++ b/monkey/Makefile.target @@ -56,7 +56,7 @@ endif # ---------------------------------------------------------------------------- # S_MONKEY are sources purely for the MONKEY build -S_MONKEY := main.c utils.c filetype.c schedule.c bitmap.c plot.c browser.c \ +S_MONKEY := main.c filetype.c schedule.c bitmap.c plot.c browser.c \ download.c 401login.c cert.c layout.c dispatch.c fetch.c S_MONKEY := $(addprefix monkey/,$(S_MONKEY)) diff --git a/monkey/main.c b/monkey/main.c index f7d6609c5..7b38a3880 100644 --- a/monkey/main.c +++ b/monkey/main.c @@ -223,6 +223,13 @@ static nserror set_defaults(struct nsoption_s *defaults) return NSERROR_OK; } +static nserror monkey_warn_user(const char *warning, const char *detail) +{ + fprintf(stderr, "WARN %s %s\n", warning, detail); + return NSERROR_OK; +} + + /** * Ensures output logging stream is correctly configured */ @@ -236,6 +243,7 @@ static bool nslog_stream_configure(FILE *fptr) static struct gui_misc_table monkey_misc_table = { .schedule = monkey_schedule, + .warning = monkey_warn_user, .quit = monkey_quit, .launch_url = gui_launch_url, diff --git a/monkey/utils.c b/monkey/utils.c deleted file mode 100644 index 102f8ac01..000000000 --- a/monkey/utils.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2011 Daniel Silverstone - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include - -#include "utils/config.h" -#include "utils/utils.h" - -void warn_user(const char *warning, const char *detail) -{ - fprintf(stderr, "WARN %s %s\n", warning, detail); -} - diff --git a/riscos/gui.c b/riscos/gui.c index 7845906e8..9ea7b213c 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -529,7 +529,7 @@ static char *ro_gui_uri_file_parse(const char *file_name, char **uri_title) fp = fopen(file_name, "rb"); if (!fp) { LOG("fopen(\"%s\", \"rb\"): %i: %s", file_name, errno, strerror(errno)); - warn_user("LoadError", strerror(errno)); + ro_warn_user("LoadError", strerror(errno)); return 0; } @@ -548,7 +548,7 @@ static char *ro_gui_uri_file_parse(const char *file_name, char **uri_title) url = strdup(line); if (!url) { - warn_user("NoMemory", 0); + ro_warn_user("NoMemory", 0); fclose(fp); return 0; } @@ -559,7 +559,7 @@ static char *ro_gui_uri_file_parse(const char *file_name, char **uri_title) if (uri_title && line[0] && ((line[0] != '*') || line[1])) { *uri_title = strdup(line); if (!*uri_title) /* non-fatal */ - warn_user("NoMemory", 0); + ro_warn_user("NoMemory", 0); } fclose(fp); @@ -570,7 +570,7 @@ uri_free: uri_syntax_error: fclose(fp); - warn_user("URIError", 0); + ro_warn_user("URIError", 0); return 0; } @@ -590,16 +590,16 @@ static char *ro_gui_url_file_parse(const char *file_name) fp = fopen(file_name, "r"); if (!fp) { LOG("fopen(\"%s\", \"r\"): %i: %s", file_name, errno, strerror(errno)); - warn_user("LoadError", strerror(errno)); + ro_warn_user("LoadError", strerror(errno)); return 0; } if (!fgets(line, sizeof line, fp)) { if (ferror(fp)) { LOG("fgets: %i: %s", errno, strerror(errno)); - warn_user("LoadError", strerror(errno)); + ro_warn_user("LoadError", strerror(errno)); } else - warn_user("LoadError", messages_get("EmptyError")); + ro_warn_user("LoadError", messages_get("EmptyError")); fclose(fp); return 0; } @@ -611,7 +611,7 @@ static char *ro_gui_url_file_parse(const char *file_name) url = strdup(line); if (!url) { - warn_user("NoMemory", 0); + ro_warn_user("NoMemory", 0); return 0; } @@ -634,7 +634,7 @@ static char *ro_gui_ieurl_file_parse(const char *file_name) fp = fopen(file_name, "r"); if (!fp) { LOG("fopen(\"%s\", \"r\"): %i: %s", file_name, errno, strerror(errno)); - warn_user("LoadError", strerror(errno)); + ro_warn_user("LoadError", strerror(errno)); return 0; } @@ -645,7 +645,7 @@ static char *ro_gui_ieurl_file_parse(const char *file_name) url = strdup(line + 4); if (!url) { fclose(fp); - warn_user("NoMemory", 0); + ro_warn_user("NoMemory", 0); return 0; } break; @@ -653,7 +653,7 @@ static char *ro_gui_ieurl_file_parse(const char *file_name) } if (ferror(fp)) { LOG("fgets: %i: %s", errno, strerror(errno)); - warn_user("LoadError", strerror(errno)); + ro_warn_user("LoadError", strerror(errno)); fclose(fp); return 0; } @@ -661,7 +661,7 @@ static char *ro_gui_ieurl_file_parse(const char *file_name) fclose(fp); if (!url) - warn_user("URIError", 0); + ro_warn_user("URIError", 0); return url; } @@ -725,12 +725,12 @@ static void ro_msg_dataopen(wimp_message *message) oserror = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender); if (oserror) { LOG("xwimp_send_message: 0x%x: %s", oserror->errnum, oserror->errmess); - warn_user("WimpError", oserror->errmess); + ro_warn_user("WimpError", oserror->errmess); return; } if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + ro_warn_user(messages_get_errorcode(error), 0); return; } @@ -742,7 +742,7 @@ static void ro_msg_dataopen(wimp_message *message) NULL); nsurl_unref(urlns); if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + ro_warn_user(messages_get_errorcode(error), 0); } } @@ -815,7 +815,7 @@ static void ro_msg_dataload(wimp_message *message) /* report error to user */ if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + ro_warn_user(messages_get_errorcode(error), 0); return; } @@ -837,7 +837,7 @@ static void ro_msg_dataload(wimp_message *message) } nsurl_unref(url); if (error != NSERROR_OK) { - warn_user(messages_get_errorcode(error), 0); + ro_warn_user(messages_get_errorcode(error), 0); } @@ -848,7 +848,7 @@ static void ro_msg_dataload(wimp_message *message) message->sender); if (oserror) { LOG("xwimp_send_message: 0x%x: %s", oserror->errnum, oserror->errmess); - warn_user("WimpError", oserror->errmess); + ro_warn_user("WimpError", oserror->errmess); return; } @@ -918,7 +918,7 @@ static void ro_msg_datasave(wimp_message *message) error = xwimp_send_message(wimp_USER_MESSAGE, (wimp_message*)dataxfer, message->sender); if (error) { LOG("xwimp_send_message: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } break; @@ -970,7 +970,7 @@ static void ro_msg_prequit(wimp_message *message) message, message->sender); if (error) { LOG("xwimp_send_message: 0x%x:%s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } } @@ -996,7 +996,7 @@ static void ro_msg_save_desktop(wimp_message *message) if (error) { LOG("xosgbpb_writew/xos_bputw: 0x%x:%s", error->errnum, error->errmess); - warn_user("SaveError", error->errmess); + ro_warn_user("SaveError", error->errmess); /* we must cancel the save by acknowledging the message */ message->your_ref = message->my_ref; @@ -1004,7 +1004,7 @@ static void ro_msg_save_desktop(wimp_message *message) message, message->sender); if (error) { LOG("xwimp_send_message: 0x%x:%s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } } @@ -1055,7 +1055,7 @@ static void ro_gui_get_screen_properties(void) error = xos_read_vdu_variables(PTR_OS_VDU_VAR_LIST(&vars), vals); if (error) { LOG("xos_read_vdu_variables: 0x%x: %s", error->errnum, error->errmess); - warn_user("MiscError", error->errmess); + ro_warn_user("MiscError", error->errmess); return; } screen_info.width = (vals[0] + 1) << vals[2]; @@ -1074,7 +1074,7 @@ static void ro_gui_check_resolvers(void) LOG("Inet$Resolvers '%s'", resolvers); } else { LOG("Inet$Resolvers not set or empty"); - warn_user("Resolvers", 0); + ro_warn_user("Resolvers", 0); } } @@ -1414,7 +1414,7 @@ static nserror ro_path_to_nsurl(const char *path, struct nsurl **url_out) error = xosfscontrol_canonicalise_path(path, 0, 0, 0, 0, &spare); if (error) { LOG("xosfscontrol_canonicalise_path failed: 0x%x: %s", error->errnum, error->errmess); - warn_user("PathToURL", error->errmess); + ro_warn_user("PathToURL", error->errmess); return NSERROR_NOT_FOUND; } @@ -1427,7 +1427,7 @@ static nserror ro_path_to_nsurl(const char *path, struct nsurl **url_out) error = xosfscontrol_canonicalise_path(path, canonical_path, 0, 0, 1 - spare, 0); if (error) { LOG("xosfscontrol_canonicalise_path failed: 0x%x: %s", error->errnum, error->errmess); - warn_user("PathToURL", error->errmess); + ro_warn_user("PathToURL", error->errmess); free(canonical_path); return NSERROR_NOT_FOUND; } @@ -1597,7 +1597,7 @@ static void ro_gui_keypress_cb(void *pw) os_error *error = xwimp_process_key(key->c); if (error) { LOG("xwimp_process_key: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } @@ -1634,7 +1634,7 @@ static void ro_gui_keypress(wimp_key *key) os_error *error = xwimp_process_key(key->c); if (error) { LOG("xwimp_process_key: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } } @@ -1906,7 +1906,7 @@ void ro_gui_open_window_request(wimp_open *open) error = xwimp_open_window(open); if (error) { LOG("xwimp_open_window: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); return; } } @@ -1927,7 +1927,7 @@ static void ro_gui_view_source_bounce(wimp_message *message) error = xwimp_start_task(command, 0); if (error) { LOG("xwimp_start_task failed: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } @@ -1947,14 +1947,14 @@ void ro_gui_view_source(hlcache_handle *c) unsigned long source_size; if (!c) { - warn_user("MiscError", "No document source"); + ro_warn_user("MiscError", "No document source"); return; } source_data = content_get_source_data(c, &source_size); if (!source_data) { - warn_user("MiscError", "No document source"); + ro_warn_user("MiscError", "No document source"); return; } @@ -1979,7 +1979,7 @@ void ro_gui_view_source(hlcache_handle *c) char full_name[256]; const char *filename = filename_request(); if (!filename) { - warn_user("NoMemory", 0); + ro_warn_user("NoMemory", 0); return; } @@ -2000,7 +2000,7 @@ void ro_gui_view_source(hlcache_handle *c) (byte *) source_data + source_size); if (error) { LOG("xosfile_save_stamped failed: 0x%x: %s", error->errnum, error->errmess); - warn_user("MiscError", error->errmess); + ro_warn_user("MiscError", error->errmess); return; } } @@ -2067,7 +2067,7 @@ static void ro_gui_choose_language(void) * \param warning message key for warning message * \param detail additional message, or 0 */ -void warn_user(const char *warning, const char *detail) +nserror ro_ro_warn_user(const char *warning, const char *detail) { LOG("%s %s", warning, detail); @@ -2100,6 +2100,8 @@ void warn_user(const char *warning, const char *detail) "NetSurf", "!netsurf", (osspriteop_area *) 1, 0, 0); } + + return NSERROR_OK; } @@ -2350,7 +2352,7 @@ void ro_gui_dump_browser_window(struct browser_window *bw) FILE *stream = fopen(".WWW.NetSurf.dump", "w"); if (!stream) { LOG("fopen: errno %i", errno); - warn_user("SaveError", strerror(errno)); + ro_warn_user("SaveError", strerror(errno)); return; } @@ -2363,7 +2365,7 @@ void ro_gui_dump_browser_window(struct browser_window *bw) 0); if (error) { LOG("xwimp_start_task failed: 0x%x: %s", error->errnum, error->errmess); - warn_user("WimpError", error->errmess); + ro_warn_user("WimpError", error->errmess); } } @@ -2385,6 +2387,7 @@ static struct gui_fetch_table riscos_fetch_table = { static struct gui_misc_table riscos_misc_table = { .schedule = riscos_schedule, + .warning = ro_warn_user, .quit = gui_quit, .launch_url = gui_launch_url, @@ -2507,7 +2510,7 @@ int main(int argc, char** argv) ret = gui_init(argc, argv); if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + ro_warn_user(messages_get_errorcode(ret), 0); } while (!riscos_done) { diff --git a/riscos/gui.h b/riscos/gui.h index 4e9ce6505..624f9e2fb 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -118,6 +118,7 @@ void ro_gui_dump_browser_window(struct browser_window *bw); void ro_gui_drag_box_start(wimp_pointer *pointer); bool ro_gui_prequit(void); const char *ro_gui_default_language(void); +nserror ro_warn_user(const char *warning, const char *detail); /** * Cause an abnormal program termination. diff --git a/utils/utils.c b/utils/utils.c index 1509a6b09..22af9d6fa 100644 --- a/utils/utils.c +++ b/utils/utils.c @@ -32,6 +32,12 @@ #include #include +/* required for depricated warn_user interface */ +#include +#include "utils/errors.h" +#include "desktop/gui_misc.h" +#include "desktop/gui_internal.h" + #include "utils/config.h" #include "utils/log.h" #include "utils/messages.h" @@ -575,3 +581,9 @@ nserror nsc_strntimet(const char *str, size_t size, time_t *timep) return NSERROR_OK; } + +/* exported interface documented in utils/utils.h */ +void warn_user(const char *message, const char *detail) +{ + guit->misc->warning(message, detail); +} diff --git a/utils/utils.h b/utils/utils.h index d87c9a0db..ec4bb5cbd 100644 --- a/utils/utils.h +++ b/utils/utils.h @@ -117,7 +117,15 @@ struct dirent; bool is_dir(const char *path); -/* Platform specific functions */ -void warn_user(const char *warning, const char *detail); +/** + * Warn the user of an event. + * + * \warning depricated interface, this calls the warning entry in the + * miscellaneous gui table and discards the return code. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + */ +void warn_user(const char *message, const char *detail); #endif diff --git a/windows/Makefile.target b/windows/Makefile.target index 6b8ce6a8c..1f2dcba24 100644 --- a/windows/Makefile.target +++ b/windows/Makefile.target @@ -57,7 +57,7 @@ S_RESOURCES := windows_resource.o # ---------------------------------------------------------------------------- # S_WINDOWS are sources purely for the windows build -S_WINDOWS := main.c window.c gui.c drawable.c misc.c plot.c findfile.c \ +S_WINDOWS := main.c window.c gui.c drawable.c plot.c findfile.c \ font.c bitmap.c about.c prefs.c download.c filetype.c file.c \ localhistory.c schedule.c windbg.c pointers.c S_WINDOWS := $(addprefix windows/,$(S_WINDOWS)) diff --git a/windows/main.c b/windows/main.c index d2d054414..869907d11 100644 --- a/windows/main.c +++ b/windows/main.c @@ -64,6 +64,26 @@ static void die(const char *error) exit(1); } + +/** + * Warn the user of an event. + * + * \param[in] message A warning looked up in the message translation table + * \param[in] detail Additional text to be displayed or NULL. + * \return NSERROR_OK on success or error code if there was a + * faliure displaying the message to the user. + */ +static nserror win32_warn_user(const char *warning, const char *detail) +{ + size_t len = 1 + ((warning != NULL) ? strlen(messages_get(warning)) : + 0) + ((detail != 0) ? strlen(detail) : 0); + char message[len]; + snprintf(message, len, messages_get(warning), detail); + MessageBox(NULL, message, "Warning", MB_ICONWARNING); + + return NSERROR_OK; +} + static nsurl *gui_get_resource_url(const char *path) { char buf[PATH_MAX]; @@ -135,6 +155,7 @@ static nserror set_defaults(struct nsoption_s *defaults) static struct gui_misc_table win32_misc_table = { .schedule = win32_schedule, + .warning = win32_warn_user, }; @@ -256,7 +277,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd) } if (ret != NSERROR_OK) { - warn_user(messages_get_errorcode(ret), 0); + win32_warn_user(messages_get_errorcode(ret), 0); } else { win32_run(); } diff --git a/windows/misc.c b/windows/misc.c deleted file mode 100644 index ad7ce0d84..000000000 --- a/windows/misc.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2008 Vincent Sanders - * - * This file is part of NetSurf, http://www.netsurf-browser.org/ - * - * NetSurf is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * NetSurf is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include -#include - -#include "utils/config.h" - -#include - -#include "utils/messages.h" -#include "utils/utils.h" - -void warn_user(const char *warning, const char *detail) -{ - size_t len = 1 + ((warning != NULL) ? strlen(messages_get(warning)) : - 0) + ((detail != 0) ? strlen(detail) : 0); - char message[len]; - snprintf(message, len, messages_get(warning), detail); - MessageBox(NULL, message, "Warning", MB_ICONWARNING); -} - - -- cgit v1.2.3