void ro_gui_cookies_postinitialise(void) { /* Create our toolbar. */ cookies_window.toolbar = ro_toolbar_create(NULL, cookies_window.window, THEME_STYLE_COOKIES_TOOLBAR, TOOLBAR_FLAGS_NONE, ro_treeview_get_toolbar_callbacks(), NULL, "HelpCookiesToolbar"); if (cookies_window.toolbar != NULL) { ro_toolbar_add_buttons(cookies_window.toolbar, cookies_toolbar_buttons, nsoption_charp(toolbar_cookies)); ro_toolbar_rebuild(cookies_window.toolbar); } /* Create the treeview with the window and toolbar. */ cookies_window.tv = ro_treeview_create(cookies_window.window, cookies_window.toolbar, &ro_cookies_treeview_callbacks, cookies_get_tree_flags()); if (cookies_window.tv == NULL) { LOG(("Failed to allocate treeview")); return; } ro_toolbar_update_client_data(cookies_window.toolbar, cookies_window.tv); /* Initialise the cookies into the tree. */ cookies_initialise(ro_treeview_get_tree(cookies_window.tv), tree_directory_icon_name, tree_content_icon_name); /* Build the cookies window menu. */ static const struct ns_menu cookies_definition = { "Cookies", { { "Cookies", NO_ACTION, 0 }, { "Cookies.Expand", TREE_EXPAND_ALL, 0 }, { "Cookies.Expand.All", TREE_EXPAND_ALL, 0 }, { "Cookies.Expand.Folders", TREE_EXPAND_FOLDERS, 0 }, { "Cookies.Expand.Links", TREE_EXPAND_LINKS, 0 }, { "Cookies.Collapse", TREE_COLLAPSE_ALL, 0 }, { "Cookies.Collapse.All", TREE_COLLAPSE_ALL, 0 }, { "Cookies.Collapse.Folders", TREE_COLLAPSE_FOLDERS, 0 }, { "Cookies.Collapse.Links", TREE_COLLAPSE_LINKS, 0 }, { "Cookies.Toolbars", NO_ACTION, 0 }, { "_Cookies.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 }, { "Cookies.Toolbars.EditToolbar",TOOLBAR_EDIT, 0 }, { "Selection", TREE_SELECTION, 0 }, { "Selection.Delete", TREE_SELECTION_DELETE, 0 }, { "SelectAll", TREE_SELECT_ALL, 0 }, { "Clear", TREE_CLEAR_SELECTION, 0 }, {NULL, 0, 0} } }; cookies_window.menu = ro_gui_menu_define_menu(&cookies_definition); ro_gui_wimp_event_register_menu(cookies_window.window, cookies_window.menu, false, false); ro_gui_wimp_event_register_menu_prepare(cookies_window.window, ro_gui_cookies_menu_prepare); ro_gui_wimp_event_register_menu_selection(cookies_window.window, ro_gui_cookies_menu_select); ro_gui_wimp_event_register_menu_warning(cookies_window.window, ro_gui_cookies_menu_warning); }
void ro_gui_global_history_postinitialise(void) { /* Create our toolbar. */ global_history_window.toolbar = ro_toolbar_create(NULL, global_history_window.window, THEME_STYLE_GLOBAL_HISTORY_TOOLBAR, TOOLBAR_FLAGS_NONE, ro_treeview_get_toolbar_callbacks(), NULL, "HelpGHistoryToolbar"); if (global_history_window.toolbar != NULL) { ro_toolbar_add_buttons(global_history_window.toolbar, global_history_toolbar_buttons, nsoption_charp(toolbar_history)); ro_toolbar_rebuild(global_history_window.toolbar); } /* Create the treeview with the window and toolbar. */ global_history_window.tv = ro_treeview_create(global_history_window.window, global_history_window.toolbar, &ro_global_history_treeview_callbacks, history_global_get_tree_flags()); if (global_history_window.tv == NULL) { LOG(("Failed to allocate treeview")); return; } ro_toolbar_update_client_data(global_history_window.toolbar, global_history_window.tv); /* Initialise the global history into the tree. */ history_global_initialise( ro_treeview_get_tree(global_history_window.tv), tree_directory_icon_name); /* Build the global history window menu. */ static const struct ns_menu global_history_definition = { "History", { { "History", NO_ACTION, 0 }, { "_History.Export", HISTORY_EXPORT, &dialog_saveas }, { "History.Expand", TREE_EXPAND_ALL, 0 }, { "History.Expand.All", TREE_EXPAND_ALL, 0 }, { "History.Expand.Folders", TREE_EXPAND_FOLDERS, 0 }, { "History.Expand.Links", TREE_EXPAND_LINKS, 0 }, { "History.Collapse", TREE_COLLAPSE_ALL, 0 }, { "History.Collapse.All", TREE_COLLAPSE_ALL, 0 }, { "History.Collapse.Folders", TREE_COLLAPSE_FOLDERS, 0 }, { "History.Collapse.Links", TREE_COLLAPSE_LINKS, 0 }, { "History.Toolbars", NO_ACTION, 0 }, { "_History.Toolbars.ToolButtons", TOOLBAR_BUTTONS, 0 }, { "History.Toolbars.EditToolbar",TOOLBAR_EDIT, 0 }, { "Selection", TREE_SELECTION, 0 }, { "Selection.Launch", TREE_SELECTION_LAUNCH, 0 }, { "Selection.Delete", TREE_SELECTION_DELETE, 0 }, { "SelectAll", TREE_SELECT_ALL, 0 }, { "Clear", TREE_CLEAR_SELECTION, 0 }, {NULL, 0, 0} } }; global_history_window.menu = ro_gui_menu_define_menu( &global_history_definition); ro_gui_wimp_event_register_menu(global_history_window.window, global_history_window.menu, false, false); ro_gui_wimp_event_register_menu_prepare(global_history_window.window, ro_gui_global_history_menu_prepare); ro_gui_wimp_event_register_menu_selection(global_history_window.window, ro_gui_global_history_menu_select); ro_gui_wimp_event_register_menu_warning(global_history_window.window, ro_gui_global_history_menu_warning); }
void ro_gui_options_theme_load(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; int item_height; int *radio_icons, *radio_set; int theme_count; /* delete our old list and get/open a new one */ ro_gui_options_theme_free(); theme_list = ro_gui_theme_get_available(); ro_gui_theme_open(theme_list, true); /* create toolbars for each theme */ theme_count = 0; descriptor = theme_list; while (descriptor != NULL) { /* try to create a toolbar */ toolbar = ro_toolbar_create(descriptor, NULL, THEME_STYLE_BROWSER_TOOLBAR, TOOLBAR_FLAGS_DISPLAY, NULL, NULL, NULL); if (toolbar != NULL) { ro_toolbar_add_buttons(toolbar, brower_toolbar_buttons, nsoption_charp(toolbar_browser)); ro_toolbar_add_url(toolbar); ro_toolbar_add_throbber(toolbar); ro_toolbar_rebuild(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 = theme_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 - state.yscroll; extent.x1 = parent_width; link = toolbars; new_icon.w = theme_pane; new_icon.icon.flags = wimp_ICON_TEXT | wimp_ICON_INDIRECTED | wimp_ICON_VCENTRED | (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | (wimp_COLOUR_VERY_LIGHT_GREY << wimp_ICON_BG_COLOUR_SHIFT); while (link) { /* update the toolbar */ item_height = 44 + 44 + 16; if (link->next) item_height += 16; ro_toolbar_process(link->toolbar, parent_width, false); extent.y0 = nested_y - ro_toolbar_height(link->toolbar) - item_height; if (link->next) extent.y0 -= 16; if (extent.y0 > min_extent) extent.y0 = min_extent; xwimp_set_extent(theme_pane, &extent); /* create the descriptor icons and separator line */ new_icon.icon.extent.x0 = 8; new_icon.icon.extent.x1 = parent_width - 8; new_icon.icon.flags &= ~wimp_ICON_BORDER; new_icon.icon.flags |= wimp_ICON_SPRITE; new_icon.icon.extent.y1 = nested_y - ro_toolbar_height(link->toolbar) - 8; new_icon.icon.extent.y0 = nested_y - ro_toolbar_height(link->toolbar) - 52; new_icon.icon.data.indirected_text_and_sprite.text = (char *)&link->descriptor->name; new_icon.icon.data.indirected_text_and_sprite.size = strlen(link->descriptor->name) + 1; new_icon.icon.data.indirected_text_and_sprite.validation = theme_radio_validation; new_icon.icon.flags |= (wimp_BUTTON_RADIO << wimp_ICON_BUTTON_TYPE_SHIFT); xwimp_create_icon(&new_icon, &link->icon_number); new_icon.icon.flags &= ~wimp_ICON_SPRITE; new_icon.icon.extent.x0 = 52; new_icon.icon.extent.y1 -= 44; new_icon.icon.extent.y0 -= 44; new_icon.icon.data.indirected_text.text = (char *)&link->descriptor->author; new_icon.icon.data.indirected_text.size = strlen(link->descriptor->author) + 1; new_icon.icon.data.indirected_text.validation = theme_null_validation; new_icon.icon.flags &= ~(wimp_BUTTON_RADIO << wimp_ICON_BUTTON_TYPE_SHIFT); xwimp_create_icon(&new_icon, 0); if (link->next) { new_icon.icon.flags |= wimp_ICON_BORDER; new_icon.icon.extent.x0 = -8; new_icon.icon.extent.x1 = parent_width + 8; new_icon.icon.extent.y1 -= 52; new_icon.icon.extent.y0 = new_icon.icon.extent.y1 - 8; new_icon.icon.data.indirected_text.text = theme_null_validation; new_icon.icon.data.indirected_text.validation = theme_line_validation; new_icon.icon.data.indirected_text.size = 1; xwimp_create_icon(&new_icon, 0); } /* nest the toolbar window */ state.w = ro_toolbar_get_window(link->toolbar); state.yscroll = 0; state.visible.y1 = nested_y + base_extent; state.visible.y0 = state.visible.y1 - ro_toolbar_height(link->toolbar) + 2; xwimp_open_window_nested(PTR_WIMP_OPEN(&state), theme_pane, wimp_CHILD_LINKS_PARENT_WORK_AREA << wimp_CHILD_BS_EDGE_SHIFT | wimp_CHILD_LINKS_PARENT_WORK_AREA << wimp_CHILD_TS_EDGE_SHIFT); /* continue processing */ nested_y -= ro_toolbar_height(link->toolbar) + item_height; link = link->next; } /* set the icons as radios */ radio_icons = (int *)calloc(theme_count + 1, sizeof(int)); radio_set = radio_icons; for (link = toolbars; link; link = link->next) *radio_set++ = link->icon_number; *radio_set = -1; ro_gui_wimp_event_register_radio(theme_pane, radio_icons); /* update our display */ xwimp_force_redraw(theme_pane, 0, -16384, 16384, 16384); }