[project @ 2004-08-30 21:03:48 by rjw]

Reworking of themes and toolbars.

svn path=/import/netsurf/; revision=1254
This commit is contained in:
Richard Wilson 2004-08-30 21:03:48 +00:00
parent e1f1c5de19
commit bf57d852ae
18 changed files with 1641 additions and 706 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -31,7 +31,7 @@ OBJECTS_RISCOS += 401login.o debugwin.o \
jpeg.o menus.o mng.o mouseactions.o plugin.o print.o \
save.o save_complete.o save_draw.o save_text.o \
schedule.o search.o sprite.o textselection.o theme.o thumbnail.o \
toolbar.o ufont.o uri.o url_protocol.o wimp.o window.o # riscos/
ufont.o uri.o url_protocol.o wimp.o window.o # riscos/
# OBJECTS_RISCOS += memdebug.o
OBJECTS_NCOS = $(OBJECTS_RISCOS)

View File

@ -6,7 +6,7 @@ PLATFORM_CFLAGS_DEBUG = -INSLibs:include -IOSLib:
LDFLAGS_RISCOS = NSLibs:lib/libxml2 NSLibs:lib/libz NSLibs:lib/libcurl \
NSLibs:lib/libssl NSLibs:lib/libcrypto NSLibs:lib/libares \
NSLibs:lib/libmng NSLibs:lib/liblcms NSLibs:lib/libjpeg OSLib:o.oslib32
NSLibs:lib/libmng NSLibs:lib/libjpeg OSLib:o.oslib32
LDFLAGS_SMALL = NSLibs:lib/libxml2 NSLibs:lib/libz NSLibs:lib/libcurl \
NSLibs:lib/libares NSLibs:lib/libmng \
NSLibs:lib/libjpeg OSLib:o.oslib32

View File

