1 /*
2 * XSitecopy, for managing remote web sites with a GNOME interface.
3 * Copyright (C) 2000, Lee Mallabone <lee@fonicmonkey.net>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 *
19 */
20
21 #include <unistd.h>
22
23 #ifdef HAVE_CONFIG_H
24 #include "config.h"
25 #endif
26
27 #include "new_site.h"
28
29 GtkWidget *site_druid = NULL;
30 struct site *site_to_add = NULL;
31
32 extern GtkWidget *the_tree;
33
34 /* This function taken from Glade's generated 'support.c' file. */
35
36 GdkImlibImage*
create_image(const gchar * filename)37 create_image (const gchar *filename)
38 {
39 GdkImlibImage *image;
40 gchar *pathname;
41
42 pathname = gnome_pixmap_file (filename);
43 if (!pathname)
44 {
45 g_warning ("Couldn't find pixmap file: %s", filename);
46 return NULL;
47 }
48
49 image = gdk_imlib_load_image (pathname);
50 g_free (pathname);
51 return image;
52 }
53
54 /* After using this function, the info file must still be set before
55 * the site can be used. This only initialises *core* stuff. More should
56 * be done before adding the site to the sites list and/or verifying it.
57 */
58
default_site(void)59 struct site *default_site(void)
60 {
61 struct site *new_site = g_malloc0(sizeof(struct site));
62 new_site->protocol = siteproto_unknown;
63 /* new_site->driver = &ftp_driver;*/
64 new_site->server.hostname = g_strdup("remote.site.com");
65 new_site->server.port = 21;
66 new_site->server.username = g_strdup("joe.bloggs");
67 new_site->server.password = g_strdup("password");
68
69 new_site->local_root_user = g_get_home_dir();
70 new_site->remote_root_user = g_strdup("~/");
71
72 /* Let's be conservative. If the user wants more exotic options
73 * they have plenty of time to set them for themselves.
74 */
75 new_site->perms = sitep_ignore;
76 new_site->symlinks = sitesym_ignore;
77 new_site->state_method = state_timesize;
78 return new_site;
79 }
80
add_site(gpointer user_data)81 void add_site(gpointer user_data)
82 {
83 struct site *this_site, *last_site;
84 int mode = 0;
85
86 this_site = g_malloc0( sizeof( struct site ) );
87 memcpy( this_site, site_to_add, sizeof( struct site ) );
88
89 if (verifysite_gnome(this_site) != 0)
90 {
91 g_assert_not_reached();
92 return;
93 }
94
95 /* Simple case: we have no sites */
96 if (!all_sites)
97 {
98 all_sites = this_site;
99 }
100 else
101 {
102
103 /* Find the end of the sites list */
104 for(last_site = all_sites;
105 last_site->next != NULL;
106 last_site = last_site->next)
107 ;
108
109 this_site->prev = last_site;
110 this_site->next = NULL;
111
112 if (this_site->prev)
113 this_site->prev->next = this_site;
114 }
115
116 if (GTK_TOGGLE_BUTTON(get_widget(site_druid, "new_init"))->active)
117 {
118 printf("Will init the site...\n");
119 mode = 1;
120 }
121
122 else
123 {
124 mode = 2;
125 printf("will catchup the site...\n");
126 }
127 site_write_stored_state(this_site);
128 if (add_a_site_to_the_tree(this_site, mode) < 0)
129 gnome_error_dialog("There was a problem creating the site");
130 memset(site_to_add, 0, sizeof(struct site));
131 return;
132 }
133
134 /** PRE: site_to_add should already have been allocated with g_malloc **/
135
close_druid(void)136 void close_druid(void)
137 {
138
139 if (site_to_add) {
140 g_free(site_to_add);
141 site_to_add = NULL;
142 }
143 gtk_widget_destroy(site_druid);
144 site_druid = NULL;
145 }
146
147 GtkWidget *
create_site_druid()148 create_site_druid()
149 {
150 /**** Start of glade generated code ****/
151 GtkWidget *new_site_druid;
152 GtkWidget *start_page;
153 GdkColor start_page_logo_bg_color =
154 {0, 6400, 6400, 28672};
155 GtkWidget *general_info;
156 GdkColor general_info_logo_bg_color =
157 {0, 6400, 6400, 28672};
158 GtkWidget *druid_vbox1;
159 GtkWidget *vbox28;
160 GtkWidget *label67;
161 GtkWidget *hseparator5;
162 GtkWidget *table12;
163 GtkWidget *new_url;
164 GtkWidget *label86;
165 GtkWidget *label85;
166 GtkWidget *new_name;
167 GtkWidget *server_info;
168 GdkColor server_info_logo_bg_color =
169 {0, 6400, 6400, 28672};
170 GtkWidget *druid_vbox2;
171 GtkWidget *vbox27;
172 GtkWidget *label66;
173 GtkWidget *hseparator4;
174 GtkWidget *table8;
175 GtkWidget *new_hostname;
176 GtkWidget *hbox16;
177 GSList *new_proto_group = NULL;
178 GtkWidget *new_ftp;
179 GtkWidget *new_http;
180 GtkObject *new_port_adj;
181 GtkWidget *new_port;
182 GtkWidget *new_username;
183 GtkWidget *new_password;
184 GtkWidget *label64;
185 GtkWidget *label63;
186 GtkWidget *label65;
187 GtkWidget *label62;
188 GtkWidget *label61;
189 GtkWidget *directories;
190 GdkColor directories_logo_bg_color =
191 {0, 6400, 6400, 28672};
192 GtkWidget *druid_vbox6;
193 GtkWidget *vbox29;
194 GtkWidget *label68;
195 GtkWidget *hseparator9;
196 GtkWidget *table11;
197 GtkWidget *new_local_fentry;
198 GtkWidget *new_local_entry;
199 GtkWidget *label82;
200 GtkWidget *label81;
201 GtkWidget *new_remote_entry;
202 GtkWidget *file_handling;
203 GdkColor file_handling_logo_bg_color =
204 {0, 6400, 6400, 28672};
205 GtkWidget *druid_vbox3;
206 GtkWidget *vbox30;
207 GtkWidget *label69;
208 GtkWidget *hseparator6;
209 GtkWidget *table9;
210 GtkWidget *label71;
211 GtkWidget *hbox18;
212 GSList *perms_group = NULL;
213 GtkWidget *new_perms_ignore;
214 GtkWidget *new_perms_exec;
215 GtkWidget *new_perms_all;
216 GtkWidget *label72;
217 GtkWidget *hbox17;
218 GSList *sym_link_group = NULL;
219 GtkWidget *new_sym_follow;
220 GtkWidget *new_sym_ignore;
221 GtkWidget *new_sym_maintain;
222 GtkWidget *label73;
223 GtkWidget *hbox19;
224 GSList *state_detector_group = NULL;
225 GtkWidget *new_timesize;
226 GtkWidget *new_checksum;
227 GtkWidget *update_options;
228 GdkColor update_options_logo_bg_color =
229 {0, 6400, 6400, 28672};
230 GtkWidget *druid_vbox4;
231 GtkWidget *vbox31;
232 GtkWidget *label70;
233 GtkWidget *hseparator7;
234 GtkWidget *vbox32;
235 GtkWidget *new_nodelete;
236 GtkWidget *new_checkmoved;
237 GtkWidget *new_nooverwrite;
238 GtkWidget *new_lowercase;
239 GtkWidget *new_safe;
240 GtkWidget *new_pasv;
241 GtkWidget *server_state;
242 GdkColor server_state_logo_bg_color =
243 {0, 6400, 6400, 28672};
244 GtkWidget *druid_vbox5;
245 GtkWidget *vbox33;
246 GtkWidget *label74;
247 GtkWidget *hseparator8;
248 GtkWidget *vbox34;
249 GSList *vbox34_group = NULL;
250 GtkWidget *new_init;
251 GtkWidget *new_catchup;
252 GtkWidget *new_fetch_please;
253 GtkWidget *fetch_a_list;
254 GdkColor fetch_a_list_logo_bg_color =
255 {0, 6400, 6400, 28672};
256 GtkWidget *druid_vbox10;
257 GtkWidget *label91;
258 GtkWidget *hseparator10;
259 GtkWidget *vbox36;
260 GtkWidget *hbox23;
261 GtkWidget *label88;
262 GtkWidget *new_fetch_status;
263 GtkWidget *hbox24;
264 GtkWidget *label90;
265 GtkWidget *fetch_num_files_got;
266 GtkWidget *new_fetch_begin;
267 GtkWidget *hbuttonbox2;
268 GtkWidget *finish_page;
269 GdkColor finish_page_logo_bg_color =
270 {0, 6400, 6400, 28672};
271
272 site_druid = gtk_window_new(GTK_WINDOW_DIALOG);
273 gtk_object_set_data(GTK_OBJECT(site_druid), "site_druid", site_druid);
274 gtk_window_set_title(GTK_WINDOW(site_druid), "Create a new site definition");
275 gtk_window_set_default_size(GTK_WINDOW(site_druid), 510, 340);
276 gtk_window_set_policy(GTK_WINDOW(site_druid), TRUE, TRUE, FALSE);
277
278 new_site_druid = gnome_druid_new();
279 gtk_widget_ref(new_site_druid);
280 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_site_druid", new_site_druid,
281 (GtkDestroyNotify) gtk_widget_unref);
282 gtk_widget_show(new_site_druid);
283 gtk_container_add(GTK_CONTAINER(site_druid), new_site_druid);
284
285 start_page = gnome_druid_page_start_new();
286 gtk_widget_ref(start_page);
287 gtk_object_set_data_full(GTK_OBJECT(site_druid), "start_page", start_page,
288 (GtkDestroyNotify) gtk_widget_unref);
289 gtk_widget_show(start_page);
290 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(start_page));
291 gnome_druid_set_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(start_page));
292 gnome_druid_page_start_set_logo_bg_color(GNOME_DRUID_PAGE_START(start_page), &start_page_logo_bg_color);
293 gnome_druid_page_start_set_title(GNOME_DRUID_PAGE_START(start_page), "Site Creation Druid");
294 gnome_druid_page_start_set_text(GNOME_DRUID_PAGE_START(start_page), "This Druid will help you to create a new web site definition,\nthat Xsitecopy can then keep track of to ensure your remote\nsite remains in sync with the local copy.\n\nIn order to do that, you need to answer the questions on the\nfollowing pages. If you get stuck at all, be sure to consult the\ninformation available from Xsitecopy's help menu.\n\nNot all the details are mandatory, but you should enter as\nmuch as possible to gain the best performance.");
295 gnome_druid_page_start_set_logo(GNOME_DRUID_PAGE_START(start_page),
296 create_image("gnome-networktool.png"));
297 /* gnome_druid_page_start_set_watermark(GNOME_DRUID_PAGE_START(start_page),
298 create_image("xsitecopy/xsc_side.xpm"));
299 */
300 general_info = gnome_druid_page_standard_new_with_vals("", NULL);
301 gtk_widget_ref(general_info);
302 gtk_object_set_data_full(GTK_OBJECT(site_druid), "general_info", general_info,
303 (GtkDestroyNotify) gtk_widget_unref);
304 gtk_widget_show_all(general_info);
305 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(general_info));
306 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(general_info), &general_info_logo_bg_color);
307 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(general_info), "General Information");
308 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(general_info),
309 create_image("gnome-networktool.png"));
310
311 druid_vbox1 = GNOME_DRUID_PAGE_STANDARD(general_info)->vbox;
312 gtk_widget_ref(druid_vbox1);
313 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox1", druid_vbox1,
314 (GtkDestroyNotify) gtk_widget_unref);
315 gtk_widget_show(druid_vbox1);
316
317 vbox28 = gtk_vbox_new(FALSE, 0);
318 gtk_widget_ref(vbox28);
319 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox28", vbox28,
320 (GtkDestroyNotify) gtk_widget_unref);
321 gtk_widget_show(vbox28);
322 gtk_box_pack_start(GTK_BOX(druid_vbox1), vbox28, TRUE, TRUE, 0);
323
324 label67 = gtk_label_new("First, you should give this site a 'friendly' name to refer to it by. This name is also used by sitecopy (the command line utility) to reference sites.\n\nYou should also enter the root URL of your site. For example, http://www.geocities.com/~xsitecopy-user/\nThis will aid in the generation of web-based reports.");
325 gtk_widget_ref(label67);
326 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label67", label67,
327 (GtkDestroyNotify) gtk_widget_unref);
328 gtk_widget_show(label67);
329 gtk_box_pack_start(GTK_BOX(vbox28), label67, TRUE, TRUE, 0);
330 gtk_widget_set_usize(label67, 370, -2);
331 gtk_label_set_justify(GTK_LABEL(label67), GTK_JUSTIFY_FILL);
332 gtk_label_set_line_wrap(GTK_LABEL(label67), TRUE);
333
334 hseparator5 = gtk_hseparator_new();
335 gtk_widget_ref(hseparator5);
336 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator5", hseparator5,
337 (GtkDestroyNotify) gtk_widget_unref);
338 gtk_widget_show(hseparator5);
339 gtk_box_pack_start(GTK_BOX(vbox28), hseparator5, TRUE, TRUE, 0);
340
341 table12 = gtk_table_new(2, 2, FALSE);
342 gtk_widget_ref(table12);
343 gtk_object_set_data_full(GTK_OBJECT(site_druid), "table12", table12,
344 (GtkDestroyNotify) gtk_widget_unref);
345 gtk_widget_show(table12);
346 gtk_box_pack_start(GTK_BOX(vbox28), table12, TRUE, TRUE, 0);
347 gtk_container_set_border_width(GTK_CONTAINER(table12), 5);
348
349 new_url = gtk_entry_new();
350 gtk_widget_ref(new_url);
351 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_url", new_url,
352 (GtkDestroyNotify) gtk_widget_unref);
353 gtk_widget_show(new_url);
354 gtk_table_attach(GTK_TABLE(table12), new_url, 1, 2, 1, 2,
355 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
356 (GtkAttachOptions) (0), 0, 0);
357
358 label86 = gtk_label_new("Root URL: ");
359 gtk_widget_ref(label86);
360 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label86", label86,
361 (GtkDestroyNotify) gtk_widget_unref);
362 gtk_widget_show(label86);
363 gtk_table_attach(GTK_TABLE(table12), label86, 0, 1, 1, 2,
364 (GtkAttachOptions) (GTK_FILL),
365 (GtkAttachOptions) (0), 0, 0);
366 gtk_label_set_justify(GTK_LABEL(label86), GTK_JUSTIFY_LEFT);
367 gtk_misc_set_alignment(GTK_MISC(label86), 0, 0.5);
368
369 label85 = gtk_label_new("Friendly name: ");
370 gtk_widget_ref(label85);
371 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label85", label85,
372 (GtkDestroyNotify) gtk_widget_unref);
373 gtk_widget_show(label85);
374 gtk_table_attach(GTK_TABLE(table12), label85, 0, 1, 0, 1,
375 (GtkAttachOptions) (GTK_FILL),
376 (GtkAttachOptions) (0), 0, 0);
377 gtk_label_set_justify(GTK_LABEL(label85), GTK_JUSTIFY_LEFT);
378 gtk_misc_set_alignment(GTK_MISC(label85), 0, 0.5);
379
380 new_name = gtk_entry_new();
381 gtk_widget_ref(new_name);
382 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_name", new_name,
383 (GtkDestroyNotify) gtk_widget_unref);
384 gtk_widget_show(new_name);
385 gtk_table_attach(GTK_TABLE(table12), new_name, 1, 2, 0, 1,
386 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
387 (GtkAttachOptions) (0), 0, 0);
388
389 server_info = gnome_druid_page_standard_new_with_vals("", NULL);
390 gtk_widget_ref(server_info);
391 gtk_object_set_data_full(GTK_OBJECT(site_druid), "server_info", server_info,
392 (GtkDestroyNotify) gtk_widget_unref);
393 gtk_widget_show_all(server_info);
394 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(server_info));
395 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(server_info), &server_info_logo_bg_color);
396 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(server_info), "Server Information");
397 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(server_info),
398 create_image("mc/i-sock.png"));
399
400 druid_vbox2 = GNOME_DRUID_PAGE_STANDARD(server_info)->vbox;
401 gtk_widget_ref(druid_vbox2);
402 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox2", druid_vbox2,
403 (GtkDestroyNotify) gtk_widget_unref);
404 gtk_widget_show(druid_vbox2);
405
406 vbox27 = gtk_vbox_new(FALSE, 0);
407 gtk_widget_ref(vbox27);
408 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox27", vbox27,
409 (GtkDestroyNotify) gtk_widget_unref);
410 gtk_widget_show(vbox27);
411 gtk_box_pack_start(GTK_BOX(druid_vbox2), vbox27, TRUE, TRUE, 0);
412
413 label66 = gtk_label_new("Now enter details about the remote server that your website is stored on. When selecting the protocol, an appropriate default port number will be provided.\nYour password will not appear on screen.");
414 gtk_widget_ref(label66);
415 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label66", label66,
416 (GtkDestroyNotify) gtk_widget_unref);
417 gtk_widget_show(label66);
418 gtk_box_pack_start(GTK_BOX(vbox27), label66, TRUE, TRUE, 0);
419 gtk_widget_set_usize(label66, 370, -2);
420 gtk_label_set_justify(GTK_LABEL(label66), GTK_JUSTIFY_FILL);
421 gtk_label_set_line_wrap(GTK_LABEL(label66), TRUE);
422
423 hseparator4 = gtk_hseparator_new();
424 gtk_widget_ref(hseparator4);
425 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator4", hseparator4,
426 (GtkDestroyNotify) gtk_widget_unref);
427 gtk_widget_show(hseparator4);
428 gtk_box_pack_start(GTK_BOX(vbox27), hseparator4, TRUE, TRUE, 0);
429
430 table8 = gtk_table_new(5, 2, FALSE);
431 gtk_widget_ref(table8);
432 gtk_object_set_data_full(GTK_OBJECT(site_druid), "table8", table8,
433 (GtkDestroyNotify) gtk_widget_unref);
434 gtk_widget_show(table8);
435 gtk_box_pack_start(GTK_BOX(vbox27), table8, TRUE, TRUE, 0);
436 gtk_container_set_border_width(GTK_CONTAINER(table8), 5);
437
438 new_hostname = gtk_entry_new();
439 gtk_widget_ref(new_hostname);
440 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_hostname", new_hostname,
441 (GtkDestroyNotify) gtk_widget_unref);
442 gtk_widget_show(new_hostname);
443 gtk_table_attach(GTK_TABLE(table8), new_hostname, 1, 2, 0, 1,
444 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
445 (GtkAttachOptions) (0), 0, 0);
446
447 hbox16 = gtk_hbox_new(FALSE, 0);
448 gtk_widget_ref(hbox16);
449 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox16", hbox16,
450 (GtkDestroyNotify) gtk_widget_unref);
451 gtk_widget_show(hbox16);
452 gtk_table_attach(GTK_TABLE(table8), hbox16, 1, 2, 1, 2,
453 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
454 (GtkAttachOptions) (0), 0, 0);
455
456 new_ftp = gtk_radio_button_new_with_label(new_proto_group, "FTP");
457 new_proto_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_ftp));
458 gtk_widget_ref(new_ftp);
459 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_ftp", new_ftp,
460 (GtkDestroyNotify) gtk_widget_unref);
461 gtk_widget_show(new_ftp);
462 gtk_box_pack_start(GTK_BOX(hbox16), new_ftp, FALSE, FALSE, 0);
463 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(new_ftp), TRUE);
464
465 #ifdef USE_DAV
466 new_http = gtk_radio_button_new_with_label(new_proto_group, "WebDAV");
467 new_proto_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_http));
468 gtk_widget_ref(new_http);
469 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_http", new_http,
470 (GtkDestroyNotify) gtk_widget_unref);
471 gtk_widget_show(new_http);
472 gtk_box_pack_start(GTK_BOX(hbox16), new_http, FALSE, FALSE, 0);
473 #endif /* USE_DAV */
474
475 new_port_adj = gtk_adjustment_new(21, 1, 65536, 1, 10, 10);
476 new_port = gtk_spin_button_new(GTK_ADJUSTMENT(new_port_adj), 1, 0);
477 gtk_widget_ref(new_port);
478 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_port", new_port,
479 (GtkDestroyNotify) gtk_widget_unref);
480 gtk_widget_show(new_port);
481 gtk_table_attach(GTK_TABLE(table8), new_port, 1, 2, 2, 3,
482 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
483 (GtkAttachOptions) (0), 0, 0);
484
485 new_username = gtk_entry_new();
486 gtk_widget_ref(new_username);
487 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_username", new_username,
488 (GtkDestroyNotify) gtk_widget_unref);
489 gtk_widget_show(new_username);
490 gtk_table_attach(GTK_TABLE(table8), new_username, 1, 2, 3, 4,
491 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
492 (GtkAttachOptions) (0), 0, 0);
493
494 new_password = gtk_entry_new();
495 gtk_widget_ref(new_password);
496 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_password", new_password,
497 (GtkDestroyNotify) gtk_widget_unref);
498 gtk_widget_show(new_password);
499 gtk_table_attach(GTK_TABLE(table8), new_password, 1, 2, 4, 5,
500 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
501 (GtkAttachOptions) (0), 0, 0);
502 gtk_entry_set_visibility(GTK_ENTRY(new_password), FALSE);
503
504 label64 = gtk_label_new("Username: ");
505 gtk_widget_ref(label64);
506 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label64", label64,
507 (GtkDestroyNotify) gtk_widget_unref);
508 gtk_widget_show(label64);
509 gtk_table_attach(GTK_TABLE(table8), label64, 0, 1, 3, 4,
510 (GtkAttachOptions) (GTK_FILL),
511 (GtkAttachOptions) (0), 0, 0);
512 gtk_label_set_justify(GTK_LABEL(label64), GTK_JUSTIFY_LEFT);
513 gtk_misc_set_alignment(GTK_MISC(label64), 0, 0.5);
514
515 label63 = gtk_label_new("Port Number: ");
516 gtk_widget_ref(label63);
517 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label63", label63,
518 (GtkDestroyNotify) gtk_widget_unref);
519 gtk_widget_show(label63);
520 gtk_table_attach(GTK_TABLE(table8), label63, 0, 1, 2, 3,
521 (GtkAttachOptions) (GTK_FILL),
522 (GtkAttachOptions) (0), 0, 0);
523
524 label65 = gtk_label_new("Password: ");
525 gtk_widget_ref(label65);
526 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label65", label65,
527 (GtkDestroyNotify) gtk_widget_unref);
528 gtk_widget_show(label65);
529 gtk_table_attach(GTK_TABLE(table8), label65, 0, 1, 4, 5,
530 (GtkAttachOptions) (GTK_FILL),
531 (GtkAttachOptions) (0), 0, 0);
532 gtk_label_set_justify(GTK_LABEL(label65), GTK_JUSTIFY_LEFT);
533 gtk_misc_set_alignment(GTK_MISC(label65), 0, 0.5);
534
535 label62 = gtk_label_new("Protocol: ");
536 gtk_widget_ref(label62);
537 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label62", label62,
538 (GtkDestroyNotify) gtk_widget_unref);
539 gtk_widget_show(label62);
540 gtk_table_attach(GTK_TABLE(table8), label62, 0, 1, 1, 2,
541 (GtkAttachOptions) (GTK_FILL),
542 (GtkAttachOptions) (0), 0, 0);
543 gtk_label_set_justify(GTK_LABEL(label62), GTK_JUSTIFY_LEFT);
544 gtk_misc_set_alignment(GTK_MISC(label62), 0, 0.5);
545
546 label61 = gtk_label_new("Host name: ");
547 gtk_widget_ref(label61);
548 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label61", label61,
549 (GtkDestroyNotify) gtk_widget_unref);
550 gtk_widget_show(label61);
551 gtk_table_attach(GTK_TABLE(table8), label61, 0, 1, 0, 1,
552 (GtkAttachOptions) (GTK_FILL),
553 (GtkAttachOptions) (0), 0, 0);
554 gtk_label_set_justify(GTK_LABEL(label61), GTK_JUSTIFY_LEFT);
555 gtk_misc_set_alignment(GTK_MISC(label61), 0, 0.5);
556
557 directories = gnome_druid_page_standard_new_with_vals("", NULL);
558 gtk_widget_ref(directories);
559 gtk_object_set_data_full(GTK_OBJECT(site_druid), "directories", directories,
560 (GtkDestroyNotify) gtk_widget_unref);
561 gtk_widget_show_all(directories);
562 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(directories));
563 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(directories), &directories_logo_bg_color);
564 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(directories), "Directories");
565 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(directories),
566 create_image("mc/i-directory.png"));
567
568 druid_vbox6 = GNOME_DRUID_PAGE_STANDARD(directories)->vbox;
569 gtk_widget_ref(druid_vbox6);
570 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox6", druid_vbox6,
571 (GtkDestroyNotify) gtk_widget_unref);
572 gtk_widget_show(druid_vbox6);
573
574 vbox29 = gtk_vbox_new(FALSE, 0);
575 gtk_widget_ref(vbox29);
576 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox29", vbox29,
577 (GtkDestroyNotify) gtk_widget_unref);
578 gtk_widget_show(vbox29);
579 gtk_box_pack_start(GTK_BOX(druid_vbox6), vbox29, TRUE, TRUE, 0);
580
581 label68 = gtk_label_new("I now need to know where you store the files that make up your web site; both locally, and on the remote site.\nDirectories must either be absolute (eg. /home/lee/web/), or relative to your login directory, (eg. ~/web/).\n\nAll directories should end with a trailing slash character.");
582 gtk_widget_ref(label68);
583 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label68", label68,
584 (GtkDestroyNotify) gtk_widget_unref);
585 gtk_widget_show(label68);
586 gtk_box_pack_start(GTK_BOX(vbox29), label68, TRUE, TRUE, 0);
587 gtk_widget_set_usize(label68, 370, -2);
588 gtk_label_set_justify(GTK_LABEL(label68), GTK_JUSTIFY_FILL);
589 gtk_label_set_line_wrap(GTK_LABEL(label68), TRUE);
590
591 hseparator9 = gtk_hseparator_new();
592 gtk_widget_ref(hseparator9);
593 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator9", hseparator9,
594 (GtkDestroyNotify) gtk_widget_unref);
595 gtk_widget_show(hseparator9);
596 gtk_box_pack_start(GTK_BOX(vbox29), hseparator9, TRUE, TRUE, 0);
597
598 table11 = gtk_table_new(2, 2, FALSE);
599 gtk_widget_ref(table11);
600 gtk_object_set_data_full(GTK_OBJECT(site_druid), "table11", table11,
601 (GtkDestroyNotify) gtk_widget_unref);
602 gtk_widget_show(table11);
603 gtk_box_pack_start(GTK_BOX(vbox29), table11, TRUE, FALSE, 0);
604 gtk_container_set_border_width(GTK_CONTAINER(table11), 5);
605 gtk_table_set_row_spacings(GTK_TABLE(table11), 2);
606 gtk_table_set_col_spacings(GTK_TABLE(table11), 2);
607
608 new_local_fentry = gnome_file_entry_new(NULL, NULL);
609 gnome_file_entry_set_directory(GNOME_FILE_ENTRY(new_local_fentry), TRUE);
610 gtk_widget_ref(new_local_fentry);
611 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_local_fentry", new_local_fentry,
612 (GtkDestroyNotify) gtk_widget_unref);
613 gtk_widget_show(new_local_fentry);
614 gtk_table_attach(GTK_TABLE(table11), new_local_fentry, 1, 2, 0, 1,
615 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
616 (GtkAttachOptions) (0), 0, 0);
617
618 new_local_entry = gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(new_local_fentry));
619 gtk_widget_ref(new_local_entry);
620 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_local_entry", new_local_entry,
621 (GtkDestroyNotify) gtk_widget_unref);
622 gtk_widget_show(new_local_entry);
623
624 label82 = gtk_label_new("Directory for local files: ");
625 gtk_widget_ref(label82);
626 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label82", label82,
627 (GtkDestroyNotify) gtk_widget_unref);
628 gtk_widget_show(label82);
629 gtk_table_attach(GTK_TABLE(table11), label82, 0, 1, 0, 1,
630 (GtkAttachOptions) (GTK_FILL),
631 (GtkAttachOptions) (0), 0, 0);
632 gtk_label_set_justify(GTK_LABEL(label82), GTK_JUSTIFY_LEFT);
633 gtk_misc_set_alignment(GTK_MISC(label82), 0, 0.5);
634
635 label81 = gtk_label_new("Directory for remote files: ");
636 gtk_widget_ref(label81);
637 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label81", label81,
638 (GtkDestroyNotify) gtk_widget_unref);
639 gtk_widget_show(label81);
640 gtk_table_attach(GTK_TABLE(table11), label81, 0, 1, 1, 2,
641 (GtkAttachOptions) (GTK_FILL),
642 (GtkAttachOptions) (0), 0, 0);
643 gtk_label_set_justify(GTK_LABEL(label81), GTK_JUSTIFY_LEFT);
644 gtk_misc_set_alignment(GTK_MISC(label81), 0, 0.5);
645
646 new_remote_entry = gtk_entry_new();
647 gtk_widget_ref(new_remote_entry);
648 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_remote_entry", new_remote_entry,
649 (GtkDestroyNotify) gtk_widget_unref);
650 gtk_widget_show(new_remote_entry);
651 gtk_table_attach(GTK_TABLE(table11), new_remote_entry, 1, 2, 1, 2,
652 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
653 (GtkAttachOptions) (0), 0, 0);
654
655 file_handling = gnome_druid_page_standard_new_with_vals("", NULL);
656 gtk_widget_ref(file_handling);
657 gtk_object_set_data_full(GTK_OBJECT(site_druid), "file_handling", file_handling,
658 (GtkDestroyNotify) gtk_widget_unref);
659 gtk_widget_show_all(file_handling);
660 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(file_handling));
661 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(file_handling), &file_handling_logo_bg_color);
662 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(file_handling), "File Handling");
663 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(file_handling),
664 create_image("mc/i-floppy.png"));
665
666 druid_vbox3 = GNOME_DRUID_PAGE_STANDARD(file_handling)->vbox;
667 gtk_widget_ref(druid_vbox3);
668 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox3", druid_vbox3,
669 (GtkDestroyNotify) gtk_widget_unref);
670 gtk_widget_show(druid_vbox3);
671
672 vbox30 = gtk_vbox_new(FALSE, 0);
673 gtk_widget_ref(vbox30);
674 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox30", vbox30,
675 (GtkDestroyNotify) gtk_widget_unref);
676 gtk_widget_show(vbox30);
677 gtk_box_pack_start(GTK_BOX(druid_vbox3), vbox30, TRUE, TRUE, 0);
678
679 label69 = gtk_label_new("Make a choice from the selections below to denote whether you want any file permissiosn to be maintained. You can also choose the way you would like symbolic links to be treated.\n\nFinally, Xsitecopy can determine local changes by 2 different methods. Checksum is the most accurate, but file size and modification time is quicker for large sites.");
680 gtk_widget_ref(label69);
681 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label69", label69,
682 (GtkDestroyNotify) gtk_widget_unref);
683 gtk_widget_show(label69);
684 gtk_box_pack_start(GTK_BOX(vbox30), label69, TRUE, TRUE, 0);
685 gtk_widget_set_usize(label69, 370, -2);
686 gtk_label_set_justify(GTK_LABEL(label69), GTK_JUSTIFY_FILL);
687 gtk_label_set_line_wrap(GTK_LABEL(label69), TRUE);
688
689 hseparator6 = gtk_hseparator_new();
690 gtk_widget_ref(hseparator6);
691 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator6", hseparator6,
692 (GtkDestroyNotify) gtk_widget_unref);
693 gtk_widget_show(hseparator6);
694 gtk_box_pack_start(GTK_BOX(vbox30), hseparator6, TRUE, TRUE, 0);
695
696 table9 = gtk_table_new(3, 2, FALSE);
697 gtk_widget_ref(table9);
698 gtk_object_set_data_full(GTK_OBJECT(site_druid), "table9", table9,
699 (GtkDestroyNotify) gtk_widget_unref);
700 gtk_widget_show(table9);
701 gtk_box_pack_start(GTK_BOX(vbox30), table9, TRUE, TRUE, 0);
702 gtk_container_set_border_width(GTK_CONTAINER(table9), 5);
703 gtk_table_set_row_spacings(GTK_TABLE(table9), 2);
704 gtk_table_set_col_spacings(GTK_TABLE(table9), 2);
705
706 label71 = gtk_label_new("Permissions mode: ");
707 gtk_widget_ref(label71);
708 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label71", label71,
709 (GtkDestroyNotify) gtk_widget_unref);
710 gtk_widget_show(label71);
711 gtk_table_attach(GTK_TABLE(table9), label71, 0, 1, 0, 1,
712 (GtkAttachOptions) (GTK_FILL),
713 (GtkAttachOptions) (0), 0, 0);
714 gtk_label_set_justify(GTK_LABEL(label71), GTK_JUSTIFY_LEFT);
715 gtk_misc_set_alignment(GTK_MISC(label71), 0, 0.5);
716
717 hbox18 = gtk_hbox_new(FALSE, 0);
718 gtk_widget_ref(hbox18);
719 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox18", hbox18,
720 (GtkDestroyNotify) gtk_widget_unref);
721 gtk_widget_show(hbox18);
722 gtk_table_attach(GTK_TABLE(table9), hbox18, 1, 2, 0, 1,
723 (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
724 (GtkAttachOptions) (0), 0, 0);
725
726 new_perms_ignore = gtk_radio_button_new_with_label(perms_group, "Ignore all");
727 perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_perms_ignore));
728 gtk_widget_ref(new_perms_ignore);
729 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_perms_ignore", new_perms_ignore,
730 (GtkDestroyNotify) gtk_widget_unref);
731 gtk_widget_show(new_perms_ignore);
732 gtk_box_pack_start(GTK_BOX(hbox18), new_perms_ignore, FALSE, FALSE, 0);
733
734 new_perms_exec = gtk_radio_button_new_with_label(perms_group, "Maintain for Executables only");
735 perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_perms_exec));
736 gtk_widget_ref(new_perms_exec);
737 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_perms_exec", new_perms_exec,
738 (GtkDestroyNotify) gtk_widget_unref);
739 gtk_widget_show(new_perms_exec);
740 gtk_box_pack_start(GTK_BOX(hbox18), new_perms_exec, FALSE, FALSE, 0);
741 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(new_perms_ignore), TRUE);
742
743 new_perms_all = gtk_radio_button_new_with_label(perms_group, "Maintain all");
744 perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_perms_all));
745 gtk_widget_ref(new_perms_all);
746 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_perms_all", new_perms_all,
747 (GtkDestroyNotify) gtk_widget_unref);
748 gtk_widget_show(new_perms_all);
749 gtk_box_pack_start(GTK_BOX(hbox18), new_perms_all, FALSE, FALSE, 0);
750
751 label72 = gtk_label_new("Symbolic links: ");
752 gtk_widget_ref(label72);
753 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label72", label72,
754 (GtkDestroyNotify) gtk_widget_unref);
755 gtk_widget_show(label72);
756 gtk_table_attach(GTK_TABLE(table9), label72, 0, 1, 1, 2,
757 (GtkAttachOptions) (GTK_FILL),
758 (GtkAttachOptions) (0), 0, 0);
759 gtk_label_set_justify(GTK_LABEL(label72), GTK_JUSTIFY_LEFT);
760 gtk_misc_set_alignment(GTK_MISC(label72), 0, 0.5);
761
762 hbox17 = gtk_hbox_new(FALSE, 0);
763 gtk_widget_ref(hbox17);
764 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox17", hbox17,
765 (GtkDestroyNotify) gtk_widget_unref);
766 gtk_widget_show(hbox17);
767 gtk_table_attach(GTK_TABLE(table9), hbox17, 1, 2, 1, 2,
768 (GtkAttachOptions) (GTK_FILL),
769 (GtkAttachOptions) (0), 0, 0);
770
771 new_sym_follow = gtk_radio_button_new_with_label(sym_link_group, "Follow all");
772 sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_sym_follow));
773 gtk_widget_ref(new_sym_follow);
774 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_sym_follow", new_sym_follow,
775 (GtkDestroyNotify) gtk_widget_unref);
776 gtk_widget_show(new_sym_follow);
777 gtk_box_pack_start(GTK_BOX(hbox17), new_sym_follow, FALSE, FALSE, 0);
778
779 new_sym_ignore = gtk_radio_button_new_with_label(sym_link_group, "Ignore links");
780 sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_sym_ignore));
781 gtk_widget_ref(new_sym_ignore);
782 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_sym_ignore", new_sym_ignore,
783 (GtkDestroyNotify) gtk_widget_unref);
784 gtk_widget_show(new_sym_ignore);
785 gtk_box_pack_start(GTK_BOX(hbox17), new_sym_ignore, FALSE, FALSE, 0);
786 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(new_sym_ignore), TRUE);
787
788 new_sym_maintain = gtk_radio_button_new_with_label(sym_link_group, "Maintain links");
789 sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_sym_maintain));
790 gtk_widget_ref(new_sym_maintain);
791 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_sym_maintain", new_sym_maintain,
792 (GtkDestroyNotify) gtk_widget_unref);
793 gtk_widget_show(new_sym_maintain);
794 gtk_box_pack_start(GTK_BOX(hbox17), new_sym_maintain, FALSE, FALSE, 0);
795
796 label73 = gtk_label_new("Detect changes by: ");
797 gtk_widget_ref(label73);
798 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label73", label73,
799 (GtkDestroyNotify) gtk_widget_unref);
800 gtk_widget_show(label73);
801 gtk_table_attach(GTK_TABLE(table9), label73, 0, 1, 2, 3,
802 (GtkAttachOptions) (GTK_FILL),
803 (GtkAttachOptions) (0), 0, 0);
804 gtk_label_set_justify(GTK_LABEL(label73), GTK_JUSTIFY_LEFT);
805 gtk_misc_set_alignment(GTK_MISC(label73), 0, 0.5);
806
807 hbox19 = gtk_hbox_new(FALSE, 0);
808 gtk_widget_ref(hbox19);
809 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox19", hbox19,
810 (GtkDestroyNotify) gtk_widget_unref);
811 gtk_widget_show(hbox19);
812 gtk_table_attach(GTK_TABLE(table9), hbox19, 1, 2, 2, 3,
813 (GtkAttachOptions) (GTK_FILL),
814 (GtkAttachOptions) (0), 0, 0);
815
816 new_timesize = gtk_radio_button_new_with_label(state_detector_group, "Filesize & modification time");
817 state_detector_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_timesize));
818 gtk_widget_ref(new_timesize);
819 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_timesize", new_timesize,
820 (GtkDestroyNotify) gtk_widget_unref);
821 gtk_widget_show(new_timesize);
822 gtk_box_pack_start(GTK_BOX(hbox19), new_timesize, FALSE, FALSE, 0);
823
824 new_checksum = gtk_radio_button_new_with_label(state_detector_group, "Checksum");
825 state_detector_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_checksum));
826 gtk_widget_ref(new_checksum);
827 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_checksum", new_checksum,
828 (GtkDestroyNotify) gtk_widget_unref);
829 gtk_widget_show(new_checksum);
830 gtk_box_pack_start(GTK_BOX(hbox19), new_checksum, FALSE, FALSE, 0);
831 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(new_checksum), TRUE);
832
833 update_options = gnome_druid_page_standard_new_with_vals("", NULL);
834 gtk_widget_ref(update_options);
835 gtk_object_set_data_full(GTK_OBJECT(site_druid), "update_options", update_options,
836 (GtkDestroyNotify) gtk_widget_unref);
837 gtk_widget_show_all(update_options);
838 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(update_options));
839 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(update_options), &update_options_logo_bg_color);
840 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(update_options), "Update Attributes");
841 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(update_options),
842 create_image("gnome-networktool.png"));
843
844 druid_vbox4 = GNOME_DRUID_PAGE_STANDARD(update_options)->vbox;
845 gtk_widget_ref(druid_vbox4);
846 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox4", druid_vbox4,
847 (GtkDestroyNotify) gtk_widget_unref);
848 gtk_widget_show(druid_vbox4);
849
850 vbox31 = gtk_vbox_new(FALSE, 0);
851 gtk_widget_ref(vbox31);
852 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox31", vbox31,
853 (GtkDestroyNotify) gtk_widget_unref);
854 gtk_widget_show(vbox31);
855 gtk_box_pack_start(GTK_BOX(druid_vbox4), vbox31, TRUE, TRUE, 0);
856
857 label70 = gtk_label_new("When mirroring your local changes onto the remote site, there are various options available to Xsitecopy. You can control most of them with the check boxes below.");
858 gtk_widget_ref(label70);
859 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label70", label70,
860 (GtkDestroyNotify) gtk_widget_unref);
861 gtk_widget_show(label70);
862 gtk_box_pack_start(GTK_BOX(vbox31), label70, TRUE, TRUE, 0);
863 gtk_widget_set_usize(label70, 370, -2);
864 gtk_label_set_justify(GTK_LABEL(label70), GTK_JUSTIFY_FILL);
865 gtk_label_set_line_wrap(GTK_LABEL(label70), TRUE);
866
867 hseparator7 = gtk_hseparator_new();
868 gtk_widget_ref(hseparator7);
869 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator7", hseparator7,
870 (GtkDestroyNotify) gtk_widget_unref);
871 gtk_widget_show(hseparator7);
872 gtk_box_pack_start(GTK_BOX(vbox31), hseparator7, TRUE, TRUE, 0);
873
874 vbox32 = gtk_vbox_new(FALSE, 0);
875 gtk_widget_ref(vbox32);
876 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox32", vbox32,
877 (GtkDestroyNotify) gtk_widget_unref);
878 gtk_widget_show(vbox32);
879 gtk_box_pack_start(GTK_BOX(vbox31), vbox32, TRUE, TRUE, 0);
880 gtk_container_set_border_width(GTK_CONTAINER(vbox32), 5);
881
882 new_nodelete = gtk_check_button_new_with_label("Delete a file from the server if it is deleted locally");
883 gtk_widget_ref(new_nodelete);
884 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_nodelete", new_nodelete,
885 (GtkDestroyNotify) gtk_widget_unref);
886 gtk_widget_show(new_nodelete);
887 gtk_box_pack_start(GTK_BOX(vbox32), new_nodelete, FALSE, FALSE, 0);
888
889 new_checkmoved = gtk_check_button_new_with_label("Move a remote file if it is moved locally");
890 gtk_widget_ref(new_checkmoved);
891 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_checkmoved", new_checkmoved,
892 (GtkDestroyNotify) gtk_widget_unref);
893 gtk_widget_show(new_checkmoved);
894 gtk_box_pack_start(GTK_BOX(vbox32), new_checkmoved, FALSE, FALSE, 0);
895
896 new_nooverwrite = gtk_check_button_new_with_label("When uploading changed files, first delete them");
897 gtk_widget_ref(new_nooverwrite);
898 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_nooverwrite", new_nooverwrite,
899 (GtkDestroyNotify) gtk_widget_unref);
900 gtk_widget_show(new_nooverwrite);
901 gtk_box_pack_start(GTK_BOX(vbox32), new_nooverwrite, FALSE, FALSE, 0);
902
903 new_lowercase = gtk_check_button_new_with_label("Convert all filenames to lowercase when uploading");
904 gtk_widget_ref(new_lowercase);
905 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_lowercase", new_lowercase,
906 (GtkDestroyNotify) gtk_widget_unref);
907 gtk_widget_show(new_lowercase);
908 gtk_box_pack_start(GTK_BOX(vbox32), new_lowercase, FALSE, FALSE, 0);
909
910 new_safe = gtk_check_button_new_with_label("Use \"safe mode\"");
911 gtk_widget_ref(new_safe);
912 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_safe", new_safe,
913 (GtkDestroyNotify) gtk_widget_unref);
914 gtk_widget_show(new_safe);
915 gtk_box_pack_start(GTK_BOX(vbox32), new_safe, FALSE, FALSE, 0);
916
917 new_pasv = gtk_check_button_new_with_label("Use passive mode FTP");
918 gtk_widget_ref(new_pasv);
919 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_pasv", new_pasv,
920 (GtkDestroyNotify) gtk_widget_unref);
921 gtk_widget_show(new_pasv);
922 gtk_box_pack_start(GTK_BOX(vbox32), new_pasv, FALSE, FALSE, 0);
923
924 server_state = gnome_druid_page_standard_new_with_vals("", NULL);
925 gtk_widget_ref(server_state);
926 gtk_object_set_data_full(GTK_OBJECT(site_druid), "server_state", server_state,
927 (GtkDestroyNotify) gtk_widget_unref);
928 gtk_widget_show_all(server_state);
929 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(server_state));
930 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(server_state), &server_state_logo_bg_color);
931 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(server_state), "Current State of The Remote Site");
932 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(server_state),
933 create_image("gnome-networktool.png"));
934
935 druid_vbox5 = GNOME_DRUID_PAGE_STANDARD(server_state)->vbox;
936 gtk_widget_ref(druid_vbox5);
937 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox5", druid_vbox5,
938 (GtkDestroyNotify) gtk_widget_unref);
939 gtk_widget_show(druid_vbox5);
940
941 vbox33 = gtk_vbox_new(FALSE, 0);
942 gtk_widget_ref(vbox33);
943 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox33", vbox33,
944 (GtkDestroyNotify) gtk_widget_unref);
945 gtk_widget_show(vbox33);
946 gtk_box_pack_start(GTK_BOX(druid_vbox5), vbox33, TRUE, TRUE, 0);
947
948 label74 = gtk_label_new("Xsitecopy now needs to know the current state of the remote site. If the site is empty or up to date, that is great. If not, it can attempt to connect to the remote server and figure out what is there.");
949 gtk_widget_ref(label74);
950 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label74", label74,
951 (GtkDestroyNotify) gtk_widget_unref);
952 gtk_widget_show(label74);
953 gtk_box_pack_start(GTK_BOX(vbox33), label74, TRUE, TRUE, 0);
954 gtk_widget_set_usize(label74, 370, -2);
955 gtk_label_set_justify(GTK_LABEL(label74), GTK_JUSTIFY_FILL);
956 gtk_label_set_line_wrap(GTK_LABEL(label74), TRUE);
957
958 hseparator8 = gtk_hseparator_new();
959 gtk_widget_ref(hseparator8);
960 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator8", hseparator8,
961 (GtkDestroyNotify) gtk_widget_unref);
962 gtk_widget_show(hseparator8);
963 gtk_box_pack_start(GTK_BOX(vbox33), hseparator8, TRUE, TRUE, 0);
964
965 vbox34 = gtk_vbox_new(FALSE, 0);
966 gtk_widget_ref(vbox34);
967 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox34", vbox34,
968 (GtkDestroyNotify) gtk_widget_unref);
969 gtk_widget_show(vbox34);
970 gtk_box_pack_start(GTK_BOX(vbox33), vbox34, TRUE, TRUE, 0);
971 gtk_container_set_border_width(GTK_CONTAINER(vbox34), 4);
972
973 new_init = gtk_radio_button_new_with_label(vbox34_group, "The remote site is empty.");
974 vbox34_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_init));
975 gtk_widget_ref(new_init);
976 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_init", new_init,
977 (GtkDestroyNotify) gtk_widget_unref);
978 gtk_widget_show(new_init);
979 gtk_box_pack_start(GTK_BOX(vbox34), new_init, FALSE, FALSE, 0);
980
981 new_catchup = gtk_radio_button_new_with_label(vbox34_group, "The remote site has been uploaded.");
982 vbox34_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_catchup));
983 gtk_widget_ref(new_catchup);
984 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_catchup", new_catchup,
985 (GtkDestroyNotify) gtk_widget_unref);
986 gtk_widget_show(new_catchup);
987 gtk_box_pack_start(GTK_BOX(vbox34), new_catchup, FALSE, FALSE, 0);
988
989 new_fetch_please = gtk_radio_button_new_with_label(vbox34_group, "Connect to the remote site and figure out the state automatically.");
990 vbox34_group = gtk_radio_button_group(GTK_RADIO_BUTTON(new_fetch_please));
991 gtk_widget_ref(new_fetch_please);
992 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_fetch_please", new_fetch_please,
993 (GtkDestroyNotify) gtk_widget_unref);
994 gtk_widget_show(new_fetch_please);
995 /** Added **/
996 gtk_widget_set_sensitive(new_fetch_please, FALSE);
997 /** End **/
998 gtk_box_pack_start(GTK_BOX(vbox34), new_fetch_please, FALSE, FALSE, 0);
999
1000 fetch_a_list = gnome_druid_page_standard_new_with_vals("", NULL);
1001 gtk_widget_ref(fetch_a_list);
1002 gtk_object_set_data_full(GTK_OBJECT(site_druid), "fetch_a_list", fetch_a_list,
1003 (GtkDestroyNotify) gtk_widget_unref);
1004 gtk_widget_show_all(fetch_a_list);
1005 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(fetch_a_list));
1006 gnome_druid_page_standard_set_logo_bg_color(GNOME_DRUID_PAGE_STANDARD(fetch_a_list), &fetch_a_list_logo_bg_color);
1007 gnome_druid_page_standard_set_title(GNOME_DRUID_PAGE_STANDARD(fetch_a_list), "Ready to download file information");
1008 gnome_druid_page_standard_set_logo(GNOME_DRUID_PAGE_STANDARD(fetch_a_list),
1009 create_image("gnome-networktool.png"));
1010
1011 druid_vbox10 = GNOME_DRUID_PAGE_STANDARD(fetch_a_list)->vbox;
1012 gtk_widget_ref(druid_vbox10);
1013 gtk_object_set_data_full(GTK_OBJECT(site_druid), "druid_vbox10", druid_vbox10,
1014 (GtkDestroyNotify) gtk_widget_unref);
1015 gtk_widget_show(druid_vbox10);
1016
1017 vbox36 = gtk_vbox_new(FALSE, 0);
1018 gtk_widget_ref(vbox36);
1019 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox36", vbox36,
1020 (GtkDestroyNotify) gtk_widget_unref);
1021 gtk_widget_show(vbox36);
1022 gtk_box_pack_start(GTK_BOX(druid_vbox10), vbox36, TRUE, TRUE, 0);
1023
1024 label91 = gtk_label_new("When you click on the button below to begin, Xsitecopy will try and establish a connection to the remote server you specified earlier.\n\nIf a connection is made, a file listing will then be obtained. If this fails then you will be asked to initialise or catchup the site for now, and you can attempt another 'fetch' at a later date.");
1025 gtk_widget_ref(label91);
1026 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label91", label91,
1027 (GtkDestroyNotify) gtk_widget_unref);
1028 gtk_widget_show(label91);
1029 gtk_box_pack_start(GTK_BOX(vbox36), label91, TRUE, TRUE, 0);
1030 gtk_widget_set_usize(label91, 370, -2);
1031 gtk_label_set_justify(GTK_LABEL(label91), GTK_JUSTIFY_FILL);
1032 gtk_label_set_line_wrap(GTK_LABEL(label91), TRUE);
1033
1034 hseparator10 = gtk_hseparator_new();
1035 gtk_widget_ref(hseparator10);
1036 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hseparator10", hseparator10,
1037 (GtkDestroyNotify) gtk_widget_unref);
1038 gtk_widget_show(hseparator10);
1039 gtk_box_pack_start(GTK_BOX(vbox36), hseparator10, TRUE, FALSE, 0);
1040
1041 vbox36 = gtk_vbox_new(FALSE, 0);
1042 gtk_widget_ref(vbox36);
1043 gtk_object_set_data_full(GTK_OBJECT(site_druid), "vbox36", vbox36,
1044 (GtkDestroyNotify) gtk_widget_unref);
1045 gtk_widget_show(vbox36);
1046 gtk_box_pack_start(GTK_BOX(vbox36), vbox36, FALSE, TRUE, 0);
1047 gtk_container_set_border_width(GTK_CONTAINER(vbox36), 5);
1048
1049 hbox23 = gtk_hbox_new(FALSE, 0);
1050 gtk_widget_ref(hbox23);
1051 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox23", hbox23,
1052 (GtkDestroyNotify) gtk_widget_unref);
1053 gtk_widget_show(hbox23);
1054 gtk_box_pack_start(GTK_BOX(vbox36), hbox23, FALSE, TRUE, 0);
1055
1056 label88 = gtk_label_new("Status: ");
1057 gtk_widget_ref(label88);
1058 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label88", label88,
1059 (GtkDestroyNotify) gtk_widget_unref);
1060 gtk_widget_show(label88);
1061 gtk_box_pack_start(GTK_BOX(hbox23), label88, FALSE, FALSE, 0);
1062 gtk_label_set_justify(GTK_LABEL(label88), GTK_JUSTIFY_LEFT);
1063 gtk_misc_set_alignment(GTK_MISC(label88), 0, 0.5);
1064
1065 new_fetch_status = gtk_label_new("Awaiting user input. ");
1066 gtk_widget_ref(new_fetch_status);
1067 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_fetch_status", new_fetch_status,
1068 (GtkDestroyNotify) gtk_widget_unref);
1069 gtk_widget_show(new_fetch_status);
1070 gtk_box_pack_start(GTK_BOX(hbox23), new_fetch_status, FALSE, FALSE, 0);
1071
1072 hbox24 = gtk_hbox_new(FALSE, 0);
1073 gtk_widget_ref(hbox24);
1074 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbox24", hbox24,
1075 (GtkDestroyNotify) gtk_widget_unref);
1076 gtk_widget_show(hbox24);
1077 gtk_box_pack_start(GTK_BOX(vbox36), hbox24, TRUE, FALSE, 0);
1078
1079 label90 = gtk_label_new("Found information about ");
1080 gtk_widget_ref(label90);
1081 gtk_object_set_data_full(GTK_OBJECT(site_druid), "label90", label90,
1082 (GtkDestroyNotify) gtk_widget_unref);
1083 gtk_widget_show(label90);
1084 gtk_box_pack_start(GTK_BOX(hbox24), label90, FALSE, FALSE, 0);
1085
1086 fetch_num_files_got = gtk_label_new("0 files.");
1087 gtk_widget_ref(fetch_num_files_got);
1088 gtk_object_set_data_full(GTK_OBJECT(site_druid), "fetch_num_files_got", fetch_num_files_got,
1089 (GtkDestroyNotify) gtk_widget_unref);
1090 gtk_widget_show(fetch_num_files_got);
1091 gtk_box_pack_start(GTK_BOX(hbox24), fetch_num_files_got, FALSE, FALSE, 0);
1092
1093 new_fetch_begin = gtk_button_new_with_label("Fetch file state");
1094 gtk_widget_ref(new_fetch_begin);
1095 gtk_object_set_data_full(GTK_OBJECT(site_druid), "new_fetch_begin", new_fetch_begin,
1096 (GtkDestroyNotify) gtk_widget_unref);
1097 gtk_widget_show(new_fetch_begin);
1098 gtk_box_pack_start(GTK_BOX(vbox36), new_fetch_begin, FALSE, FALSE, 0);
1099 GTK_WIDGET_SET_FLAGS(new_fetch_begin, GTK_CAN_DEFAULT);
1100
1101 hbuttonbox2 = gtk_hbutton_box_new();
1102 gtk_widget_ref(hbuttonbox2);
1103 gtk_object_set_data_full(GTK_OBJECT(site_druid), "hbuttonbox2", hbuttonbox2,
1104 (GtkDestroyNotify) gtk_widget_unref);
1105 gtk_widget_show(hbuttonbox2);
1106 gtk_box_pack_start(GTK_BOX(vbox36), hbuttonbox2, FALSE, FALSE, 0);
1107
1108 finish_page = gnome_druid_page_finish_new();
1109 gtk_widget_ref(finish_page);
1110 gtk_object_set_data_full(GTK_OBJECT(site_druid), "finish_page", finish_page,
1111 (GtkDestroyNotify) gtk_widget_unref);
1112 gtk_widget_show(finish_page);
1113 gnome_druid_append_page(GNOME_DRUID(new_site_druid), GNOME_DRUID_PAGE(finish_page));
1114 gnome_druid_page_finish_set_logo_bg_color(GNOME_DRUID_PAGE_FINISH(finish_page), &finish_page_logo_bg_color);
1115 gnome_druid_page_finish_set_title(GNOME_DRUID_PAGE_FINISH(finish_page), "Creation successful!");
1116 gnome_druid_page_finish_set_text(GNOME_DRUID_PAGE_FINISH(finish_page), "Enough information has now been gathered,\nand a suitable site definition has been created.\nClick finish to close.");
1117 gnome_druid_page_finish_set_logo(GNOME_DRUID_PAGE_FINISH(finish_page),
1118 create_image("gnome-networktool.png"));
1119 /* gnome_druid_page_finish_set_watermark(GNOME_DRUID_PAGE_FINISH(finish_page),
1120 create_image("xsitecopy/xsc_side.xpm"));
1121 */
1122 gtk_signal_connect(GTK_OBJECT(site_druid), "delete_event",
1123 GTK_SIGNAL_FUNC(on_site_druid_delete_event),
1124 NULL);
1125 gtk_signal_connect(GTK_OBJECT(start_page), "cancel",
1126 GTK_SIGNAL_FUNC(on_general_info_cancel),
1127 NULL);
1128 gtk_signal_connect(GTK_OBJECT(general_info), "next",
1129 GTK_SIGNAL_FUNC(verify_name_and_url),
1130 NULL);
1131 gtk_signal_connect(GTK_OBJECT(general_info), "cancel",
1132 GTK_SIGNAL_FUNC(on_general_info_cancel),
1133 NULL);
1134 gtk_signal_connect(GTK_OBJECT(server_info), "next",
1135 GTK_SIGNAL_FUNC(verify_server_details),
1136 NULL);
1137 gtk_signal_connect(GTK_OBJECT(server_info), "cancel",
1138 GTK_SIGNAL_FUNC(on_server_info_cancel),
1139 NULL);
1140 gtk_signal_connect(GTK_OBJECT(new_ftp), "toggled",
1141 GTK_SIGNAL_FUNC(set_new_port),
1142 "ftp");
1143 gtk_signal_connect(GTK_OBJECT(new_http), "toggled",
1144 GTK_SIGNAL_FUNC(set_new_port),
1145 "http");
1146 gtk_signal_connect(GTK_OBJECT(directories), "next",
1147 GTK_SIGNAL_FUNC(verify_directories),
1148 NULL);
1149 gtk_signal_connect(GTK_OBJECT(directories), "cancel",
1150 GTK_SIGNAL_FUNC(on_directories_cancel),
1151 NULL);
1152 gtk_signal_connect(GTK_OBJECT(file_handling), "next",
1153 GTK_SIGNAL_FUNC(verify_file_attributes),
1154 NULL);
1155 gtk_signal_connect(GTK_OBJECT(file_handling), "cancel",
1156 GTK_SIGNAL_FUNC(on_file_handling_cancel),
1157 NULL);
1158 gtk_signal_connect(GTK_OBJECT(update_options), "next",
1159 GTK_SIGNAL_FUNC(verify_update_options),
1160 NULL);
1161 gtk_signal_connect(GTK_OBJECT(update_options), "cancel",
1162 GTK_SIGNAL_FUNC(on_update_options_cancel),
1163 NULL);
1164 gtk_signal_connect_after(GTK_OBJECT(server_state), "next",
1165 GTK_SIGNAL_FUNC(should_we_fetch),
1166 NULL);
1167 gtk_signal_connect(GTK_OBJECT(server_state), "next",
1168 GTK_SIGNAL_FUNC(set_back_insensitive),
1169 NULL);
1170 /* gtk_signal_connect(GTK_OBJECT(server_state), "next",
1171 GTK_SIGNAL_FUNC(make_site_from_druid),
1172 NULL);*/
1173 gtk_signal_connect(GTK_OBJECT(server_state), "cancel",
1174 GTK_SIGNAL_FUNC(on_server_state_cancel),
1175 NULL);
1176 gtk_signal_connect(GTK_OBJECT(fetch_a_list), "next",
1177 GTK_SIGNAL_FUNC(check_fetch_worked),
1178 NULL);
1179 gtk_signal_connect(GTK_OBJECT(fetch_a_list), "cancel",
1180 GTK_SIGNAL_FUNC(on_fetch_a_list_cancel),
1181 NULL);
1182 gtk_signal_connect(GTK_OBJECT(new_fetch_begin), "clicked",
1183 GTK_SIGNAL_FUNC(begin_first_time_fetch),
1184 NULL);
1185 gtk_signal_connect(GTK_OBJECT(finish_page), "finish",
1186 GTK_SIGNAL_FUNC(druid_finished),
1187 NULL);
1188 gtk_signal_connect(GTK_OBJECT(finish_page), "back",
1189 GTK_SIGNAL_FUNC(druid_back),
1190 NULL);
1191 gtk_signal_connect(GTK_OBJECT(finish_page), "cancel",
1192 GTK_SIGNAL_FUNC(on_finish_page_cancel),
1193 NULL);
1194 /**** End glade generated code ****/
1195
1196 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(new_ftp), TRUE);
1197 return site_druid;
1198
1199
1200 }
1201
start_new_site_wizard(void)1202 void start_new_site_wizard(void)
1203 {
1204
1205 /* Bring the druid to the front if it already exists */
1206
1207 NE_DEBUG(DEBUG_GNOME, "started New site druid.\n");
1208 if (site_druid) {
1209 gdk_window_raise(site_druid->window);
1210 gdk_window_show(site_druid->window);
1211 return;
1212 }
1213
1214 /* Make the bare bones of a site so we can add things to it as the user
1215 * moves along the druid.
1216 */
1217 site_druid = create_site_druid();
1218 site_to_add = default_site();
1219 gtk_widget_show(site_druid);
1220 }
1221
1222
1223 /*** Callbacks ***/
1224
1225 gboolean
on_site_druid_delete_event(GtkWidget * widget,GdkEvent * event,gpointer user_data)1226 on_site_druid_delete_event(GtkWidget * widget,
1227 GdkEvent * event,
1228 gpointer user_data)
1229 {
1230 NE_DEBUG(DEBUG_GNOME, "Caught delete event for new site druid.\n");
1231 close_druid();
1232 return FALSE;
1233 }
1234
1235
1236 gboolean
verify_name_and_url(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1237 verify_name_and_url(GnomeDruidPage * gnomedruidpage,
1238 gpointer arg1,
1239 gpointer user_data)
1240 {
1241 gchar *name_str;
1242
1243 NE_DEBUG(DEBUG_GNOME, "Verifying name and URL...\n");
1244
1245 name_str = grab_druid_entry_into_string("new_name");
1246 if (!name_str)
1247 {
1248 gnome_error_dialog("You must enter a sensible name for this site");
1249 return TRUE;
1250 }
1251
1252 site_to_add->name = name_str;
1253 NE_DEBUG(DEBUG_GNOME, "Name is %s.\n", name_str);
1254 site_to_add->url = grab_druid_entry_into_string("new_url");
1255 NE_DEBUG(DEBUG_GNOME, "URL is %s.\n", site_to_add->url);
1256 site_to_add->infofile = g_strconcat(copypath, name_str, NULL);
1257 return FALSE;
1258 }
1259
1260
grab_druid_entry_into_string(gchar * widget_name)1261 gchar *grab_druid_entry_into_string(gchar *widget_name)
1262 {
1263 GtkWidget *entry;
1264 gchar *tmp_string;
1265
1266 g_assert(widget_name != NULL);
1267
1268 entry = get_widget(site_druid, widget_name);
1269 tmp_string = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
1270
1271 /* If the string didn't get allocated, or something went screwy don't
1272 * return it. Otherwise do. This is horribly double-negated, but hey.
1273 */
1274 if (! ((!tmp_string) || (strlen(tmp_string) < 1)))
1275 {
1276 return tmp_string;
1277 }
1278 return NULL;
1279 }
1280
1281
1282 gboolean
verify_server_details(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1283 verify_server_details(GnomeDruidPage * gnomedruidpage,
1284 gpointer arg1,
1285 gpointer user_data)
1286 {
1287 /* Hostname */
1288 {
1289 gchar *host_str = grab_druid_entry_into_string("new_hostname");
1290 if (host_str != NULL)
1291 site_to_add->server.hostname = host_str;
1292 }
1293
1294 /* Username */
1295 {
1296 gchar *user_str = grab_druid_entry_into_string("new_username");
1297 if (user_str != NULL)
1298 site_to_add->server.username = user_str;
1299 }
1300
1301 /* Password */
1302 {
1303 gchar *pass_str = grab_druid_entry_into_string("new_password");
1304 if (pass_str != NULL)
1305 site_to_add->server.password = pass_str;
1306 }
1307
1308 /* Port */
1309 {
1310 GtkWidget *port = get_widget(site_druid, "new_port");
1311 gint port_int = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(port));
1312 if (port_int)
1313 site_to_add->server.port = port_int;
1314 }
1315
1316 /* Figure out the protocol to use. */
1317 {
1318 GtkWidget *protocol = get_widget(site_druid, "new_ftp");
1319
1320 if (GTK_TOGGLE_BUTTON(protocol)->active)
1321 {
1322 /* FTP was selected */
1323 site_to_add->protocol = siteproto_ftp;
1324 }
1325 #ifdef USE_DAV
1326 else
1327 {
1328 /* WebDAV was selected */
1329 site_to_add->protocol = siteproto_dav;
1330 }
1331 #endif /* USE_DAV */
1332 }
1333
1334 return FALSE;
1335 }
1336
1337
1338 /* Sets an appropriate default port when a new protocol is selected. */
1339
set_new_port(GtkToggleButton * togglebutton,gpointer user_data)1340 void set_new_port(GtkToggleButton * togglebutton,
1341 gpointer user_data)
1342 {
1343 gchar *protocol = (gchar *) user_data;
1344
1345 NE_DEBUG (DEBUG_GNOME, "Setting an appropriate port number based on the new protocol.\n");
1346 if (strcmp(protocol, "http") == 0) {
1347 NE_DEBUG (DEBUG_GNOME, "Setting a port for HTTP.\n");
1348 gtk_spin_button_set_value(GTK_SPIN_BUTTON(get_widget(site_druid, "new_port")),
1349 (float) 80);
1350 } else {
1351 NE_DEBUG (DEBUG_GNOME, "Setting a port for FTP.\n");
1352 gtk_spin_button_set_value(GTK_SPIN_BUTTON(get_widget(site_druid, "new_port")),
1353 (float) 21);
1354 }
1355 }
1356
1357
1358 gboolean
verify_directories(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1359 verify_directories(GnomeDruidPage * gnomedruidpage,
1360 gpointer arg1,
1361 gpointer user_data)
1362 {
1363 /* (todo: If there are many places where we have almost identical code for
1364 local,remote cases, then consider changing local_isrel to isrel[LOCAL] etc.) */
1365
1366 /* Verify & process local directory. */
1367 {
1368 gchar *local_str = grab_druid_entry_into_string("new_local_entry");
1369 if (local_str)
1370 {
1371 NE_DEBUG(DEBUG_GNOME, "Local dir is %s.\n", local_str);
1372 site_to_add->local_root_user = local_str;
1373 if (*local_str == '~')
1374 site_to_add->local_isrel = TRUE;
1375 }
1376 else
1377 {
1378 gnome_error_dialog("You must enter a valid local directory for this site");
1379 return TRUE;
1380 }
1381 }
1382
1383 /* Verify & process remote directory. */
1384 {
1385 gchar *remote_str = grab_druid_entry_into_string("new_remote_entry");
1386 if (remote_str)
1387 {
1388 NE_DEBUG(DEBUG_GNOME, "Remote dir is %s.\n", remote_str);
1389 site_to_add->remote_root_user = remote_str;
1390 if (*remote_str == '~')
1391 site_to_add->remote_isrel = TRUE;
1392 }
1393 else
1394 {
1395 gnome_error_dialog("You must enter a valid remote directory for this site");
1396 return TRUE;
1397 }
1398 }
1399
1400 return FALSE;
1401 }
1402
1403
1404 /* Permissions, sym links, state-change method */
1405
1406 gboolean
verify_file_attributes(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1407 verify_file_attributes(GnomeDruidPage * gnomedruidpage,
1408 gpointer arg1,
1409 gpointer user_data)
1410 {
1411
1412 GtkWidget *perms1, *perms2, *perms3;
1413 GtkWidget *links1, *links2, *links3;
1414
1415 /* Permissions */
1416 perms1 = get_widget(site_druid, "new_perms_all");
1417 perms2 = get_widget(site_druid, "new_perms_exec");
1418 perms3 = get_widget(site_druid, "new_perms_ignore");
1419
1420 if (GTK_TOGGLE_BUTTON(perms1)->active)
1421 {
1422 site_to_add->perms = sitep_all;
1423 }
1424 else if (GTK_TOGGLE_BUTTON(perms2)->active)
1425 {
1426 site_to_add->perms = sitep_exec;
1427 }
1428 else
1429 {
1430 site_to_add->perms = sitep_ignore;
1431 }
1432
1433 /* Symbolic links */
1434 links1 = get_widget(site_druid, "new_sym_follow");
1435 links2 = get_widget(site_druid, "new_sym_ignore");
1436 links3 = get_widget(site_druid, "new_sym_maintain");
1437
1438 if (GTK_TOGGLE_BUTTON(links1)->active)
1439 {
1440 site_to_add->symlinks = sitesym_follow;
1441 }
1442 else if (GTK_TOGGLE_BUTTON(links2)->active)
1443 {
1444 site_to_add->symlinks = sitesym_ignore;
1445 }
1446 else
1447 {
1448 site_to_add->symlinks = sitesym_maintain;
1449 }
1450
1451 /* File State method */
1452 if (GTK_TOGGLE_BUTTON(get_widget(site_druid, "new_timesize"))->active)
1453 {
1454 site_to_add->state_method = state_timesize;
1455 }
1456 else
1457 {
1458 site_to_add->state_method = state_checksum;
1459 }
1460
1461 return FALSE;
1462 }
1463
1464
1465 gboolean
verify_update_options(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1466 verify_update_options(GnomeDruidPage * gnomedruidpage,
1467 gpointer arg1,
1468 gpointer user_data)
1469 {
1470 GtkWidget *del, *move, *change, *lcase, *safe, *pasv;
1471
1472 del = get_widget(site_druid, "new_nodelete");
1473 move = get_widget(site_druid, "new_checkmoved");
1474 change = get_widget(site_druid, "new_nooverwrite");
1475 lcase = get_widget(site_druid, "new_lowercase");
1476 safe = get_widget(site_druid, "new_safe");
1477 pasv = get_widget(site_druid, "new_pasv");
1478
1479 site_to_add->nodelete = !(GTK_TOGGLE_BUTTON(del)->active);
1480 site_to_add->checkmoved = GTK_TOGGLE_BUTTON(move)->active;
1481 site_to_add->nooverwrite = GTK_TOGGLE_BUTTON(change)->active;
1482 site_to_add->lowercase = GTK_TOGGLE_BUTTON(lcase)->active;
1483 site_to_add->safemode = GTK_TOGGLE_BUTTON(safe)->active;
1484
1485 /* Enforce a bit of sanity */
1486 if (site_to_add->safemode)
1487 site_to_add->nooverwrite = FALSE;
1488
1489 /* If using webdav, let's leave pasv_mode as false */
1490 if (site_to_add->protocol == siteproto_ftp)
1491 site_to_add->ftp_pasv_mode = GTK_TOGGLE_BUTTON(pasv)->active;
1492
1493 return FALSE;
1494 }
1495
1496
1497 gboolean
should_we_fetch(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1498 should_we_fetch(GnomeDruidPage * gnomedruidpage,
1499 gpointer arg1,
1500 gpointer user_data)
1501 {
1502 GtkWidget *connect_radio = get_widget(site_druid, "new_fetch_please");
1503
1504 if (!GTK_TOGGLE_BUTTON(connect_radio)->active) {
1505 gnome_druid_set_page(GNOME_DRUID(get_widget(site_druid, "new_site_druid")),
1506 GNOME_DRUID_PAGE(get_widget(site_druid, "finish_page")));
1507 return TRUE;
1508 }
1509 return FALSE;
1510 }
1511
1512
1513 gboolean
set_back_insensitive(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1514 set_back_insensitive(GnomeDruidPage * gnomedruidpage,
1515 gpointer arg1,
1516 gpointer user_data)
1517 {
1518 gnome_druid_set_buttons_sensitive(GNOME_DRUID(get_widget(site_druid, "new_site_druid")),
1519 FALSE, TRUE, TRUE);
1520 return FALSE;
1521 }
1522
1523
1524 /* This isn't implemented until the 'fetch' API is nicer... */
1525
1526 gboolean
check_fetch_worked(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1527 check_fetch_worked(GnomeDruidPage * gnomedruidpage,
1528 gpointer arg1,
1529 gpointer user_data)
1530 {
1531
1532 return FALSE;
1533 }
1534
1535
begin_first_time_fetch(GtkButton * button,gpointer user_data)1536 void begin_first_time_fetch(GtkButton * button,
1537 gpointer user_data)
1538 {
1539
1540 }
1541
druid_back(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1542 gboolean druid_back(GnomeDruidPage * gnomedruidpage,
1543 gpointer arg1,
1544 gpointer user_data)
1545 {
1546 gnome_druid_set_page(GNOME_DRUID(get_widget(site_druid, "new_site_druid")),
1547 GNOME_DRUID_PAGE(get_widget(site_druid, "server_state")));
1548
1549 }
1550
1551 /* The user has choosen Finish on the last page
1552 of the wizard */
druid_finished(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1553 void druid_finished(GnomeDruidPage * gnomedruidpage,
1554 gpointer arg1,
1555 gpointer user_data)
1556 {
1557 add_site(user_data);
1558 close_druid();
1559 }
1560
1561
1562 /* This next stuff is pretty lame really, but it was Glade-generated, hence
1563 * took very little work, so I'm not complaining.
1564 */
1565
1566 gboolean
on_general_info_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1567 on_general_info_cancel(GnomeDruidPage * gnomedruidpage,
1568 gpointer arg1,
1569 gpointer user_data)
1570 {
1571 close_druid();
1572 return TRUE;
1573 }
1574
1575
1576 gboolean
on_server_info_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1577 on_server_info_cancel(GnomeDruidPage * gnomedruidpage,
1578 gpointer arg1,
1579 gpointer user_data)
1580 {
1581 close_druid();
1582 return TRUE;
1583 }
1584
1585
1586 gboolean
on_directories_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1587 on_directories_cancel(GnomeDruidPage * gnomedruidpage,
1588 gpointer arg1,
1589 gpointer user_data)
1590 {
1591 close_druid();
1592 return TRUE;
1593 }
1594
1595
1596 gboolean
on_file_handling_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1597 on_file_handling_cancel(GnomeDruidPage * gnomedruidpage,
1598 gpointer arg1,
1599 gpointer user_data)
1600 {
1601 close_druid();
1602 return TRUE;
1603 }
1604
1605
1606 gboolean
on_update_options_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1607 on_update_options_cancel(GnomeDruidPage * gnomedruidpage,
1608 gpointer arg1,
1609 gpointer user_data)
1610 {
1611 close_druid();
1612 return TRUE;
1613 }
1614
1615
1616 gboolean
on_server_state_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1617 on_server_state_cancel(GnomeDruidPage * gnomedruidpage,
1618 gpointer arg1,
1619 gpointer user_data)
1620 {
1621 close_druid();
1622 return TRUE;
1623 }
1624
1625
1626 gboolean
on_fetch_a_list_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1627 on_fetch_a_list_cancel(GnomeDruidPage * gnomedruidpage,
1628 gpointer arg1,
1629 gpointer user_data)
1630 {
1631 close_druid();
1632 return TRUE;
1633 }
1634
1635
1636 gboolean
on_finish_page_cancel(GnomeDruidPage * gnomedruidpage,gpointer arg1,gpointer user_data)1637 on_finish_page_cancel(GnomeDruidPage * gnomedruidpage,
1638 gpointer arg1,
1639 gpointer user_data)
1640 {
1641 close_druid();
1642 return TRUE;
1643 }
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657