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

📄 gui_common.c

📁 网络爬虫程序
💻 C
📖 第 1 页 / 共 5 页
字号:
  }  p3[1] =    form_encode_urlencoded_str((gchar *) gtk_entry_get_text(GTK_ENTRY(urldlg->        field_name)));  if(p3[0] && p3[1] && *p3[0] && *p3[1])  {    int row = gtk_clist_append(GTK_CLIST(urldlg->field_list), p3);    gtk_clist_set_row_data(GTK_CLIST(urldlg->field_list),      row, (gpointer) type);  }  else    gdk_beep();  _free(p3[2]);  _free(p3[1]);}static void cfg_url_dlg_field_modify(GtkWidget * w,  struct cfg_url_dlg_t *urldlg){  char *p3[3];  int type;  int row;  if(!GTK_CLIST(urldlg->field_list)->selection)  {    gdk_beep();    return;  }  row = GPOINTER_TO_INT(GTK_CLIST(urldlg->field_list)->selection->data);  type = GTK_OPTION_MENU(urldlg->field_type)->menu_item ?    (int) gtk_object_get_user_data(GTK_OBJECT(GTK_OPTION_MENU(urldlg->        field_type)->menu_item)) : 0;  switch (type)  {  case FORM_T_FILE:    p3[0] = "FILE";    p3[2] = form_encode_urlencoded_str(      (gchar *) gtk_entry_get_text(GTK_ENTRY(urldlg->field_value_f)));    break;  case FORM_T_TEXTAREA:    {      int len;      char *p;      p3[0] = "LONG TEXT";#if GTK_FACE < 2      len = gtk_text_get_length(GTK_TEXT(urldlg->field_value_t));#else      len = gtk_text_buffer_get_char_count(        gtk_text_view_get_buffer(GTK_TEXT_VIEW(urldlg->field_value_t)));#endif      p = gtk_editable_get_chars(GTK_EDITABLE(urldlg->field_value_t), 0, len);      p3[2] = form_encode_urlencoded_str(p);      g_free(p);    }    break;  default:    p3[0] = "TEXT";    p3[2] = form_encode_urlencoded_str(      (gchar *) gtk_entry_get_text(GTK_ENTRY(urldlg->field_value_l)));  }  p3[1] =    form_encode_urlencoded_str((gchar *) gtk_entry_get_text(GTK_ENTRY(urldlg->        field_name)));  if(p3[0] && p3[1] && *p3[0] && *p3[1])  {    gtk_clist_set_text(GTK_CLIST(urldlg->field_list), row, 0, p3[0]);    gtk_clist_set_text(GTK_CLIST(urldlg->field_list), row, 1, p3[1]);    gtk_clist_set_text(GTK_CLIST(urldlg->field_list), row, 2, p3[2]);    gtk_clist_set_row_data(GTK_CLIST(urldlg->field_list),      row, (gpointer) type);  }  else    gdk_beep();  _free(p3[2]);  _free(p3[1]);}static void cfg_url_dlg_set_type(GtkWidget * w, struct cfg_url_dlg_t *urldlg){  int type;  int tab;  type = (int) gtk_object_get_user_data(GTK_OBJECT(w));  switch (type)  {  case FORM_T_FILE:    tab = 1;    break;  case FORM_T_TEXTAREA:    tab = 2;    break;  default:    tab = 0;  }  gtk_notebook_set_page(GTK_NOTEBOOK(urldlg->tab), tab);}static void cfg_url_dlg_field_switch(GtkObject * w, int row, int col,  GdkEvent * event, struct cfg_url_dlg_t *urldlg){  if(GTK_CLIST(w)->selection)  {    char *p;    int type;    type = (int) gtk_clist_get_row_data(GTK_CLIST(urldlg->field_list), row);    gtk_clist_get_text(GTK_CLIST(urldlg->field_list), row, 1, &p);    p = form_decode_urlencoded_str(p, strlen(p));    gtk_entry_set_text(GTK_ENTRY(urldlg->field_name), p);    _free(p);    gtk_clist_get_text(GTK_CLIST(urldlg->field_list), row, 2, &p);    p = form_decode_urlencoded_str(p, strlen(p));    switch (type)    {    case FORM_T_FILE:      gtk_option_menu_set_history(GTK_OPTION_MENU(urldlg->field_type), 1);      gtk_entry_set_text(GTK_ENTRY(urldlg->field_value_f), p);      gtk_notebook_set_page(GTK_NOTEBOOK(urldlg->tab), 1);      break;    case FORM_T_TEXTAREA:      gtk_option_menu_set_history(GTK_OPTION_MENU(urldlg->field_type), 2);#if GTK_FACE < 2      gtk_text_set_point(GTK_TEXT(urldlg->field_value_t), 0);      gtk_text_forward_delete(GTK_TEXT(urldlg->field_value_t),        gtk_text_get_length(GTK_TEXT(urldlg->field_value_t)));      gtk_text_insert(GTK_TEXT(urldlg->field_value_t), NULL, NULL, NULL, p,        strlen(p));#else      gtk_text_buffer_set_text(gtk_text_view_get_buffer(      GTK_TEXT_VIEW(urldlg->field_value_t)), p, -1);#endif      gtk_notebook_set_page(GTK_NOTEBOOK(urldlg->tab), 2);      break;    default:      gtk_option_menu_set_history(GTK_OPTION_MENU(urldlg->field_type), 0);      gtk_entry_set_text(GTK_ENTRY(urldlg->field_value_l), p);      gtk_notebook_set_page(GTK_NOTEBOOK(urldlg->tab), 0);    }    _free(p);  }  else  {    gtk_entry_set_text(GTK_ENTRY(urldlg->field_name), "");    gtk_entry_set_text(GTK_ENTRY(urldlg->field_value_f), "");    gtk_entry_set_text(GTK_ENTRY(urldlg->field_value_l), "");#if GTK_FACE < 2    gtk_text_set_point(GTK_TEXT(urldlg->field_value_t), 0);    gtk_text_forward_delete(GTK_TEXT(urldlg->field_value_t),      gtk_text_get_length(GTK_TEXT(urldlg->field_value_t)));#else    gtk_text_buffer_set_text(gtk_text_view_get_buffer(    GTK_TEXT_VIEW(urldlg->field_value_t)), "", 0);#endif  }}static void cfg_url_dlg_set_sensitive(GtkWidget * w,  struct cfg_url_dlg_t *urldlg){  gtk_widget_set_sensitive(urldlg->ext_frame,    GTK_TOGGLE_BUTTON(urldlg->ext_sw)->active);}static void cfgtab_url(GtkWidget * notebook){  GtkWidget *label, *box, *tbox, *ptab, *prow, *menu, *mi;  GtkWidget *swin, *brow, *button, *pbox;  GtkWidget *hsb, *vsb;  GtkAdjustment *hadj, *vadj;  static struct cfg_url_dlg_t urldlg;  tbox = gtk_hbox_new(FALSE, 2);  gtk_widget_show(tbox);  label = gtk_label_new(gettext("URL"));  gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tbox, label);  box = gtk_table_new(3, 1, FALSE);  gtk_box_pack_start(GTK_BOX(tbox), box, TRUE, TRUE, 1);  gtk_widget_show(box);  swin = gtk_scrolled_window_new(NULL, NULL);  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),    GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_table_attach_defaults(GTK_TABLE(box), swin, 0, 1, 0, 1);  gtk_widget_show(swin);  gui_cfg.url_list = gtk_clist_new(2);  urldlg.url_list = gui_cfg.url_list;  gtk_clist_set_selection_mode(GTK_CLIST(gui_cfg.url_list),    GTK_SELECTION_BROWSE);  gtk_clist_set_column_title(GTK_CLIST(gui_cfg.url_list), 0, gettext("URL"));  gtk_clist_set_column_title(GTK_CLIST(gui_cfg.url_list), 1,    gettext("Local filename"));  gtk_clist_column_titles_show(GTK_CLIST(gui_cfg.url_list));  gtk_clist_set_column_width(GTK_CLIST(gui_cfg.url_list), 0, 200);  gtk_clist_set_reorderable(GTK_CLIST(gui_cfg.url_list), TRUE);  gtk_clist_set_column_auto_resize(GTK_CLIST(gui_cfg.url_list), 1, TRUE);  gtk_container_add(GTK_CONTAINER(swin), gui_cfg.url_list);  gtk_widget_show(gui_cfg.url_list);  gtk_signal_connect(GTK_OBJECT(gui_cfg.url_list), "select_row",    GTK_SIGNAL_FUNC(cfg_url_dlg_switch), (gpointer) & urldlg);  brow = gtk_table_new(2, 2, FALSE);  gtk_table_attach(GTK_TABLE(box), brow, 0, 1, 1, 2,    GTK_EXPAND | GTK_FILL, GTK_FILL, 2, 5);  gtk_widget_show(brow);  gui_cfg.url_entry =    guitl_tab_add_entry(brow, gettext("Request URL: "), 0, 0, FALSE);  urldlg.url_entry = gui_cfg.url_entry;  urldlg.localname_entry =    guitl_tab_add_path_entry(brow, gettext("Local filename: "), 0, 2, FALSE);  brow = gtk_hbutton_box_new();  gtk_table_attach(GTK_TABLE(box), brow, 0, 1, 2, 3,    GTK_EXPAND | GTK_FILL, GTK_FILL, 2, 5);  gtk_hbutton_box_set_spacing_default(1);  gtk_widget_show(brow);  gtk_button_box_set_layout(GTK_BUTTON_BOX(brow), GTK_BUTTONBOX_SPREAD);  button = guitl_pixmap_button(append_xpm, NULL, gettext("Append"));  gtk_container_border_width(GTK_CONTAINER(button), 0);  gtk_container_add(GTK_CONTAINER(brow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(cfg_url_dlg_append), (gpointer) & urldlg);  gtk_signal_connect(GTK_OBJECT(gui_cfg.url_entry), "activate",    GTK_SIGNAL_FUNC(cfg_url_dlg_append), (gpointer) & urldlg);  button = guitl_pixmap_button(modify_xpm, NULL, gettext("Modify"));  gtk_container_border_width(GTK_CONTAINER(button), 0);  gtk_container_add(GTK_CONTAINER(brow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(cfg_url_dlg_modify), (gpointer) & urldlg);  button = guitl_pixmap_button(clear_xpm, NULL, gettext("Clear"));  gtk_container_border_width(GTK_CONTAINER(button), 0);  gtk_container_add(GTK_CONTAINER(brow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(guitl_ListClear), (gpointer) gui_cfg.url_list);  button = guitl_pixmap_button(delete_xpm, NULL, gettext("Delete"));  gtk_container_border_width(GTK_CONTAINER(button), 0);  gtk_container_add(GTK_CONTAINER(brow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(guitl_ListDeleteSelected), (gpointer) gui_cfg.url_list);  /*** DRAG'N'DROP ***/  gtk_drag_dest_set(box, GTK_DEST_DEFAULT_ALL,    dragtypes, NUM_ELEM(dragtypes) - 1, GDK_ACTION_COPY | GDK_ACTION_MOVE);  gtk_signal_connect(GTK_OBJECT(box),    "drag_data_received", GTK_SIGNAL_FUNC(gui_window_drop_url), NULL);  box = gtk_vbox_new(FALSE, 2);  gtk_box_pack_start(GTK_BOX(tbox), box, TRUE, TRUE, 1);  gtk_widget_show(box);  urldlg.ext_sw =    gtk_check_button_new_with_label(gettext    ("Extended informations for HTTP POST request"));  gtk_box_pack_start(GTK_BOX(box), urldlg.ext_sw, FALSE, FALSE, 1);  gtk_widget_show(urldlg.ext_sw);  gtk_signal_connect(GTK_OBJECT(urldlg.ext_sw), "toggled",    GTK_SIGNAL_FUNC(cfg_url_dlg_set_sensitive), &urldlg);  urldlg.ext_frame = gtk_frame_new(NULL);  gtk_box_pack_start(GTK_BOX(box), urldlg.ext_frame, FALSE, FALSE, 1);  gtk_widget_show(urldlg.ext_frame);  ptab = gtk_vbox_new(FALSE, 5);  gtk_container_add(GTK_CONTAINER(urldlg.ext_frame), ptab);  gtk_widget_show(ptab);  prow = gtk_table_new(2, 2, FALSE);  gtk_box_pack_start(GTK_BOX(ptab), prow, FALSE, FALSE, 1);  gtk_widget_show(prow);  label = gtk_label_new(gettext("Request method: "));  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);  gtk_table_attach(GTK_TABLE(prow), label, 0, 1, 0, 1, GTK_SHRINK | GTK_FILL,    GTK_FILL, 2, 2);  gtk_widget_show(label);  urldlg.method = gtk_option_menu_new();  gtk_table_attach(GTK_TABLE(prow), urldlg.method, 1, 2, 0, 1,    GTK_SHRINK | GTK_FILL, GTK_FILL, 2, 2);  menu = gtk_menu_new();  mi = gtk_menu_item_new_with_label("GET");  gtk_object_set_user_data(GTK_OBJECT(mi), (gpointer) FORM_M_GET);  gtk_menu_append(GTK_MENU(menu), mi);  gtk_widget_show(mi);  mi = gtk_menu_item_new_with_label("POST");  gtk_object_set_user_data(GTK_OBJECT(mi), (gpointer) FORM_M_POST);  gtk_menu_append(GTK_MENU(menu), mi);  gtk_widget_show(mi);  gtk_option_menu_set_menu(GTK_OPTION_MENU(urldlg.method), menu);  gtk_widget_show(urldlg.method);  label = gtk_label_new(gettext("Request encoding: "));  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);  gtk_table_attach(GTK_TABLE(prow), label, 0, 1, 1, 2, GTK_SHRINK | GTK_FILL,    GTK_FILL, 2, 2);  gtk_widget_show(label);  urldlg.encoding = gtk_option_menu_new();  gtk_table_attach(GTK_TABLE(prow), urldlg.encoding, 1, 2, 1, 2,    GTK_SHRINK | GTK_FILL, GTK_FILL, 2, 2);  menu = gtk_menu_new();  mi = gtk_menu_item_new_with_label("multipart/form-data");  gtk_object_set_user_data(GTK_OBJECT(mi), (gpointer) FORM_E_MULTIPART);  gtk_menu_append(GTK_MENU(menu), mi);  gtk_widget_show(mi);  mi = gtk_menu_item_new_with_label("application/x-www-form-urlencoded");  gtk_object_set_user_data(GTK_OBJECT(mi), (gpointer) FORM_E_URLENCODED);  gtk_menu_append(GTK_MENU(menu), mi);  gtk_widget_show(mi);  gtk_option_menu_set_menu(GTK_OPTION_MENU(urldlg.encoding), menu);  gtk_widget_show(urldlg.encoding);  label = gtk_label_new(gettext("Query fields: "));  gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);  gtk_box_pack_start(GTK_BOX(ptab), label, FALSE, FALSE, 2);  gtk_widget_show(label);  swin = gtk_scrolled_window_new(NULL, NULL);  gtk_widget_set_usize(swin, -1, 100);  gtk_box_pack_start(GTK_BOX(ptab), swin, TRUE, TRUE, 2);  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),    GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_widget_show(swin);  urldlg.field_list = gtk_clist_new(3);  gtk_clist_set_selection_mode(GTK_CLIST(urldlg.field_list),    GTK_SELECTION_BROWSE);  gtk_clist_set_column_title(GTK_CLIST(urldlg.field_list), 0,    gettext("Type"));  gtk_clist_set_column_title(GTK_CLIST(urldlg.field_list), 1,    gettext("Name"));  gtk_clist_set_column_title(GTK_CLIST(urldlg.field_list), 2,    gettext("Value"));  gtk_clist_column_titles_show(GTK_CLIST(urldlg.field_list));  gtk_clist_set_column_auto_resize(GTK_CLIST(urldlg.field_list), 0, TRUE);  gtk_clist_set_column_auto_resize(GTK_CLIST(urldlg.field_list), 1, TRUE);  gtk_clist_set_column_auto_resize(GTK_CLIST(urldlg.field_list), 2, TRUE);  gtk_container_add(GTK_CONTAINER(swin), urldlg.field_list);  gtk_widget_show(urldlg.field_list);  gtk_signal_connect(GTK_OBJECT(urldlg.field_list), "select_row",    GTK_SIGNAL_FUNC(cfg_url_dlg_field_switch), (gpointer) & urldlg);  prow = gtk_hbutton_box_new();  gtk_box_pack_start(GTK_BOX(ptab), prow, FALSE, FALSE, 1);  gtk_widget_show(prow);  button = guitl_pixmap_button(append_xpm, NULL, gettext("Append"));  gtk_container_add(GTK_CONTAINER(prow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(cfg_url_dlg_field_append), &urldlg);  button = guitl_pixmap_button(modify_xpm, NULL, gettext("Modify"));  gtk_container_add(GTK_CONTAINER(prow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",    GTK_SIGNAL_FUNC(cfg_url_dlg_field_modify), &urldlg);  button = guitl_pixmap_button(delete_xpm, NULL, gettext("Delete"));  gtk_container_add(GTK_CONTAINER(prow), button);  gtk_widget_show(button);  gtk_signal_connect(GTK_OBJECT(button), "clicked",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -