From c360e169508925aa217fff1cf4e26a808cbd608a Mon Sep 17 00:00:00 2001 From: James Bursa Date: Thu, 10 Jun 2004 20:57:20 +0000 Subject: [project @ 2004-06-10 20:57:20 by bursa] Implement debug window listing contents. svn path=/import/netsurf/; revision=952 --- riscos/debugwin.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 riscos/debugwin.c (limited to 'riscos') diff --git a/riscos/debugwin.c b/riscos/debugwin.c new file mode 100644 index 000000000..b45eb5217 --- /dev/null +++ b/riscos/debugwin.c @@ -0,0 +1,137 @@ +/* + * This file is part of NetSurf, http://netsurf.sourceforge.net/ + * Licensed under the GNU General Public License, + * http://www.opensource.org/licenses/gpl-license + * Copyright 2004 James Bursa + */ + +/** \file + * Debug display window (implementation). + */ + +#include "oslib/wimp.h" +#include "netsurf/riscos/gui.h" +#include "netsurf/utils/log.h" +#include "netsurf/utils/utils.h" + + +static void ro_gui_debugwin_resize(void); +static void ro_gui_debugwin_update(void *p); +static void ro_gui_debugwin_redraw_plot(wimp_draw *redraw); + + +void ro_gui_debugwin_open(void) +{ + ro_gui_debugwin_resize(); + ro_gui_dialog_open(dialog_debug); + schedule(100, ro_gui_debugwin_update, 0); +} + + +void ro_gui_debugwin_resize(void) +{ + unsigned int count = 1; + struct content *content; + os_box box; + os_error *error; + + for (content = content_list; content; content = content->next) + count++; + + box.x0 = 0; + box.y0 = -count * 28; + box.x1 = 1200; + box.y1 = 0; + error = xwimp_set_extent(dialog_debug, &box); + if (error) { + LOG(("xwimp_set_extent: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + } +} + + +void ro_gui_debugwin_update(void *p) +{ + os_error *error; + ro_gui_debugwin_resize(); + error = xwimp_force_redraw(dialog_debug, 0, -10000, 10000, 0); + if (error) { + LOG(("xwimp_force_redraw: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + } + schedule(100, ro_gui_debugwin_update, 0); +} + + +void ro_gui_debugwin_close(void) +{ + os_error *error; + error = xwimp_close_window(dialog_debug); + if (error) { + LOG(("xwimp_close_window: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + } + schedule_remove(ro_gui_debugwin_update, 0); +} + + +void ro_gui_debugwin_redraw(wimp_draw *redraw) +{ + osbool more; + os_error *error; + + error = xwimp_redraw_window(redraw, &more); + if (error) { + LOG(("xwimp_redraw_window: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + return; + } + while (more) { + ro_gui_debugwin_redraw_plot(redraw); + error = xwimp_get_rectangle(redraw, &more); + if (error) { + LOG(("xwimp_get_rectangle: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + return; + } + } +} + + +void ro_gui_debugwin_redraw_plot(wimp_draw *redraw) +{ + char size[20]; + int x0 = redraw->box.x0 - redraw->xscroll; + int y0 = redraw->box.y1 - redraw->yscroll; + int i = 1; + int y; + struct content *content; + + xwimp_set_font_colours(wimp_COLOUR_BLACK, wimp_COLOUR_LIGHT_GREY); + xwimptextop_paint(0, "url", x0 + 4, y0 - 20); + xwimptextop_paint(0, "type", x0 + 600, y0 - 20); + xwimptextop_paint(0, "mime_type", x0 + 750, y0 - 20); + xwimptextop_paint(0, "status", x0 + 950, y0 - 20); + xwimptextop_paint(0, "size", x0 + 1100, y0 - 20); + + xwimp_set_font_colours(wimp_COLOUR_BLACK, wimp_COLOUR_WHITE); + for (content = content_list; content; content = content->next, i++) { + y = y0 - i * 28 - 20; + xwimptextop_paint(wimptextop_RJUSTIFY, content->url, + x0 + 580, y); + xwimptextop_paint(0, content_type_name[content->type], + x0 + 600, y); + if (content->mime_type) + xwimptextop_paint(0, content->mime_type, + x0 + 750, y); + xwimptextop_paint(0, content_status_name[content->status], + x0 + 950, y); + snprintf(size, sizeof size, "%lu", content->size); + xwimptextop_paint(0, size, x0 + 1100, y); + } +} -- cgit v1.2.3