summaryrefslogtreecommitdiff
path: root/frontends/riscos/gui.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/riscos/gui.h')
-rw-r--r--frontends/riscos/gui.h271
1 files changed, 271 insertions, 0 deletions
diff --git a/frontends/riscos/gui.h b/frontends/riscos/gui.h
new file mode 100644
index 000000000..624f9e2fb
--- /dev/null
+++ b/frontends/riscos/gui.h
@@ -0,0 +1,271 @@
+/*
+ * Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net>
+ * Copyright 2004 James Bursa <bursa@users.sourceforge.net>
+ * Copyright 2004 Andrew Timmins <atimmins@blueyonder.co.uk>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _NETSURF_RISCOS_GUI_H_
+#define _NETSURF_RISCOS_GUI_H_
+
+#include <oslib/wimp.h>
+
+#define RISCOS5 0xAA
+
+#define THUMBNAIL_WIDTH 100
+#define THUMBNAIL_HEIGHT 86
+
+/* The maximum size for user-editable URLs in the RISC OS GUI. */
+
+#define RO_GUI_MAX_URL_SIZE 2048
+
+extern int os_version;
+
+extern const char * NETSURF_DIR;
+
+struct toolbar;
+struct status_bar;
+struct plotter_table;
+struct gui_window;
+struct tree;
+struct node;
+struct history;
+struct css_style;
+struct ssl_cert_info;
+struct nsurl;
+struct hlcache_handle;
+
+enum gui_pointer_shape;
+
+extern wimp_t task_handle; /**< RISC OS wimp task handle. */
+
+extern wimp_w dialog_info, dialog_saveas, dialog_zoom, dialog_pageinfo,
+ dialog_objinfo, dialog_tooltip, dialog_warning, dialog_openurl,
+ dialog_folder, dialog_entry, dialog_url_complete,
+ dialog_search, dialog_print, dialog_theme_install;
+extern wimp_w current_menu_window;
+extern bool current_menu_open;
+extern wimp_menu *recent_search_menu; /* search.c */
+extern wimp_w history_window;
+extern bool gui_redraw_debug;
+extern osspriteop_area *gui_sprites;
+extern bool dialog_folder_add, dialog_entry_add, hotlist_insert;
+extern bool print_active, print_text_black;
+extern bool no_font_blending;
+
+typedef enum { GUI_DRAG_NONE, GUI_DRAG_DOWNLOAD_SAVE, GUI_DRAG_SAVE }
+ ro_gui_drag_type;
+
+extern ro_gui_drag_type gui_current_drag_type;
+
+extern bool riscos_done;
+
+/** RISC OS data for a browser window. */
+struct gui_window {
+ /** Associated platform-independent browser window data. */
+ struct browser_window *bw;
+
+ struct toolbar *toolbar; /**< Toolbar, or 0 if not present. */
+ struct status_bar *status_bar; /**< Status bar, or 0 if not present. */
+
+ wimp_w window; /**< RISC OS window handle. */
+
+ int old_width; /**< Width when last opened / os units. */
+ int old_height; /**< Height when last opened / os units. */
+ bool update_extent; /**< Update the extent on next opening */
+ bool active; /**< Whether the throbber should be active */
+
+ char title[256]; /**< Buffer for window title. */
+
+ int iconise_icon; /**< ID number of icon when window is iconised */
+
+ char validation[12]; /**< Validation string for colours */
+
+ float scale; /**< Browser window scale */
+
+ /** Options. */
+ struct {
+ bool buffer_animations; /**< Use screen buffering for animations. */
+ bool buffer_everything; /**< Use screen buffering for everything. */
+ } option;
+
+ struct gui_window *prev; /**< Previous in linked list. */
+ struct gui_window *next; /**< Next in linked list. */
+};
+
+
+extern struct gui_window *ro_gui_current_redraw_gui;
+
+
+/* in gui.c */
+void ro_gui_open_window_request(wimp_open *open);
+void ro_gui_screen_size(int *width, int *height);
+void ro_gui_view_source(struct hlcache_handle *c);
+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.
+ *
+ * \note This never returns and is intended to terminate without any cleanup.
+ *
+ * \param error The message to display to the user.
+ */
+void die(const char * const error) __attribute__ ((noreturn));
+
+/* in download.c */
+void ro_gui_download_init(void);
+void ro_gui_download_datasave_ack(wimp_message *message);
+bool ro_gui_download_prequit(void);
+extern struct gui_download_table *riscos_download_table;
+
+/* in 401login.c */
+void ro_gui_401login_init(void);
+void gui_401login_open(struct nsurl *url, const char *realm,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw);
+
+/* in window.c */
+void ro_gui_window_set_scale(struct gui_window *g, float scale);
+bool ro_gui_window_dataload(struct gui_window *g, wimp_message *message);
+void ro_gui_window_mouse_at(wimp_pointer *pointer, void *data);
+void ro_gui_window_iconise(struct gui_window *g,
+ wimp_full_message_window_info *wi);
+bool ro_gui_toolbar_dataload(struct gui_window *g, wimp_message *message);
+void ro_gui_window_redraw_all(void);
+void ro_gui_window_update_boxes(void);
+void ro_gui_window_quit(void);
+/* void ro_gui_window_close_all(void); */
+#define ro_gui_window_close_all ro_gui_window_quit /* no need for a separate fn */
+void ro_gui_throb(void);
+void ro_gui_window_default_options(struct gui_window *gui);
+struct gui_window *ro_gui_window_lookup(wimp_w window);
+struct gui_window *ro_gui_toolbar_lookup(wimp_w window);
+bool ro_gui_window_to_window_pos(struct gui_window *g, int x, int y,
+ os_coord *pos);
+bool ro_gui_window_to_screen_pos(struct gui_window *g, int x, int y,
+ os_coord *pos);
+enum browser_mouse_state ro_gui_mouse_click_state(wimp_mouse_state buttons,
+ wimp_icon_flags type);
+enum browser_mouse_state ro_gui_mouse_drag_state(wimp_mouse_state buttons,
+ wimp_icon_flags type);
+bool ro_gui_shift_pressed(void);
+bool ro_gui_ctrl_pressed(void);
+bool ro_gui_alt_pressed(void);
+void gui_window_set_pointer(struct gui_window *g, enum gui_pointer_shape shape);
+
+/* in history.c */
+void ro_gui_history_init(void);
+void ro_gui_history_open(struct gui_window *g, bool pointer);
+
+/* in schedule.c */
+extern bool sched_active;
+extern os_t sched_time;
+
+/**
+ * Process events up to current time.
+ */
+bool schedule_run(void);
+
+/**
+ * Schedule a callback.
+ *
+ * \param t interval before the callback should be made in ms
+ * \param callback callback function
+ * \param p user parameter, passed to callback function
+ *
+ * The callback function will be called as soon as possible after t ms have
+ * passed.
+ */
+nserror riscos_schedule(int t, void (*callback)(void *p), void *p);
+
+/* in search.c */
+void ro_gui_search_init(void);
+void ro_gui_search_prepare(struct browser_window *g);
+struct gui_search_table *riscos_search_table;
+
+/* in print.c */
+void ro_gui_print_init(void);
+void ro_gui_print_prepare(struct gui_window *g);
+
+/* in plotters.c */
+extern const struct plotter_table ro_plotters;
+extern int ro_plot_origin_x;
+extern int ro_plot_origin_y;
+
+/* in theme_install.c */
+bool ro_gui_theme_install_apply(wimp_w w);
+
+/* in sslcert.c */
+void gui_cert_verify(struct nsurl *url,
+ const struct ssl_cert_info *certs, unsigned long num,
+ nserror (*cb)(bool proceed, void *pw), void *cbpw);
+
+/* icon numbers */
+#define ICON_STATUS_RESIZE 0
+#define ICON_STATUS_TEXT 1
+
+#define ICON_SAVE_ICON 0
+#define ICON_SAVE_PATH 1
+#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
+
+#define ICON_OBJINFO_URL 0
+#define ICON_OBJINFO_TARGET 1
+#define ICON_OBJINFO_TYPE 2
+#define ICON_OBJINFO_ICON 3
+
+#define ICON_WARNING_MESSAGE 0
+#define ICON_WARNING_CONTINUE 1
+#define ICON_WARNING_HELP 2
+
+#define ICON_SEARCH_TEXT 0
+#define ICON_SEARCH_CASE_SENSITIVE 1
+#define ICON_SEARCH_FIND_NEXT 2
+#define ICON_SEARCH_FIND_PREV 3
+#define ICON_SEARCH_CANCEL 4
+#define ICON_SEARCH_STATUS 5
+#define ICON_SEARCH_MENU 8
+#define ICON_SEARCH_SHOW_ALL 9
+
+#define ICON_THEME_INSTALL_MESSAGE 0
+#define ICON_THEME_INSTALL_INSTALL 1
+#define ICON_THEME_INSTALL_CANCEL 2
+
+#define ICON_OPENURL_URL 1
+#define ICON_OPENURL_CANCEL 2
+#define ICON_OPENURL_OPEN 3
+#define ICON_OPENURL_MENU 4
+
+#define ICON_ENTRY_NAME 1
+#define ICON_ENTRY_URL 3
+#define ICON_ENTRY_CANCEL 4
+#define ICON_ENTRY_OK 5
+#define ICON_ENTRY_RECENT 6
+
+#define ICON_FOLDER_NAME 1
+#define ICON_FOLDER_CANCEL 2
+#define ICON_FOLDER_OK 3
+
+#endif