@ -32,6 +32,8 @@
*/
#define MAX_PERSISTANT 8
wimp_w dialog_info, dialog_saveas, dialog_config, dialog_config_br,
dialog_config_prox, dialog_config_th, download_template,
#ifdef WITH_AUTH
@ -45,17 +47,30 @@ static int ro_gui_choices_font_size;
static int ro_gui_choices_font_min_size;
static bool ro_gui_choices_http_proxy;
static int ro_gui_choices_http_proxy_auth;
static char *theme_choice = 0;
static struct theme_entry *theme_list = 0;
static unsigned int theme_list_entries = 0;
static int config_br_icon = -1;
static const char *ro_gui_choices_lang = 0;
static const char *ro_gui_choices_alang = 0;
struct toolbar_display {
struct toolbar *toolbar;
struct theme_descriptor *descriptor;
int icon_number;
struct toolbar_display *next;
};
static struct theme_descriptor *theme_choice = NULL;
static struct theme_descriptor *theme_list = NULL;
static int theme_count = 0;
static struct toolbar_display *toolbars = NULL;
static char theme_radio_validation[] = "Sradiooff,radioon\0";
static const char *ro_gui_proxy_auth_name[] = {
"ProxyNone", "ProxyBasic", "ProxyNTLM"
};
/* A simple mapping of parent and child
*/
static struct {
@ -72,12 +87,14 @@ static void ro_gui_dialog_click_config_prox(wimp_pointer *pointer);
static void ro_gui_dialog_config_proxy_update(void);
static void ro_gui_dialog_click_config_th(wimp_pointer *pointer);
static void ro_gui_dialog_click_config_th_pane(wimp_pointer *pointer);
static void ro_gui_redraw_config_th_pane_plot(wimp_draw *redraw);
static void ro_gui_dialog_click_zoom(wimp_pointer *pointer);
static void ro_gui_dialog_reset_zoom(void);
static void ro_gui_dialog_click_warning(wimp_pointer *pointer);
static const char *language_name(const char *code);
static struct theme_entry *ro_gui_theme_entry(int index);
static void ro_gui_dialog_load_themes(void);
static void ro_gui_dialog_free_themes(void);
/**
* Load and create dialogs from template file.
@ -483,13 +500,8 @@ void ro_gui_dialog_config_prepare(void)
ro_gui_dialog_config_proxy_update();
/* themes pane */
free(theme_choice);
theme_choice = 0;
if (option_theme)
theme_choice = strdup(option_theme);
if (theme_list)
ro_theme_free(theme_list);
theme_list = ro_theme_list(&theme_list_entries);
ro_gui_dialog_load_themes();
theme_choice = ro_gui_theme_find(option_theme);
}
@ -497,8 +509,7 @@ void ro_gui_dialog_config_prepare(void)
* Set the current options to the settings in the choices panes.
*/
void ro_gui_dialog_config_set(void)
{
void ro_gui_dialog_config_set(void) {
/* browser pane */
option_font_size = ro_gui_choices_font_size;
option_font_min_size = ro_gui_choices_font_min_size;
@ -537,8 +548,14 @@ void ro_gui_dialog_config_set(void)
ICON_CONFIG_PROX_AUTHPASS));
/* theme pane */
free(option_theme);
option_theme = strdup(theme_choice);
if (option_theme) {
free(option_theme);
option_theme = NULL;
}
if (theme_choice) {
option_theme = strdup(theme_choice->filename);
ro_gui_theme_apply(theme_choice);
}
}
@ -554,16 +571,16 @@ void ro_gui_dialog_click_config(wimp_pointer *pointer)
ro_gui_save_options();
if (pointer->buttons == wimp_CLICK_SELECT) {
ro_gui_dialog_close(dialog_config);
if (theme_list) {
ro_theme_free(theme_list);
theme_list = 0;
}
ro_gui_dialog_free_themes();
}
break;
case ICON_CONFIG_CANCEL:
if (pointer->buttons == wimp_CLICK_SELECT)
if (pointer->buttons == wimp_CLICK_SELECT) {
ro_gui_dialog_close(dialog_config);
ro_gui_dialog_config_prepare();
ro_gui_dialog_free_themes();
} else {
ro_gui_dialog_config_prepare();
}
break;
case ICON_CONFIG_BROWSER:
/* set selected state of radio icon to prevent
@ -809,172 +826,24 @@ void ro_gui_dialog_click_config_th(wimp_pointer *pointer)
/**
* Handle clicks in the scrolling Theme Choices list pane.
*/
void ro_gui_dialog_click_config_th_pane(wimp_pointer *pointer) {
struct toolbar_display *link;
int i = pointer->i;
if (i < 0) return;
void ro_gui_dialog_click_config_th_pane(wimp_pointer *pointer)
{
unsigned int i, y;
wimp_window_state state;
os_error *error;
state.w = dialog_config_th_pane;
error = xwimp_get_window_state(&state);
if (error) {
LOG(("xwimp_get_window_state: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
return;
}
y = -(pointer->pos.y - (state.visible.y1 - state.yscroll)) /
THEME_HEIGHT;
if (!theme_list || theme_list_entries <= y)
return;
if (theme_choice && strcmp(theme_choice, ro_gui_theme_entry(y)->name) == 0)
return;
if (theme_choice) {
for (i = 0; i != theme_list_entries &&
strcmp(theme_choice, ro_gui_theme_entry(i)->name); i++)
;
if (i != theme_list_entries) {
error = xwimp_force_redraw(dialog_config_th_pane,
0, -i * THEME_HEIGHT - THEME_HEIGHT - 2,
THEME_WIDTH, -i * THEME_HEIGHT + 2);
if (error) {
LOG(("xwimp_force_redraw: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
return;
}
}
}
free(theme_choice);
theme_choice = strdup(ro_gui_theme_entry(y)->name);
error = xwimp_force_redraw(dialog_config_th_pane,
0, -y * THEME_HEIGHT - THEME_HEIGHT - 2,
THEME_WIDTH, -y * THEME_HEIGHT + 2);
if (error) {
LOG(("xwimp_force_redraw: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
return;
}
}
struct theme_entry *ro_gui_theme_entry(int index) {
struct theme_entry *entry = theme_list;
for (int i = 0; i < index; i++) entry = entry->next;
return entry;
}
/**
* Redraw the scrolling Theme Choices list pane.
*/
void ro_gui_redraw_config_th_pane(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_redraw_config_th_pane_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;
}
}
}
/**
* Redraw the scrolling Theme Choices list pane.
*/
void ro_gui_redraw_config_th_pane_plot(wimp_draw *redraw)
{
unsigned int i, j;
int x0 = redraw->box.x0 - redraw->xscroll;
int y0 = redraw->box.y1 - redraw->yscroll;
int x;
static char sprite[][10] = { "back", "forward", "stop", "reload",
"history", "scale", "save" };
wimp_icon icon;
os_error *error = 0;
icon.flags = wimp_ICON_SPRITE | wimp_ICON_HCENTRED |
wimp_ICON_VCENTRED | wimp_ICON_INDIRECTED;
for (i = 0; i != theme_list_entries; i++) {
error = xwimptextop_set_colour(os_COLOUR_BLACK,
os_COLOUR_VERY_LIGHT_GREY);
if (error)
break;
/* plot background for selected theme */
if (theme_choice &&
strcmp(ro_gui_theme_entry(i)->name, theme_choice) == 0) {
error = xcolourtrans_set_gcol(os_COLOUR_LIGHT_GREY,
0, os_ACTION_OVERWRITE, 0, 0);
if (error)
break;
error = xos_plot(os_MOVE_TO, x0, y0 - i * THEME_HEIGHT);
if (error)
break;
error = xos_plot(os_PLOT_RECTANGLE | os_PLOT_BY,
THEME_WIDTH, -THEME_HEIGHT);
if (error)
break;
error = xwimptextop_set_colour(os_COLOUR_BLACK,
os_COLOUR_LIGHT_GREY);
if (error)
break;
}
/* icons */
if (ro_gui_theme_entry(i)->sprite_area) {
icon.extent.y0 = -i * THEME_HEIGHT - THEME_HEIGHT;
icon.extent.y1 = -i * THEME_HEIGHT;
icon.data.indirected_sprite.area = ro_gui_theme_entry(i)->sprite_area;
icon.data.indirected_sprite.size = 12;
for (j = 0, x = 0; j != sizeof sprite / sizeof sprite[0]; j++) {
icon.extent.x0 = x;
icon.extent.x1 = x + 50;
icon.data.indirected_sprite.id =
(osspriteop_id) sprite[j];
error = xwimp_plot_icon(&icon);
if (error)
break;
x += 50;
}
}
if (error)
break;
/* theme name */
error = xwimptextop_paint(0, ro_gui_theme_entry(i)->name,
x0 + 400,
y0 - i * THEME_HEIGHT - THEME_HEIGHT / 2);
if (error)
break;
}
if (error) {
LOG(("0x%x: %s", error->errnum, error->errmess));
warn_user("MiscError", error->errmess);
/* Set the clicked theme as selected
*/
link = toolbars;
while (link) {
if (link->icon_number == i) {
theme_choice = link->descriptor;
ro_gui_set_icon_selected_state(dialog_config_th_pane,
link->icon_number, true);
} else {
ro_gui_set_icon_selected_state(dialog_config_th_pane,
link->icon_number, false);
}
link = link->next;
}
}
@ -1114,3 +983,166 @@ const char *language_name(const char *code)
key[6] = code[1];
return messages_get(key);
}
/**
* Loads and nests all available themes in the theme pane.
*/
void ro_gui_dialog_load_themes(void) {
os_error *error;
os_box extent = { 0, 0, 0, 0 };
struct theme_descriptor *descriptor;
struct toolbar_display *link;
struct toolbar_display *toolbar_display;
struct toolbar *toolbar;
wimp_icon_create new_icon;
wimp_window_state state;
int parent_width, nested_y, min_extent, base_extent;
/* Delete our old list and get/open a new one
*/
ro_gui_dialog_free_themes();
theme_list = ro_gui_theme_get_available();
ro_gui_theme_open(theme_list, true);
theme_choice = ro_gui_theme_find(option_theme);
/* Create toolbars for each theme
*/
theme_count = 0;
descriptor = theme_list;
while (descriptor) {
/* Try to create a toolbar
*/
toolbar = ro_gui_theme_create_toolbar(descriptor, THEME_BROWSER_TOOLBAR);
if (toolbar) {
toolbar_display = calloc(sizeof(struct toolbar_display), 1);
if (!toolbar_display) {
LOG(("No memory for calloc()"));
warn_user("NoMemory", 0);
return;
}
toolbar_display->toolbar = toolbar;
toolbar_display->descriptor = descriptor;
if (!toolbars) {
toolbars = toolbar_display;
} else {
link = toolbars;
while (link->next) link = link->next;
link->next = toolbar_display;
}
theme_count++;
}
descriptor = descriptor->next;
}
/* Nest the toolbars
*/
state.w = dialog_config_th_pane;
error = xwimp_get_window_state(&state);
if (error) {
LOG(("xwimp_get_window_state: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
return;
}
parent_width = state.visible.x1 - state.visible.x0;
min_extent = state.visible.y0 - state.visible.y1;
nested_y = 0;
base_extent = state.visible.y1;
extent.x1 = parent_width;
link = toolbars;
new_icon.w = dialog_config_th_pane;
new_icon.icon.extent.x0 = 0;
new_icon.icon.extent.x1 = parent_width;
new_icon.icon.flags = wimp_ICON_TEXT | wimp_ICON_SPRITE | wimp_ICON_INDIRECTED |
wimp_ICON_VCENTRED |
(wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) |
(wimp_COLOUR_VERY_LIGHT_GREY << wimp_ICON_BG_COLOUR_SHIFT) |
(wimp_BUTTON_RADIO << wimp_ICON_BUTTON_TYPE_SHIFT) |
(1 << wimp_ICON_ESG_SHIFT);
new_icon.icon.data.indirected_text_and_sprite.validation =
theme_radio_validation;
while (link) {
/* Update the toolbar and extent
*/
ro_gui_theme_process_toolbar(link->toolbar, parent_width);
extent.y0 = nested_y - link->toolbar->height - 48;
if (link->next) extent.y0 -= 16;
if (extent.y0 > min_extent) extent.y0 = min_extent;
xwimp_set_extent(dialog_config_th_pane, &extent);
/* Create the descriptor icon
*/
new_icon.icon.extent.y1 = nested_y - link->toolbar->height;
new_icon.icon.extent.y0 = nested_y - link->toolbar->height - 48;
new_icon.icon.data.indirected_text_and_sprite.text =
link->descriptor->filename;
new_icon.icon.data.indirected_text_and_sprite.size =
strlen(link->descriptor->filename) + 1;
xwimp_create_icon(&new_icon, &link->icon_number);
/* Nest the toolbar window
*/
state.w = link->toolbar->toolbar_handle;
state.visible.y1 = nested_y + base_extent;
state.visible.y0 = state.visible.y1 - link->toolbar->height + 2;
xwimp_open_window_nested((wimp_open *)&state, dialog_config_th_pane,
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_XORIGIN_SHIFT |
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_YORIGIN_SHIFT |
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_LS_EDGE_SHIFT |
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_BS_EDGE_SHIFT |
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_RS_EDGE_SHIFT |
wimp_CHILD_LINKS_PARENT_WORK_AREA
<< wimp_CHILD_TS_EDGE_SHIFT);
/* Continue processing
*/
nested_y -= link->toolbar->height + 48 + 16;
link = link->next;
}
/* Set the current theme as selected
*/
link = toolbars;
while (link) {
if (link->descriptor == theme_choice) {
ro_gui_set_icon_selected_state(dialog_config_th_pane,
link->icon_number, true);
break;
}
link = link->next;
}
}
/**
* Removes and closes all themes in the theme pane.
*/
void ro_gui_dialog_free_themes(void) {
struct toolbar_display *toolbar;
struct toolbar_display *next_toolbar;
/* Free all our toolbars
*/
next_toolbar = toolbars;
while ((toolbar = next_toolbar) != NULL) {
xwimp_delete_icon(dialog_config_th_pane, toolbar->icon_number);
ro_gui_theme_destroy_toolbar(toolbar->toolbar);
next_toolbar = toolbar->next;
free(toolbar);
}
toolbars = NULL;
/* Close all our themes
*/
if (theme_list) ro_gui_theme_close(theme_list, true);
theme_list = NULL;
theme_count = 0;
theme_choice = NULL;
}

View File

@ -49,7 +49,6 @@
#endif
#include "netsurf/riscos/save_complete.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/toolbar.h"
#ifdef WITH_URI
#include "netsurf/riscos/uri.h"
#endif
@ -61,7 +60,6 @@
#include "netsurf/utils/messages.h"
#include "netsurf/utils/utils.h"
const char *__dynamic_da_name = "NetSurf"; /**< For UnixLib. */
int __feature_imagefs_is_file = 1; /**< For UnixLib. */
/* default filename handling */
@ -172,10 +170,9 @@ static char *ro_path_to_url(const char *path);
void gui_init(int argc, char** argv)
{
char path[40];
char theme_fname[256];
os_error *error;
int length;
struct theme_entry *theme;
struct theme_descriptor *descriptor = NULL;
xhourglass_start(1);
@ -222,23 +219,15 @@ void gui_init(int argc, char** argv)
if (getenv("NetSurf$Start_URI_Handler"))
xwimp_start_task("Desktop", 0);
if (option_theme != NULL) {
if ((length = snprintf(theme_fname, sizeof(theme_fname),
"<NetSurf$Dir>.Themes.%s", option_theme)) >= 0
&& length < (int)sizeof(theme_fname)
/* check if theme directory exists */
&& !is_dir(theme_fname)) {
free(option_theme);
option_theme = NULL;
}
}
if (option_theme == NULL)
strcpy(theme_fname, "<NetSurf$Dir>.Themes.Default");
theme = ro_theme_load(theme_fname);
if (theme == NULL)
LOG(("Unable to load default theme"));
ro_theme_apply(theme);
/* Load our chosen theme
*/
ro_gui_theme_initialise();
descriptor = ro_gui_theme_find(option_theme);
if (!descriptor) descriptor = ro_gui_theme_find("Default");
ro_gui_theme_apply(descriptor);
/* Open the templates
*/
if ((length = snprintf(path, sizeof(path),
"<NetSurf$Dir>.Resources.%s.Templates",
option_language)) < 0 || length >= (int)sizeof(path))
@ -684,9 +673,7 @@ void ro_gui_redraw_window_request(wimp_draw *redraw)
osbool more;
os_error *error;
if (redraw->w == dialog_config_th_pane)
ro_gui_redraw_config_th_pane(redraw);
else if (redraw->w == history_window)
if (redraw->w == history_window)
ro_gui_history_redraw(redraw);
else if (redraw->w == hotlist_window)
ro_gui_hotlist_redraw(redraw);
@ -737,10 +724,8 @@ void ro_gui_open_window_request(wimp_open *open)
}
g = ro_gui_status_lookup(open->w);
if (g && g->toolbar) {
g->toolbar->resize_status = 1;
ro_theme_resize_toolbar(g->toolbar, g->window);
}
if (g && g->toolbar)
ro_gui_theme_resize_toolbar_status(g->toolbar);
}
}

View File

@ -75,12 +75,9 @@ struct gui_window {
int old_width; /**< Width when last opened / os units. */
int old_height; /**< Height when last opened / os units. */
char status[256]; /**< Buffer for status bar. */
char title[256]; /**< Buffer for window title. */
char url[256]; /**< Buffer for url entry field. */
int throbber; /**< Current frame of throbber animation. */
char throb_buf[12]; /**< Buffer for throbber sprite name. */
int throbtime; /**< Time of last throbber frame. */
/** Options. */
@ -132,7 +129,6 @@ void ro_gui_dialog_click(wimp_pointer *pointer);
void ro_gui_save_options(void);
bool ro_gui_dialog_keypress(wimp_key *key);
void ro_gui_dialog_close(wimp_w close);
void ro_gui_redraw_config_th_pane(wimp_draw *redraw);
void ro_gui_menu_prepare_hotlist(void);
void ro_gui_dialog_open_config(void);
void ro_gui_dialog_proxyauth_menu_selection(int item);
@ -167,6 +163,8 @@ bool ro_gui_401login_keypress(wimp_key *key);
/* in window.c */
void ro_gui_window_quit(void);
void ro_gui_window_click(struct gui_window *g, wimp_pointer *mouse);
void ro_gui_window_update_theme(void);
void ro_gui_window_update_dimensions(struct gui_window *g, int yscroll);
void ro_gui_window_open(struct gui_window *g, wimp_open *open);
void ro_gui_window_redraw(struct gui_window *g, wimp_draw *redraw);
void ro_gui_window_mouse_at(struct gui_window *g, wimp_pointer *pointer);
@ -281,8 +279,8 @@ bool ro_gui_print_keypress(wimp_key *key);
#define ICON_TOOLBAR_HOTLIST_LAST 6
/* icon numbers for toolbar status window */
#define ICON_STATUS_TEXT 0
#define ICON_STATUS_RESIZE 1
#define ICON_STATUS_RESIZE 0
#define ICON_STATUS_TEXT 1
#define ICON_CONFIG_SAVE 0
#define ICON_CONFIG_CANCEL 1

View File

@ -18,7 +18,7 @@
#include "oslib/wimp.h"
#include "netsurf/riscos/gui.h"
#include "netsurf/riscos/help.h"
#include "netsurf/riscos/toolbar.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/messages.h"
#include "netsurf/utils/log.h"

View File

@ -25,7 +25,6 @@
#include "netsurf/riscos/gui.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/tinct.h"
#include "netsurf/riscos/toolbar.h"
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/messages.h"
@ -303,7 +302,8 @@ void ro_gui_hotlist_init(void) {
/* Create our toolbar
*/
ro_theme_create_hotlist_toolbar();
hotlist_toolbar = ro_gui_theme_create_toolbar(NULL, THEME_HOTLIST_TOOLBAR);
ro_gui_theme_attach_toolbar(hotlist_toolbar, hotlist_window);
/* Update the extent
*/

View File

@ -28,7 +28,7 @@
#include "netsurf/riscos/gui.h"
#include "netsurf/riscos/image.h"
#include "netsurf/riscos/options.h"
#include "netsurf/riscos/toolbar.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/ufont.h"
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/log.h"

View File

@ -25,7 +25,6 @@
#include "netsurf/riscos/help.h"
#include "netsurf/riscos/options.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/toolbar.h"
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/messages.h"
@ -657,6 +656,7 @@ void ro_gui_menu_selection(wimp_selection *selection)
wimp_pointer pointer;
wimp_window_state state;
os_error *error;
int height;
wimp_get_pointer_info(&pointer);
@ -757,7 +757,7 @@ void ro_gui_menu_selection(wimp_selection *selection)
case 5: /* Print */
break;
case 6: /* New window */
browser_window_create(current_gui->url, current_gui->bw);
browser_window_create(current_gui->bw->current_content->url, current_gui->bw);
break;
case 7: /* Page source */
ro_gui_view_source(c);
@ -851,29 +851,27 @@ void ro_gui_menu_selection(wimp_selection *selection)
case 2: /* Toolbars -> */
switch (selection->items[2]) {
case 0:
current_gui->toolbar->standard_buttons =
!current_gui->toolbar->standard_buttons;
current_gui->toolbar->display_buttons =
!current_gui->toolbar->display_buttons;
break;
case 1:
current_gui->toolbar->url_bar =
!current_gui->toolbar->url_bar;
current_gui->toolbar->display_url =
!current_gui->toolbar->display_url;
break;
case 2:
current_gui->toolbar->throbber =
!current_gui->toolbar->throbber;
current_gui->toolbar->display_throbber =
!current_gui->toolbar->display_throbber;
break;
case 3:
current_gui->toolbar->status_window =
!current_gui->toolbar->status_window;
}
if (ro_theme_update_toolbar(current_gui->toolbar,
current_gui->window) || true) {
wimp_window_state state;
state.w = current_gui->window;
wimp_get_window_state(&state);
current_gui->old_height = 0xffffffff;
ro_gui_window_open(current_gui, (wimp_open *)&state);
current_gui->toolbar->display_status =
!current_gui->toolbar->display_status;
}
current_gui->toolbar->reformat_buttons = true;
height = current_gui->toolbar->height;
ro_gui_theme_process_toolbar(current_gui->toolbar, -1);
if (height != current_gui->toolbar->height)
ro_gui_window_update_dimensions(current_gui,
height - current_gui->toolbar->height);
ro_gui_menu_prepare_toolbars();
break;
case 3: /* Render -> */
@ -1497,10 +1495,10 @@ static void ro_gui_menu_prepare_toolbars(void) {
browser_toolbar_menu->entries[index].icon_flags &= ~wimp_ICON_SHADED;
browser_toolbar_menu->entries[index].menu_flags &= ~wimp_MENU_TICKED;
}
if (toolbar->standard_buttons) browser_toolbar_menu->entries[0].menu_flags |= wimp_MENU_TICKED;
if (toolbar->url_bar) browser_toolbar_menu->entries[1].menu_flags |= wimp_MENU_TICKED;
if (toolbar->throbber) browser_toolbar_menu->entries[2].menu_flags |= wimp_MENU_TICKED;
if (toolbar->status_window) browser_toolbar_menu->entries[3].menu_flags |= wimp_MENU_TICKED;
if (toolbar->display_buttons) browser_toolbar_menu->entries[0].menu_flags |= wimp_MENU_TICKED;
if (toolbar->display_url) browser_toolbar_menu->entries[1].menu_flags |= wimp_MENU_TICKED;
if (toolbar->display_throbber) browser_toolbar_menu->entries[2].menu_flags |= wimp_MENU_TICKED;
if (toolbar->display_status) browser_toolbar_menu->entries[3].menu_flags |= wimp_MENU_TICKED;
} else {
for (index = 0; index < 4; index++) {
browser_toolbar_menu->entries[index].icon_flags |= wimp_ICON_SHADED;

View File

@ -60,7 +60,7 @@ bool option_thumbnail_32bpp = true;\
int option_thumbnail_oversampling = 0;\
bool option_history_tooltip = true; \
int option_scale = 100; \
int option_toolbar_status_width = 640; \
int option_toolbar_status_width = 5000; \
bool option_toolbar_show_status = true; \
bool option_toolbar_show_buttons = true; \
bool option_toolbar_show_address = true; \
@ -95,7 +95,7 @@ bool option_plugins = false;
{ "history_tooltip", OPTION_BOOL, &option_history_tooltip }, \
{ "scale", OPTION_INTEGER, &option_scale }, \
{ "toolbar_show_status", OPTION_BOOL, &option_toolbar_show_status }, \
{ "toolbar_status_width", OPTION_INTEGER, &option_toolbar_status_width }, \
{ "toolbar_status_size", OPTION_INTEGER, &option_toolbar_status_width }, \
{ "toolbar_show_buttons", OPTION_BOOL, &option_toolbar_show_buttons }, \
{ "toolbar_show_address", OPTION_BOOL, &option_toolbar_show_address }, \
{ "toolbar_show_throbber", OPTION_BOOL, &option_toolbar_show_throbber }, \

File diff suppressed because it is too large Load Diff

View File

@ -2,49 +2,93 @@
* 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 2003 Phil Mellor <monkeyson@users.sourceforge.net>
* Copyright 2003 James Bursa <bursa@users.sourceforge.net>
* Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
*/
/** \file
* Toolbar themes (interface).
*
* A theme consists of a simple sprite file. There is one current theme, which
* is changed by ro_theme_load(). A toolbar can then be created and manipulated.
* Window themes and toolbars (interface).
*/
#include <stdbool.h>
#ifndef _NETSURF_RISCOS_THEME_H_
#define _NETSURF_RISCOS_THEME_H_
#include "oslib/osspriteop.h"
#include "netsurf/desktop/gui.h"
typedef enum {
THEME_BROWSER_TOOLBAR,
THEME_HOTLIST_TOOLBAR
} toolbar_type;
struct toolbar;
struct theme_entry {
char *name; /**< theme name */
char *author; /**< theme author */
osspriteop_area *sprite_area; /**< sprite area for theme */
int throbber_width; /**< width of the throbber */
int throbber_height; /**< height of the throbber */
int throbber_frames; /**< frames of animation for the throbber */
int browser_background; /**< background colour of browser toolbar */
int hotlist_background; /**< background colour of hotlist toolbar */
int status_background; /**< background colour of status window */
int status_foreground; /**< colour of status window text */
bool default_settings; /**< no theme was loaded, defaults used */
struct theme_entry *next; /**< next entry in theme list */
struct toolbar_icon {
int icon_number; /**< wimp icon number */
bool display; /**< whether to display the icon */
int width; /**< icon width */
int height; /**< icon height */
char name[12]; /**< icon name */
char validation[40]; /**< validation string */
struct toolbar_icon *next; /**< next toolbar icon, or NULL for no more */
};
void ro_theme_apply(struct theme_entry *theme);
struct theme_entry *ro_theme_load(char *pathname);
void ro_theme_create_browser_toolbar(struct gui_window *g);
void ro_theme_create_hotlist_toolbar(void);
int ro_theme_update_toolbar(struct toolbar *toolbar, wimp_w window);
int ro_theme_resize_toolbar(struct toolbar *toolbar, wimp_w window);
struct theme_entry *ro_theme_list(unsigned int *entries);
void ro_theme_free(struct theme_entry *theme);
struct toolbar {
int status_width; /**< status width percentage * 100 */
bool display_buttons; /**< display standard buttons */
bool display_url; /**< display URL bar (if applicable) */
bool display_throbber; /**< display throbber (if applicable) */
bool display_status; /**< display status bar (if applicable) */
int status_current; /**< the size of the status window in OS units */
int toolbar_current; /**< the size of the toolbar window in OS units */
int height; /**< vertical extent of the toolbar (read only) */
wimp_w toolbar_handle; /**< toolbar window handle */
wimp_w status_handle; /**< status window handle (if applicable) */
wimp_w parent_handle; /**< parent window handle (read only) */
bool reformat_buttons; /**< buttons need reformatting */
char *url_buffer; /**< buffer for status text (read only) */
char *throbber_buffer; /**< buffer for status text (read only) */
char *status_buffer; /**< buffer for status text (read only) */
struct toolbar_icon *icon; /**< first toolbar icon (read only) */
struct theme *theme; /**< themem or NULL for no theme (read only) */
toolbar_type type; /**< toolbar type (read only) */
};
struct theme {
char *details; /**< theme details */
char *author; /**< theme author */
osspriteop_area *sprite_area; /**< sprite area for theme */
bool throbber_right; /**< throbber is on the right (left otherwise) */
int throbber_width; /**< width of the throbber */
int throbber_height; /**< height of the throbber */
int throbber_frames; /**< frames of animation for the throbber */
int browser_background; /**< background colour of browser toolbar */
int hotlist_background; /**< background colour of hotlist toolbar */
int status_background; /**< background colour of status window */
int status_foreground; /**< colour of status window text */
int users; /**< number of users for the theme */
};
struct theme_descriptor {
char *filename; /**< theme filename */
struct theme *theme; /**< corresponding theme (must be opened) */
struct theme_descriptor *previous; /**< previous descriptor in the list */
struct theme_descriptor *next; /**< next descriptor in the list */
};
void ro_gui_theme_initialise(void);
void ro_gui_theme_finalise(void);
struct theme_descriptor *ro_gui_theme_find(const char *filename);
struct theme_descriptor *ro_gui_theme_get_available(void);
bool ro_gui_theme_open(struct theme_descriptor *descriptor, bool list);
bool ro_gui_theme_apply(struct theme_descriptor *descriptor);
void ro_gui_theme_close(struct theme_descriptor *descriptor, bool list);
struct toolbar *ro_gui_theme_create_toolbar(struct theme_descriptor *descriptor, toolbar_type type);
bool ro_gui_theme_update_toolbar(struct theme_descriptor *descriptor, struct toolbar *toolbar);
bool ro_gui_theme_attach_toolbar(struct toolbar *toolbar, wimp_w parent);
void ro_gui_theme_resize_toolbar_status(struct toolbar *toolbar);
bool ro_gui_theme_process_toolbar(struct toolbar *toolbar, int width);
void ro_gui_theme_destroy_toolbar(struct toolbar *toolbar);
#endif

View File

@ -39,6 +39,7 @@ int ro_get_hscroll_height(wimp_w w) {
/* Read the hscroll height
*/
if (!w) w = dialog_debug;
furniture_sizes.w = w;
furniture_sizes.border_widths.y0 = 38;
xwimpextend_get_furniture_sizes(&furniture_sizes);
@ -66,6 +67,7 @@ int ro_get_vscroll_width(wimp_w w) {
/* Read the hscroll height
*/
if (!w) w = dialog_debug;
furniture_sizes.w = w;
furniture_sizes.border_widths.x1 = 38;
xwimpextend_get_furniture_sizes(&furniture_sizes);
@ -214,7 +216,8 @@ void ro_gui_set_icon_integer(wimp_w w, wimp_i i, int value) {
* \param i icon handle
* \param state selected state
*/
#define ro_gui_set_icon_selected_state(w, i, state) xwimp_set_icon_state(w, i, (state ? wimp_ICON_SELECTED : 0), wimp_ICON_SELECTED)
#define ro_gui_set_icon_selected_state(w, i, state) \
xwimp_set_icon_state(w, i, (state ? wimp_ICON_SELECTED : 0), wimp_ICON_SELECTED)
/**
@ -239,7 +242,8 @@ bool ro_gui_get_icon_selected_state(wimp_w w, wimp_i i) {
* \param i icon handle
* \param state selected state
*/
#define ro_gui_set_icon_shaded_state(w, i, state) xwimp_set_icon_state(w, i, (state ? wimp_ICON_SHADED : 0), wimp_ICON_SHADED)
#define ro_gui_set_icon_shaded_state(w, i, state) \
xwimp_set_icon_state(w, i, (state ? wimp_ICON_SHADED : 0), wimp_ICON_SHADED)
/**
@ -331,7 +335,13 @@ void ro_gui_set_caret_first(wimp_w w) {
button = (state.icon.flags >> wimp_ICON_BUTTON_TYPE_SHIFT) & 0xf;
if ((button == wimp_BUTTON_WRITE_CLICK_DRAG) ||
(button == wimp_BUTTON_WRITABLE)) {
xwimp_set_caret_position(w, icon, 0, 0, -1, strlen(state.icon.data.indirected_text.text));
error = xwimp_set_caret_position(w, icon, 0, 0, -1,
strlen(state.icon.data.indirected_text.text));
if (error) {
LOG(("xwimp_set_caret_position: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
}
return;
}
}
@ -475,7 +485,7 @@ bool ro_gui_wimp_sprite_exists(const char *sprite)
*
* \param parent parent window
* \param pane pane to open in parent window
* \param offset offset of top-left of pane from top-left of parent
* \param offset inset of pane from parent
*/
void ro_gui_open_pane(wimp_w parent, wimp_w pane, int offset)
@ -493,6 +503,8 @@ void ro_gui_open_pane(wimp_w parent, wimp_w pane, int offset)
}
state.w = pane;
state.visible.x0 += offset;
state.visible.x1 -= offset;
state.visible.y0 += offset;
state.visible.y1 -= offset;
state.xscroll = 0;
state.yscroll = 0;
@ -503,7 +515,7 @@ void ro_gui_open_pane(wimp_w parent, wimp_w pane, int offset)
wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT
<< wimp_CHILD_YORIGIN_SHIFT |
wimp_CHILD_LINKS_PARENT_VISIBLE_BOTTOM_OR_LEFT
<< wimp_CHILD_LS_EDGE_SHIFT |
<< wimp_CHILD_LS_EDGE_SHIFT |
wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT
<< wimp_CHILD_BS_EDGE_SHIFT |
wimp_CHILD_LINKS_PARENT_VISIBLE_TOP_OR_RIGHT

View File

@ -49,4 +49,8 @@ osspriteop_area *ro_gui_load_sprite_file(const char *pathname);
bool ro_gui_wimp_sprite_exists(const char *sprite);
void ro_gui_open_pane(wimp_w parent, wimp_w pane, int offset);
wimp_w ro_gui_set_window_background_colour(wimp_w window, wimp_colour background);
void ro_gui_set_icon_colours(wimp_w window, wimp_i icon,
wimp_colour foreground, wimp_colour background);
#endif

View File

@ -30,7 +30,6 @@
#include "netsurf/riscos/options.h"
#include "netsurf/riscos/theme.h"
#include "netsurf/riscos/thumbnail.h"
#include "netsurf/riscos/toolbar.h"
#include "netsurf/riscos/wimp.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/url.h"
@ -79,11 +78,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
g->reformat_pending = false;
g->old_width = 0;
g->old_height = 0;
strcpy(g->status, "");
strcpy(g->title, "NetSurf");
strcpy(g->url, "");
g->throbber = 0;
strcpy(g->throb_buf, "throbber0");
g->throbtime = 0;
/* Set the window position
@ -202,6 +198,10 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
window.title_data.indirected_text.validation = (char *) -1;
window.title_data.indirected_text.size = 255;
window.icon_count = 0;
if (open_centred) {
scroll_width = ro_get_vscroll_width(g->window);
window.visible.x0 -= scroll_width;
}
error = xwimp_create_window(&window, &g->window);
if (error) {
@ -212,8 +212,6 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
return 0;
}
ro_theme_create_browser_toolbar(g);
g->prev = 0;
g->next = window_list;
if (window_list)
@ -221,10 +219,16 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
window_list = g;
window_count++;
/* Add in a toolbar
*/
g->toolbar = ro_gui_theme_create_toolbar(NULL, THEME_BROWSER_TOOLBAR);
ro_gui_theme_attach_toolbar(g->toolbar, g->window);
/* Set the window options
*/
bw->window = g;
ro_gui_window_clone_options(bw, clone);
ro_gui_prepare_navigate(g);
/* Open the window
*/
@ -237,22 +241,15 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw,
return g;
}
/* Only fix the centralisation if we've opened the window centred
*/
if (open_centred) {
scroll_width = ro_get_vscroll_width(g->window);
state.visible.x0 -= scroll_width;
}
/* Open the window at the top of the stack
*/
state.next = wimp_TOP;
ro_gui_window_open(g, (wimp_open*)&state);
ro_gui_prepare_navigate(g);
/* Set the caret position to the URL bar
*/
if (g->toolbar && g->toolbar->url_bar)
if (g->toolbar && g->toolbar->display_url)
error = xwimp_set_caret_position(
g->toolbar->toolbar_handle,
ICON_TOOLBAR_URL, -1, -1, -1, 0);
@ -291,7 +288,7 @@ void gui_window_destroy(struct gui_window *g)
if (g->next)
g->next->prev = g->prev;
ro_toolbar_destroy(g->toolbar);
ro_gui_theme_destroy_toolbar(g->toolbar);
/* delete window */
error = xwimp_delete_window(g->window);
@ -715,9 +712,8 @@ void gui_window_set_extent(struct gui_window *g, int width, int height)
void gui_window_set_status(struct gui_window *g, const char *text)
{
if (!g->toolbar)
if ((!g->toolbar) || (!g->toolbar->status_handle))
return;
ro_gui_set_icon_string(g->toolbar->status_handle,
ICON_STATUS_TEXT, text);
}
@ -734,6 +730,7 @@ void gui_window_set_url(struct gui_window *g, const char *url)
{
wimp_caret caret;
os_error *error;
char *toolbar_url;
if (!g->toolbar)
return;
@ -754,8 +751,10 @@ void gui_window_set_url(struct gui_window *g, const char *url)
caret.i == ICON_TOOLBAR_URL))
return;
toolbar_url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
ICON_TOOLBAR_URL);
error = xwimp_set_caret_position(g->toolbar->toolbar_handle,
ICON_TOOLBAR_URL, 0, 0, -1, (int) strlen(g->url));
ICON_TOOLBAR_URL, 0, 0, -1, (int)strlen(toolbar_url));
if (error) {
LOG(("xwimp_set_caret_position: 0x%x: %s",
error->errnum, error->errmess));
@ -764,6 +763,65 @@ void gui_window_set_url(struct gui_window *g, const char *url)
}
/**
* Forces all windows to be set to the current theme
*
* /param g the gui window to update
*/
void ro_gui_window_update_theme(void) {
int height;
struct gui_window *g;
for (g = window_list; g; g = g->next) {
if (g->toolbar) {
height = g->toolbar->height;
if (!ro_gui_theme_update_toolbar(NULL, g->toolbar)) {
ro_gui_theme_destroy_toolbar(g->toolbar);
g->toolbar = NULL;
if (height != 0)
ro_gui_window_update_dimensions(g, height);
} else {
if (height != g->toolbar->height)
ro_gui_window_update_dimensions(g, height -
g->toolbar->height);
}
ro_gui_prepare_navigate(g);
}
}
if (hotlist_toolbar) {
if (!ro_gui_theme_update_toolbar(NULL, hotlist_toolbar)) {
ro_gui_theme_destroy_toolbar(hotlist_toolbar);
hotlist_toolbar = NULL;
}
xwimp_force_redraw(hotlist_window, 0, -16384, 16384, 16384);
}
}
/**
* Forces the windows extent to be updated
*
* /param g the gui window to update
* /param yscroll an amount to scroll the vertical scroll bar by
*/
void ro_gui_window_update_dimensions(struct gui_window *g, int yscroll) {
os_error *error;
wimp_window_state state;
if (!g) return;
state.w = g->window;
error = xwimp_get_window_state(&state);
if (error) {
LOG(("xwimp_get_window_state: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
return;
}
state.yscroll -= yscroll;
g->old_height = -1;
ro_gui_window_open(g, (wimp_open *)&state);
/* gui_window_redraw_window(g); */
}
/**
* Open a window using the given wimp_open, handling toolbars and resizing.
*/
@ -866,7 +924,7 @@ void ro_gui_window_open(struct gui_window *g, wimp_open *open)
}
if (g->toolbar)
ro_theme_resize_toolbar(g->toolbar, g->window);
ro_gui_theme_process_toolbar(g->toolbar, -1);
}
@ -878,21 +936,21 @@ void ro_gui_throb(void)
{
os_t t;
struct gui_window *g;
char throb_buf[12];
xos_read_monotonic_time(&t);
for (g = window_list; g; g = g->next) {
if (!g->bw->throbbing || !g->toolbar || (g->toolbar->throbber_frames == 0))
continue;
if (t < g->throbtime + 10)
if (!g->bw->throbbing || !g->toolbar || !g->toolbar->display_throbber ||
!g->toolbar->theme || (t < g->throbtime + 10))
continue;
g->throbtime = t;
g->throbber++;
if (g->toolbar->throbber_frames < g->throbber)
g->throbber = 0;
sprintf(g->throb_buf, "throbber%i", g->throbber);
ro_gui_redraw_icon(g->toolbar->toolbar_handle,
ICON_TOOLBAR_THROBBER);
if (g->toolbar->theme->throbber_frames < g->throbber)
g->throbber = 1;
sprintf(throb_buf, "throbber%i", g->throbber);
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
ICON_TOOLBAR_THROBBER, throb_buf);
}
}
@ -1174,10 +1232,14 @@ void gui_window_start_throbber(struct gui_window *g)
void gui_window_stop_throbber(struct gui_window *g)
{
char throb_buf[12];
ro_gui_prepare_navigate(g);
g->throbber = 0;
strcpy(g->throb_buf, "throbber0");
ro_gui_redraw_icon(g->toolbar->toolbar_handle, ICON_TOOLBAR_THROBBER);
if (g->toolbar) {
strcpy(throb_buf, "throbber0");
ro_gui_set_icon_string(g->toolbar->toolbar_handle,
ICON_TOOLBAR_THROBBER, throb_buf);
}
}
@ -1240,6 +1302,7 @@ bool ro_gui_window_keypress(struct gui_window *g, int key, bool toolbar)
wimp_window_state state;
int y;
char *url;
char *toolbar_url;
os_error *error;
wimp_pointer pointer;
url_func_result res;
@ -1369,7 +1432,9 @@ bool ro_gui_window_keypress(struct gui_window *g, int key, bool toolbar)
case wimp_KEY_RETURN:
if (!toolbar)
break;
res = url_normalize(g->url, &url);
toolbar_url = ro_gui_get_icon_string(g->toolbar->toolbar_handle,
ICON_TOOLBAR_URL);
res = url_normalize(toolbar_url, &url);
if (res == URL_FUNC_OK) {
gui_window_set_url(g, url);
browser_window_go(g->bw, url);
@ -1383,7 +1448,8 @@ bool ro_gui_window_keypress(struct gui_window *g, int key, bool toolbar)
case 14: /* CTRL+N */
current_gui = g;
browser_window_create(g->url, g->bw);
browser_window_create(current_gui->bw->current_content->url,
current_gui->bw);
return true;
case 18: /* CTRL+R */
browser_window_reload(g->bw, false);
@ -1680,18 +1746,19 @@ void ro_gui_window_clone_options(struct browser_window *new_bw,
if (new_gui->toolbar) {
if ((old_gui) && (old_gui->toolbar)) {
new_gui->toolbar->status_width = old_gui->toolbar->status_width;
new_gui->toolbar->status_window = old_gui->toolbar->status_window;
new_gui->toolbar->standard_buttons = old_gui->toolbar->standard_buttons;
new_gui->toolbar->url_bar = old_gui->toolbar->url_bar;
new_gui->toolbar->throbber = old_gui->toolbar->throbber;
new_gui->toolbar->display_status = old_gui->toolbar->display_status;
new_gui->toolbar->display_buttons = old_gui->toolbar->display_buttons;
new_gui->toolbar->display_url = old_gui->toolbar->display_url;
new_gui->toolbar->display_throbber = old_gui->toolbar->display_throbber;
} else {
new_gui->toolbar->status_width = option_toolbar_status_width;
new_gui->toolbar->status_window = option_toolbar_show_status;
new_gui->toolbar->standard_buttons = option_toolbar_show_buttons;
new_gui->toolbar->url_bar = option_toolbar_show_address;
new_gui->toolbar->throbber = option_toolbar_show_throbber;
new_gui->toolbar->display_status = option_toolbar_show_status;
new_gui->toolbar->display_buttons = option_toolbar_show_buttons;
new_gui->toolbar->display_url = option_toolbar_show_address;
new_gui->toolbar->display_throbber = option_toolbar_show_throbber;
}
ro_theme_update_toolbar(new_gui->toolbar, new_gui->window);
new_gui->toolbar->reformat_buttons = true;
ro_gui_theme_process_toolbar(new_gui->toolbar, -1);
}
}
@ -1726,10 +1793,10 @@ void ro_gui_window_default_options(struct browser_window *bw) {
*/
if (gui->toolbar) {
option_toolbar_status_width = gui->toolbar->status_width;
option_toolbar_show_status = gui->toolbar->status_window;
option_toolbar_show_buttons = gui->toolbar->standard_buttons;
option_toolbar_show_address = gui->toolbar->url_bar;
option_toolbar_show_throbber = gui->toolbar->throbber;
option_toolbar_show_status = gui->toolbar->display_status;
option_toolbar_show_buttons = gui->toolbar->display_buttons;
option_toolbar_show_address = gui->toolbar->display_url;
option_toolbar_show_throbber = gui->toolbar->display_throbber;
}
}