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

📄 gftp-gtk.c

📁 一个linux下的ftp程序。它是使用文件传输协议的一系列程序的集合。
💻 C
📖 第 1 页 / 共 4 页
字号:
  menus = menu_items;  accel_group = gtk_accel_group_new ();  factory = item_factory_new (GTK_TYPE_MENU_BAR, "<main>", accel_group, NULL);  i = 0;  len = 11;  /* FTP Menu */  create_item_factory (factory, len, menu_items, &window2);  i += len;  /* Local Menu */  local_start = i;  local_len = 21;  create_item_factory (factory, local_len, menu_items + i, &window1);  i += local_len;  /* Remote Menu */  remote_start = i;  remote_len = 21;  create_item_factory (factory, remote_len, menu_items + i, &window2);  i += remote_len;  len = 5;  /* Bookmarks Menu */  create_item_factory (factory, len, menu_items + i, &window2);  i += len;  /* Transfers Menu */  trans_start = i;  trans_len = 12;  create_item_factory (factory, trans_len, menu_items + i, NULL);  i += trans_len;  /* Logging Menu */  log_start = i;  log_len = 5;  create_item_factory (factory, log_len, menu_items + i, NULL);  i += log_len;  /* Tools Menu */  tools_start = i;  tools_len = 4;  create_item_factory (factory, tools_len, menu_items + i, NULL);  i += tools_len;  /* Help Menu */  create_item_factory (factory, 3, menu_items + i, NULL);  build_bookmarks_menu ();  gtk_window_add_accel_group (GTK_WINDOW (parent), accel_group);  gftp_lookup_global_option ("ascii_transfers", &ascii_transfers);  if (ascii_transfers)    {      tempwid = gtk_item_factory_get_widget (factory, menu_items[5].path);      gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (tempwid), TRUE);    }  else    {      tempwid = gtk_item_factory_get_widget (factory, menu_items[6].path);      gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (tempwid), TRUE);    }  tempwid = gtk_item_factory_get_widget (factory, menu_items[3].path);  gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (tempwid), TRUE);  window1.ifactory = item_factory_new (GTK_TYPE_MENU, "<local>", NULL, "/Local");  create_item_factory (window1.ifactory, local_len - 2, menu_items + local_start + 2, &window1);  window2.ifactory = item_factory_new (GTK_TYPE_MENU, "<remote>", NULL, "/Remote");  create_item_factory (window2.ifactory, remote_len - 2, menu_items + remote_start + 2, &window2);  log_factory = item_factory_new (GTK_TYPE_MENU, "<log>", NULL, "/Logging");  create_item_factory (log_factory, log_len - 2, menu_items + log_start + 2, NULL);  dl_factory = item_factory_new (GTK_TYPE_MENU, "<download>", NULL, "/Transfers");  create_item_factory (dl_factory, trans_len - 2, menu_items + trans_start + 2, NULL);  return (factory->widget);}static GtkWidget *CreateConnectToolbar (GtkWidget * parent){  const GtkTargetEntry possible_types[] = {    {"STRING", 0, 0},    {"text/plain", 0, 0},    {"application/x-rootwin-drop", 0, 1}  };  GtkWidget *toolbar, *box, *tempwid;  gftp_config_list_vars * tmplistvar;  char *default_protocol, *tempstr;  int i, num;  toolbar = gtk_handle_box_new ();  box = gtk_hbox_new (FALSE, 4);  gtk_container_add (GTK_CONTAINER (toolbar), box);  gtk_container_border_width (GTK_CONTAINER (box), 5);  openurl_tooltip = gtk_tooltips_new ();  tempwid = toolbar_pixmap (parent, "connect.xpm");  openurl_btn = gtk_button_new ();  gtk_container_add (GTK_CONTAINER (openurl_btn), tempwid);  gtk_signal_connect_object (GTK_OBJECT (openurl_btn), "clicked",			     GTK_SIGNAL_FUNC (tb_openurl_dialog), NULL);  gtk_signal_connect (GTK_OBJECT (openurl_btn), "drag_data_received",		      GTK_SIGNAL_FUNC (openurl_get_drag_data), NULL);  gtk_drag_dest_set (openurl_btn, GTK_DEST_DEFAULT_ALL, possible_types, 2,		     GDK_ACTION_COPY | GDK_ACTION_MOVE);  gtk_container_border_width (GTK_CONTAINER (openurl_btn), 1);  gtk_box_pack_start (GTK_BOX (box), openurl_btn, FALSE, FALSE, 0);#if GTK_MAJOR_VERSION == 1  tempwid = gtk_label_new (_("Host: "));#else  tempwid = gtk_label_new_with_mnemonic (_("_Host: "));#endif  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  hostedit = gtk_combo_new ();  gtk_combo_set_case_sensitive (GTK_COMBO (hostedit), 1);  gtk_widget_set_size_request (hostedit, 130, -1);  gtk_signal_connect (GTK_OBJECT (GTK_COMBO (hostedit)->entry), "activate",		      GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);  gftp_lookup_global_option ("hosthistory", &tmplistvar);  if (tmplistvar->list)    gtk_combo_set_popdown_strings (GTK_COMBO (hostedit), tmplistvar->list);  gtk_combo_disable_activate (GTK_COMBO (hostedit));  gftp_lookup_global_option ("host_value", &tempstr);  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (hostedit)->entry), tempstr);#if GTK_MAJOR_VERSION > 1  gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid),                                 GTK_COMBO (hostedit)->entry);#endif  gtk_box_pack_start (GTK_BOX (box), hostedit, TRUE, TRUE, 0);  tempwid = gtk_label_new (_("Port: "));  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  portedit = gtk_combo_new ();  gtk_combo_set_case_sensitive (GTK_COMBO (portedit), 1);  gtk_widget_set_size_request (portedit, 50, -1);  gtk_signal_connect (GTK_OBJECT (GTK_COMBO (portedit)->entry), "activate",		      GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);  gftp_lookup_global_option ("porthistory", &tmplistvar);  if (tmplistvar->list)    gtk_combo_set_popdown_strings (GTK_COMBO (portedit), tmplistvar->list);  gtk_combo_disable_activate (GTK_COMBO (portedit));  gftp_lookup_global_option ("port_value", &tempstr);  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (portedit)->entry), tempstr);  gtk_box_pack_start (GTK_BOX (box), portedit, FALSE, FALSE, 0);#if GTK_MAJOR_VERSION == 1  tempwid = gtk_label_new (_("User: "));#else  tempwid = gtk_label_new_with_mnemonic (_("_User: "));#endif  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  useredit = gtk_combo_new ();  gtk_combo_set_case_sensitive (GTK_COMBO (useredit), 1);  gtk_widget_set_size_request (useredit, 75, -1);  gtk_signal_connect (GTK_OBJECT (GTK_COMBO (useredit)->entry), "activate",		      GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);  gftp_lookup_global_option ("userhistory", &tmplistvar);  if (tmplistvar->list)    gtk_combo_set_popdown_strings (GTK_COMBO (useredit), tmplistvar->list);  gtk_combo_disable_activate (GTK_COMBO (useredit));  gftp_lookup_global_option ("user_value", &tempstr);  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (useredit)->entry), tempstr);#if GTK_MAJOR_VERSION > 1  gtk_label_set_mnemonic_widget (GTK_LABEL (tempwid),                                 GTK_COMBO (useredit)->entry);#endif  gtk_box_pack_start (GTK_BOX (box), useredit, TRUE, TRUE, 0);  tempwid = gtk_label_new (_("Pass: "));  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  passedit = gtk_entry_new ();  gtk_widget_set_size_request (passedit, 55, -1);  gtk_entry_set_visibility (GTK_ENTRY (passedit), FALSE);  gtk_signal_connect (GTK_OBJECT (passedit), "activate",		      GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);  gtk_box_pack_start (GTK_BOX (box), passedit, FALSE, FALSE, 0);  tempwid = gtk_vbox_new (FALSE, 0);  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  optionmenu = gtk_option_menu_new ();  gtk_box_pack_start (GTK_BOX (tempwid), optionmenu, TRUE, FALSE, 0);  num = 0;  gftp_lookup_global_option ("default_protocol", &default_protocol);  protocol_menu = gtk_menu_new ();  for (i = 0; gftp_protocols[i].name; i++)    {      if (!gftp_protocols[i].shown)        continue;      if (default_protocol != NULL &&          strcmp (gftp_protocols[i].name, default_protocol) == 0)        num = i;      tempwid = gtk_menu_item_new_with_label (gftp_protocols[i].name);      gtk_object_set_user_data (GTK_OBJECT (tempwid), GINT_TO_POINTER(i));      gtk_menu_append (GTK_MENU (protocol_menu), tempwid);      gtk_widget_show (tempwid);    }  gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), protocol_menu);  gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), num);#if GTK_MAJOR_VERSION == 1  tempwid = toolbar_pixmap (parent, "stop.xpm");#else  tempwid = gtk_image_new_from_stock (GTK_STOCK_STOP,                                      GTK_ICON_SIZE_LARGE_TOOLBAR);#endif  stop_btn = gtk_button_new ();  gtk_container_add (GTK_CONTAINER (stop_btn), tempwid);  gtk_widget_set_sensitive (stop_btn, 0);  gtk_signal_connect_object (GTK_OBJECT (stop_btn), "clicked",			     GTK_SIGNAL_FUNC (stop_button), NULL);  gtk_container_border_width (GTK_CONTAINER (stop_btn), 1);  gtk_box_pack_start (GTK_BOX (box), stop_btn, FALSE, FALSE, 0);  gtk_widget_grab_focus (GTK_COMBO (hostedit)->entry);  return (toolbar);}static GtkWidget *CreateCommandToolbar (void){  GtkWidget * box, * tempwid;  gftpui_command_toolbar = gtk_handle_box_new ();  box = gtk_hbox_new (FALSE, 4);  gtk_container_add (GTK_CONTAINER (gftpui_command_toolbar), box);  gtk_container_border_width (GTK_CONTAINER (box), 5);  tempwid = gtk_label_new (_("Command: "));  gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);  gftpui_command_widget = gtk_entry_new ();  gtk_box_pack_start (GTK_BOX (box), gftpui_command_widget, TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (gftpui_command_widget), "activate",		      GTK_SIGNAL_FUNC (gftpui_run_command), NULL);  return (gftpui_command_toolbar);}static voidsetup_column (GtkWidget * listbox, int column, int width){  if (width == 0)    gtk_clist_set_column_auto_resize (GTK_CLIST (listbox), column, TRUE);  else if (width == -1)    gtk_clist_set_column_visibility (GTK_CLIST (listbox), column, FALSE);  else    gtk_clist_set_column_width (GTK_CLIST (listbox), column, width);}static voidlist_doaction (gftp_window_data * wdata){  intptr_t list_dblclk_action;  GList *templist, *filelist;  gftp_file *tempfle;  int num, success;  char *directory;  gftp_lookup_request_option (wdata->request, "list_dblclk_action",                               &list_dblclk_action);  filelist = wdata->files;  templist = gftp_gtk_get_list_selection (wdata);  num = 0;  templist = get_next_selection (templist, &filelist, &num);  tempfle = (gftp_file *) filelist->data;  if (check_reconnect (wdata) < 0)     return;  if (S_ISLNK (tempfle->st_mode) || S_ISDIR (tempfle->st_mode))    {      directory = gftp_build_path (wdata->request, wdata->request->directory,                                   tempfle->file, NULL);      success = gftpui_run_chdir (wdata, directory);      g_free (directory);    }  else    success = 0;  if (!S_ISDIR (tempfle->st_mode) && !success)    {      switch (list_dblclk_action)        {          case 0:            view_dialog (wdata);            break;          case 1:            edit_dialog (wdata);            break;          case 2:            if (wdata == &window2)              get_files (wdata);            else              put_files (wdata);            break;        }    }}

⌨️ 快捷键说明

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