gftp-gtk.h
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:12k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. /*****************************************************************************/
  2. /*  gftp-gtk.h - include file for the gftp gtk+ 1.2 port                     */
  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., 675 Mass Ave, Cambridge, MA 02139, USA.                */
  18. /*****************************************************************************/
  19. /* $Id: gftp-gtk.h,v 1.10 2002/11/23 13:45:05 masneyb Exp $ */
  20. #ifndef __GFTP_GTK_H
  21. #define __GFTP_GTK_H
  22. #include "../../lib/gftp.h"
  23. #include <gtk/gtk.h>
  24. #include <gdk/gdkkeysyms.h>
  25. #include <pthread.h>
  26. #define IS_ONE_SELECTED(wdata) (GTK_CLIST ((wdata)->listbox)->selection && GTK_CLIST ((wdata)->listbox)->selection->next == NULL)
  27. #define IS_NONE_SELECTED(wdata) (GTK_CLIST ((wdata)->listbox)->selection == NULL)
  28. #if GTK_MAJOR_VERSION == 1
  29.   #define gtk_widget_set_size_request(widget, width, height)
  30. gtk_widget_set_usize (widget, width, height)
  31. #endif
  32. /* These 2 defines are for creating menu items with stock icons in GTK+ 2.0. 
  33.    If we are using version 1.2, it will disable the stock items since it's not
  34.    supported */
  35. #if GTK_MAJOR_VERSION < 2
  36. #define MS_(a) NULL
  37. #define MN_(a) a
  38. #else
  39. #define MS_(a) "<StockItem>",a
  40. #define MN_(a) a,NULL
  41. #endif
  42. /* These are used for the MakeEditDialog function. I have these types to make
  43.    it easier for creating dialogs with GTK+ 1.2 and GTK+ 2.0 */
  44. typedef enum gftp_dialog_button_tag
  45. {
  46.   gftp_dialog_button_create,
  47.   gftp_dialog_button_change,
  48.   gftp_dialog_button_connect,
  49.   gftp_dialog_button_rename,
  50.   gftp_dialog_button_ok
  51. } gftp_dialog_button;
  52. typedef struct gftp_window_data_tag
  53. {
  54.   GtkWidget *combo,  /* Entry widget/history for the user to enter 
  55.        a directory */
  56.             *hoststxt,  /* Show which directory we're in */
  57.             *listbox;  /* Our listbox showing the files */
  58.   unsigned int *sortcol,  /* Which column we are sorting by */
  59.                *sortasds;  /* Sorted ascending or descending */
  60.   unsigned int sorted : 1, /* Is the output sorted? */
  61.                show_selected : 1, /* Show only selected files */
  62.                *histlen; /* Pointer to length of history */
  63.   char *filespec; /* Filespec for the listbox */
  64.   gftp_request * request; /* The host that we are connected to */
  65.   GList * files, /* Files in the listbox */
  66.         ** history; /* History of the directories */
  67.   GtkItemFactory *ifactory;  /* This is for the menus that will
  68.                                    come up when you right click */
  69.   pthread_t tid; /* Thread for the stop button */
  70.   unsigned long gotbytes;
  71. } gftp_window_data;
  72. typedef struct gftp_graphic_tag
  73. {
  74.   char * filename;
  75.   GdkPixmap * pixmap;
  76.   GdkBitmap * bitmap;
  77. } gftp_graphic;
  78. typedef struct gftp_dialog_data_tag
  79. {
  80.   GtkWidget * dialog,
  81.             * checkbox,
  82.             * edit;
  83.   void (*yesfunc) ();
  84.   gpointer yespointer;
  85.   void (*nofunc) ();
  86.   gpointer nopointer;
  87. } gftp_dialog_data;
  88. typedef struct gftp_viewedit_data_tag 
  89. {
  90.    char *filename,              /* File we are viewing/editing currently */
  91.         *remote_filename;       /* The filename on the remote computer */
  92.    struct stat st;              /* Vital file statistics */
  93.    pid_t pid;                   /* Our process id */
  94.    char **argv;                 /* Our arguments we passed to execvp. We will 
  95.                                    free it when the process terminates. This 
  96.                                    is the safest place to free this */
  97.    unsigned int view : 1,       /* View or edit this file */
  98.                 rm : 1,         /* Delete this file after we're done with it */
  99.                 dontupload : 1; /* Don't upload this file after we're done
  100.    editing it */
  101.    gftp_window_data * fromwdata, /* The window we are viewing this file in */
  102.                     * towdata;
  103. } gftp_viewedit_data;
  104. typedef struct gftp_curtrans_data_tag
  105. {
  106.   gftp_transfer * transfer;
  107.   GList * curfle;
  108. } gftp_curtrans_data;
  109. typedef struct gftp_save_dir_struct_tag
  110. {
  111.   GtkWidget * filew;
  112.   gftp_window_data * wdata;
  113. } gftp_save_dir_struct;
  114. extern gftp_window_data window1, window2, * other_wdata, * current_wdata;
  115. extern GtkWidget * stop_btn, * hostedit, * useredit, * passedit,
  116.                  * portedit, * logwdw, * dlwdw, * protocol_menu, * optionmenu;
  117. extern GtkAdjustment * logwdw_vadj;
  118. #if GTK_MAJOR_VERSION > 1
  119. extern GtkTextMark * logwdw_textmark;
  120. #endif
  121. extern int local_start, remote_start, trans_start, log_start, tools_start;
  122. extern GHashTable * graphic_hash_table;
  123. extern GtkItemFactoryEntry * menus;
  124. extern GtkItemFactory * factory;
  125. extern pthread_mutex_t transfer_mutex, log_mutex;
  126. extern gftp_graphic * gftp_icon;
  127. extern sigjmp_buf jmp_environment;
  128. extern volatile int use_jmp_environment;
  129. extern pthread_t main_thread_id;
  130. /* bookmarks.c */
  131. void run_bookmark  ( gpointer data );
  132. void add_bookmark  ( gpointer data );
  133. void edit_bookmarks  ( gpointer data );
  134. void build_bookmarks_menu ( void );
  135. /* chmod_dialog.c */ 
  136. void chmod_dialog  ( gpointer data );
  137. /* delete_dialog.c */ 
  138. void delete_dialog  ( gpointer data );
  139. /* dnd.c */
  140. void openurl_get_drag_data  ( GtkWidget * widget, 
  141.   GdkDragContext * context, 
  142.   gint x,
  143.   gint y, 
  144.   GtkSelectionData * selection_data, 
  145.   guint info, 
  146.   guint32 clk_time, 
  147.   gpointer data );
  148. void listbox_drag  ( GtkWidget * widget, 
  149.   GdkDragContext * context,
  150.   GtkSelectionData * selection_data, 
  151.   guint info, 
  152.   guint32 clk_time, 
  153.   gpointer data );
  154. void listbox_get_drag_data  ( GtkWidget * widget, 
  155.   GdkDragContext * context, 
  156.   gint x,
  157.   gint y, 
  158.   GtkSelectionData * selection_data, 
  159.   guint info, 
  160.   guint32 clk_time, 
  161.   gpointer data );
  162. /* gftp-gtk.c */
  163. void toolbar_hostedit  ( GtkWidget * widget, 
  164.   gpointer data );
  165. void sortrows  ( GtkCList * clist, 
  166.   gint column, 
  167.   gpointer data );
  168. void stop_button ( GtkWidget * widget,
  169.   gpointer data );
  170. /* menu_items.c */
  171. void change_setting  ( gftp_window_data *wdata,
  172.   int menuitem,
  173.   GtkWidget * checkmenu );
  174. void tb_openurl_dialog  ( gpointer data );
  175. void openurl_dialog  ( gpointer data );
  176. void disconnect  ( gpointer data );
  177. void change_filespec  ( gpointer data );
  178. void save_directory_listing  ( gpointer data );
  179. void show_selected ( gpointer data );
  180. void selectall  ( gpointer data );
  181. void selectallfiles  ( gpointer data );
  182. void deselectall  ( gpointer data );
  183. void site_dialog  ( gpointer data );
  184. int chdir_edit ( GtkWidget * widget,
  185.   gpointer data );
  186. int chdir_dialog  ( gpointer data );
  187. void clearlog  ( gpointer data );
  188. void viewlog  ( gpointer data );
  189. void savelog  ( gpointer data );
  190. void clear_cache ( gpointer data );
  191. void options_dialog (gpointer data);
  192. void compare_windows (gpointer data);
  193. void about_dialog (gpointer data);
  194. /* misc-gtk.c */
  195. void fix_display ( void );
  196. void remove_files_window ( gftp_window_data * wdata );
  197. void ftp_log ( gftp_logging_level level,
  198.   void *ptr,
  199.   const char *string,
  200.   ... );
  201. void refresh  ( gftp_window_data * wdata );
  202. void update_window_info ( void );
  203. void update_window ( gftp_window_data * wdata );
  204. GtkWidget * toolbar_pixmap ( GtkWidget * widget,
  205.   char *filename );
  206. gftp_graphic * open_xpm ( GtkWidget * widget,
  207.   char *filename );
  208. void gftp_free_pixmap  ( char *filename ); 
  209. void gftp_get_pixmap  ( GtkWidget * widget, 
  210.   char *filename, 
  211.   GdkPixmap ** pix,
  212.   GdkBitmap ** bitmap );
  213. int check_status ( char *name,
  214.   gftp_window_data * wdata,
  215.   int check_other_stop,
  216.   int only_one,
  217.   int at_least_one,
  218.   int func );
  219. GtkItemFactory *item_factory_new                ( GtkType        container_type,
  220.   const char       *path,
  221.   GtkAccelGroup       *accel_group,
  222.   const char          *strip_prefix );
  223. void create_item_factory  ( GtkItemFactory * ifactory, 
  224.   guint n_entries, 
  225.   GtkItemFactoryEntry * entries,
  226.   gpointer callback_data );
  227. GList * get_next_selection  ( GList * selection, 
  228.   GList ** list, 
  229.   int *curnum );
  230. void add_history  ( GtkWidget * widget, 
  231.   GList ** history, 
  232.   unsigned int *histlen, 
  233.   const char *str );
  234. int check_reconnect  ( gftp_window_data * wdata );
  235. void add_file_listbox  ( gftp_window_data * wdata, 
  236.   gftp_file * fle );
  237. void MakeEditDialog  ( char *diagtxt, 
  238.   char *infotxt, 
  239.   char *deftext, 
  240.   int passwd_item,
  241.   char *checktext, 
  242.   gftp_dialog_button okbutton, 
  243.   void (*okfunc) (), 
  244.   void *okptr, 
  245.   void (*cancelfunc) (), 
  246.   void *cancelptr );
  247. void MakeYesNoDialog  ( char *diagtxt, 
  248.   char *infotxt, 
  249.   void (*yesfunc) (), 
  250.   gpointer yespointer,
  251.   void (*nofunc) (), 
  252.   gpointer nopointer );
  253. void update_directory_download_progress  ( gftp_transfer * transfer );
  254. void *generic_thread  ( void * (*func) 
  255.                                                          (void *), 
  256.   gftp_window_data * wdata );
  257. int progress_timeout  ( gpointer data );
  258. void display_cached_logs ( void );
  259. RETSIGTYPE signal_handler (int signo);
  260. /* mkdir_dialog.c */
  261. void mkdir_dialog  ( gpointer data );
  262. /* rename_dialog.c */
  263. void rename_dialog ( gpointer data );
  264. /* transfer.c */
  265. int ftp_list_files ( gftp_window_data * wdata,
  266.   int usecache );
  267. int ftp_connect ( gftp_window_data * wdata,
  268.   gftp_request * request,
  269.   int getdir );
  270. gint update_downloads  ( gpointer data );
  271. void * gftp_gtk_transfer_files  ( void *data );
  272. void get_files  ( gpointer data );
  273. void put_files  ( gpointer data );
  274. void transfer_window_files  ( gftp_window_data * fromwdata,
  275.   gftp_window_data * towdata );
  276. void *do_getdir_thread  ( void * data );
  277. void add_file_transfer  ( gftp_request * fromreq, 
  278.   gftp_request * toreq, 
  279.   gftp_window_data * fromwdata,
  280.   gftp_window_data * towdata, 
  281.   GList * files,
  282.   int copy_req );
  283. void start_transfer ( gpointer data );
  284. void stop_transfer ( gpointer data );
  285. void skip_transfer ( gpointer data );
  286. void remove_file_transfer  ( gpointer data );
  287. void move_transfer_up ( gpointer data );
  288. void move_transfer_down ( gpointer data );
  289. void gftp_gtk_ask_transfer  ( gftp_transfer * tdata );
  290. /* view_dialog.c */
  291. void edit_dialog  ( gpointer data );
  292. void view_dialog  ( gpointer data );
  293. void view_file  ( char *filename, 
  294.   int fd, 
  295.   int viewedit, 
  296.   int del_file, 
  297.   int start_pos, 
  298.   int dontupload,
  299.   char *remote_filename, 
  300.   gftp_window_data * wdata );
  301. #endif