annotate src/gtk/gftp-gtk.c @ 13:cd2e26a69461

don't allow passing a 0 to log10
author masneyb
date Fri, 30 Aug 2002 19:46:27 +0000
parents c1181ef9aaf0
children 83090328581e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
2 /* gftp-gtk.c - GTK+ 1.2 port of gftp */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
3 /* Copyright (C) 1998-2002 Brian Masney <masneyb@gftp.org> */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
4 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
5 /* This program is free software; you can redistribute it and/or modify */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
6 /* it under the terms of the GNU General Public License as published by */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
7 /* the Free Software Foundation; either version 2 of the License, or */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
8 /* (at your option) any later version. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
9 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
10 /* This program is distributed in the hope that it will be useful, */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
13 /* GNU General Public License for more details. */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
14 /* */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
15 /* You should have received a copy of the GNU General Public License */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
16 /* along with this program; if not, write to the Free Software */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
17 /* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
18 /*****************************************************************************/
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
19
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
20 #include "gftp-gtk.h"
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
21
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
22 static gint delete_event ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
23 GdkEvent * event,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
24 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
25 static void destroy ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
26 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
27 static RETSIGTYPE sig_child ( int signo );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
28 static GtkWidget * CreateFTPWindows ( GtkWidget * ui );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
29 static GtkWidget * CreateMenus ( GtkWidget * parent );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
30 static GtkWidget * CreateToolbar ( GtkWidget * parent );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
31 static void doexit ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
32 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
33 static int get_column ( GtkCListColumn * col );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
34 static void init_gftp ( int argc,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
35 char *argv[],
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
36 GtkWidget * parent );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
37 static void menu_exit ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
38 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
39 static GtkWidget * CreateFTPWindow ( gftp_window_data * wdata,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
40 int width,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
41 int columns[6] );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
42 static void setup_column ( GtkWidget * listbox,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
43 int column,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
44 int width );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
45 static gint menu_mouse_click ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
46 GdkEventButton * event,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
47 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
48 static gint list_dblclick ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
49 GdkEventButton * event,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
50 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
51 static void list_doaction ( gftp_window_data * wdata );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
52 static gint list_enter ( GtkWidget * widget,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
53 GdkEventKey * event,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
54 gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
55 static void chfunc ( gpointer data );
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
56
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
57 static GtkItemFactory *log_factory, *dl_factory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
58 static GtkWidget * local_frame, * remote_frame, * log_table, * transfer_scroll,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
59 * openurl_btn;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
60
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
61 gftp_window_data window1, window2, *other_wdata, *current_wdata;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
62 GtkWidget * stop_btn, * hostedit, * useredit, * passedit, * portedit, * logwdw,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
63 * dlwdw, * protocol_menu, * optionmenu;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
64 GtkAdjustment * logwdw_vadj;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
65 #if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION == 0
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
66 GtkTextMark * logwdw_textmark;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
67 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
68 int local_start, remote_start, trans_start, log_start, tools_start;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
69 GHashTable * graphic_hash_table = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
70 GtkItemFactoryEntry * menus = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
71 GtkItemFactory * factory = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
72 pthread_mutex_t transfer_mutex = PTHREAD_MUTEX_INITIALIZER;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
73 pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
74
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
75 int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
76 main (int argc, char **argv)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
77 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
78 GtkWidget *window, *ui;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
79 gftp_graphic * graphic;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
80
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
81 #ifdef HAVE_GETTEXT
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
82 setlocale (LC_ALL, "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
83 bindtextdomain ("gftp", LOCALE_DIR);
12
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
84 #if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION == 0
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
85 bind_textdomain_codeset ("gftp", "UTF-8");
12
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
86 #endif
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
87 textdomain ("gftp");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
88 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
89 gtk_set_locale ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
90
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
91 gtk_init (&argc, &argv);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
92 signal (SIGCHLD, sig_child);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
93 signal (SIGPIPE, SIG_IGN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
94 signal (SIGALRM, SIG_IGN);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
95 graphic_hash_table = g_hash_table_new (string_hash_function, string_hash_compare);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
96 gftp_read_config_file (argv, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
97 if (gftp_parse_command_line (&argc, &argv) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
98 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
99
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
100 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
101 gtk_signal_connect (GTK_OBJECT (window), "delete_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
102 GTK_SIGNAL_FUNC (delete_event), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
103 gtk_signal_connect (GTK_OBJECT (window), "destroy",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
104 GTK_SIGNAL_FUNC (destroy), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
105 gtk_window_set_title (GTK_WINDOW (window), version);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
106 gtk_window_set_wmclass (GTK_WINDOW(window), "main", "gFTP");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
107 gtk_widget_set_name (window, version);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
108 gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
109 gtk_widget_realize (window);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
110
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
111 graphic = open_xpm (window, "gftp.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
112 if (graphic != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
113 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
114 gdk_window_set_icon (window->window, NULL, graphic->pixmap,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
115 graphic->bitmap);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
116 gdk_window_set_icon_name (window->window, _("gFTP Icon"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
117 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
118
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
119 other_wdata = &window1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
120 current_wdata = &window2;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
121 ui = CreateFTPWindows (window);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
122 gtk_container_add (GTK_CONTAINER (window), ui);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
123 gtk_widget_show (window);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
124
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
125 ftp_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
126 "%s, Copyright (C) 1998-2002 Brian Masney <", version);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
127 ftp_log (gftp_logging_recv, NULL, "masneyb@gftp.org");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
128 ftp_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
129 _(">. If you have any questions, comments, or suggestions about this program, please feel free to email them to me. You can always find out the latest news about gFTP from my website at http://www.gftp.org/\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
130 ftp_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
131 _("gFTP comes with ABSOLUTELY NO WARRANTY; for details, see the COPYING file. This is free software, and you are welcome to redistribute it under certain conditions; for details, see the COPYING file\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
132
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
133 init_gftp (argc, argv, window);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
134 gtk_timeout_add (1000, update_downloads, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
135 gftp_protocols[GFTP_LOCAL_NUM].init (window1.request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
136 if (startup_directory != NULL && *startup_directory != '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
137 gftp_set_directory (window1.request, startup_directory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
138 gftp_connect (window1.request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
139 ftp_list_files (&window1, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
140
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
141 gtk_main ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
142 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
143 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
144
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
145
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
146 static gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
147 delete_event (GtkWidget * widget, GdkEvent * event, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
148 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
149 if (file_transfers == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
150 doexit (NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
151 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
152 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
153 MakeYesNoDialog (_("Exit"),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
154 _("There are file transfers in progress.\nAre you sure you want to exit?"),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
155 1, 2, _("Exit"), doexit, NULL, _("Don't Exit"), NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
156 NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
157 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
158 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
159 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
160 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
161
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
162
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
163 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
164 destroy (GtkWidget * widget, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
165 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
166 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
167 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
168
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
169
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
170 static RETSIGTYPE
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
171 sig_child (int signo)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
172 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
173 viewedit_process_done = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
174 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
175
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
176
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
177 static GtkWidget *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
178 CreateFTPWindows (GtkWidget * ui)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
179 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
180 GtkWidget *box, *dlbox, *winpane, *dlpane, *logpane, *mainvbox, *tempwid,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
181 *button;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
182 char *dltitles[2];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
183 #if !(GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
184 GtkTextBuffer * textbuf;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
185 GtkTextIter iter;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
186 GtkTextTag *tag;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
187 GdkColor fore;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
188 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
189
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
190 memset (&window1, 0, sizeof (window1));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
191 memset (&window2, 0, sizeof (window2));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
192 window1.history = &localhistory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
193 window1.histlen = &localhistlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
194 window2.history = &remotehistory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
195 window2.histlen = &remotehistlen;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
196
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
197 mainvbox = gtk_vbox_new (FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
198
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
199 tempwid = CreateMenus (ui);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
200 gtk_box_pack_start (GTK_BOX (mainvbox), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
201
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
202 tempwid = CreateToolbar (ui);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
203 gtk_box_pack_start (GTK_BOX (mainvbox), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
204
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
205 winpane = gtk_hpaned_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
206
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
207 box = gtk_hbox_new (FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
208
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
209 local_frame = CreateFTPWindow (&window1, listbox_local_width, local_columns);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
210 gtk_box_pack_start (GTK_BOX (box), local_frame, TRUE, TRUE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
211
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
212 dlbox = gtk_vbox_new (FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
213 gtk_container_border_width (GTK_CONTAINER (dlbox), 5);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
214 gtk_box_pack_start (GTK_BOX (box), dlbox, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
215
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
216 tempwid = toolbar_pixmap (ui, "right.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
217 button = gtk_button_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
218 gtk_box_pack_start (GTK_BOX (dlbox), button, TRUE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
219 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
220 GTK_SIGNAL_FUNC (put_files), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
221 gtk_container_add (GTK_CONTAINER (button), tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
222
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
223 tempwid = toolbar_pixmap (ui, "left.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
224 button = gtk_button_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
225 gtk_box_pack_start (GTK_BOX (dlbox), button, TRUE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
226 gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
227 GTK_SIGNAL_FUNC (get_files), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
228 gtk_container_add (GTK_CONTAINER (button), tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
229
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
230 gtk_paned_pack1 (GTK_PANED (winpane), box, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
231
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
232 remote_frame = CreateFTPWindow (&window2, listbox_remote_width,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
233 remote_columns);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
234 gtk_paned_pack2 (GTK_PANED (winpane), remote_frame, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
235
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
236 dlpane = gtk_vpaned_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
237 gtk_paned_pack1 (GTK_PANED (dlpane), winpane, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
238
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
239 transfer_scroll = gtk_scrolled_window_new (NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
240 gtk_widget_set_size_request (transfer_scroll, -1, transfer_height);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
241 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (transfer_scroll),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
242 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
243
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
244 dltitles[0] = _("Filename");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
245 dltitles[1] = _("Progress");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
246 dlwdw = gtk_ctree_new_with_titles (2, 0, dltitles);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
247 gtk_clist_set_selection_mode (GTK_CLIST (dlwdw), GTK_SELECTION_SINGLE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
248 gtk_clist_set_reorderable (GTK_CLIST (dlwdw), 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
249
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
250 if (file_trans_column == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
251 gtk_clist_set_column_auto_resize (GTK_CLIST (dlwdw), 0, TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
252 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
253 gtk_clist_set_column_width (GTK_CLIST (dlwdw), 0, file_trans_column);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
254
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
255 gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (transfer_scroll), dlwdw);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
256 gtk_signal_connect (GTK_OBJECT (dlwdw), "button_press_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
257 GTK_SIGNAL_FUNC (menu_mouse_click), (gpointer) dl_factory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
258 gtk_paned_pack2 (GTK_PANED (dlpane), transfer_scroll, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
259
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
260 logpane = gtk_vpaned_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
261 gtk_paned_pack1 (GTK_PANED (logpane), dlpane, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
262
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
263 log_table = gtk_table_new (1, 2, FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
264 gtk_widget_set_size_request (log_table, -1, log_height);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
265
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
266 #if GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 2
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
267 logwdw = gtk_text_new (NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
268
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
269 gtk_text_set_editable (GTK_TEXT (logwdw), FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
270 gtk_text_set_word_wrap (GTK_TEXT (logwdw), TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
271
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
272 gtk_table_attach (GTK_TABLE (log_table), logwdw, 0, 1, 0, 1,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
273 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND | GTK_SHRINK,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
274 0, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
275 gtk_signal_connect (GTK_OBJECT (logwdw), "button_press_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
276 GTK_SIGNAL_FUNC (menu_mouse_click),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
277 (gpointer) log_factory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
278
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
279 tempwid = gtk_vscrollbar_new (GTK_TEXT (logwdw)->vadj);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
280 gtk_table_attach (GTK_TABLE (log_table), tempwid, 1, 2, 0, 1,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
281 GTK_FILL, GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
282 logwdw_vadj = GTK_TEXT (logwdw)->vadj;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
283 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
284 logwdw = gtk_text_view_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
285 gtk_text_view_set_editable (GTK_TEXT_VIEW (logwdw), FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
286 gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (logwdw), FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
287 gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (logwdw), GTK_WRAP_WORD);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
288
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
289 textbuf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (logwdw));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
290
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
291 tag = gtk_text_buffer_create_tag (textbuf, "send", NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
292 fore.red = send_color.red;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
293 fore.green = send_color.green;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
294 fore.blue = send_color.blue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
295 g_object_set (G_OBJECT (tag), "foreground_gdk", &fore, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
296
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
297 tag = gtk_text_buffer_create_tag (textbuf, "recv", NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
298 fore.red = recv_color.red;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
299 fore.green = recv_color.green;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
300 fore.blue = recv_color.blue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
301 g_object_set (G_OBJECT (tag), "foreground_gdk", &fore, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
302
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
303 tag = gtk_text_buffer_create_tag (textbuf, "error", NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
304 fore.red = error_color.red;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
305 fore.green = error_color.green;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
306 fore.blue = error_color.blue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
307 g_object_set (G_OBJECT (tag), "foreground_gdk", &fore, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
308
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
309 tag = gtk_text_buffer_create_tag (textbuf, "misc", NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
310 fore.red = misc_color.red;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
311 fore.green = misc_color.green;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
312 fore.blue = misc_color.blue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
313 g_object_set (G_OBJECT (tag), "foreground_gdk", &fore, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
314
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
315 tempwid = gtk_scrolled_window_new (NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
316 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (tempwid),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
317 GTK_POLICY_AUTOMATIC,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
318 GTK_POLICY_AUTOMATIC);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
319 gtk_container_add (GTK_CONTAINER (tempwid), logwdw);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
320 gtk_table_attach (GTK_TABLE (log_table), tempwid, 0, 1, 0, 1,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
321 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND | GTK_SHRINK,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
322 0, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
323 logwdw_vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (tempwid));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
324 gtk_text_buffer_get_iter_at_offset (textbuf, &iter, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
325 logwdw_textmark = gtk_text_buffer_create_mark (textbuf, "end", &iter, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
326 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
327 gtk_paned_pack2 (GTK_PANED (logpane), log_table, 1, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
328 gtk_box_pack_start (GTK_BOX (mainvbox), logpane, TRUE, TRUE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
329
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
330 gtk_widget_show_all (mainvbox);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
331 return (mainvbox);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
332 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
333
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
334
12
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
335 #if GTK_MAJOR_VERSION < 2
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
336 #define MS_(a) NULL
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
337 #define MN_(a) a
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
338 #else
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
339 #define MS_(a) "<StockItem>",a
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
340 #define MN_(a) a,NULL
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
341 #endif
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
342
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
343 static GtkWidget *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
344 CreateMenus (GtkWidget * parent)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
345 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
346 int local_len, remote_len, len, i, trans_len, log_len, tools_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
347 GtkAccelGroup *accel_group;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
348 GtkWidget * tempwid;
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
349 static GtkItemFactoryEntry menu_items[] = {
12
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
350 {N_("/_FTP"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
351 {N_("/FTP/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
352 {N_("/FTP/Window 1"), NULL, change_setting, 3, MN_("<RadioItem>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
353 {N_("/FTP/Window 2"), NULL, change_setting, 4, MN_("/FTP/Window 1")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
354 {N_("/FTP/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
355 {N_("/FTP/Ascii"), NULL, change_setting, 1, MN_("<RadioItem>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
356 {N_("/FTP/Binary"), NULL, change_setting, 2, MN_("/FTP/Ascii")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
357 {N_("/FTP/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
358 {N_("/FTP/_Options..."), "<control>O", options_dialog, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
359 MS_(GTK_STOCK_PREFERENCES)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
360 {N_("/FTP/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
361 {N_("/FTP/_Quit"), "<control>Q", menu_exit, 0, MS_(GTK_STOCK_QUIT)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
362 {N_("/_Local"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
363 {N_("/Local/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
364 {N_("/Local/Open _URL..."), NULL, openurl_dialog, 0, MS_(GTK_STOCK_OPEN)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
365 {N_("/Local/Disconnect"), NULL, disconnect, 0, MS_(GTK_STOCK_CLOSE)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
366 {N_("/Local/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
367 {N_("/Local/Change Filespec..."), NULL, change_filespec, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
368 {N_("/Local/Show selected"), NULL, show_selected, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
369 {N_("/Local/Select All"), NULL, selectall, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
370 {N_("/Local/Select All Files"), NULL, selectallfiles, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
371 {N_("/Local/Deselect All"), NULL, deselectall, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
372 {N_("/Local/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
373 {N_("/Local/Send SITE Command..."), NULL, site_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
374 {N_("/Local/Change Directory"), NULL, chfunc, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
375 {N_("/Local/Chmod..."), NULL, chmod_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
376 {N_("/Local/Make Directory..."), NULL, mkdir_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
377 {N_("/Local/Rename..."), NULL, rename_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
378 {N_("/Local/Delete..."), NULL, delete_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
379 {N_("/Local/Edit..."), NULL, edit_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
380 {N_("/Local/View..."), NULL, view_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
381 {N_("/Local/Refresh"), NULL, refresh, 0, MS_(GTK_STOCK_REFRESH)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
382 {N_("/_Remote"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
383 {N_("/Remote/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
384 {N_("/Remote/Open _URL..."), "<control>U", openurl_dialog, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
385 MS_(GTK_STOCK_OPEN)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
386 {N_("/Remote/Disconnect"), "<control>D", disconnect, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
387 MS_(GTK_STOCK_CLOSE)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
388 {N_("/Remote/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
389 {N_("/Remote/Change Filespec..."), NULL, change_filespec, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
390 {N_("/Remote/Show selected"), NULL, show_selected, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
391 {N_("/Remote/Select All"), NULL, selectall, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
392 {N_("/Remote/Select All Files"), NULL, selectallfiles, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
393 {N_("/Remote/Deselect All"), NULL, deselectall, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
394 {N_("/Remote/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
395 {N_("/Remote/Send SITE Command..."), NULL, site_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
396 {N_("/Remote/Change Directory"), NULL, chfunc, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
397 {N_("/Remote/Chmod..."), NULL, chmod_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
398 {N_("/Remote/Make Directory..."), NULL, mkdir_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
399 {N_("/Remote/Rename..."), NULL, rename_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
400 {N_("/Remote/Delete..."), NULL, delete_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
401 {N_("/Remote/Edit..."), NULL, edit_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
402 {N_("/Remote/View..."), NULL, view_dialog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
403 {N_("/Remote/Refresh"), NULL, refresh, 0, MS_(GTK_STOCK_REFRESH)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
404 {N_("/_Bookmarks"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
405 {N_("/Bookmarks/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
406 {N_("/Bookmarks/Add bookmark"), "<control>A", add_bookmark, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
407 MS_(GTK_STOCK_ADD)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
408 {N_("/Bookmarks/Edit bookmarks"), NULL, edit_bookmarks, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
409 {N_("/Bookmarks/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
410 {N_("/_Transfers"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
411 {N_("/Transfers/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
412 {N_("/Transfers/Start Transfer"), NULL, start_transfer, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
413 {N_("/Transfers/Stop Transfer"), NULL, stop_transfer, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
414 MS_(GTK_STOCK_STOP)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
415 {N_("/Transfers/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
416 {N_("/Transfers/Skip Current File"), NULL, skip_transfer, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
417 {N_("/Transfers/Remove File"), NULL, remove_file_transfer, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
418 MS_(GTK_STOCK_DELETE)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
419 {N_("/Transfers/Move File _Up"), NULL, move_transfer_up, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
420 MS_(GTK_STOCK_GO_UP)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
421 {N_("/Transfers/Move File _Down"), NULL, move_transfer_down, 0,
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
422 MS_(GTK_STOCK_GO_DOWN)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
423 {N_("/Transfers/sep"), NULL, 0, 0, MN_("<Separator>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
424 {N_("/Transfers/Retrieve Files"), "<control>R", get_files, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
425 {N_("/Transfers/Put Files"), "<control>P", put_files, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
426 {N_("/L_ogging"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
427 {N_("/Logging/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
428 {N_("/Logging/Clear"), NULL, clearlog, 0, MS_(GTK_STOCK_CLEAR)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
429 {N_("/Logging/View log..."), NULL, viewlog, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
430 {N_("/Logging/Save log..."), NULL, savelog, 0, MS_(GTK_STOCK_SAVE)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
431 {N_("/Tool_s"), NULL, 0, 0, MN_("<Branch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
432 {N_("/Tools/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
433 {N_("/Tools/Compare Windows"), NULL, compare_windows, 0, MN_(NULL)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
434 {N_("/Tools/Clear Cache"), NULL, clear_cache, 0, MS_(GTK_STOCK_CLEAR)},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
435 {N_("/_Help"), NULL, 0, 0, MN_("<LastBranch>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
436 {N_("/Help/tearoff"), NULL, 0, 0, MN_("<Tearoff>")},
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
437 {N_("/Help/About..."), NULL, about_dialog, 0, MS_(GTK_STOCK_HELP)}
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
438 };
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
439
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
440 menus = menu_items;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
441
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
442 accel_group = gtk_accel_group_new ();
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
443 factory = item_factory_new (GTK_TYPE_MENU_BAR, "<main>", accel_group, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
444
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
445 i = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
446 len = 11;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
447 /* FTP Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
448 create_item_factory (factory, len, menu_items, &window2);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
449
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
450 i += len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
451 /* Local Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
452 local_start = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
453 local_len = 20;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
454 create_item_factory (factory, local_len, menu_items + i, &window1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
455
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
456 i += local_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
457 /* Remote Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
458 remote_start = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
459 remote_len = 20;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
460 create_item_factory (factory, remote_len, menu_items + i, &window2);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
461
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
462 i += remote_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
463 len = 5;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
464 /* Bookmarks Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
465 create_item_factory (factory, len, menu_items + i, &window2);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
466
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
467 i += len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
468 /* Transfers Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
469 trans_start = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
470 trans_len = 12;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
471 create_item_factory (factory, trans_len, menu_items + i, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
472
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
473 i += trans_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
474 /* Logging Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
475 log_start = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
476 log_len = 5;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
477 create_item_factory (factory, log_len, menu_items + i, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
478
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
479 i += log_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
480 /* Tools Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
481 tools_start = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
482 tools_len = 4;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
483 create_item_factory (factory, tools_len, menu_items + i, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
484
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
485 i += tools_len;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
486 /* Help Menu */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
487 create_item_factory (factory, 3, menu_items + i, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
488
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
489 build_bookmarks_menu ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
490
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
491 #if GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 2
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
492 gtk_accel_group_attach (accel_group, GTK_OBJECT (parent));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
493 #else
12
c1181ef9aaf0 * Patches from Nam SungHyun <namsh@kldp.org>
masneyb
parents: 7
diff changeset
494 _gtk_accel_group_attach (accel_group, G_OBJECT (parent));
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
495 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
496
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
497 tempwid = gtk_item_factory_get_widget (factory, menu_items[6].path);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
498 gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (tempwid), TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
499
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
500 tempwid = gtk_item_factory_get_widget (factory, menu_items[3].path);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
501 gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (tempwid), TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
502
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
503 window1.ifactory = item_factory_new (GTK_TYPE_MENU, "<local>", NULL, "/Local");
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
504 create_item_factory (window1.ifactory, local_len - 2, menu_items + local_start + 2, &window1);
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
505
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
506 window2.ifactory = item_factory_new (GTK_TYPE_MENU, "<remote>", NULL, "/Remote");
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
507 create_item_factory (window2.ifactory, remote_len - 2, menu_items + remote_start + 2, &window2);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
508
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
509 log_factory = item_factory_new (GTK_TYPE_MENU, "<log>", NULL, "/Logging");
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
510 create_item_factory (log_factory, log_len - 2, menu_items + log_start + 2, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
511
7
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
512 dl_factory = item_factory_new (GTK_TYPE_MENU, "<download>", NULL, "/Transfers");
5551ab2301fe * Fixed a DND crash
masneyb
parents: 1
diff changeset
513 create_item_factory (dl_factory, trans_len - 2, menu_items + trans_start + 2, NULL);
1
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
514
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
515 return (factory->widget);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
516 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
517
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
518
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
519 static GtkWidget *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
520 CreateToolbar (GtkWidget * parent)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
521 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
522 const GtkTargetEntry possible_types[] = {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
523 {"STRING", 0, 0},
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
524 {"text/plain", 0, 0},
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
525 {"application/x-rootwin-drop", 0, 1}
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
526 };
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
527 GtkWidget *toolbar, *box, *tempwid;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
528 int i, num;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
529
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
530 toolbar = gtk_handle_box_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
531
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
532 box = gtk_hbox_new (FALSE, 4);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
533 gtk_container_add (GTK_CONTAINER (toolbar), box);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
534 gtk_container_border_width (GTK_CONTAINER (box), 5);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
535
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
536 tempwid = toolbar_pixmap (parent, "connect.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
537 openurl_btn = gtk_button_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
538 gtk_container_add (GTK_CONTAINER (openurl_btn), tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
539 gtk_signal_connect_object (GTK_OBJECT (openurl_btn), "clicked",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
540 GTK_SIGNAL_FUNC (tb_openurl_dialog), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
541 gtk_signal_connect (GTK_OBJECT (openurl_btn), "drag_data_received",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
542 GTK_SIGNAL_FUNC (openurl_get_drag_data), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
543 gtk_drag_dest_set (openurl_btn, GTK_DEST_DEFAULT_ALL, possible_types, 2,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
544 GDK_ACTION_COPY | GDK_ACTION_MOVE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
545 gtk_container_border_width (GTK_CONTAINER (openurl_btn), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
546 gtk_box_pack_start (GTK_BOX (box), openurl_btn, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
547
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
548 tempwid = gtk_label_new (_("Host: "));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
549 gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
550
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
551 hostedit = gtk_combo_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
552 gtk_combo_set_case_sensitive (GTK_COMBO (hostedit), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
553 gtk_widget_set_size_request (hostedit, 130, -1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
554
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
555 gtk_signal_connect (GTK_OBJECT (GTK_COMBO (hostedit)->entry), "activate",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
556 GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
557 if (host_history)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
558 gtk_combo_set_popdown_strings (GTK_COMBO (hostedit), host_history);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
559 gtk_combo_disable_activate (GTK_COMBO (hostedit));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
560 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (hostedit)->entry), "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
561 gtk_box_pack_start (GTK_BOX (box), hostedit, TRUE, TRUE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
562
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
563 tempwid = gtk_label_new (_("Port: "));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
564 gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
565
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
566 portedit = gtk_combo_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
567 gtk_combo_set_case_sensitive (GTK_COMBO (portedit), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
568 gtk_widget_set_size_request (portedit, 40, -1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
569
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
570 gtk_signal_connect (GTK_OBJECT (GTK_COMBO (portedit)->entry), "activate",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
571 GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
572 if (port_history)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
573 gtk_combo_set_popdown_strings (GTK_COMBO (portedit), port_history);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
574 gtk_combo_disable_activate (GTK_COMBO (portedit));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
575 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (portedit)->entry), "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
576 gtk_box_pack_start (GTK_BOX (box), portedit, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
577
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
578 tempwid = gtk_label_new (_("User: "));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
579 gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
580
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
581 useredit = gtk_combo_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
582 gtk_combo_set_case_sensitive (GTK_COMBO (useredit), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
583 gtk_widget_set_size_request (useredit, 75, -1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
584
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
585 gtk_signal_connect (GTK_OBJECT (GTK_COMBO (useredit)->entry), "activate",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
586 GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
587 if (user_history)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
588 gtk_combo_set_popdown_strings (GTK_COMBO (useredit), user_history);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
589 gtk_combo_disable_activate (GTK_COMBO (useredit));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
590 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (useredit)->entry), "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
591 gtk_box_pack_start (GTK_BOX (box), useredit, TRUE, TRUE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
592
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
593 tempwid = gtk_label_new (_("Pass: "));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
594 gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
595
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
596 passedit = gtk_entry_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
597 gtk_widget_set_size_request (passedit, 55, -1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
598
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
599 gtk_entry_set_visibility (GTK_ENTRY (passedit), FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
600 gtk_signal_connect (GTK_OBJECT (passedit), "activate",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
601 GTK_SIGNAL_FUNC (toolbar_hostedit), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
602 gtk_box_pack_start (GTK_BOX (box), passedit, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
603
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
604 tempwid = gtk_vbox_new (FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
605 gtk_box_pack_start (GTK_BOX (box), tempwid, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
606
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
607 optionmenu = gtk_option_menu_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
608 gtk_box_pack_start (GTK_BOX (tempwid), optionmenu, TRUE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
609
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
610 num = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
611 protocol_menu = gtk_menu_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
612 for (i = 0; gftp_protocols[i].name; i++)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
613 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
614 if (!gftp_protocols[i].shown)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
615 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
616
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
617 if (strcmp (gftp_protocols[i].name, default_protocol) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
618 num = i;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
619
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
620 tempwid = gtk_menu_item_new_with_label (gftp_protocols[i].name);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
621 gtk_object_set_user_data (GTK_OBJECT (tempwid), (gpointer) i);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
622 gtk_menu_append (GTK_MENU (protocol_menu), tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
623 gtk_widget_show (tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
624 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
625 gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenu), protocol_menu);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
626 gtk_option_menu_set_history (GTK_OPTION_MENU (optionmenu), num);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
627
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
628 tempwid = toolbar_pixmap (parent, "stop.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
629 stop_btn = gtk_button_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
630 gtk_container_add (GTK_CONTAINER (stop_btn), tempwid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
631 gtk_widget_set_sensitive (stop_btn, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
632 gtk_signal_connect_object (GTK_OBJECT (stop_btn), "clicked",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
633 GTK_SIGNAL_FUNC (stop_button), NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
634 gtk_container_border_width (GTK_CONTAINER (stop_btn), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
635 gtk_box_pack_start (GTK_BOX (box), stop_btn, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
636
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
637 return (toolbar);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
638 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
639
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
640
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
641 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
642 doexit (GtkWidget * widget, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
643 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
644 listbox_local_width = GTK_WIDGET (local_frame)->allocation.width;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
645 listbox_remote_width = GTK_WIDGET (remote_frame)->allocation.width;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
646 listbox_file_height = GTK_WIDGET (remote_frame)->allocation.height;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
647 log_height = GTK_WIDGET (log_table)->allocation.height;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
648 transfer_height = GTK_WIDGET (transfer_scroll)->allocation.height;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
649
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
650 local_columns[0] = get_column (&GTK_CLIST (window1.listbox)->column[1]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
651 local_columns[1] = get_column (&GTK_CLIST (window1.listbox)->column[2]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
652 local_columns[2] = get_column (&GTK_CLIST (window1.listbox)->column[3]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
653 local_columns[3] = get_column (&GTK_CLIST (window1.listbox)->column[4]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
654 local_columns[4] = get_column (&GTK_CLIST (window1.listbox)->column[5]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
655 local_columns[5] = get_column (&GTK_CLIST (window1.listbox)->column[6]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
656
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
657 remote_columns[0] = get_column (&GTK_CLIST (window2.listbox)->column[1]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
658 remote_columns[1] = get_column (&GTK_CLIST (window2.listbox)->column[2]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
659 remote_columns[2] = get_column (&GTK_CLIST (window2.listbox)->column[3]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
660 remote_columns[3] = get_column (&GTK_CLIST (window2.listbox)->column[4]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
661 remote_columns[4] = get_column (&GTK_CLIST (window2.listbox)->column[5]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
662 remote_columns[5] = get_column (&GTK_CLIST (window2.listbox)->column[6]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
663
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
664 file_trans_column = get_column (&GTK_CLIST (dlwdw)->column[0]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
665
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
666 gftp_write_config_file ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
667 gftp_clear_cache_files ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
668 exit (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
669 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
670
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
671
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
672 static int
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
673 get_column (GtkCListColumn * col)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
674 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
675 if (col->auto_resize)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
676 return (0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
677 else if (!col->visible)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
678 return (-1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
679 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
680 return (col->width);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
681 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
682
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
683
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
684 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
685 init_gftp (int argc, char *argv[], GtkWidget * parent)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
686 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
687 GtkWidget *sort_wid;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
688
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
689 if (window1.sortasds)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
690 sort_wid = toolbar_pixmap (parent, "down.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
691 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
692 sort_wid = toolbar_pixmap (parent, "up.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
693 gtk_clist_set_column_widget (GTK_CLIST (window1.listbox), 0, sort_wid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
694
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
695 if (window2.sortasds)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
696 sort_wid = toolbar_pixmap (parent, "down.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
697 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
698 sort_wid = toolbar_pixmap (parent, "up.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
699 gtk_clist_set_column_widget (GTK_CLIST (window2.listbox), 0, sort_wid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
700
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
701 if (argc == 2 && strncmp (argv[1], "--", 2) != 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
702 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
703 if (gftp_parse_url (window2.request, argv[1]) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
704 ftp_connect (&window2, window2.request, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
705 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
706 gftp_usage ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
707 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
708 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
709
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
710
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
711 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
712 menu_exit (GtkWidget * widget, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
713 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
714 if (!delete_event (widget, NULL, data))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
715 doexit (widget, data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
716 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
717
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
718
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
719 static GtkWidget *
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
720 CreateFTPWindow (gftp_window_data * wdata, int width, int columns[6])
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
721 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
722 const GtkTargetEntry possible_types[] = {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
723 {"STRING", 0, 0},
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
724 {"text/plain", 0, 0},
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
725 {"application/x-rootwin-drop", 0, 1}
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
726 };
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
727 GtkWidget *box, *scroll_list, *parent;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
728 char *titles[7];
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
729
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
730 titles[0] = "";
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
731 titles[1] = _("Filename");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
732 titles[2] = _("Size");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
733 titles[3] = _("User");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
734 titles[4] = _("Group");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
735 titles[5] = _("Date");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
736 titles[6] = _("Attribs");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
737
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
738 wdata->request = gftp_request_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
739 wdata->request->logging_function = ftp_log;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
740 wdata->filespec = g_malloc0 (2);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
741 *wdata->filespec = '*';
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
742 wdata->sortcol = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
743 wdata->sortasds = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
744
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
745 parent = gtk_frame_new (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
746 gtk_widget_set_size_request (parent, width, listbox_file_height);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
747
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
748 gtk_container_border_width (GTK_CONTAINER (parent), 5);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
749
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
750 box = gtk_vbox_new (FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
751 gtk_container_border_width (GTK_CONTAINER (box), 5);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
752 gtk_container_add (GTK_CONTAINER (parent), box);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
753
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
754 wdata->combo = gtk_combo_new ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
755 gtk_combo_set_case_sensitive (GTK_COMBO (wdata->combo), 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
756 gtk_box_pack_start (GTK_BOX (box), wdata->combo, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
757 gtk_signal_connect (GTK_OBJECT (GTK_COMBO (wdata->combo)->entry),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
758 "activate", GTK_SIGNAL_FUNC (chdir_edit),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
759 (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
760 if (*wdata->history)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
761 gtk_combo_set_popdown_strings (GTK_COMBO (wdata->combo), *wdata->history);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
762 gtk_combo_disable_activate (GTK_COMBO (wdata->combo));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
763 gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (wdata->combo)->entry), "");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
764
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
765 wdata->hoststxt = gtk_label_new (NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
766 gtk_misc_set_alignment (GTK_MISC (wdata->hoststxt), 0, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
767 gtk_box_pack_start (GTK_BOX (box), wdata->hoststxt, FALSE, FALSE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
768
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
769 scroll_list = gtk_scrolled_window_new (NULL, NULL);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
770 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_list),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
771 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
772 wdata->listbox = gtk_clist_new_with_titles (7, titles);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
773 gtk_container_add (GTK_CONTAINER (scroll_list), wdata->listbox);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
774 gtk_drag_source_set (wdata->listbox, GDK_BUTTON1_MASK, possible_types, 3,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
775 GDK_ACTION_COPY | GDK_ACTION_MOVE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
776 gtk_drag_dest_set (wdata->listbox, GTK_DEST_DEFAULT_ALL, possible_types, 2,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
777 GDK_ACTION_COPY | GDK_ACTION_MOVE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
778
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
779 gtk_clist_set_selection_mode (GTK_CLIST (wdata->listbox),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
780 GTK_SELECTION_EXTENDED);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
781
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
782 gtk_clist_set_column_width (GTK_CLIST (wdata->listbox), 0, 16);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
783 gtk_clist_set_column_justification (GTK_CLIST (wdata->listbox), 0,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
784 GTK_JUSTIFY_CENTER);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
785 setup_column (wdata->listbox, 1, columns[0]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
786 gtk_clist_set_column_justification (GTK_CLIST (wdata->listbox), 2,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
787 GTK_JUSTIFY_RIGHT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
788 setup_column (wdata->listbox, 2, columns[1]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
789 setup_column (wdata->listbox, 3, columns[2]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
790 setup_column (wdata->listbox, 4, columns[3]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
791 setup_column (wdata->listbox, 5, columns[4]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
792 setup_column (wdata->listbox, 6, columns[5]);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
793 gtk_box_pack_start (GTK_BOX (box), scroll_list, TRUE, TRUE, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
794 gtk_signal_connect (GTK_OBJECT (wdata->listbox), "click_column",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
795 GTK_SIGNAL_FUNC (sortrows), (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
796 gtk_signal_connect (GTK_OBJECT (wdata->listbox), "drag_data_get",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
797 GTK_SIGNAL_FUNC (listbox_drag), (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
798 gtk_signal_connect (GTK_OBJECT (wdata->listbox), "drag_data_received",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
799 GTK_SIGNAL_FUNC (listbox_get_drag_data),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
800 (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
801 gtk_signal_connect_after (GTK_OBJECT (wdata->listbox), "key_press_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
802 GTK_SIGNAL_FUNC (list_enter), (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
803 #if GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 2
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
804 gtk_signal_connect_after (GTK_OBJECT (wdata->listbox), "button_press_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
805 GTK_SIGNAL_FUNC (list_dblclick), (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
806 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
807 g_signal_connect_after (G_OBJECT (wdata->listbox), "button_release_event",
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
808 G_CALLBACK (list_dblclick), (gpointer) wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
809 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
810 return (parent);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
811 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
812
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
813
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
814 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
815 setup_column (GtkWidget * listbox, int column, int width)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
816 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
817 if (width == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
818 gtk_clist_set_column_auto_resize (GTK_CLIST (listbox), column, TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
819 else if (width == -1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
820 gtk_clist_set_column_visibility (GTK_CLIST (listbox), column, FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
821 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
822 gtk_clist_set_column_width (GTK_CLIST (listbox), column, width);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
823 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
824
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
825
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
826 static gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
827 menu_mouse_click (GtkWidget * widget, GdkEventButton * event, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
828 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
829 GtkItemFactory *factory;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
830
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
831 factory = (GtkItemFactory *) data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
832 if (event->button == 3)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
833 gtk_item_factory_popup (factory, (guint) event->x_root,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
834 (guint) event->y_root, 3, event->time);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
835 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
836 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
837
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
838
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
839 static gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
840 list_dblclick (GtkWidget * widget, GdkEventButton * event, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
841 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
842 gftp_window_data * wdata;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
843
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
844 wdata = data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
845 if (event->button == 3)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
846 gtk_item_factory_popup (wdata->ifactory, (guint) event->x_root,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
847 (guint) event->y_root, 3, event->time);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
848 else if (!GFTP_IS_CONNECTED (wdata->request) || !IS_ONE_SELECTED (wdata))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
849 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
850
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
851 #if GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 2
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
852 if (event->type == GDK_2BUTTON_PRESS && event->button == 1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
853 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
854 list_doaction (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
855 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
856 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
857 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
858 #else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
859 /* If we're using GTK 2.0, if I connect to the button_press_event signal,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
860 whenever I get the GDK_2BUTTON_PRESS event, nothing is selected inside
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
861 the clist. But if I connect_after to the button_release_event, it seems
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
862 to only get called when we double click */
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
863 if (event->button == 1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
864 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
865 list_doaction (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
866 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
867 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
868 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
869 #endif
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
870 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
871
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
872
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
873 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
874 list_doaction (gftp_window_data * wdata)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
875 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
876 GList *templist, *filelist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
877 int num, dir, success;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
878 gftp_file *tempfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
879
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
880 filelist = g_list_first (wdata->files);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
881 templist = GTK_CLIST (wdata->listbox)->selection;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
882 num = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
883 templist = get_next_selection (templist, &filelist, &num);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
884 tempfle = (gftp_file *) filelist->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
885
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
886 dir = tempfle->isdir;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
887 success = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
888
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
889 if (tempfle->islink || tempfle->isdir)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
890 success = chdir_dialog (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
891
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
892 if (!dir && !success)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
893 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
894 switch (listbox_dblclick_action)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
895 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
896 case 0:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
897 view_dialog (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
898 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
899 case 1:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
900 edit_dialog (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
901 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
902 case 2:
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
903 if (wdata == &window2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
904 get_files (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
905 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
906 put_files (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
907 break;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
908 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
909 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
910 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
911
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
912
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
913 static gint
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
914 list_enter (GtkWidget * widget, GdkEventKey * event, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
915 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
916 gftp_window_data * wdata;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
917
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
918 wdata = data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
919 if (!GFTP_IS_CONNECTED (wdata->request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
920 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
921
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
922 if (event->type == GDK_KEY_PRESS &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
923 (event->keyval == GDK_KP_Delete || event->keyval == GDK_Delete))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
924 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
925 delete_dialog (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
926 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
927 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
928 else if (IS_ONE_SELECTED (wdata) && event->type == GDK_KEY_PRESS &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
929 event->keyval == GDK_Return)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
930 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
931 list_doaction (wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
932 return (FALSE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
933 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
934 return (TRUE);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
935 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
936
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
937
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
938 static void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
939 chfunc (gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
940 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
941 chdir_dialog (data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
942 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
943
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
944
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
945 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
946 toolbar_hostedit (GtkWidget * widget, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
947 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
948 void (*init) (gftp_request * request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
949 GtkWidget *tempwid;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
950 const char *txt;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
951 int num;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
952
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
953 if (current_wdata->request->stopable)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
954 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
955 ftp_log (gftp_logging_misc, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
956 _("%s: Please hit the stop button first to do anything else\n"),
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
957 _("Connect"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
958 return;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
959 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
960
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
961 if (GFTP_IS_CONNECTED (current_wdata->request))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
962 disconnect (current_wdata);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
963
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
964 tempwid = gtk_menu_get_active (GTK_MENU (protocol_menu));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
965 num = (int) gtk_object_get_user_data (GTK_OBJECT (tempwid));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
966 init = gftp_protocols[num].init;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
967 init (current_wdata->request);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
968
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
969 gftp_set_hostname (current_wdata->request, gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (hostedit)->entry)));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
970 alltrim (current_wdata->request->hostname);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
971
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
972 if (current_wdata->request->need_hostport &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
973 *current_wdata->request->hostname == '\0')
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
974 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
975 ftp_log (gftp_logging_error, NULL,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
976 _("Error: You must type in a host to connect to\n"));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
977 return;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
978 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
979
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
980 add_history (hostedit, &host_history, &host_len,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
981 current_wdata->request->hostname);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
982
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
983 if (strchr (current_wdata->request->hostname, '/') != NULL &&
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
984 gftp_parse_url (current_wdata->request,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
985 current_wdata->request->hostname) == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
986 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
987 ftp_connect (current_wdata, current_wdata->request, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
988 return;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
989 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
990
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
991 txt = gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (portedit)->entry));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
992 gftp_set_port (current_wdata->request, strtol (txt, NULL, 10));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
993 add_history (portedit, &port_history, &port_len, txt);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
994
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
995 gftp_set_username (current_wdata->request, gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (useredit)->entry)));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
996 alltrim (current_wdata->request->username);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
997
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
998 add_history (useredit, &user_history, &user_len,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
999 current_wdata->request->username);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1000
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1001 gftp_set_password (current_wdata->request,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1002 gtk_entry_get_text (GTK_ENTRY (passedit)));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1003
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1004 gftp_set_directory (current_wdata->request, gtk_entry_get_text (GTK_ENTRY (GTK_COMBO (current_wdata->combo)->entry)));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1005 alltrim (current_wdata->request->directory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1006
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1007 add_history (current_wdata->combo, current_wdata->history,
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1008 current_wdata->histlen, current_wdata->request->directory);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1009
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1010 ftp_connect (current_wdata, current_wdata->request, 1);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1011 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1012
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1013
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1014 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1015 sortrows (GtkCList * clist, gint column, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1016 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1017 GList *templist, *curlist, *files, *dirs, *dotdot;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1018 gftp_file * tempfle, * curfle;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1019 gftp_window_data * wdata;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1020 GtkWidget *sort_wid;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1021 int sortdir, pos;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1022
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1023 wdata = data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1024 if (wdata->files == NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1025 return;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1026
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1027 if (!check_status (_("Sort"), wdata, 0, 0, 0, 1))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1028 return;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1029
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1030 gtk_label_set (GTK_LABEL (wdata->hoststxt), _("Sorting..."));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1031 fix_display ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1032
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1033 curlist = wdata->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1034 templist = GTK_CLIST (wdata->listbox)->selection;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1035 pos = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1036 while (curlist != NULL && templist != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1037 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1038 templist = get_next_selection (templist, &curlist, &pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1039 tempfle = curlist->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1040 tempfle->was_sel = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1041 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1042
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1043 if (column == 0 || (column == wdata->sortcol && wdata->sorted))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1044 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1045 wdata->sortasds = !wdata->sortasds;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1046 column = wdata->sortcol;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1047 sort_wid = gtk_clist_get_column_widget (clist, 0);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1048 gtk_widget_destroy (sort_wid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1049 if (wdata->sortasds)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1050 sort_wid = toolbar_pixmap (wdata->listbox, "down.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1051 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1052 sort_wid = toolbar_pixmap (wdata->listbox, "up.xpm");
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1053 gtk_clist_set_column_widget (clist, 0, sort_wid);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1054 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1055 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1056 wdata->sortcol = column;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1057 sortdir = wdata->sortasds;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1058 dirs = files = dotdot = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1059 while (wdata->files != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1060 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1061 curlist = wdata->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1062 curfle = curlist->data;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1063 wdata->files = g_list_remove_link (wdata->files, curlist);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1064 if (strcmp (curfle->file, "..") == 0)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1065 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1066 dotdot = curlist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1067 continue;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1068 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1069 templist = sort_dirs_first && curfle->isdir ? dirs : files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1070 pos = 0;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1071 tempfle = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1072 if (column == 1)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1073 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1074 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1075 && (sortdir ? strcmp (tempfle->file, curfle->file) <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1076 0 : strcmp (tempfle->file, curfle->file) >= 0))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1077 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1078 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1079 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1080 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1081 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1082 else if (column == 2)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1083 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1084 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1085 && (sortdir ? tempfle->size <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1086 curfle->size : tempfle->size >= curfle->size))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1087 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1088 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1089 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1090 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1091 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1092 else if (column == 3)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1093 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1094 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1095 && (sortdir ? strcmp (tempfle->user, curfle->user) <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1096 0 : strcmp (tempfle->user, curfle->user) >= 0))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1097 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1098 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1099 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1100 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1101 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1102 else if (column == 4)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1103 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1104 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1105 && (sortdir ? strcmp (tempfle->group, curfle->group) <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1106 0 : strcmp (tempfle->group, curfle->group) >= 0))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1107 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1108 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1109 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1110 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1111 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1112 else if (column == 5)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1113 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1114 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1115 && (sortdir ? tempfle->datetime <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1116 curfle->datetime : tempfle->datetime >= curfle->datetime))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1117 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1118 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1119 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1120 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1121 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1122 else if (column == 6)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1123 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1124 while (templist != NULL && (tempfle = templist->data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1125 && (sortdir ? strcmp (tempfle->attribs, curfle->attribs) <=
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1126 0 : strcmp (tempfle->attribs, curfle->attribs) >= 0))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1127 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1128 pos++;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1129 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1130 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1131 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1132 if (sort_dirs_first && curfle->isdir)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1133 dirs = g_list_insert (dirs, curfle, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1134 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1135 files = g_list_insert (files, curfle, pos);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1136 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1137
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1138 gtk_clist_freeze (clist);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1139 gtk_clist_clear (clist);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1140 wdata->files = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1141 if (dotdot != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1142 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1143 dotdot->next = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1144 wdata->files = dotdot;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1145 add_file_listbox (wdata, dotdot->data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1146 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1147
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1148 templist = NULL;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1149 if (dirs != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1150 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1151 if (wdata->files != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1152 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1153 wdata->files->next = dirs;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1154 dirs->prev = wdata->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1155 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1156 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1157 wdata->files = dirs;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1158
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1159 templist = dirs;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1160 while (templist->next != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1161 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1162 add_file_listbox (wdata, templist->data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1163 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1164 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1165 add_file_listbox (wdata, templist->data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1166 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1167
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1168 if (files != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1169 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1170 if (templist != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1171 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1172 templist->next = files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1173 files->prev = templist;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1174 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1175 else if (wdata->files != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1176 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1177 wdata->files->next = files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1178 files->prev = wdata->files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1179 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1180 else
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1181 wdata->files = files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1182
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1183 templist = files;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1184 while (templist != NULL)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1185 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1186 add_file_listbox (wdata, templist->data);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1187 templist = templist->next;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1188 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1189 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1190
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1191 wdata->sorted = 1;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1192 gtk_clist_thaw (clist);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1193 update_window_info ();
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1194 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1195
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1196
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1197 void
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1198 stop_button (GtkWidget * widget, gpointer data)
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1199 {
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1200 pthread_t comptid;
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1201
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1202 memset (&comptid, 0, sizeof (comptid));
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1203 if (!pthread_equal (comptid, window1.tid))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1204 pthread_kill (window1.tid, SIGINT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1205 else if (!pthread_equal (comptid, window2.tid))
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1206 pthread_kill (window2.tid, SIGINT);
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1207 }
8b1883341c6f Initial revision
masneyb
parents:
diff changeset
1208