rename_dialog.c
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:4k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. /*****************************************************************************/
  2. /*  rename_dialog.c - rename dialog box and ftp routines                     */
  3. /*  Copyright (C) 1998-2002 Brian Masney <masneyb@gftp.org>                  */
  4. /*                                                                           */
  5. /*  This program is free software; you can redistribute it and/or modify     */
  6. /*  it under the terms of the GNU General Public License as published by     */
  7. /*  the Free Software Foundation; either version 2 of the License, or        */
  8. /*  (at your option) any later version.                                      */
  9. /*                                                                           */
  10. /*  This program is distributed in the hope that it will be useful,          */
  11. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of           */
  12. /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            */
  13. /*  GNU General Public License for more details.                             */
  14. /*                                                                           */
  15. /*  You should have received a copy of the GNU General Public License        */
  16. /*  along with this program; if not, write to the Free Software              */
  17. /*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA      */
  18. /*****************************************************************************/
  19. #include "gftp-gtk.h"
  20. static const char cvsid[] = "$Id: rename_dialog.c,v 1.5 2002/11/11 23:16:12 masneyb Exp $";
  21. static const char *edttext;
  22. static gftp_file * curfle;
  23. static void *
  24. do_rename_thread (void * data)
  25. {
  26.   gftp_window_data * wdata;
  27.   int success, sj;
  28.   wdata = data;
  29.   if (wdata->request->use_threads)
  30.     { 
  31.       sj = sigsetjmp (jmp_environment, 1);
  32.       use_jmp_environment = 1;
  33.     }
  34.   else
  35.     sj = 0;
  36.   success = 0;
  37.   if (sj == 0)
  38.     {
  39.       if (wdata->request->network_timeout > 0)
  40.         alarm (wdata->request->network_timeout);
  41.       success = gftp_rename_file (wdata->request, curfle->file, edttext) == 0;
  42.       alarm (0);
  43.     }
  44.   else
  45.     {
  46.       gftp_disconnect (wdata->request);
  47.       wdata->request->logging_function (gftp_logging_error,
  48.                                         wdata->request->user_data,
  49.                                         _("Operation canceledn"));
  50.     }
  51.   if (wdata->request->use_threads)
  52.     use_jmp_environment = 0;
  53.   wdata->request->stopable = 0;
  54.   return ((void *) success);
  55. }
  56. static void
  57. dorenCB (gftp_window_data * wdata, gftp_dialog_data * ddata)
  58. {
  59.   edttext = gtk_entry_get_text (GTK_ENTRY (ddata->edit));
  60.   if (*edttext == '')
  61.     {
  62.       ftp_log (gftp_logging_misc, NULL,
  63.        _("Rename: Operation canceled...you must enter a stringn"));
  64.       return;
  65.     }
  66.   if (check_reconnect (wdata) < 0) 
  67.     return;
  68.   if ((int) generic_thread (do_rename_thread, wdata))
  69.     refresh ((gpointer) wdata);
  70. }
  71. void
  72. rename_dialog (gpointer data)
  73. {
  74.   GList *templist, *filelist;
  75.   gftp_window_data * wdata;
  76.   char *tempstr;
  77.   int num;
  78.   wdata = data;
  79.   if (!check_status (_("Rename"), wdata, wdata->request->use_threads, 1, 1, 
  80.                      wdata->request->rename != NULL))
  81.     return;
  82.   templist = GTK_CLIST (wdata->listbox)->selection;
  83.   num = 0;
  84.   filelist = wdata->files;
  85.   templist = get_next_selection (templist, &filelist, &num);
  86.   curfle = filelist->data;
  87.   tempstr = g_strdup_printf (_("What would you like to rename %s to?"), 
  88.                              curfle->file);
  89.   MakeEditDialog (_("Rename"), tempstr, curfle->file, 1, NULL,
  90.                   gftp_dialog_button_rename, dorenCB, wdata, NULL, NULL);
  91.   g_free (tempstr);
  92. }