📄 menu.c
字号:
if (idx >= 0 && idx < a_Nav_stack_size(bw)) { a_Interface_msg(bw, "%s", URL_STR_(a_History_get_url(NAV_IDX(bw,idx)))); bw->status_is_link = 1; }}/* * Remove the url in the status bar when removing cursor from menuitem. */static voidMenu_popup_history_deselect_callback(GtkWidget *widget, gpointer data) { BrowserWindow *bw = data; a_Interface_msg(bw, "");}/* * Make a new popup menu for history browsing * direction: {backward = -1, forward = 1} */GtkWidget *a_Menu_popup_history_new(BrowserWindow *bw, gint direction){ int i; GtkWidget *menu, *menu_item; GString *text = g_string_sized_new(128); menu = a_Gtk_ext_menu_new(); Menu_sep(menu); if (direction>0) { Menu_add_title(menu, "FOLLOWING PAGES"); i = a_Nav_stack_ptr(bw) + 1; } else { Menu_add_title(menu, "PREVIOUS PAGES"); i = a_Nav_stack_ptr(bw) - 1; } Menu_sep(menu); for ( ; i >= 0 && i < a_Nav_stack_size(bw); i+=direction ) { if (a_History_get_title(NAV_IDX(bw,i))) { g_string_assign(text, a_History_get_title(NAV_IDX(bw,i))); } else { g_string_assign(text, URL_STR(a_History_get_url(NAV_IDX(bw,i)))); } if ( text->len > 64 ) { g_string_truncate(text, 64); g_string_append(text, "..."); } menu_item = a_Gtk_ext_menu_item_new_with_label(text->str); gtk_menu_append(GTK_MENU(menu), menu_item); gtk_widget_show(menu_item); /* attach the nav_stack index to the menu item */ gtk_object_set_data(GTK_OBJECT (menu_item), "nav_idx", GINT_TO_POINTER(i)); gtk_signal_connect ( GTK_OBJECT (menu_item), "select", GTK_SIGNAL_FUNC (a_Interface_scroll_popup), NULL); gtk_signal_connect ( GTK_OBJECT (menu_item), "select", GTK_SIGNAL_FUNC (Menu_popup_history_select_callback), bw); gtk_signal_connect ( GTK_OBJECT (menu_item), "deselect", GTK_SIGNAL_FUNC (Menu_popup_history_deselect_callback), bw); gtk_signal_connect ( GTK_OBJECT (menu_item), "activate", GTK_SIGNAL_FUNC (a_Commands_history_callback_same_bw), bw); gtk_signal_connect ( GTK_OBJECT (menu_item), "activate1", GTK_SIGNAL_FUNC (a_Commands_history_callback_same_bw), bw); gtk_signal_connect ( GTK_OBJECT (menu_item), "activate2", GTK_SIGNAL_FUNC (a_Commands_history_callback_new_bw), bw); gtk_signal_connect ( GTK_OBJECT (menu_item), "activate3", GTK_SIGNAL_FUNC (a_Commands_history_callback_same_bw), bw); } g_string_free(text, TRUE); return menu;}/* * Make a new popup menu for when the mouse is over a link. */GtkWidget *a_Menu_popup_ol_new(BrowserWindow *bw){ GtkWidget *menu; GtkWidget *copy; GtkWidget *menuitem; menu = gtk_menu_new(); Menu_sep(menu); Menu_add_title(menu, "LINK OPTIONS"); Menu_sep(menu); Menu_add(menu, "Open Link in New Window", NULL, bw, a_Commands_open_link_nw_callback, bw); Menu_add(menu, "Bookmark this Link", NULL, bw, a_Commands_addbm_callback, bw); copy = Menu_add(menu, "Copy Link location", NULL, bw, a_Commands_select_popup_url_callback, bw); a_Selection_init_selection(copy); Menu_sep(menu); Menu_add(menu, "Save Link As...", NULL, bw, a_Commands_save_link_callback, bw); Menu_sep(menu); menuitem = Menu_add(menu, "Image Menu...", NULL, bw, NULL, bw); gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), bw->menu_popup.over_image); bw->menu_popup.ol_oi_submenu = menuitem; return menu;}/* * Make a new popup menu for when the mouse is over an image */GtkWidget *a_Menu_popup_oi_new (BrowserWindow *bw){ GtkWidget *menu; GtkWidget *copy; menu = gtk_menu_new(); Menu_sep(menu); Menu_add_title(menu, "IMAGE OPTIONS"); Menu_sep(menu); Menu_add(menu, "Isolate Image", NULL, bw, a_Commands_open_link_callback, bw); Menu_add(menu, "Open Image in New Window", NULL, bw, a_Commands_open_link_nw_callback, bw); Menu_add(menu, "Bookmark this Image", NULL, bw, a_Commands_addbm_callback, bw); copy = Menu_add(menu, "Copy Image location", NULL, bw, a_Commands_select_popup_url_callback, bw); a_Selection_init_selection(copy); Menu_sep(menu); Menu_add(menu, "Save Image As...", NULL, bw, a_Commands_save_link_callback, bw); return menu;}/* * Make a new popup menu for right click over the bug meter. */GtkWidget *a_Menu_popup_ob_new (BrowserWindow *bw){ GtkWidget *menu; menu = gtk_menu_new(); Menu_sep(menu); Menu_add_title(menu, "BUG METER OPTIONS"); Menu_sep(menu); Menu_add(menu, "Validate URL with W3C", NULL, bw, a_Commands_ob_w3c_callback, bw); Menu_add(menu, "Validate URL with WDG", NULL, bw, a_Commands_ob_wdg_callback, bw); Menu_sep(menu); Menu_add(menu, "About Bug Meter...", NULL, bw, a_Commands_ob_info_callback, bw); return menu;}/* * Show or Hide the image submenu. */void a_Menu_popup_ol_show_oi(BrowserWindow *bw, gboolean show){ if (show) gtk_widget_show(bw->menu_popup.ol_oi_submenu); else gtk_widget_hide(bw->menu_popup.ol_oi_submenu);}/* * Functions to manipulate Pagemarks menu. * Should this be in a separate "pagemark.c" ? *//* * make the page scroll to the pagemark */static void Menu_pagemarks_goto_pagemark(GtkWidget *widget, gpointer client_data){ BrowserWindow *bw = (BrowserWindow *) client_data; char anchor[32]; g_snprintf (anchor, 32, "#%ld", (long int)widget); a_Dw_gtk_scrolled_window_set_anchor(GTK_DW_SCROLLED_WINDOW(bw->docwin), anchor);}/* * Deallocate the memory used by a pagemarks menu and create a new one */void a_Menu_pagemarks_new(BrowserWindow *bw){ gtk_widget_set_sensitive(bw->pagemarks_menuitem, FALSE); if (bw->pagemarks_menu) gtk_widget_destroy(bw->pagemarks_menu); bw->pagemarks_menu = gtk_menu_new(); bw->pagemarks_last = NULL; gtk_menu_item_set_submenu(GTK_MENU_ITEM(bw->pagemarks_menuitem), bw->pagemarks_menu);}/* * Add a new pagemark (opening H tag). * The text can be set only at the closing H tag. * level is the level of the heading (1-6). */void a_Menu_pagemarks_add(BrowserWindow *bw, void *page, void *style, gint level){ char anchor[32], spaces[32], name[32]; gtk_widget_set_sensitive(bw->pagemarks_menuitem, TRUE); g_snprintf(spaces, 32, "%*s", 3 * (level - 1), ""); bw->pagemarks_last = Menu_add(bw->pagemarks_menu, spaces, NULL, bw, Menu_pagemarks_goto_pagemark, bw); g_snprintf(anchor, 32, "#%ld", (glong)(bw->pagemarks_last)); a_Dw_page_add_anchor(page, anchor, style); gtk_signal_connect (GTK_OBJECT (bw->pagemarks_last), "select", GTK_SIGNAL_FUNC (a_Interface_scroll_popup), NULL); g_snprintf(name, 32, "dilloHeading%d", level); gtk_widget_set_name(bw->pagemarks_last, name);}/* * Set the text for the last created pagemark. */void a_Menu_pagemarks_set_text(BrowserWindow *bw, const char *str){ GString *text; GtkWidget *child; /* Avoid problems with lonely closing tags and nested headings */ if ( bw->pagemarks_last && (child = GTK_BIN (bw->pagemarks_last)->child) && GTK_IS_LABEL (child) ) { text = g_string_new(GTK_LABEL(child)->label); g_string_append(text, str); if ( text->len > 64 ) { g_string_truncate(text, 64); g_string_append(text, "..."); } gtk_label_set_text(GTK_LABEL (child), text->str); g_string_free(text, 1); bw->pagemarks_last = NULL; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -