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

📄 gftp-gtk.c

📁 Linux下使用最为广泛的gftp的源码
💻 C
📖 第 1 页 / 共 4 页
字号:
static gintlist_enter (GtkWidget * widget, GdkEventKey * event, gpointer data){  gftp_window_data * wdata;  wdata = data;  if (!GFTP_IS_CONNECTED (wdata->request))    return (TRUE);  if (event->type == GDK_KEY_PRESS &&            (event->keyval == GDK_KP_Delete || event->keyval == GDK_Delete))    {      delete_dialog (wdata);      return (FALSE);    }  else if (IS_ONE_SELECTED (wdata) && event->type == GDK_KEY_PRESS &&       event->keyval == GDK_Return)    {      list_doaction (wdata);      return (FALSE);    }  return (TRUE);}static gintlist_dblclick (GtkWidget * widget, GdkEventButton * event, gpointer data){  gftp_window_data * wdata;  wdata = data;  if (event->button == 3)    gtk_item_factory_popup (wdata->ifactory, (guint) event->x_root,                            (guint) event->y_root, 3, event->time);  return (FALSE);}static void select_row_callback (GtkWidget *widget, gint row, gint column,                     GdkEventButton *event, gpointer data){  gftp_window_data * wdata;  wdata = data;  if (event != NULL && event->type == GDK_2BUTTON_PRESS && event->button == 1 &&      GFTP_IS_CONNECTED (wdata->request) && IS_ONE_SELECTED (wdata))    list_doaction (wdata);}static GtkWidget *CreateFTPWindow (gftp_window_data * wdata){  const GtkTargetEntry possible_types[] = {    {"STRING", 0, 0},    {"text/plain", 0, 0},    {"application/x-rootwin-drop", 0, 1}  };  GtkWidget *box, *scroll_list, *parent;  intptr_t listbox_file_height, colwidth;  char *titles[7], tempstr[50];  titles[0] = "";  titles[1] = _("Filename");  titles[2] = _("Size");  titles[3] = _("User");  titles[4] = _("Group");  titles[5] = _("Date");  titles[6] = _("Attribs");  wdata->request = gftp_request_new ();  wdata->request->logging_function = ftp_log;  wdata->filespec = g_malloc0 (2);  *wdata->filespec = '*';  parent = gtk_frame_new (NULL);    gftp_lookup_global_option ("listbox_file_height", &listbox_file_height);  g_snprintf (tempstr, sizeof (tempstr), "listbox_%s_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  gtk_widget_set_size_request (parent, colwidth, listbox_file_height);  gtk_container_border_width (GTK_CONTAINER (parent), 5);  box = gtk_vbox_new (FALSE, 0);  gtk_container_border_width (GTK_CONTAINER (box), 5);  gtk_container_add (GTK_CONTAINER (parent), box);  wdata->combo = gtk_combo_new ();  gtk_combo_set_case_sensitive (GTK_COMBO (wdata->combo), 1);  gtk_box_pack_start (GTK_BOX (box), wdata->combo, FALSE, FALSE, 0);  gtk_signal_connect (GTK_OBJECT (GTK_COMBO (wdata->combo)->entry),		      "activate", GTK_SIGNAL_FUNC (chdir_edit),		      (gpointer) wdata);  if (*wdata->history)    gtk_combo_set_popdown_strings (GTK_COMBO (wdata->combo), *wdata->history);  gtk_combo_disable_activate (GTK_COMBO (wdata->combo));  gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry), "");  wdata->hoststxt = gtk_label_new (NULL);  gtk_misc_set_alignment (GTK_MISC (wdata->hoststxt), 0, 0);  gtk_box_pack_start (GTK_BOX (box), wdata->hoststxt, FALSE, FALSE, 0);  scroll_list = gtk_scrolled_window_new (NULL, NULL);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_list),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  wdata->listbox = gtk_clist_new_with_titles (7, titles);  gtk_container_add (GTK_CONTAINER (scroll_list), wdata->listbox);  gtk_drag_source_set (wdata->listbox, GDK_BUTTON1_MASK, possible_types, 3,		       GDK_ACTION_COPY | GDK_ACTION_MOVE);  gtk_drag_dest_set (wdata->listbox, GTK_DEST_DEFAULT_ALL, possible_types, 2,		     GDK_ACTION_COPY | GDK_ACTION_MOVE);  gtk_clist_set_selection_mode (GTK_CLIST (wdata->listbox),				GTK_SELECTION_EXTENDED);  gtk_clist_set_column_width (GTK_CLIST (wdata->listbox), 0, 16);  gtk_clist_set_column_justification (GTK_CLIST (wdata->listbox), 0,				      GTK_JUSTIFY_CENTER);  g_snprintf (tempstr, sizeof (tempstr), "%s_file_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 1, colwidth);  gtk_clist_set_column_justification (GTK_CLIST (wdata->listbox), 2,				      GTK_JUSTIFY_RIGHT);  g_snprintf (tempstr, sizeof (tempstr), "%s_size_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 2, colwidth);  g_snprintf (tempstr, sizeof (tempstr), "%s_user_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 3, colwidth);  g_snprintf (tempstr, sizeof (tempstr), "%s_group_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 4, colwidth);  g_snprintf (tempstr, sizeof (tempstr), "%s_date_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 5, colwidth);  g_snprintf (tempstr, sizeof (tempstr), "%s_attribs_width", wdata->prefix_col_str);  gftp_lookup_global_option (tempstr, &colwidth);  setup_column (wdata->listbox, 6, colwidth);  gtk_box_pack_start (GTK_BOX (box), scroll_list, TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (wdata->listbox), "click_column",	 	      GTK_SIGNAL_FUNC (sortrows), (gpointer) wdata);  gtk_signal_connect (GTK_OBJECT (wdata->listbox), "drag_data_get",		      GTK_SIGNAL_FUNC (listbox_drag), (gpointer) wdata);  gtk_signal_connect (GTK_OBJECT (wdata->listbox), "drag_data_received",		      GTK_SIGNAL_FUNC (listbox_get_drag_data),		      (gpointer) wdata);  gtk_signal_connect_after (GTK_OBJECT (wdata->listbox), "key_press_event",                            GTK_SIGNAL_FUNC (list_enter), (gpointer) wdata);  gtk_signal_connect (GTK_OBJECT (wdata->listbox), "select_row",                      GTK_SIGNAL_FUNC(select_row_callback),                      (gpointer) wdata);  gtk_signal_connect_after (GTK_OBJECT (wdata->listbox), "button_press_event",                            GTK_SIGNAL_FUNC (list_dblclick), (gpointer) wdata);  return (parent);}static gintmenu_mouse_click (GtkWidget * widget, GdkEventButton * event, gpointer data){  GtkItemFactory *mfactory;  mfactory = (GtkItemFactory *) data;  if (event->button == 3)    gtk_item_factory_popup (mfactory, (guint) event->x_root,			    (guint) event->y_root, 3, event->time);  return (FALSE);}static GtkWidget *CreateFTPWindows (GtkWidget * ui){  GtkWidget *box, *dlbox, *winpane, *dlpane, *logpane, *mainvbox, *tempwid;  gftp_config_list_vars * tmplistvar;  char *dltitles[2];  intptr_t tmplookup;#if GTK_MAJOR_VERSION > 1  GtkTextBuffer * textbuf;  GtkTextIter iter;  GtkTextTag *tag;  GdkColor * fore;#endif  memset (&window1, 0, sizeof (window1));  memset (&window2, 0, sizeof (window2));  gftp_lookup_global_option ("localhistory", &tmplistvar);  window1.history = &tmplistvar->list;  window1.histlen = &tmplistvar->num_items;  gftp_lookup_global_option ("remotehistory", &tmplistvar);  window2.history = &tmplistvar->list;  window2.histlen = &tmplistvar->num_items;   mainvbox = gtk_vbox_new (FALSE, 0);  tempwid = CreateMenus (ui);  gtk_box_pack_start (GTK_BOX (mainvbox), tempwid, FALSE, FALSE, 0);  tempwid = CreateConnectToolbar (ui);  gtk_box_pack_start (GTK_BOX (mainvbox), tempwid, FALSE, FALSE, 0);  tempwid = CreateCommandToolbar ();  gtk_box_pack_start (GTK_BOX (mainvbox), tempwid, FALSE, FALSE, 0);  winpane = gtk_hpaned_new ();  box = gtk_hbox_new (FALSE, 0);  window1.prefix_col_str = "local";  local_frame = CreateFTPWindow (&window1);  gtk_box_pack_start (GTK_BOX (box), local_frame, TRUE, TRUE, 0);  dlbox = gtk_vbox_new (FALSE, 0);  gtk_container_border_width (GTK_CONTAINER (dlbox), 5);  gtk_box_pack_start (GTK_BOX (box), dlbox, FALSE, FALSE, 0);#if GTK_MAJOR_VERSION == 1  tempwid = toolbar_pixmap (ui, "right.xpm");#else  tempwid = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD,                                      GTK_ICON_SIZE_SMALL_TOOLBAR);#endif  upload_right_arrow = gtk_button_new ();  gtk_box_pack_start (GTK_BOX (dlbox), upload_right_arrow, TRUE, FALSE, 0);  gtk_signal_connect_object (GTK_OBJECT (upload_right_arrow), "clicked",			     GTK_SIGNAL_FUNC (put_files), NULL);  gtk_container_add (GTK_CONTAINER (upload_right_arrow), tempwid);#if GTK_MAJOR_VERSION == 1  tempwid = toolbar_pixmap (ui, "left.xpm");#else  tempwid = gtk_image_new_from_stock (GTK_STOCK_GO_BACK,                                      GTK_ICON_SIZE_SMALL_TOOLBAR);#endif  download_left_arrow = gtk_button_new ();  gtk_box_pack_start (GTK_BOX (dlbox), download_left_arrow, TRUE, FALSE, 0);  gtk_signal_connect_object (GTK_OBJECT (download_left_arrow), "clicked",			     GTK_SIGNAL_FUNC (get_files), NULL);  gtk_container_add (GTK_CONTAINER (download_left_arrow), tempwid);  gtk_paned_pack1 (GTK_PANED (winpane), box, 1, 1);  window2.prefix_col_str = "remote";  remote_frame = CreateFTPWindow (&window2);  gtk_paned_pack2 (GTK_PANED (winpane), remote_frame, 1, 1);  dlpane = gtk_vpaned_new ();  gtk_paned_pack1 (GTK_PANED (dlpane), winpane, 1, 1);  transfer_scroll = gtk_scrolled_window_new (NULL, NULL);  gftp_lookup_global_option ("transfer_height", &tmplookup);  gtk_widget_set_size_request (transfer_scroll, -1, tmplookup);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (transfer_scroll),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  dltitles[0] = _("Filename");  dltitles[1] = _("Progress");  dlwdw = gtk_ctree_new_with_titles (2, 0, dltitles);  gtk_clist_set_selection_mode (GTK_CLIST (dlwdw), GTK_SELECTION_SINGLE);  gtk_clist_set_reorderable (GTK_CLIST (dlwdw), 0);  gftp_lookup_global_option ("file_trans_column", &tmplookup);  if (tmplookup == 0)    gtk_clist_set_column_auto_resize (GTK_CLIST (dlwdw), 0, TRUE);  else    gtk_clist_set_column_width (GTK_CLIST (dlwdw), 0, tmplookup);  gtk_container_add (GTK_CONTAINER (transfer_scroll), dlwdw);  gtk_signal_connect (GTK_OBJECT (dlwdw), "button_press_event",		      GTK_SIGNAL_FUNC (menu_mouse_click), (gpointer) dl_factory);  gtk_paned_pack2 (GTK_PANED (dlpane), transfer_scroll, 1, 1);  logpane = gtk_vpaned_new ();  gtk_paned_pack1 (GTK_PANED (logpane), dlpane, 1, 1);  log_table = gtk_table_new (1, 2, FALSE);  gftp_lookup_global_option ("log_height", &tmplookup);  gtk_widget_set_size_request (log_table, -1, tmplookup);#if GTK_MAJOR_VERSION == 1  logwdw = gtk_text_new (NULL, NULL);  gtk_text_set_editable (GTK_TEXT (logwdw), FALSE);  gtk_text_set_word_wrap (GTK_TEXT (logwdw), TRUE);  gtk_table_attach (GTK_TABLE (log_table), logwdw, 0, 1, 0, 1,		    GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND | GTK_SHRINK,		    0, 0);  gtk_signal_connect (GTK_OBJECT (logwdw), "button_press_event",		      GTK_SIGNAL_FUNC (menu_mouse_click),                       (gpointer) log_factory);  tempwid = gtk_vscrollbar_new (GTK_TEXT (logwdw)->vadj);  gtk_table_attach (GTK_TABLE (log_table), tempwid, 1, 2, 0, 1,		    GTK_FILL, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0);  logwdw_vadj = GTK_TEXT (logwdw)->vadj;#else  logwdw = gtk_text_view_new ();  gtk_text_view_set_editable (GTK_TEXT_VIEW (logwdw), FALSE);  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (logwdw), FALSE);  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (logwdw), GTK_WRAP_WORD);  textbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (logwdw));  tag = gtk_text_buffer_create_tag (textbuf, "send", NULL);  gftp_lookup_global_option ("send_color", &fore);  g_object_set (G_OBJECT (tag), "foreground_gdk", fore, NULL);  tag = gtk_text_buffer_create_tag (textbuf, "recv", NULL);  gftp_lookup_global_option ("recv_color", &fore);  g_object_set (G_OBJECT (tag), "foreground_gdk", fore, NULL);  tag = gtk_text_buffer_create_tag (textbuf, "error", NULL);  gftp_lookup_global_option ("error_color", &fore);  g_object_set (G_OBJECT (tag), "foreground_gdk", fore, NULL);  tag = gtk_text_buffer_create_tag (textbuf, "misc", NULL);  gftp_lookup_global_option ("misc_color", &fore);  g_object_set (G_OBJECT (tag), "foreground_gdk", &fore, NULL);  tempwid = gtk_scrolled_window_new (NULL, NULL);

⌨️ 快捷键说明

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