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

📄 gui_main.c

📁 网络爬虫程序
💻 C
📖 第 1 页 / 共 5 页
字号:
  gui_cfg.logvadj =    gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(swin));  gtk_widget_show(gui_cfg.logw);  gtk_signal_connect(GTK_OBJECT(gui_cfg.logw), "event",    GTK_SIGNAL_FUNC(gui_logw_list_events), NULL);  gui_cfg.logw_menu = gtk_menu_new();  gtk_widget_realize(gui_cfg.logw_menu);  mi = menu_item(gettext("Select all"));  gaccel_bind_widget("logw/select_all", "activate", mi, NULL,    gui_cfg.toplevel);  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  gtk_signal_connect(GTK_OBJECT(mi), "activate",    GTK_SIGNAL_FUNC(logw_select_all), gui_cfg.logw);  mi = menu_item(gettext("Clear selection"));  gaccel_bind_widget("logw/clear_selection", "activate", mi, NULL,    gui_cfg.toplevel);  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  gtk_signal_connect(GTK_OBJECT(mi), "activate",    GTK_SIGNAL_FUNC(logw_clear_selection), gui_cfg.logw);  gui_cfg.logw_copy_me = mi = menu_item(gettext("Copy selection"));  gaccel_bind_widget("logw/copy", "activate", mi, NULL, gui_cfg.toplevel);  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  gtk_signal_connect(GTK_OBJECT(mi), "activate",    GTK_SIGNAL_FUNC(guitl_clist_selection_to_clipboard), gui_cfg.logw);  mi = gtk_menu_item_new();  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  mi = menu_item(gettext("Save log ..."));  gaccel_bind_widget("logw/save", "activate", mi, NULL, gui_cfg.toplevel);  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  gtk_signal_connect(GTK_OBJECT(mi), "activate",    GTK_SIGNAL_FUNC(logw_save_content), NULL);  mi = menu_item(gettext("Clear log"));  gaccel_bind_widget("logw/clear", "activate", mi, NULL, gui_cfg.toplevel);  gtk_menu_append(GTK_MENU(gui_cfg.logw_menu), mi);  gtk_widget_show(mi);  gtk_signal_connect(GTK_OBJECT(mi), "activate",    GTK_SIGNAL_FUNC(ClearLog), NULL);}#ifdef HAVE_MTstatic void status_list_resize_column(GtkWidget * w, int col, int width,  gpointer fdata){  gprop_set_int(statusbar_col_rec[col].propw, width);}static void build_statusbar(GtkWidget * pane){  GtkWidget *lbox, *frame, *hbox, *par;  int i;  GtkWidget *swin;  par = gtk_vbox_new(FALSE, 2);  gtk_container_add(GTK_CONTAINER(pane), par);  gtk_widget_show(par);  swin = gtk_scrolled_window_new(NULL, NULL);  gtk_widget_set_usize(swin, -1, 100);  gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin),    GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);  gtk_box_pack_start(GTK_BOX(par), swin, TRUE, TRUE, 1);  gtk_widget_show(swin);  /* thrnr, URL, status, size, rate, etime, rtime */  gui_cfg.status_list = gtk_clist_new(7);  gtk_widget_set_usize(gui_cfg.status_list, 400, -1);  gtk_signal_connect(GTK_OBJECT(gui_cfg.status_list), "resize_column",    GTK_SIGNAL_FUNC(status_list_resize_column), NULL);  for(i = 0; i < (sizeof(statusbar_col_rec) / sizeof(statusbar_col_rec[0]));    i++)  {    int w;    gtk_clist_set_column_title(GTK_CLIST(gui_cfg.status_list), i,      gettext(statusbar_col_rec[i].label));    if(!gprop_get_int(statusbar_col_rec[i].propw, &w))      w = statusbar_col_rec[i].width;    gtk_clist_set_column_width(GTK_CLIST(gui_cfg.status_list), i, w);  }  gtk_clist_column_titles_show(GTK_CLIST(gui_cfg.status_list));  gtk_container_add(GTK_CONTAINER(swin), gui_cfg.status_list);  gtk_widget_show(gui_cfg.status_list);  lbox = gtk_handle_box_new();  gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(lbox), GTK_SHADOW_NONE);  gtk_box_pack_start(GTK_BOX(par), lbox, FALSE, TRUE, 0);  gtk_widget_show(lbox);  hbox = gtk_vbox_new(FALSE, 1);  gtk_container_add(GTK_CONTAINER(lbox), hbox);  gtk_widget_show(hbox);  /*** first status line ***/  lbox = gtk_hbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(hbox), lbox, FALSE, TRUE, 1);  gtk_widget_show(lbox);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_done = gtk_label_new(gettext("Processed:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_done), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_done);  gtk_widget_show(gui_cfg.status_done);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_fail = gtk_label_new(gettext("Failed:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_fail), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_fail);  gtk_widget_show(gui_cfg.status_fail);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_queue = gtk_label_new(gettext("Queued:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_queue), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_queue);  gtk_widget_show(gui_cfg.status_queue);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_rej = gtk_label_new(gettext("Rejected:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_rej), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_rej);  gtk_widget_show(gui_cfg.status_rej);  /**** second status line ****/  lbox = gtk_hbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(hbox), lbox, FALSE, TRUE, 1);  gtk_widget_show(lbox);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_msg = gtk_label_new(" ");  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_msg), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_msg);  gtk_widget_show(gui_cfg.status_msg);}#else /* HAVE_MT */static void build_statusbar(GtkWidget * par){  GtkWidget *lbox, *frame, *hbox;  lbox = gtk_handle_box_new();  gtk_handle_box_set_shadow_type(GTK_HANDLE_BOX(lbox), GTK_SHADOW_NONE);  gtk_box_pack_start(GTK_BOX(par), lbox, FALSE, TRUE, 0);  gtk_widget_show(lbox);  hbox = gtk_vbox_new(FALSE, 1);  gtk_container_add(GTK_CONTAINER(lbox), hbox);  gtk_widget_show(hbox);  /**** first status line ****/  lbox = gtk_hbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(hbox), lbox, FALSE, TRUE, 1);  gtk_widget_show(lbox);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_size = gtk_label_new(gettext("S:                     "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_size), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_size);  gtk_widget_show(gui_cfg.status_size);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_rate = gtk_label_new(gettext("R:          "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_rate), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_rate);  gtk_widget_show(gui_cfg.status_rate);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_et = gtk_label_new(gettext("ET:          "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_et), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_et);  gtk_widget_show(gui_cfg.status_et);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_rt = gtk_label_new(gettext("RT:          "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_rt), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_rt);  gtk_widget_show(gui_cfg.status_rt);  /*** second status line ***/  lbox = gtk_hbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(hbox), lbox, FALSE, TRUE, 1);  gtk_widget_show(lbox);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_done = gtk_label_new(gettext("Processed:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_done), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_done);  gtk_widget_show(gui_cfg.status_done);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_fail = gtk_label_new(gettext("Failed:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_fail), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_fail);  gtk_widget_show(gui_cfg.status_fail);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_queue = gtk_label_new(gettext("Queued:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_queue), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_queue);  gtk_widget_show(gui_cfg.status_queue);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_rej = gtk_label_new(gettext("Rejected:       "));  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_rej), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_rej);  gtk_widget_show(gui_cfg.status_rej);  /**** third status line ****/  lbox = gtk_hbox_new(FALSE, 1);  gtk_box_pack_start(GTK_BOX(hbox), lbox, FALSE, TRUE, 1);  gtk_widget_show(lbox);  frame = gtk_frame_new(NULL);  gtk_widget_show(frame);  gtk_container_add(GTK_CONTAINER(lbox), frame);  gui_cfg.status_msg = gtk_label_new(" ");  gtk_misc_set_alignment(GTK_MISC(gui_cfg.status_msg), 0.0, 0.5);  gtk_container_add(GTK_CONTAINER(frame), gui_cfg.status_msg);  gtk_widget_show(gui_cfg.status_msg);}#endif /* !HAVE_MT */static void toplevel_resize(GtkWidget * w, GtkAllocation * sallocation,  gpointer fdata){  char pom[64];  if(resizing)    return;  if(miniaturized)  {    snprintf(pom, sizeof(pom), "(%s)-toplevel_m_width", cfg.language ? cfg.language : "C");    gprop_set_int(pom, sallocation->width);    snprintf(pom, sizeof(pom), "(%s)-toplevel_m_height", cfg.language ? cfg.language : "C");    gprop_set_int(pom, sallocation->height);  }  else  {    snprintf(pom, sizeof(pom), "(%s)-toplevel_n_width", cfg.language ? cfg.language : "C");    gprop_set_int(pom, sallocation->width);    snprintf(pom, sizeof(pom), "(%s)-toplevel_n_height", cfg.language ? cfg.language : "C");    gprop_set_int(pom, sallocation->height);  }}#ifdef HAVE_MTstatic void pane_resize(GtkWidget * w, GtkAllocation * sallocation,  gpointer fdata){  if(resizing || sallocation->height < 2)    return;  gprop_set_int("logw_height", sallocation->height);}#endif /* HAVE_MT */#define BUILD_SH(sh, build_fnc) \  if (sh) \  {\    gdk_window_get_position(GTK_WIDGET(sh)->window, &x, &y);\    is_up = GTK_WIDGET_VISIBLE (sh);\    gtk_widget_destroy(sh);\    if (is_up)\    {\      build_fnc(TRUE);\      gtk_widget_set_uposition(sh, x, y);\    }\    else sh = NULL;\    _Xt_Serve;\  }static void build_main(void){  gint is_up;  bool_t consens = FALSE;  bool_t stop_looping;  gint x, y, w, h;  GtkWidget *col, *sep;  char pom[64];  if(gui_cfg.toplevel)  {    consens = GTK_WIDGET_SENSITIVE(gui_cfg.bt_start);    gdk_window_get_position(GTK_WIDGET(gui_cfg.toplevel)->window, &x, &y);    is_up = TRUE;    gtk_widget_destroy(gui_cfg.toplevel);  }  else    is_up = FALSE;  gui_cfg.toplevel = gtk_window_new(GTK_WINDOW_TOPLEVEL);  w = -1;  h = -1;  snprintf(pom, sizeof(pom), "(%s)-toplevel_n_width", cfg.language ? cfg.language : "C");  gprop_get_int(pom, &w);  snprintf(pom, sizeof(pom), "(%s)-toplevel_n_height", cfg.language ? cfg.language : "C");  gprop_get_int(pom, &h);  gtk_window_set_default_size(GTK_WINDOW(gui_cfg.toplevel), w, h);  gtk_window_set_policy(GTK_WINDOW(gui_cfg.toplevel), TRUE, TRUE, TRUE);  /*** DRAG'N'DROP ***/  gtk_drag_dest_set(gui_cfg.toplevel, GTK_DEST_DEFAULT_ALL,    dragtypes, NUM_ELEM(dragtypes), GDK_ACTION_COPY | GDK_ACTION_MOVE);  gtk_signal_connect(GTK_OBJECT(gui_cfg.toplevel),    "drag_data_received", GTK_SIGNAL_FUNC(gui_window_drop_url), NULL);  gtk_signal_connect(GTK_OBJECT(gui_cfg.toplevel), "destroy",    GTK_SIGNAL_FUNC(Quit), NULL);  gtk_signal_connect(GTK_OBJECT(gui_cfg.toplevel), "size_allocate",    GTK_SIGNAL_FUNC(toplevel_resize), NULL);  if(is_up)    gtk_widget_set_uposition(gui_cfg.toplevel, x, y);  gtk_widget_realize(gui_cfg.toplevel);  gtk_container_border_width(GTK_CONTAINER(gui_cfg.toplevel), 0);  gtk_window_set_title(GTK_WINDOW(gui_cfg.toplevel), "Pavuk");  col = gtk_vbox_new(FALSE, 0);  gtk_container_add(GTK_CONTAINER(gui_cfg.toplevel), col);  gtk_widget_show(col);  gui_cfg.main_window_hide = gtk_vbox_new(FALSE, 0);#ifdef HAVE_MT  gtk_box_pack_start(GTK_BOX(col), gui_cfg.main_window_hide, FALSE, FALSE, 0);#else  gtk_box_pack_start(GTK_BOX(col), gui_cfg.main_window_hide, TRUE, TRUE, 0);#endif  gtk_widget_show(gui_cfg.main_window_hide);  BUILD_SH(gui_cfg.about_shell, gui_build_about);  BUILD_SH(gui_cfg.config_shell, gui_build_config_common);  BUILD_SH(gui_cfg.cfg_limits, gui_build_config_limits);  BUILD_SH(gui_cfg.scn_load_shell, gui_build_scenario_loader);  BUILD_SH(gui_cfg.scn_add_shell, gui_build_scenario_adder);  BUILD_SH(gui_cfg.scn_save_shell, gui_build_scenario_saver);  BUILD_SH(gui_cfg.cfg_sch, gui_build_scheduler);#ifdef HAVE_MOZJS  BUILD_SH(gui_cfg.pjs_console_shell, gui_pjs_console);#endif#ifdef WITH_TREE  gui_build_tree_preview(gui_cfg.tree_shell ?    GTK_WIDGET_VISIBLE(gui_cfg.tree_shell) : FALSE);#endif  sep = gtk_hseparator_new();  gtk_box_pack_start(GTK_BOX(gui_cfg.main_window_hide), sep, FALSE, TRUE, 1);  gtk_widget_show(sep);  build_toolbar(gui_cfg.main_window_hide);#ifdef HAVE_MT  build_minitoolbar(col);  logw_pane = gtk_vpaned_new();  gtk_box_pack_start(GTK_BOX(col), logw_pane, TRUE, TRUE, 1);  gtk_widget_show(logw_pane);  build_logw(logw_pane);  build_statusbar(logw_pane);  if(gprop_get_int("logw_height", &h))    gtk_paned_set_position(GTK_PANED(logw_pane), h);  gtk_signal_connect(GTK_OBJECT(GTK_PANED(logw_pane)->child1),    "size_allocate", GTK_SIGNAL_FUNC(pane_resize), NULL);#else  build_logw(gui_cfg.main_window_hide);  build_minitoolbar(col);  build_statusbar(col);#endif  build_menu(gui_cfg.main_window_hide);  gtk_widget_set_sensitive(gui_cfg.bt_start, consens);  gtk_widget_set_sensitive(gui_cfg.mea_start, consens);  gaccel_window_activate(gui_cfg.accel_group, gui_cfg.toplevel);  gtk_signal_connect(GTK_OBJECT(gui_cfg.toplevel), "destroy",    GTK_SIGNAL_FUNC(gtk_widget_destroyed), &gui_cfg.toplevel);  gtk_widget_show_now(gui_cfg.toplevel);  icons_load();#ifdef __CYGWIN__  SendMessage(GDK_WINDOW_XWINDOW(gui_cfg.toplevel->window),    WM_SETICON, ICON_SMALL,    (struct _HICON *) LoadImage(GetModuleHandle

⌨️ 快捷键说明

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