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

📄 bookmarks.c

📁 一个linux下的ftp程序。它是使用文件传输协议的一系列程序的集合。
💻 C
📖 第 1 页 / 共 3 页
字号:
  gtk_widget_show (tempwid);  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), table, tempwid);  tempwid = gtk_label_new (_("Description:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 0, 1);  gtk_widget_show (tempwid);  bm_pathedit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_pathedit, 1, 2, 0, 1);  if ((pos = strrchr (entry->path, '/')) == NULL)    pos = entry->path;  else    pos++;  if (pos)    gtk_entry_set_text (GTK_ENTRY (bm_pathedit), pos);  gtk_widget_show (bm_pathedit);  tempwid = gtk_label_new (_("Hostname:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 1, 2);  gtk_widget_show (tempwid);  bm_hostedit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_hostedit, 1, 2, 1, 2);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_hostedit, 0);  else if (entry->hostname)    gtk_entry_set_text (GTK_ENTRY (bm_hostedit), entry->hostname);  gtk_widget_show (bm_hostedit);  tempwid = gtk_label_new (_("Port:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 2, 3);  gtk_widget_show (tempwid);  bm_portedit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_portedit, 1, 2, 2, 3);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_portedit, 0);  else if (entry->port)    {      pos = g_strdup_printf ("%d", entry->port);      gtk_entry_set_text (GTK_ENTRY (bm_portedit), pos);      g_free (pos);    }  gtk_widget_show (bm_portedit);  tempwid = gtk_label_new (_("Protocol:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 3, 4);  gtk_widget_show (tempwid);  menu = gtk_option_menu_new ();  gtk_table_attach_defaults (GTK_TABLE (table), menu, 1, 2, 3, 4);  gtk_widget_show (menu);  num = 0;  bm_protocol = gtk_menu_new ();  for (i = 0; gftp_protocols[i].name; i++)    {      tempwid = gtk_menu_item_new_with_label (gftp_protocols[i].name);      gtk_object_set_user_data (GTK_OBJECT (tempwid), gftp_protocols[i].name);      gtk_menu_append (GTK_MENU (bm_protocol), tempwid);      gtk_widget_show (tempwid);      if (entry->protocol &&          strcmp (gftp_protocols[i].name, entry->protocol) == 0)	num = i;    }  gtk_option_menu_set_menu (GTK_OPTION_MENU (menu), bm_protocol);  gtk_option_menu_set_history (GTK_OPTION_MENU (menu), num);  tempwid = gtk_label_new (_("Remote Directory:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 4, 5);  gtk_widget_show (tempwid);  bm_remotediredit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_remotediredit, 1, 2, 4, 5);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_remotediredit, 0);  else if (entry->remote_dir)    gtk_entry_set_text (GTK_ENTRY (bm_remotediredit), entry->remote_dir);  gtk_widget_show (bm_remotediredit);  tempwid = gtk_label_new (_("Local Directory:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 5, 6);  gtk_widget_show (tempwid);  bm_localdiredit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_localdiredit, 1, 2, 5, 6);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_localdiredit, 0);  else if (entry->local_dir)    gtk_entry_set_text (GTK_ENTRY (bm_localdiredit), entry->local_dir);  gtk_widget_show (bm_localdiredit);  tempwid = gtk_hseparator_new ();  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 2, 7, 8);  gtk_widget_show (tempwid);  tempwid = gtk_label_new (_("Username:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 8, 9);  gtk_widget_show (tempwid);  bm_useredit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_useredit, 1, 2, 8, 9);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_useredit, 0);  else if (entry->user)    gtk_entry_set_text (GTK_ENTRY (bm_useredit), entry->user);  gtk_widget_show (bm_useredit);  tempwid = gtk_label_new (_("Password:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 9, 10);  gtk_widget_show (tempwid);  bm_passedit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_passedit, 1, 2, 9, 10);  gtk_entry_set_visibility (GTK_ENTRY (bm_passedit), FALSE);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_passedit, 0);  else if (entry->pass)    gtk_entry_set_text (GTK_ENTRY (bm_passedit), entry->pass);  gtk_widget_show (bm_passedit);  tempwid = gtk_label_new (_("Account:"));  gtk_misc_set_alignment (GTK_MISC (tempwid), 1, 0.5);  gtk_table_attach_defaults (GTK_TABLE (table), tempwid, 0, 1, 10, 11);  gtk_widget_show (tempwid);  bm_acctedit = gtk_entry_new ();  gtk_table_attach_defaults (GTK_TABLE (table), bm_acctedit, 1, 2, 10, 11);  gtk_entry_set_visibility (GTK_ENTRY (bm_acctedit), FALSE);  if (entry->isfolder)    gtk_widget_set_sensitive (bm_acctedit, 0);  else if (entry->acct)    gtk_entry_set_text (GTK_ENTRY (bm_acctedit), entry->acct);  gtk_widget_show (bm_acctedit);  anon_chk = gtk_check_button_new_with_label (_("Log in as ANONYMOUS"));  gtk_table_attach_defaults (GTK_TABLE (table), anon_chk, 0, 2, 11, 12);  if (entry->isfolder)    gtk_widget_set_sensitive (anon_chk, 0);  else    {      gtk_signal_connect (GTK_OBJECT (anon_chk), "toggled",			  GTK_SIGNAL_FUNC (set_userpass_visible), NULL);      gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (anon_chk), entry->user				    && strcmp (entry->user, "anonymous") == 0);    }  gtk_widget_show (anon_chk);#if GTK_MAJOR_VERSION == 1  tempwid = gtk_button_new_with_label (_("OK"));  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (bm_dialog)->action_area), tempwid,		      TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",		      GTK_SIGNAL_FUNC (entry_apply_changes),		      (gpointer) entry);  gtk_signal_connect_object (GTK_OBJECT (tempwid), "clicked",			     GTK_SIGNAL_FUNC (entry_close_dialog), NULL);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_widget_show (tempwid);  tempwid = gtk_button_new_with_label (_("  Cancel  "));  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (bm_dialog)->action_area), tempwid,		      TRUE, TRUE, 0);  gtk_signal_connect_object (GTK_OBJECT (tempwid), "clicked",			     GTK_SIGNAL_FUNC (entry_close_dialog), NULL);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_widget_grab_focus (tempwid);  gtk_widget_show (tempwid);  tempwid = gtk_button_new_with_label (_("Apply"));  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (bm_dialog)->action_area), tempwid,		      TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",		      GTK_SIGNAL_FUNC (entry_apply_changes),		      (gpointer) entry);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_widget_show (tempwid);#else  g_signal_connect (GTK_OBJECT (bm_dialog), "response",                    G_CALLBACK (bmedit_action), (gpointer) entry);#endif  gftp_gtk_setup_bookmark_options (notebook, entry);  gtk_widget_show (bm_dialog);}static gintbm_enter (GtkWidget * widget, GdkEventKey * event, gpointer data){  if (event->type == GDK_KEY_PRESS)    {      if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter)	{	  edit_entry (NULL);	  return (FALSE);	}      else if (event->keyval == GDK_KP_Delete || event->keyval == GDK_Delete)	{	  delete_entry (NULL);	  return (FALSE);	}    }  return (TRUE);}static inline gboolean move_possible (GtkCTree *ctree, GtkCTreeNode *child, GtkCTreeNode *parent,               GtkCTreeNode *sibling){  return (parent != NULL && sibling != NULL);}static voidafter_move (GtkCTree * ctree, GtkCTreeNode * child, GtkCTreeNode * parent,	    GtkCTreeNode * sibling, gpointer data){  gftp_bookmarks_var * childentry, * siblingentry, * parententry, * tempentry;  char *tempstr, *pos, *stpos;  childentry = gtk_ctree_node_get_row_data (ctree, child);  parententry = gtk_ctree_node_get_row_data (ctree, parent);  siblingentry = gtk_ctree_node_get_row_data (ctree, sibling);  tempentry = childentry->prev->children;  if (tempentry == childentry)    childentry->prev->children = childentry->prev->children->next;  else    {      while (tempentry->next != childentry)	tempentry = tempentry->next;      tempentry->next = childentry->next;    }  childentry->prev = parententry;  if (!parententry->isfolder)    {      childentry->next = parententry->children;      parententry->children = childentry;      gtk_ctree_move (ctree, child, parententry->prev->cnode,		      parententry->cnode);    }  else    {      if (siblingentry == NULL || parententry->children == siblingentry)	{	  childentry->next = parententry->children;	  parententry->children = childentry;	}      else	{	  tempentry = parententry->children;	  while (tempentry->next != siblingentry)	    tempentry = tempentry->next;	  childentry->next = tempentry->next;	  tempentry->next = childentry;	}      tempentry = childentry;      while (tempentry != NULL)	{	  g_hash_table_remove (new_bookmarks_htable, tempentry->path);	  if ((pos = strrchr (tempentry->path, '/')) == NULL)	    pos = tempentry->path;	  else	    pos++;	  tempstr = g_strdup_printf ("%s/%s", tempentry->prev->path, pos);	  for (stpos = tempstr; *stpos == '/'; stpos++);	  g_free (tempentry->path);	  tempentry->path = g_strdup (stpos);	  g_free (tempstr);	  g_hash_table_insert (new_bookmarks_htable, tempentry->path,			       tempentry);	  if (tempentry->children != NULL)	    tempentry = tempentry->children;	  else	    {	      if (tempentry->next == NULL)		{		  if (tempentry->prev == childentry)		    break;		  else		    {		      while (tempentry->next == NULL			     && tempentry->prev != NULL)			tempentry = tempentry->prev;		    }		}	      tempentry = tempentry->next;	    }	}    }}static gintbm_dblclick (GtkWidget * widget, GdkEventButton * event, gpointer data){  if (event->button == 3)    gtk_item_factory_popup (edit_factory, (guint) event->x_root,			    (guint) event->y_root, 1, 0);  else if (event->type == GDK_2BUTTON_PRESS)    {      edit_entry (NULL);      return (FALSE);    }  return (TRUE);}voidedit_bookmarks (gpointer data){  GtkItemFactory * ifactory;  GtkWidget * scroll;  GtkItemFactoryEntry menu_items[] = {    {N_("/_File"), NULL, 0, 0, MN_("<Branch>")},    {N_("/File/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},    {N_("/File/New Folder..."), NULL, new_folder_entry, 0, MN_(NULL)},    {N_("/File/New Item..."), NULL, new_item_entry, 0, MS_(GTK_STOCK_NEW)},    {N_("/File/Delete"), NULL, delete_entry, 0, MS_(GTK_STOCK_DELETE)},    {N_("/File/Properties..."), NULL, edit_entry, 0, MS_(GTK_STOCK_PROPERTIES)},    {N_("/File/sep"), NULL, 0, 0, MN_("<Separator>")},    {N_("/File/Close"), NULL, gtk_widget_destroy, 0, MS_(GTK_STOCK_CLOSE)}  };#if GTK_MAJOR_VERSION == 1  GtkWidget * tempwid;#endif  if (edit_bookmarks_dialog != NULL)    {      gtk_widget_grab_focus (edit_bookmarks_dialog);      return;    }  new_bookmarks = copy_bookmarks (gftp_bookmarks);  new_bookmarks_htable = build_bookmarks_hash_table (new_bookmarks);#if GTK_MAJOR_VERSION == 1  edit_bookmarks_dialog = gtk_dialog_new ();  gtk_window_set_title (GTK_WINDOW (edit_bookmarks_dialog),                        _("Edit Bookmarks"));  gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area), 15);#else  edit_bookmarks_dialog = gtk_dialog_new_with_buttons (_("Edit Bookmarks"),                                                       NULL, 0, GTK_STOCK_SAVE,                                                       GTK_RESPONSE_OK,                                                       GTK_STOCK_CANCEL,                                                       GTK_RESPONSE_CANCEL,                                                       NULL);#endif  gtk_window_set_wmclass (GTK_WINDOW(edit_bookmarks_dialog), "Edit Bookmarks",                          "gFTP");  gtk_window_set_position (GTK_WINDOW (edit_bookmarks_dialog),                           GTK_WIN_POS_MOUSE);  gtk_widget_realize (edit_bookmarks_dialog);  if (gftp_icon != NULL)    {      gdk_window_set_icon (edit_bookmarks_dialog->window, NULL,                           gftp_icon->pixmap, gftp_icon->bitmap);      gdk_window_set_icon_name (edit_bookmarks_dialog->window, gftp_version);    }  ifactory = item_factory_new (GTK_TYPE_MENU_BAR, "<bookmarks>", NULL, NULL);  create_item_factory (ifactory, 7, menu_items, NULL);  create_item_factory (ifactory, 1, menu_items + 7, edit_bookmarks_dialog);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->vbox),                      ifactory->widget, FALSE, FALSE, 0);  gtk_widget_show (ifactory->widget);  scroll = gtk_scrolled_window_new (NULL, NULL);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll),				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_widget_set_size_request (scroll, 150, 200);  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->vbox),                      scroll, TRUE, TRUE, 0);  gtk_container_border_width (GTK_CONTAINER (scroll), 3);  gtk_widget_show (scroll);  edit_factory = item_factory_new (GTK_TYPE_MENU, "<edit_bookmark>", NULL, "/File");  create_item_factory (edit_factory, 6, menu_items + 2, edit_bookmarks_dialog);  tree = gtk_ctree_new (1, 0);  gtk_clist_set_selection_mode (GTK_CLIST (tree), GTK_SELECTION_BROWSE);  gtk_clist_set_reorderable (GTK_CLIST (tree), 1);  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll), tree);  gtk_signal_connect_after (GTK_OBJECT (tree), "key_press_event",			    GTK_SIGNAL_FUNC (bm_enter), (gpointer) tree);  gtk_signal_connect_after (GTK_OBJECT (tree), "tree_move",			    GTK_SIGNAL_FUNC (after_move), NULL);  gtk_signal_connect_after (GTK_OBJECT (tree), "button_press_event",			    GTK_SIGNAL_FUNC (bm_dblclick), (gpointer) tree);  gtk_ctree_set_drag_compare_func (GTK_CTREE(tree), &move_possible);  gtk_widget_show (tree);#if GTK_MAJOR_VERSION == 1  tempwid = gtk_button_new_with_label (_("OK"));  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area),                      tempwid, TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",		      GTK_SIGNAL_FUNC (bm_apply_changes), NULL);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",		      GTK_SIGNAL_FUNC (bm_close_dialog),                      (gpointer) edit_bookmarks_dialog);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_widget_show (tempwid);  tempwid = gtk_button_new_with_label (_("  Cancel  "));  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (edit_bookmarks_dialog)->action_area),                      tempwid, TRUE, TRUE, 0);  gtk_signal_connect (GTK_OBJECT (tempwid), "clicked",		      GTK_SIGNAL_FUNC (bm_close_dialog),                      (gpointer) edit_bookmarks_dialog);  GTK_WIDGET_SET_FLAGS (tempwid, GTK_CAN_DEFAULT);  gtk_widget_grab_focus (tempwid);  gtk_widget_show (tempwid);#else  g_signal_connect (GTK_OBJECT (edit_bookmarks_dialog), "response",                    G_CALLBACK (editbm_action), NULL);#endif  gtk_widget_show (edit_bookmarks_dialog);  build_bookmarks_tree ();}

⌨️ 快捷键说明

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