"Fossies" - the Fresh Open Source Software archive 
Member "sitecopy-0.16.6/gnome/site_widgets.c" of archive sitecopy-0.16.6.tar.gz:
/*
* XSitecopy, for managing remote web sites with a GNOME interface.
* Copyright (C) 2000, Lee Mallabone <lee@fonicmonkey.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include "site_widgets.h"
extern struct site *all_sites;
extern GtkWidget *site_list, *status_bar;
extern GtkWidget *main_area_box, *area_data;
extern GtkWidget *the_tree;
extern struct site *selected_site;
extern gboolean rcfile_saved;
struct slist_gui *the_excludes, *the_ignores, *ascii_files;
GtkWidget *main_panel;
int last_notepage = 0;
/* These widgets are global due to the freak deadlock bugs seen when using my
* `get_widget' macro to retrieve per-instance pointers.
*/
GtkWidget *sym_follow;
GtkWidget *sym_ignore;
GtkWidget *sym_maintain;
GtkWidget *port;
GtkWidget *perms_ignore;
GtkWidget *perms_exec;
GtkWidget *perms_all;
GtkWidget *ftp_mode;
GtkWidget *nooverwrite;
void record_notepage(GtkNotebook * note, GtkNotebookPage * page,
gint pagenum, gpointer data)
{
/* last_notepage = pagenum;*/
NE_DEBUG(DEBUG_GNOME, "Recording notebook page number, %d.\n", pagenum);
}
GtkWidget *
make_site_info_area(struct site *the_site)
{
int files_on_site;
char *tmp;
gboolean current_rcfile_saved;
GtkWidget *container;
GtkWidget *vbox21;
GtkWidget *frame14;
GtkWidget *table4;
GtkWidget *label33;
GtkWidget *label34;
GtkWidget *label35;
GtkWidget *username;
GtkWidget *combo_entry3;
GtkWidget *label36;
GtkWidget *password;
GtkWidget *hbox15;
GtkWidget *servername;
GtkWidget *combo_entry2;
GtkWidget *label50;
GtkObject *port_adj;
GtkWidget *hbox8;
GSList *protocol_group = NULL;
GtkWidget *proto_ftp;
GtkWidget *proto_dav;
GtkWidget *stats_frame;
GtkWidget *stats_label;
GtkWidget *label26;
GtkWidget *vbox22;
GtkWidget *frame16;
GtkWidget *table5;
GtkWidget *label40;
GtkWidget *url;
GtkWidget *remote_dir;
GtkWidget *combo_entry5;
GtkWidget *label38;
GtkWidget *label39;
GtkWidget *local_dir;
GtkWidget *combo_entry4;
GtkWidget *frame17;
GtkWidget *table6;
GtkWidget *label41;
GtkWidget *label42;
GtkWidget *label43;
GtkWidget *hbox10;
GSList *sym_link_group = NULL;
GtkWidget *hbox9;
GSList *perms_group = NULL;
GtkWidget *hbox11;
GtkWidget *detection_mode;
GtkWidget *detection_button;
GtkWidget *label27;
GtkWidget *frame18;
GtkWidget *vbox23;
GtkWidget *nodelete;
GtkWidget *checkmoved;
GtkWidget *lowercase;
GtkWidget *use_safemode;
GtkWidget *label28;
GtkWidget *vbox24;
GtkWidget *scrolledwindow2;
GtkWidget *label44;
GtkWidget *hbox12;
GtkWidget *label45;
GtkWidget *exclude_gentry;
GtkWidget *excludes_new;
GtkWidget *exclude_remove;
GtkWidget *label30;
GtkWidget *vbox25;
GtkWidget *scrolledwindow3;
GtkWidget *label46;
GtkWidget *hbox13;
GtkWidget *label47;
GtkWidget *ascii_gentry;
GtkWidget *ascii_new;
GtkWidget *ascii_remove;
GtkWidget *label31;
GtkWidget *vbox26;
GtkWidget *scrolledwindow4;
GtkWidget *label48;
GtkWidget *hbox14;
GtkWidget *label49;
GtkWidget *ignores_gentry;
GtkWidget *ignores_label;
GtkWidget *ignore_new;
GtkWidget *ignore_remove;
current_rcfile_saved = rcfile_saved;
main_panel = gtk_hbox_new(FALSE, 0);
container = gtk_notebook_new();
gtk_widget_show(container);
gtk_container_add(GTK_CONTAINER(main_panel), container);
vbox21 = gtk_vbox_new(FALSE, 4);
gtk_widget_show(vbox21);
gtk_container_add(GTK_CONTAINER(container), vbox21);
gtk_container_set_border_width(GTK_CONTAINER(vbox21), 3);
frame14 = gtk_frame_new("Server Details");
gtk_widget_show(frame14);
gtk_box_pack_start(GTK_BOX(vbox21), frame14, TRUE, TRUE, 0);
table4 = gtk_table_new(4, 2, FALSE);
gtk_widget_show(table4);
gtk_container_add(GTK_CONTAINER(frame14), table4);
gtk_container_set_border_width(GTK_CONTAINER(table4), 5);
gtk_table_set_row_spacings(GTK_TABLE(table4), 2);
gtk_table_set_col_spacings(GTK_TABLE(table4), 2);
label33 = gtk_label_new("Host Name: ");
gtk_widget_show(label33);
gtk_table_attach(GTK_TABLE(table4), label33, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label33), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label33), 0, 0.5);
label34 = gtk_label_new("Protocol: ");
gtk_widget_show(label34);
gtk_table_attach(GTK_TABLE(table4), label34, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label34), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label34), 0, 0.5);
label35 = gtk_label_new("Username: ");
gtk_widget_show(label35);
gtk_table_attach(GTK_TABLE(table4), label35, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label35), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label35), 0, 0.5);
username = gnome_entry_new("user_history");
gtk_widget_show(username);
gtk_table_attach(GTK_TABLE(table4), username, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
combo_entry3 = gnome_entry_gtk_entry(GNOME_ENTRY(username));
gtk_entry_set_text(GTK_ENTRY(combo_entry3), selected_site->server.username);
gtk_widget_show(combo_entry3);
label36 = gtk_label_new("Password: ");
gtk_widget_show(label36);
gtk_table_attach(GTK_TABLE(table4), label36, 0, 1, 3, 4,
(GtkAttachOptions) (GTK_SHRINK | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label36), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label36), 0, 0.5);
password = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(password), selected_site->server.password);
gtk_entry_set_visibility(GTK_ENTRY(password), FALSE);
gtk_widget_show(password);
gtk_table_attach(GTK_TABLE(table4), password, 1, 2, 3, 4,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
hbox15 = gtk_hbox_new(FALSE, 3);
gtk_widget_show(hbox15);
gtk_table_attach(GTK_TABLE(table4), hbox15, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
servername = gnome_entry_new("host_history");
gtk_widget_show(servername);
gtk_box_pack_start(GTK_BOX(hbox15), servername, TRUE, TRUE, 0);
combo_entry2 = gnome_entry_gtk_entry(GNOME_ENTRY(servername));
gtk_entry_set_text(GTK_ENTRY(combo_entry2), selected_site->server.hostname);
gtk_widget_show(combo_entry2);
label50 = gtk_label_new("Port: ");
gtk_widget_show(label50);
gtk_box_pack_start(GTK_BOX(hbox15), label50, FALSE, FALSE, 0);
port_adj = gtk_adjustment_new(65532, 1, 65536, 1, 10, 10);
port = gtk_spin_button_new(GTK_ADJUSTMENT(port_adj), 1, 0);
gtk_widget_show(port);
gtk_box_pack_start(GTK_BOX(hbox15), port, TRUE, TRUE, 0);
gtk_widget_set_usize(port, 12, -2);
gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(port), TRUE);
gtk_spin_button_set_wrap(GTK_SPIN_BUTTON(port), TRUE);
hbox8 = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox8);
gtk_table_attach(GTK_TABLE(table4), hbox8, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
proto_ftp = gtk_radio_button_new_with_label(protocol_group, "FTP");
gtk_signal_connect(GTK_OBJECT(proto_ftp), "toggled",
GTK_SIGNAL_FUNC(change_protocol),
"ftp");
protocol_group = gtk_radio_button_group(GTK_RADIO_BUTTON(proto_ftp));
gtk_widget_show(proto_ftp);
gtk_box_pack_start(GTK_BOX(hbox8), proto_ftp, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(proto_ftp), TRUE);
#ifdef USE_DAV
proto_dav = gtk_radio_button_new_with_label(protocol_group, "WebDAV");
gtk_signal_connect(GTK_OBJECT(proto_dav), "toggled",
GTK_SIGNAL_FUNC(change_protocol),
"dav");
protocol_group = gtk_radio_button_group(GTK_RADIO_BUTTON(proto_dav));
gtk_widget_show(proto_dav);
gtk_box_pack_start(GTK_BOX(hbox8), proto_dav, FALSE, FALSE, 0);
#endif /* USE_DAV */
stats_frame = gtk_frame_new("Site Statistics");
gtk_widget_show(stats_frame);
gtk_box_pack_start(GTK_BOX(vbox21), stats_frame, TRUE, TRUE, 0);
stats_label = gtk_label_new("\n\n\n\n\n");
files_on_site = selected_site->numnew + selected_site->numchanged + selected_site->numdeleted + selected_site->nummoved + selected_site->numunchanged;
if (!selected_site->remote_is_different) {
tmp = g_strdup_printf("\nThe local site contains %d files, none of which\nhave changed since the last update.\n\n", files_on_site);
} else {
tmp = g_strdup_printf("The local site has changed since the last update:\n%d files have been added, %d files have changed,\n%d files have been deleted, %d files have been moved,\n%d remain unchanged. There are currently %d files on the local site.",
selected_site->numnew,
selected_site->numchanged,
selected_site->numdeleted,
selected_site->nummoved,
selected_site->numunchanged,
files_on_site);
}
gtk_label_set(GTK_LABEL(stats_label), tmp);
gtk_widget_show(stats_label);
gtk_container_add(GTK_CONTAINER(stats_frame), stats_label);
label26 = gtk_label_new("Basic Details");
gtk_widget_show(label26);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 0), label26);
vbox22 = gtk_vbox_new(FALSE, 4);
gtk_widget_show(vbox22);
gtk_container_add(GTK_CONTAINER(container), vbox22);
gtk_container_set_border_width(GTK_CONTAINER(vbox22), 3);
frame16 = gtk_frame_new("Locations");
gtk_widget_show(frame16);
gtk_box_pack_start(GTK_BOX(vbox22), frame16, TRUE, TRUE, 0);
table5 = gtk_table_new(3, 2, FALSE);
gtk_widget_show(table5);
gtk_container_add(GTK_CONTAINER(frame16), table5);
gtk_container_set_border_width(GTK_CONTAINER(table5), 5);
gtk_table_set_row_spacings(GTK_TABLE(table5), 2);
gtk_table_set_col_spacings(GTK_TABLE(table5), 2);
label40 = gtk_label_new("Root URL of the remote site: ");
gtk_widget_show(label40);
gtk_table_attach(GTK_TABLE(table5), label40, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label40), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label40), 0, 0.5);
url = gtk_entry_new();
if (selected_site->url)
gtk_entry_set_text(GTK_ENTRY(url), selected_site->url);
gtk_widget_show(url);
gtk_table_attach(GTK_TABLE(table5), url, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
remote_dir = gnome_entry_new(NULL);
gtk_widget_show(remote_dir);
gtk_table_attach(GTK_TABLE(table5), remote_dir, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
combo_entry5 = gnome_entry_gtk_entry(GNOME_ENTRY(remote_dir));
if (selected_site->remote_root_user)
gtk_entry_set_text(GTK_ENTRY(combo_entry5),
selected_site->remote_root_user);
gtk_widget_show(combo_entry5);
label38 = gtk_label_new("Directory for remote files: ");
gtk_widget_show(label38);
gtk_table_attach(GTK_TABLE(table5), label38, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label38), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label38), 0, 0.5);
label39 = gtk_label_new("Directory for local files: ");
gtk_widget_show(label39);
gtk_table_attach(GTK_TABLE(table5), label39, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label39), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label39), 0, 0.5);
local_dir = gnome_file_entry_new(NULL, NULL);
gtk_widget_show(local_dir);
gtk_table_attach(GTK_TABLE(table5), local_dir, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
combo_entry4 = gnome_file_entry_gtk_entry(GNOME_FILE_ENTRY(local_dir));
if (selected_site->local_root_user)
gtk_entry_set_text(GTK_ENTRY(combo_entry4),
selected_site->local_root_user);
gtk_widget_show(combo_entry4);
frame17 = gtk_frame_new("File Attributes");
gtk_widget_show(frame17);
gtk_box_pack_start(GTK_BOX(vbox22), frame17, TRUE, TRUE, 0);
table6 = gtk_table_new(3, 2, FALSE);
gtk_widget_show(table6);
gtk_container_add(GTK_CONTAINER(frame17), table6);
gtk_container_set_border_width(GTK_CONTAINER(table6), 5);
gtk_table_set_row_spacings(GTK_TABLE(table6), 2);
gtk_table_set_col_spacings(GTK_TABLE(table6), 2);
label41 = gtk_label_new("Permissions mode: ");
gtk_widget_show(label41);
gtk_table_attach(GTK_TABLE(table6), label41, 0, 1, 0, 1,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label41), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label41), 0, 0.5);
label42 = gtk_label_new("Symbolic links: ");
gtk_widget_show(label42);
gtk_table_attach(GTK_TABLE(table6), label42, 0, 1, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label42), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label42), 0, 0.5);
label43 = gtk_label_new("Detect changes using: ");
gtk_widget_show(label43);
gtk_table_attach(GTK_TABLE(table6), label43, 0, 1, 2, 3,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
gtk_label_set_justify(GTK_LABEL(label43), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(label43), 0, 0.5);
hbox10 = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox10);
gtk_table_attach(GTK_TABLE(table6), hbox10, 1, 2, 1, 2,
(GtkAttachOptions) (GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
sym_follow = gtk_radio_button_new_with_label(sym_link_group, "Follow all");
sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(sym_follow));
gtk_widget_show(sym_follow);
gtk_box_pack_start(GTK_BOX(hbox10), sym_follow, FALSE, FALSE, 0);
sym_ignore = gtk_radio_button_new_with_label(sym_link_group, "Ignore links");
sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(sym_ignore));
gtk_widget_show(sym_ignore);
gtk_box_pack_start(GTK_BOX(hbox10), sym_ignore, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sym_ignore), TRUE);
sym_maintain = gtk_radio_button_new_with_label(sym_link_group, "Maintain links");
sym_link_group = gtk_radio_button_group(GTK_RADIO_BUTTON(sym_maintain));
gtk_widget_show(sym_maintain);
gtk_box_pack_start(GTK_BOX(hbox10), sym_maintain, FALSE, FALSE, 0);
hbox9 = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox9);
gtk_table_attach(GTK_TABLE(table6), hbox9, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
perms_ignore = gtk_radio_button_new_with_label(perms_group, "Ignore all");
perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(perms_ignore));
gtk_widget_show(perms_ignore);
gtk_box_pack_start(GTK_BOX(hbox9), perms_ignore, FALSE, FALSE, 0);
perms_exec = gtk_radio_button_new_with_label(perms_group, "Executables only");
perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(perms_exec));
gtk_widget_show(perms_exec);
gtk_box_pack_start(GTK_BOX(hbox9), perms_exec, FALSE, FALSE, 0);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(perms_exec), TRUE);
perms_all = gtk_radio_button_new_with_label(perms_group, "Maintain all");
perms_group = gtk_radio_button_group(GTK_RADIO_BUTTON(perms_all));
gtk_widget_show(perms_all);
gtk_box_pack_start(GTK_BOX(hbox9), perms_all, FALSE, FALSE, 0);
hbox11 = gtk_hbox_new(FALSE, 0);
gtk_widget_show(hbox11);
gtk_table_attach(GTK_TABLE(table6), hbox11, 1, 2, 2, 3,
(GtkAttachOptions) (GTK_FILL | GTK_EXPAND),
(GtkAttachOptions) (GTK_EXPAND), 0, 0);
/* Detection mode status */
detection_mode = gtk_label_new("");
gtk_label_set_justify(GTK_LABEL(detection_mode), GTK_JUSTIFY_LEFT);
gtk_misc_set_alignment(GTK_MISC(detection_mode), 0, 0.5);
gtk_box_pack_start(GTK_BOX(hbox11), detection_mode, TRUE, TRUE, 4);
gtk_widget_show(detection_mode);
/* Change button */
detection_button = gtk_button_new_with_label("Change");
gtk_signal_connect(GTK_OBJECT(detection_button), "clicked",
GTK_SIGNAL_FUNC(change_detection_mode), NULL);
gtk_box_pack_start(GTK_BOX(hbox11), detection_button, TRUE, FALSE, 4);
gtk_widget_show(detection_button);
/* Added */
if (the_site->state_method == state_timesize)
gtk_label_set(GTK_LABEL(detection_mode), "File size & modification time");
else
gtk_label_set(GTK_LABEL(detection_mode), "File checksum");
/* gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(detect_sizetime), TRUE);*/
/* End */
label27 = gtk_label_new("Locations & Files");
gtk_widget_show(label27);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 1), label27);
frame18 = gtk_frame_new("Operations checklist");
gtk_widget_show(frame18);
gtk_container_add(GTK_CONTAINER(container), frame18);
gtk_container_set_border_width(GTK_CONTAINER(frame18), 3);
vbox23 = gtk_vbox_new(FALSE, 0);
gtk_widget_show(vbox23);
gtk_container_add(GTK_CONTAINER(frame18), vbox23);
nodelete = gtk_check_button_new_with_label("Delete a file from the server if it is deleted locally");
gtk_widget_show(nodelete);
gtk_box_pack_start(GTK_BOX(vbox23), nodelete, TRUE, FALSE, 0);
checkmoved = gtk_check_button_new_with_label("Move a remote file if it is moved locally");
gtk_widget_show(checkmoved);
gtk_box_pack_start(GTK_BOX(vbox23), checkmoved, TRUE, FALSE, 0);
nooverwrite = gtk_check_button_new_with_label("When uploading changed files, first delete them");
gtk_widget_show(nooverwrite);
gtk_box_pack_start(GTK_BOX(vbox23), nooverwrite, TRUE, FALSE, 0);
lowercase = gtk_check_button_new_with_label("Convert all filenames to lowercase when uploading");
gtk_widget_show(lowercase);
gtk_box_pack_start(GTK_BOX(vbox23), lowercase, TRUE, FALSE, 0);
use_safemode = gtk_check_button_new_with_label("Use \"safe mode\"");
gtk_widget_show(use_safemode);
gtk_box_pack_start(GTK_BOX(vbox23), use_safemode, TRUE, FALSE, 0);
ftp_mode = gtk_check_button_new_with_label("Use passive mode FTP");
gtk_widget_show(ftp_mode);
gtk_box_pack_start(GTK_BOX(vbox23), ftp_mode, TRUE, FALSE, 0);
label28 = gtk_label_new("Update Options");
gtk_widget_show(label28);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 2), label28);
vbox24 = gtk_vbox_new(FALSE, 4);
gtk_widget_show(vbox24);
gtk_container_add(GTK_CONTAINER(container), vbox24);
gtk_container_set_border_width(GTK_CONTAINER(vbox24), 3);
scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_show(scrolledwindow2);
gtk_box_pack_start(GTK_BOX(vbox24), scrolledwindow2, TRUE, TRUE, 0);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
the_excludes = malloc(sizeof(struct slist_gui));
the_excludes->data = the_site->excludes;
the_excludes->type = list_exclude;
the_excludes->chosen_row = -1;
the_excludes->list = gtk_clist_new(1);
gtk_widget_show(the_excludes->list);
gtk_container_add(GTK_CONTAINER(scrolledwindow2), the_excludes->list);
gtk_clist_set_column_width(GTK_CLIST(the_excludes->list), 0, 80);
gtk_clist_column_titles_show(GTK_CLIST(the_excludes->list));
label44 = gtk_label_new("Files and regular expressions to exclude from the site");
gtk_widget_show(label44);
gtk_clist_set_column_widget(GTK_CLIST(the_excludes->list), 0, label44);
hbox12 = gtk_hbox_new(FALSE, 2);
gtk_widget_show(hbox12);
gtk_box_pack_start(GTK_BOX(vbox24), hbox12, FALSE, TRUE, 0);
gtk_container_set_border_width(GTK_CONTAINER(hbox12), 1);
label45 = gtk_label_new("Exclude: ");
gtk_widget_show(label45);
gtk_box_pack_start(GTK_BOX(hbox12), label45, FALSE, FALSE, 0);
exclude_gentry = gnome_entry_new("excludes_history");
gtk_widget_show(exclude_gentry);
gtk_box_pack_start(GTK_BOX(hbox12), exclude_gentry, TRUE, TRUE, 0);
the_excludes->entry = gnome_entry_gtk_entry(GNOME_ENTRY(exclude_gentry));
gtk_widget_show(the_excludes->entry);
excludes_new = gtk_button_new_with_label("New");
gtk_widget_show(excludes_new);
gtk_box_pack_start(GTK_BOX(hbox12), excludes_new, FALSE, FALSE, 0);
exclude_remove = gtk_button_new_with_label("Remove");
gtk_widget_show(exclude_remove);
gtk_box_pack_start(GTK_BOX(hbox12), exclude_remove, FALSE, FALSE, 0);
label30 = gtk_label_new("Excludes");
gtk_widget_show(label30);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 3), label30);
/* Actually fill in the excludes list */
populate_minilist(the_excludes);
vbox25 = gtk_vbox_new(FALSE, 4);
gtk_widget_show(vbox25);
gtk_container_add(GTK_CONTAINER(container), vbox25);
gtk_container_set_border_width(GTK_CONTAINER(vbox25), 3);
scrolledwindow3 = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_show(scrolledwindow3);
gtk_box_pack_start(GTK_BOX(vbox25), scrolledwindow3, TRUE, TRUE, 0);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow3), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
ascii_files = malloc(sizeof(struct slist_gui));
ascii_files->data = the_site->asciis;
ascii_files->type = list_ascii;
ascii_files->chosen_row = -1;
ascii_files->list = gtk_clist_new(1);
gtk_widget_show(ascii_files->list);
gtk_container_add(GTK_CONTAINER(scrolledwindow3), ascii_files->list);
gtk_clist_set_column_width(GTK_CLIST(ascii_files->list), 0, 80);
gtk_clist_column_titles_show(GTK_CLIST(ascii_files->list));
label46 = gtk_label_new("Files to transfer in 'ASCII' mode");
gtk_widget_show(label46);
gtk_clist_set_column_widget(GTK_CLIST(ascii_files->list), 0, label46);
hbox13 = gtk_hbox_new(FALSE, 2);
gtk_widget_show(hbox13);
gtk_box_pack_start(GTK_BOX(vbox25), hbox13, FALSE, TRUE, 0);
gtk_container_set_border_width(GTK_CONTAINER(hbox13), 1);
label47 = gtk_label_new("Filename: ");
gtk_widget_show(label47);
gtk_box_pack_start(GTK_BOX(hbox13), label47, FALSE, FALSE, 0);
ascii_gentry = gnome_entry_new(NULL);
gtk_widget_show(ascii_gentry);
gtk_box_pack_start(GTK_BOX(hbox13), ascii_gentry, TRUE, TRUE, 0);
ascii_files->entry = gnome_entry_gtk_entry(GNOME_ENTRY(ascii_gentry));
gtk_widget_show(ascii_files->entry);
ascii_new = gtk_button_new_with_label("New");
gtk_widget_show(ascii_new);
gtk_box_pack_start(GTK_BOX(hbox13), ascii_new, FALSE, FALSE, 0);
ascii_remove = gtk_button_new_with_label("Remove");
gtk_widget_show(ascii_remove);
gtk_box_pack_start(GTK_BOX(hbox13), ascii_remove, FALSE, FALSE, 0);
label31 = gtk_label_new("ASCII");
gtk_widget_show(label31);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 4), label31);
populate_minilist(ascii_files);
vbox26 = gtk_vbox_new(FALSE, 4);
gtk_widget_show(vbox26);
gtk_container_add(GTK_CONTAINER(container), vbox26);
gtk_container_set_border_width(GTK_CONTAINER(vbox26), 3);
scrolledwindow4 = gtk_scrolled_window_new(NULL, NULL);
gtk_widget_show(scrolledwindow4);
gtk_box_pack_start(GTK_BOX(vbox26), scrolledwindow4, TRUE, TRUE, 0);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow4), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
the_ignores = malloc(sizeof(struct slist_gui));
the_ignores->data = the_site->ignores;
the_ignores->type = list_ignore;
the_ignores->chosen_row = -1;
the_ignores->list = gtk_clist_new(1);
gtk_widget_show(the_ignores->list);
gtk_container_add(GTK_CONTAINER(scrolledwindow4), the_ignores->list);
gtk_clist_set_column_width(GTK_CLIST(the_ignores->list), 0, 80);
gtk_clist_column_titles_show(GTK_CLIST(the_ignores->list));
label48 = gtk_label_new("Files whose *changes* should not be transferred to the remote site");
gtk_widget_show(label48);
gtk_clist_set_column_widget(GTK_CLIST(the_ignores->list), 0, label48);
populate_minilist(the_ignores);
hbox14 = gtk_hbox_new(FALSE, 2);
gtk_widget_show(hbox14);
gtk_box_pack_start(GTK_BOX(vbox26), hbox14, FALSE, TRUE, 0);
gtk_container_set_border_width(GTK_CONTAINER(hbox14), 1);
label49 = gtk_label_new("Ignore: ");
gtk_widget_show(label49);
gtk_box_pack_start(GTK_BOX(hbox14), label49, FALSE, FALSE, 0);
ignores_gentry = gnome_entry_new(NULL);
gtk_widget_show(ignores_gentry);
gtk_box_pack_start(GTK_BOX(hbox14), ignores_gentry, TRUE, TRUE, 0);
the_ignores->entry = gnome_entry_gtk_entry(GNOME_ENTRY(ignores_gentry));
gtk_widget_show(the_ignores->entry);
ignore_new = gtk_button_new_with_label("New");
gtk_widget_show(ignore_new);
gtk_box_pack_start(GTK_BOX(hbox14), ignore_new, FALSE, FALSE, 0);
ignore_remove = gtk_button_new_with_label("Remove");
gtk_widget_show(ignore_remove);
gtk_box_pack_start(GTK_BOX(hbox14), ignore_remove, FALSE, FALSE, 0);
ignores_label = gtk_label_new("Ignore");
gtk_widget_show(ignores_label);
gtk_notebook_set_tab_label(GTK_NOTEBOOK(container), gtk_notebook_get_nth_page(GTK_NOTEBOOK(container), 5), ignores_label);
if (selected_site->protocol == siteproto_ftp)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(proto_ftp), TRUE);
#ifdef USE_DAV
if (selected_site->protocol == siteproto_dav)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(proto_dav), TRUE);
#endif /* USE_DAV */
gtk_signal_connect(GTK_OBJECT(combo_entry3), "changed",
GTK_SIGNAL_FUNC(change_username),
NULL);
gtk_signal_connect(GTK_OBJECT(password), "changed",
GTK_SIGNAL_FUNC(change_password),
NULL);
gtk_signal_connect(GTK_OBJECT(combo_entry2), "changed",
GTK_SIGNAL_FUNC(change_host_name),
NULL);
gtk_signal_connect(GTK_OBJECT(port), "changed",
GTK_SIGNAL_FUNC(change_port),
NULL);
gtk_signal_connect(GTK_OBJECT(url), "changed",
GTK_SIGNAL_FUNC(change_url),
NULL);
gtk_signal_connect(GTK_OBJECT(combo_entry5), "changed",
GTK_SIGNAL_FUNC(change_remote_dir),
NULL);
/* Sets the local dir, but doesn't do a rescan. */
gtk_signal_connect(GTK_OBJECT(combo_entry4), "changed",
GTK_SIGNAL_FUNC(set_local_dir),
NULL);
/* If activated do a rescan. focus out can get kinda icky if the dir
* is not readable.
*/
gtk_signal_connect(GTK_OBJECT(combo_entry4), "activate",
GTK_SIGNAL_FUNC(change_local_dir),
NULL);
/* gtk_signal_connect(GTK_OBJECT(combo_entry4), "focus_out_event",
GTK_SIGNAL_FUNC(change_local_dir),
NULL);*/
gtk_signal_connect(GTK_OBJECT(sym_follow), "toggled",
GTK_SIGNAL_FUNC(change_sym_mode),
"follow");
gtk_signal_connect(GTK_OBJECT(sym_ignore), "toggled",
GTK_SIGNAL_FUNC(change_sym_mode),
"ignore");
gtk_signal_connect(GTK_OBJECT(sym_maintain), "toggled",
GTK_SIGNAL_FUNC(change_sym_mode),
"maintain");
gtk_signal_connect(GTK_OBJECT(perms_ignore), "toggled",
GTK_SIGNAL_FUNC(change_perms),
"ignore");
gtk_signal_connect(GTK_OBJECT(perms_exec), "toggled",
GTK_SIGNAL_FUNC(change_perms),
"exec");
gtk_signal_connect(GTK_OBJECT(perms_all), "toggled",
GTK_SIGNAL_FUNC(change_perms),
"all");
gtk_signal_connect(GTK_OBJECT(nodelete), "toggled",
GTK_SIGNAL_FUNC(change_delete),
NULL);
gtk_signal_connect(GTK_OBJECT(checkmoved), "toggled",
GTK_SIGNAL_FUNC(change_move_status),
NULL);
gtk_signal_connect(GTK_OBJECT(nooverwrite), "toggled",
GTK_SIGNAL_FUNC(change_nooverwrite),
NULL);
gtk_signal_connect(GTK_OBJECT(lowercase), "toggled",
GTK_SIGNAL_FUNC(change_lowercase),
NULL);
gtk_signal_connect(GTK_OBJECT(use_safemode), "toggled",
GTK_SIGNAL_FUNC(change_safemode),
NULL);
gtk_signal_connect(GTK_OBJECT(ftp_mode), "toggled",
GTK_SIGNAL_FUNC(change_passive_ftp),
NULL);
gtk_signal_connect(GTK_OBJECT(the_excludes->list), "select_row",
GTK_SIGNAL_FUNC(select_minilist_item),
the_excludes);
gtk_signal_connect(GTK_OBJECT(the_excludes->entry), "changed",
GTK_SIGNAL_FUNC(change_minilist_entry),
the_excludes);
gtk_signal_connect(GTK_OBJECT(excludes_new), "clicked",
GTK_SIGNAL_FUNC(add_minilist_item),
the_excludes);
gtk_signal_connect(GTK_OBJECT(exclude_remove), "clicked",
GTK_SIGNAL_FUNC(remove_minilist_item),
the_excludes);
gtk_signal_connect(GTK_OBJECT(ascii_files->list), "select_row",
GTK_SIGNAL_FUNC(select_minilist_item),
ascii_files);
gtk_signal_connect(GTK_OBJECT(ascii_files->entry), "changed",
GTK_SIGNAL_FUNC(change_minilist_entry),
ascii_files);
gtk_signal_connect(GTK_OBJECT(ascii_new), "clicked",
GTK_SIGNAL_FUNC(add_minilist_item),
ascii_files);
gtk_signal_connect(GTK_OBJECT(ascii_remove), "clicked",
GTK_SIGNAL_FUNC(remove_minilist_item),
ascii_files);
gtk_signal_connect(GTK_OBJECT(the_ignores->list), "select_row",
GTK_SIGNAL_FUNC(select_minilist_item),
the_ignores);
gtk_signal_connect(GTK_OBJECT(the_ignores->entry), "changed",
GTK_SIGNAL_FUNC(change_minilist_entry),
the_ignores);
gtk_signal_connect(GTK_OBJECT(ignore_new), "clicked",
GTK_SIGNAL_FUNC(add_minilist_item),
the_ignores);
gtk_signal_connect(GTK_OBJECT(ignore_remove), "clicked",
GTK_SIGNAL_FUNC(remove_minilist_item),
the_ignores);
gtk_widget_show(main_panel);
/* if (main_prefs->remember_notebook_pos) */
/* Why doesn't this work? */
NE_DEBUG(DEBUG_GNOME, "Setting notebook page to page %d.\n", last_notepage);
gtk_notebook_set_page(GTK_NOTEBOOK(container), last_notepage);
gtk_signal_connect(GTK_OBJECT(container), "switch-page",
GTK_SIGNAL_FUNC(record_notepage), NULL);
/*******************************************/
/**** Setup the permissions GUI widgets ****/
/*******************************************/
switch (selected_site->perms) {
case sitep_ignore:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(perms_ignore), TRUE);
break;
case sitep_exec:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(perms_exec), TRUE);
break;
case sitep_all:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(perms_all), TRUE);
break;
}
#ifdef USE_DAV
if (selected_site->protocol == siteproto_dav) {
gtk_widget_set_sensitive(perms_all, FALSE);
gtk_widget_set_sensitive(perms_exec, FALSE);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(perms_ignore), TRUE);
}
#endif /* USE_DAV */
/*****************************************/
/**** Setup the sym links GUI widgets ****/
/*****************************************/
switch (selected_site->symlinks) {
case sitesym_ignore:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sym_ignore), TRUE);
break;
case sitesym_maintain:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sym_maintain), TRUE);
break;
case sitesym_follow:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sym_follow), TRUE);
break;
}
if (selected_site->protocol == siteproto_ftp) {
gtk_widget_set_sensitive(sym_maintain, FALSE);
if (selected_site->symlinks == sitesym_maintain)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(sym_ignore), TRUE);
}
/************/
/*** Port ***/
/************/
gtk_spin_button_set_value(GTK_SPIN_BUTTON(port),
(float) selected_site->server.port);
/***************/
/*** Options ***/
/***************/
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nodelete),
!(selected_site->nodelete));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(nooverwrite),
selected_site->nooverwrite);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkmoved),
selected_site->checkmoved);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lowercase),
selected_site->lowercase);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(use_safemode),
selected_site->safemode);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ftp_mode),
selected_site->ftp_pasv_mode);
/* Restore rcfile_saved status after bastardization by the various signal
* handlers that will have gone off.
*/
rcfile_saved = current_rcfile_saved;
return main_panel;
}
/* TODO: Add a config option for more stats, like how much space the new
* files take up, how many excludes, etc. */