⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 浏览器的源代码,可移植到嵌入式设备.
💻 C
📖 第 1 页 / 共 2 页
字号:
   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 + -