/*
 * DO NOT EDIT THIS FILE - it is generated by Glade.
 */

#ifdef HAVE_CONFIG_H
#  include <config.h>
#endif

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>

#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>

#include "callbacks.h"
#include "interface.h"
#include "support.h"

#define GLADE_HOOKUP_OBJECT(component,widget,name) \
  g_object_set_data_full (G_OBJECT (component), name, \
    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)

#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
  g_object_set_data (G_OBJECT (component), name, widget)

GtkWidget*
create_main (void)
{
  GtkWidget *main;
  GdkPixbuf *main_icon_pixbuf;
  GtkWidget *vbox7;
  GtkWidget *menubar1;
  GtkWidget *menuitem1;
  GtkWidget *menuitem1_menu;
  GtkWidget *browse_source;
  GtkWidget *image50;
  GtkWidget *browse_destination;
  GtkWidget *image51;
  GtkWidget *switch_source_with_destination1;
  GtkWidget *image52;
  GtkWidget *separator2;
  GtkWidget *simulation;
  GtkWidget *image53;
  GtkWidget *execute;
  GtkWidget *image54;
  GtkWidget *preferences1;
  GtkWidget *separator1;
  GtkWidget *quit1;
  GtkWidget *menuitem3;
  GtkWidget *menuitem3_menu;
  GtkWidget *add1;
  GtkWidget *delete1;
  GtkWidget *import1;
  GtkWidget *image55;
  GtkWidget *export1;
  GtkWidget *image56;
  GtkWidget *menuitem4;
  GtkWidget *menuitem4_menu;
  GtkWidget *about1;
  GtkWidget *rsync_info;
  GtkWidget *image57;
  GtkWidget *vbox2;
  GtkWidget *frame1;
  GtkWidget *alignment5;
  GtkWidget *hbox13;
  GtkWidget *combo_session;
  GtkWidget *session_add;
  GtkWidget *session_del;
  GtkWidget *label22;
  GtkWidget *frame2;
  GtkWidget *alignment6;
  GtkWidget *hbox15;
  GtkWidget *table3;
  GtkWidget *button_browse_source;
  GtkWidget *alignment1;
  GtkWidget *hbox1;
  GtkWidget *image1;
  GtkWidget *label2;
  GtkWidget *button_browse_dest;
  GtkWidget *alignment4;
  GtkWidget *hbox14;
  GtkWidget *image4;
  GtkWidget *label18;
  GtkWidget *text_source;
  GtkWidget *text_dest;
  GtkWidget *button_switch;
  GtkWidget *image5;
  GtkWidget *label23;
  GtkWidget *notebook1;
  GtkWidget *table1;
  GtkWidget *check_group;
  GtkWidget *check_time;
  GtkWidget *check_perm;
  GtkWidget *check_owner;
  GtkWidget *check_onefs;
  GtkWidget *check_delete;
  GtkWidget *check_verbose;
  GtkWidget *check_progr;
  GtkWidget *check_exist;
  GtkWidget *check_size;
  GtkWidget *hseparator2;
  GtkWidget *check_skipnew;
  GtkWidget *check_windows;
  GtkWidget *Basic;
  GtkWidget *table2;
  GtkWidget *check_sum;
  GtkWidget *check_symlink;
  GtkWidget *check_dev;
  GtkWidget *check_update;
  GtkWidget *check_keepart;
  GtkWidget *check_mapuser;
  GtkWidget *check_compr;
  GtkWidget *check_backup;
  GtkWidget *label17;
  GtkWidget *entry_additional;
  GtkWidget *Advanced;
  GtkWidget *table5;
  GtkWidget *check_com_before;
  GtkWidget *entry_com_before;
  GtkWidget *check_com_after;
  GtkWidget *entry_com_after;
  GtkWidget *check_browse_files;
  GtkWidget *label28;
  GtkWidget *hbuttonbox1;
  GtkWidget *cancel;
  GtkWidget *dryrun;
  GtkWidget *alignment3;
  GtkWidget *hbox3;
  GtkWidget *image3;
  GtkWidget *label7;
  GtkWidget *play;
  GtkAccelGroup *accel_group;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  accel_group = gtk_accel_group_new ();

  main = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  GTK_WIDGET_SET_FLAGS (main, GTK_CAN_FOCUS);
  GTK_WIDGET_SET_FLAGS (main, GTK_CAN_DEFAULT);
  gtk_window_set_title (GTK_WINDOW (main), _("Grsync"));
  main_icon_pixbuf = create_pixbuf ("grsync.png");
  if (main_icon_pixbuf)
    {
      gtk_window_set_icon (GTK_WINDOW (main), main_icon_pixbuf);
      gdk_pixbuf_unref (main_icon_pixbuf);
    }

  vbox7 = gtk_vbox_new (FALSE, 0);
  gtk_widget_show (vbox7);
  gtk_container_add (GTK_CONTAINER (main), vbox7);

  menubar1 = gtk_menu_bar_new ();
  gtk_widget_show (menubar1);
  gtk_box_pack_start (GTK_BOX (vbox7), menubar1, FALSE, FALSE, 0);

  menuitem1 = gtk_menu_item_new_with_mnemonic (_("_File"));
  gtk_widget_show (menuitem1);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem1);

  menuitem1_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);

  browse_source = gtk_image_menu_item_new_with_mnemonic (_("Browse S_ource"));
  gtk_widget_show (browse_source);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), browse_source);
  gtk_widget_add_accelerator (browse_source, "activate", accel_group,
                              GDK_s, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  image50 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image50);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (browse_source), image50);

  browse_destination = gtk_image_menu_item_new_with_mnemonic (_("Browse _Destination"));
  gtk_widget_show (browse_destination);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), browse_destination);
  gtk_widget_add_accelerator (browse_destination, "activate", accel_group,
                              GDK_d, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  image51 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image51);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (browse_destination), image51);

  switch_source_with_destination1 = gtk_image_menu_item_new_with_mnemonic (_("S_witch source with destination"));
  gtk_widget_show (switch_source_with_destination1);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), switch_source_with_destination1);
  gtk_widget_add_accelerator (switch_source_with_destination1, "activate", accel_group,
                              GDK_w, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE);

  image52 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image52);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (switch_source_with_destination1), image52);

  separator2 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator2);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), separator2);
  gtk_widget_set_sensitive (separator2, FALSE);

  simulation = gtk_image_menu_item_new_with_mnemonic (_("_Simulation"));
  gtk_widget_show (simulation);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), simulation);
  gtk_widget_add_accelerator (simulation, "activate", accel_group,
                              GDK_s, (GdkModifierType) GDK_MOD1_MASK,
                              GTK_ACCEL_VISIBLE);

  image53 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image53);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (simulation), image53);

  execute = gtk_image_menu_item_new_with_mnemonic (_("_Execute"));
  gtk_widget_show (execute);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), execute);
  gtk_widget_add_accelerator (execute, "activate", accel_group,
                              GDK_e, (GdkModifierType) GDK_MOD1_MASK,
                              GTK_ACCEL_VISIBLE);

  image54 = gtk_image_new_from_stock ("gtk-execute", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image54);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (execute), image54);

  preferences1 = gtk_image_menu_item_new_from_stock ("gtk-preferences", accel_group);
  gtk_widget_show (preferences1);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), preferences1);

  separator1 = gtk_separator_menu_item_new ();
  gtk_widget_show (separator1);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), separator1);
  gtk_widget_set_sensitive (separator1, FALSE);

  quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group);
  gtk_widget_show (quit1);
  gtk_container_add (GTK_CONTAINER (menuitem1_menu), quit1);

  menuitem3 = gtk_menu_item_new_with_mnemonic (_("S_essions"));
  gtk_widget_show (menuitem3);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem3);

  menuitem3_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menuitem3_menu);

  add1 = gtk_image_menu_item_new_from_stock ("gtk-add", accel_group);
  gtk_widget_show (add1);
  gtk_container_add (GTK_CONTAINER (menuitem3_menu), add1);

  delete1 = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group);
  gtk_widget_show (delete1);
  gtk_container_add (GTK_CONTAINER (menuitem3_menu), delete1);

  import1 = gtk_image_menu_item_new_with_mnemonic (_("_Import"));
  gtk_widget_show (import1);
  gtk_container_add (GTK_CONTAINER (menuitem3_menu), import1);

  image55 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image55);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (import1), image55);

  export1 = gtk_image_menu_item_new_with_mnemonic (_("_Export"));
  gtk_widget_show (export1);
  gtk_container_add (GTK_CONTAINER (menuitem3_menu), export1);

  image56 = gtk_image_new_from_stock ("gtk-save", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image56);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (export1), image56);

  menuitem4 = gtk_menu_item_new_with_mnemonic (_("_Help"));
  gtk_widget_show (menuitem4);
  gtk_container_add (GTK_CONTAINER (menubar1), menuitem4);

  menuitem4_menu = gtk_menu_new ();
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);

  about1 = gtk_image_menu_item_new_from_stock ("gtk-about", accel_group);
  gtk_widget_show (about1);
  gtk_container_add (GTK_CONTAINER (menuitem4_menu), about1);

  rsync_info = gtk_image_menu_item_new_with_mnemonic (_("_Rsync info"));
  gtk_widget_show (rsync_info);
  gtk_container_add (GTK_CONTAINER (menuitem4_menu), rsync_info);

  image57 = gtk_image_new_from_stock ("gtk-info", GTK_ICON_SIZE_MENU);
  gtk_widget_show (image57);
  gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (rsync_info), image57);

  vbox2 = gtk_vbox_new (FALSE, 12);
  gtk_widget_show (vbox2);
  gtk_box_pack_start (GTK_BOX (vbox7), vbox2, FALSE, TRUE, 0);
  gtk_container_set_border_width (GTK_CONTAINER (vbox2), 12);

  frame1 = gtk_frame_new (NULL);
  gtk_widget_show (frame1);
  gtk_box_pack_start (GTK_BOX (vbox2), frame1, FALSE, FALSE, 0);
  gtk_frame_set_shadow_type (GTK_FRAME (frame1), GTK_SHADOW_NONE);

  alignment5 = gtk_alignment_new (0.5, 0.5, 1, 1);
  gtk_widget_show (alignment5);
  gtk_container_add (GTK_CONTAINER (frame1), alignment5);
  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment5), 0, 0, 12, 0);

  hbox13 = gtk_hbox_new (FALSE, 6);
  gtk_widget_show (hbox13);
  gtk_container_add (GTK_CONTAINER (alignment5), hbox13);
  gtk_container_set_border_width (GTK_CONTAINER (hbox13), 6);

  combo_session = gtk_combo_box_new_text ();
  gtk_widget_show (combo_session);
  gtk_box_pack_start (GTK_BOX (hbox13), combo_session, TRUE, TRUE, 0);

  session_add = gtk_button_new_from_stock ("gtk-add");
  gtk_widget_show (session_add);
  gtk_box_pack_start (GTK_BOX (hbox13), session_add, FALSE, TRUE, 0);
  gtk_tooltips_set_tip (tooltips, session_add, _("Click to add a new session"), NULL);

  session_del = gtk_button_new_from_stock ("gtk-delete");
  gtk_widget_show (session_del);
  gtk_box_pack_start (GTK_BOX (hbox13), session_del, FALSE, TRUE, 0);
  gtk_tooltips_set_tip (tooltips, session_del, _("Click to delete the current session"), NULL);

  label22 = gtk_label_new (_("<b>Sessions</b>"));
  gtk_widget_show (label22);
  gtk_frame_set_label_widget (GTK_FRAME (frame1), label22);
  gtk_label_set_use_markup (GTK_LABEL (label22), TRUE);

  frame2 = gtk_frame_new (NULL);
  gtk_widget_show (frame2);
  gtk_box_pack_start (GTK_BOX (vbox2), frame2, FALSE, TRUE, 0);
  gtk_frame_set_shadow_type (GTK_FRAME (frame2), GTK_SHADOW_NONE);

  alignment6 = gtk_alignment_new (0.5, 0.5, 1, 1);
  gtk_widget_show (alignment6);
  gtk_container_add (GTK_CONTAINER (frame2), alignment6);
  gtk_alignment_set_padding (GTK_ALIGNMENT (alignment6), 0, 0, 12, 0);

  hbox15 = gtk_hbox_new (FALSE, 6);
  gtk_widget_show (hbox15);
  gtk_container_add (GTK_CONTAINER (alignment6), hbox15);
  gtk_container_set_border_width (GTK_CONTAINER (hbox15), 6);

  table3 = gtk_table_new (2, 2, FALSE);
  gtk_widget_show (table3);
  gtk_box_pack_start (GTK_BOX (hbox15), table3, TRUE, TRUE, 0);
  gtk_table_set_row_spacings (GTK_TABLE (table3), 6);
  gtk_table_set_col_spacings (GTK_TABLE (table3), 6);

  button_browse_source = gtk_button_new ();
  gtk_widget_show (button_browse_source);
  gtk_table_attach (GTK_TABLE (table3), button_browse_source, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, button_browse_source, _("Click to open the file browser"), NULL);

  alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0);
  gtk_widget_show (alignment1);
  gtk_container_add (GTK_CONTAINER (button_browse_source), alignment1);

  hbox1 = gtk_hbox_new (FALSE, 2);
  gtk_widget_show (hbox1);
  gtk_container_add (GTK_CONTAINER (alignment1), hbox1);

  image1 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON);
  gtk_widget_show (image1);
  gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, FALSE, 0);

  label2 = gtk_label_new_with_mnemonic (_("Browse"));
  gtk_widget_show (label2);
  gtk_box_pack_start (GTK_BOX (hbox1), label2, FALSE, FALSE, 0);

  button_browse_dest = gtk_button_new ();
  gtk_widget_show (button_browse_dest);
  gtk_table_attach (GTK_TABLE (table3), button_browse_dest, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, button_browse_dest, _("Click to open the file browser"), NULL);

  alignment4 = gtk_alignment_new (0.5, 0.5, 0, 0);
  gtk_widget_show (alignment4);
  gtk_container_add (GTK_CONTAINER (button_browse_dest), alignment4);

  hbox14 = gtk_hbox_new (FALSE, 2);
  gtk_widget_show (hbox14);
  gtk_container_add (GTK_CONTAINER (alignment4), hbox14);

  image4 = gtk_image_new_from_stock ("gtk-open", GTK_ICON_SIZE_BUTTON);
  gtk_widget_show (image4);
  gtk_box_pack_start (GTK_BOX (hbox14), image4, FALSE, FALSE, 0);

  label18 = gtk_label_new_with_mnemonic (_("Browse"));
  gtk_widget_show (label18);
  gtk_box_pack_start (GTK_BOX (hbox14), label18, FALSE, FALSE, 0);

  text_source = gtk_entry_new ();
  gtk_widget_show (text_source);
  gtk_table_attach (GTK_TABLE (table3), text_source, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, text_source, _("Source directory"), NULL);
  gtk_entry_set_max_length (GTK_ENTRY (text_source), 200);

  text_dest = gtk_entry_new ();
  gtk_widget_show (text_dest);
  gtk_table_attach (GTK_TABLE (table3), text_dest, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, text_dest, _("Destination directory"), NULL);
  gtk_entry_set_max_length (GTK_ENTRY (text_dest), 200);

  button_switch = gtk_button_new ();
  gtk_widget_show (button_switch);
  gtk_box_pack_start (GTK_BOX (hbox15), button_switch, FALSE, FALSE, 0);
  gtk_tooltips_set_tip (tooltips, button_switch, _("Click here to switch the source with the destination directory"), NULL);

  image5 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_BUTTON);
  gtk_widget_show (image5);
  gtk_container_add (GTK_CONTAINER (button_switch), image5);

  label23 = gtk_label_new (_("<b>Source and Destination</b> <i>(directories need a trailing \"/\")</i>"));
  gtk_widget_show (label23);
  gtk_frame_set_label_widget (GTK_FRAME (frame2), label23);
  gtk_label_set_use_markup (GTK_LABEL (label23), TRUE);

  notebook1 = gtk_notebook_new ();
  gtk_widget_show (notebook1);
  gtk_box_pack_start (GTK_BOX (vbox2), notebook1, FALSE, TRUE, 0);

  table1 = gtk_table_new (7, 2, FALSE);
  gtk_widget_show (table1);
  gtk_container_add (GTK_CONTAINER (notebook1), table1);
  gtk_container_set_border_width (GTK_CONTAINER (table1), 5);
  gtk_table_set_row_spacings (GTK_TABLE (table1), 6);
  gtk_table_set_col_spacings (GTK_TABLE (table1), 6);

  check_group = gtk_check_button_new_with_mnemonic (_("Preserve group"));
  gtk_widget_show (check_group);
  gtk_table_attach (GTK_TABLE (table1), check_group, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_time = gtk_check_button_new_with_mnemonic (_("Preserve time"));
  gtk_widget_show (check_time);
  gtk_table_attach (GTK_TABLE (table1), check_time, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_time), TRUE);

  check_perm = gtk_check_button_new_with_mnemonic (_("Preserve permissions"));
  gtk_widget_show (check_perm);
  gtk_table_attach (GTK_TABLE (table1), check_perm, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_owner = gtk_check_button_new_with_mnemonic (_("Preserve owner"));
  gtk_widget_show (check_owner);
  gtk_table_attach (GTK_TABLE (table1), check_owner, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_onefs = gtk_check_button_new_with_mnemonic (_("Do not leave filesystem"));
  gtk_widget_show (check_onefs);
  gtk_table_attach (GTK_TABLE (table1), check_onefs, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_onefs, _("Do not cross filesystem boundaries"), NULL);

  check_delete = gtk_check_button_new_with_mnemonic (_("Delete on destination"));
  gtk_widget_show (check_delete);
  gtk_table_attach (GTK_TABLE (table1), check_delete, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_delete, _("Delete files in destination which are not present in the source"), NULL);

  check_verbose = gtk_check_button_new_with_mnemonic (_("Verbose"));
  gtk_widget_show (check_verbose);
  gtk_table_attach (GTK_TABLE (table1), check_verbose, 0, 1, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_verbose, _("Show more information"), NULL);
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_verbose), TRUE);

  check_progr = gtk_check_button_new_with_mnemonic (_("Show transfer progress"));
  gtk_widget_show (check_progr);
  gtk_table_attach (GTK_TABLE (table1), check_progr, 1, 2, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_progr), TRUE);

  check_exist = gtk_check_button_new_with_mnemonic (_("Ignore existing"));
  gtk_widget_show (check_exist);
  gtk_table_attach (GTK_TABLE (table1), check_exist, 0, 1, 5, 6,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_exist, _("Ignore files which already exist in the destination"), NULL);

  check_size = gtk_check_button_new_with_mnemonic (_("Size only"));
  gtk_widget_show (check_size);
  gtk_table_attach (GTK_TABLE (table1), check_size, 1, 2, 5, 6,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_size, _("Check size only, ignore time and checksum"), NULL);

  hseparator2 = gtk_hseparator_new ();
  gtk_widget_show (hseparator2);
  gtk_table_attach (GTK_TABLE (table1), hseparator2, 0, 2, 2, 3,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (GTK_FILL), 0, 0);
  gtk_widget_set_size_request (hseparator2, -1, 10);

  check_skipnew = gtk_check_button_new_with_mnemonic (_("Skip newer"));
  gtk_widget_show (check_skipnew);
  gtk_table_attach (GTK_TABLE (table1), check_skipnew, 0, 1, 6, 7,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_skipnew, _("Do not update newer files"), NULL);

  check_windows = gtk_check_button_new_with_mnemonic (_("Windows compatibility"));
  gtk_widget_show (check_windows);
  gtk_table_attach (GTK_TABLE (table1), check_windows, 1, 2, 6, 7,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_windows, _("Provides workaround for a windows FAT filesystem limitation"), NULL);

  Basic = gtk_label_new (_("Basic options"));
  gtk_widget_show (Basic);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), Basic);

  table2 = gtk_table_new (6, 2, FALSE);
  gtk_widget_show (table2);
  gtk_container_add (GTK_CONTAINER (notebook1), table2);
  gtk_container_set_border_width (GTK_CONTAINER (table2), 5);
  gtk_table_set_row_spacings (GTK_TABLE (table2), 6);
  gtk_table_set_col_spacings (GTK_TABLE (table2), 6);

  check_sum = gtk_check_button_new_with_mnemonic (_("Always checksum"));
  gtk_widget_show (check_sum);
  gtk_table_attach (GTK_TABLE (table2), check_sum, 0, 1, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_sum, _("Always compare file contents (by checksum)"), NULL);

  check_symlink = gtk_check_button_new_with_mnemonic (_("Copy symlinks as symlinks"));
  gtk_widget_show (check_symlink);
  gtk_table_attach (GTK_TABLE (table2), check_symlink, 1, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_symlink, _("Symbolic links are copied as such, do not copy link target file"), NULL);

  check_dev = gtk_check_button_new_with_mnemonic (_("Preserve devices"));
  gtk_widget_show (check_dev);
  gtk_table_attach (GTK_TABLE (table2), check_dev, 0, 1, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_update = gtk_check_button_new_with_mnemonic (_("Only update existing files"));
  gtk_widget_show (check_update);
  gtk_table_attach (GTK_TABLE (table2), check_update, 1, 2, 1, 2,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_keepart = gtk_check_button_new_with_mnemonic (_("Keep partially transferred files"));
  gtk_widget_show (check_keepart);
  gtk_table_attach (GTK_TABLE (table2), check_keepart, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);

  check_mapuser = gtk_check_button_new_with_mnemonic (_("Don't map uid/gid values"));
  gtk_widget_show (check_mapuser);
  gtk_table_attach (GTK_TABLE (table2), check_mapuser, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_mapuser, _("Keep numeric uid/gid instead of mapping user names and group names"), NULL);

  check_compr = gtk_check_button_new_with_mnemonic (_("Compress file data"));
  gtk_widget_show (check_compr);
  gtk_table_attach (GTK_TABLE (table2), check_compr, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_compr, _("Compress file data when transferring"), NULL);

  check_backup = gtk_check_button_new_with_mnemonic (_("Make backups"));
  gtk_widget_show (check_backup);
  gtk_table_attach (GTK_TABLE (table2), check_backup, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_backup, _("Make backups of existing files on the destination"), NULL);

  label17 = gtk_label_new (_("<b>Additional options</b>:"));
  gtk_widget_show (label17);
  gtk_table_attach (GTK_TABLE (table2), label17, 0, 2, 4, 5,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_label_set_use_markup (GTK_LABEL (label17), TRUE);
  gtk_misc_set_alignment (GTK_MISC (label17), 0, 0.5);

  entry_additional = gtk_entry_new ();
  gtk_widget_show (entry_additional);
  gtk_table_attach (GTK_TABLE (table2), entry_additional, 0, 2, 5, 6,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, entry_additional, _("Additional command line options to pass to the rsync program"), NULL);
  gtk_entry_set_max_length (GTK_ENTRY (entry_additional), 200);

  Advanced = gtk_label_new (_("Advanced options"));
  gtk_widget_show (Advanced);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), Advanced);

  table5 = gtk_table_new (5, 2, FALSE);
  gtk_widget_show (table5);
  gtk_container_add (GTK_CONTAINER (notebook1), table5);
  gtk_container_set_border_width (GTK_CONTAINER (table5), 5);
  gtk_table_set_row_spacings (GTK_TABLE (table5), 6);
  gtk_table_set_col_spacings (GTK_TABLE (table5), 6);

  check_com_before = gtk_check_button_new_with_mnemonic (_("Execute this command before rsync:"));
  gtk_widget_show (check_com_before);
  gtk_table_attach (GTK_TABLE (table5), check_com_before, 0, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_com_before, _("Click on this item if you want to run a command before syncing. Can be useful, for instance, to mount a filesystem before starting or to do some cleanup."), NULL);

  entry_com_before = gtk_entry_new ();
  gtk_widget_show (entry_com_before);
  gtk_table_attach (GTK_TABLE (table5), entry_com_before, 0, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_max_length (GTK_ENTRY (entry_com_before), 200);

  check_com_after = gtk_check_button_new_with_mnemonic (_("Execute this command after rsync:"));
  gtk_widget_show (check_com_after);
  gtk_table_attach (GTK_TABLE (table5), check_com_after, 0, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_com_after, _("Click on this item if you want to run a command after syncing. Can be useful, for instance, to unmount a filesystem at the end or to do some cleanup."), NULL);

  entry_com_after = gtk_entry_new ();
  gtk_widget_show (entry_com_after);
  gtk_table_attach (GTK_TABLE (table5), entry_com_after, 0, 2, 3, 4,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_entry_set_max_length (GTK_ENTRY (entry_com_after), 200);

  check_browse_files = gtk_check_button_new_with_mnemonic (_("Browse files instead of folders"));
  gtk_widget_show (check_browse_files);
  gtk_table_attach (GTK_TABLE (table5), check_browse_files, 0, 2, 4, 5,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_browse_files, _("By setting this switch, the browse source and destination buttons will open a dialog for selecting files instead of folders"), NULL);

  label28 = gtk_label_new (_("Extra options"));
  gtk_widget_show (label28);
  gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 2), label28);

  hbuttonbox1 = gtk_hbutton_box_new ();
  gtk_widget_show (hbuttonbox1);
  gtk_box_pack_start (GTK_BOX (vbox2), hbuttonbox1, FALSE, TRUE, 6);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (hbuttonbox1), GTK_BUTTONBOX_END);
  gtk_box_set_spacing (GTK_BOX (hbuttonbox1), 6);

  cancel = gtk_button_new_from_stock ("gtk-quit");
  gtk_widget_show (cancel);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), cancel);

  dryrun = gtk_button_new ();
  gtk_widget_show (dryrun);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), dryrun);
  gtk_tooltips_set_tip (tooltips, dryrun, _("Show what would have been done, but actually do nothing (\"dry-run\" in rsync language)"), NULL);

  alignment3 = gtk_alignment_new (0.5, 0.5, 0, 0);
  gtk_widget_show (alignment3);
  gtk_container_add (GTK_CONTAINER (dryrun), alignment3);

  hbox3 = gtk_hbox_new (FALSE, 2);
  gtk_widget_show (hbox3);
  gtk_container_add (GTK_CONTAINER (alignment3), hbox3);

  image3 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_BUTTON);
  gtk_widget_show (image3);
  gtk_box_pack_start (GTK_BOX (hbox3), image3, FALSE, FALSE, 0);

  label7 = gtk_label_new_with_mnemonic (_("_Simulation"));
  gtk_widget_show (label7);
  gtk_box_pack_start (GTK_BOX (hbox3), label7, FALSE, FALSE, 0);

  play = gtk_button_new_from_stock ("gtk-execute");
  gtk_widget_show (play);
  gtk_container_add (GTK_CONTAINER (hbuttonbox1), play);
  gtk_tooltips_set_tip (tooltips, play, _("Make a full run (go!)"), NULL);

  g_signal_connect ((gpointer) main, "destroy",
                    G_CALLBACK (on_main_destroy),
                    NULL);
  g_signal_connect ((gpointer) main, "show",
                    G_CALLBACK (on_main_create),
                    NULL);
  g_signal_connect ((gpointer) browse_source, "activate",
                    G_CALLBACK (show_browse_source),
                    NULL);
  g_signal_connect ((gpointer) browse_destination, "activate",
                    G_CALLBACK (show_browse_dest),
                    NULL);
  g_signal_connect ((gpointer) switch_source_with_destination1, "activate",
                    G_CALLBACK (on_button_switch_clicked),
                    NULL);
  g_signal_connect ((gpointer) simulation, "activate",
                    G_CALLBACK (on_dryrun_clicked),
                    NULL);
  g_signal_connect ((gpointer) execute, "activate",
                    G_CALLBACK (on_play_clicked),
                    NULL);
  g_signal_connect ((gpointer) preferences1, "activate",
                    G_CALLBACK (on_preferences1_activate),
                    NULL);
  g_signal_connect ((gpointer) quit1, "activate",
                    G_CALLBACK (on_main_destroy),
                    NULL);
  g_signal_connect ((gpointer) add1, "activate",
                    G_CALLBACK (on_session_add_clicked),
                    NULL);
  g_signal_connect ((gpointer) delete1, "activate",
                    G_CALLBACK (on_session_del_clicked),
                    NULL);
  g_signal_connect ((gpointer) import1, "activate",
                    G_CALLBACK (on_import1_activate),
                    NULL);
  g_signal_connect ((gpointer) export1, "activate",
                    G_CALLBACK (on_export1_activate),
                    NULL);
  g_signal_connect ((gpointer) about1, "activate",
                    G_CALLBACK (on_button_about_clicked),
                    NULL);
  g_signal_connect ((gpointer) rsync_info, "activate",
                    G_CALLBACK (on_rsync_info_activate),
                    NULL);
  g_signal_connect ((gpointer) combo_session, "changed",
                    G_CALLBACK (on_combo_session_changed),
                    NULL);
  g_signal_connect ((gpointer) session_add, "clicked",
                    G_CALLBACK (on_session_add_clicked),
                    NULL);
  g_signal_connect ((gpointer) session_del, "clicked",
                    G_CALLBACK (on_session_del_clicked),
                    NULL);
  g_signal_connect ((gpointer) button_browse_source, "clicked",
                    G_CALLBACK (show_browse_source),
                    NULL);
  g_signal_connect ((gpointer) button_browse_dest, "clicked",
                    G_CALLBACK (show_browse_dest),
                    NULL);
  g_signal_connect ((gpointer) button_switch, "clicked",
                    G_CALLBACK (on_button_switch_clicked),
                    NULL);
  g_signal_connect ((gpointer) cancel, "clicked",
                    G_CALLBACK (on_main_destroy),
                    NULL);
  g_signal_connect ((gpointer) dryrun, "clicked",
                    G_CALLBACK (on_dryrun_clicked),
                    NULL);
  g_signal_connect ((gpointer) play, "clicked",
                    G_CALLBACK (on_play_clicked),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (main, main, "main");
  GLADE_HOOKUP_OBJECT (main, vbox7, "vbox7");
  GLADE_HOOKUP_OBJECT (main, menubar1, "menubar1");
  GLADE_HOOKUP_OBJECT (main, menuitem1, "menuitem1");
  GLADE_HOOKUP_OBJECT (main, menuitem1_menu, "menuitem1_menu");
  GLADE_HOOKUP_OBJECT (main, browse_source, "browse_source");
  GLADE_HOOKUP_OBJECT (main, image50, "image50");
  GLADE_HOOKUP_OBJECT (main, browse_destination, "browse_destination");
  GLADE_HOOKUP_OBJECT (main, image51, "image51");
  GLADE_HOOKUP_OBJECT (main, switch_source_with_destination1, "switch_source_with_destination1");
  GLADE_HOOKUP_OBJECT (main, image52, "image52");
  GLADE_HOOKUP_OBJECT (main, separator2, "separator2");
  GLADE_HOOKUP_OBJECT (main, simulation, "simulation");
  GLADE_HOOKUP_OBJECT (main, image53, "image53");
  GLADE_HOOKUP_OBJECT (main, execute, "execute");
  GLADE_HOOKUP_OBJECT (main, image54, "image54");
  GLADE_HOOKUP_OBJECT (main, preferences1, "preferences1");
  GLADE_HOOKUP_OBJECT (main, separator1, "separator1");
  GLADE_HOOKUP_OBJECT (main, quit1, "quit1");
  GLADE_HOOKUP_OBJECT (main, menuitem3, "menuitem3");
  GLADE_HOOKUP_OBJECT (main, menuitem3_menu, "menuitem3_menu");
  GLADE_HOOKUP_OBJECT (main, add1, "add1");
  GLADE_HOOKUP_OBJECT (main, delete1, "delete1");
  GLADE_HOOKUP_OBJECT (main, import1, "import1");
  GLADE_HOOKUP_OBJECT (main, image55, "image55");
  GLADE_HOOKUP_OBJECT (main, export1, "export1");
  GLADE_HOOKUP_OBJECT (main, image56, "image56");
  GLADE_HOOKUP_OBJECT (main, menuitem4, "menuitem4");
  GLADE_HOOKUP_OBJECT (main, menuitem4_menu, "menuitem4_menu");
  GLADE_HOOKUP_OBJECT (main, about1, "about1");
  GLADE_HOOKUP_OBJECT (main, rsync_info, "rsync_info");
  GLADE_HOOKUP_OBJECT (main, image57, "image57");
  GLADE_HOOKUP_OBJECT (main, vbox2, "vbox2");
  GLADE_HOOKUP_OBJECT (main, frame1, "frame1");
  GLADE_HOOKUP_OBJECT (main, alignment5, "alignment5");
  GLADE_HOOKUP_OBJECT (main, hbox13, "hbox13");
  GLADE_HOOKUP_OBJECT (main, combo_session, "combo_session");
  GLADE_HOOKUP_OBJECT (main, session_add, "session_add");
  GLADE_HOOKUP_OBJECT (main, session_del, "session_del");
  GLADE_HOOKUP_OBJECT (main, label22, "label22");
  GLADE_HOOKUP_OBJECT (main, frame2, "frame2");
  GLADE_HOOKUP_OBJECT (main, alignment6, "alignment6");
  GLADE_HOOKUP_OBJECT (main, hbox15, "hbox15");
  GLADE_HOOKUP_OBJECT (main, table3, "table3");
  GLADE_HOOKUP_OBJECT (main, button_browse_source, "button_browse_source");
  GLADE_HOOKUP_OBJECT (main, alignment1, "alignment1");
  GLADE_HOOKUP_OBJECT (main, hbox1, "hbox1");
  GLADE_HOOKUP_OBJECT (main, image1, "image1");
  GLADE_HOOKUP_OBJECT (main, label2, "label2");
  GLADE_HOOKUP_OBJECT (main, button_browse_dest, "button_browse_dest");
  GLADE_HOOKUP_OBJECT (main, alignment4, "alignment4");
  GLADE_HOOKUP_OBJECT (main, hbox14, "hbox14");
  GLADE_HOOKUP_OBJECT (main, image4, "image4");
  GLADE_HOOKUP_OBJECT (main, label18, "label18");
  GLADE_HOOKUP_OBJECT (main, text_source, "text_source");
  GLADE_HOOKUP_OBJECT (main, text_dest, "text_dest");
  GLADE_HOOKUP_OBJECT (main, button_switch, "button_switch");
  GLADE_HOOKUP_OBJECT (main, image5, "image5");
  GLADE_HOOKUP_OBJECT (main, label23, "label23");
  GLADE_HOOKUP_OBJECT (main, notebook1, "notebook1");
  GLADE_HOOKUP_OBJECT (main, table1, "table1");
  GLADE_HOOKUP_OBJECT (main, check_group, "check_group");
  GLADE_HOOKUP_OBJECT (main, check_time, "check_time");
  GLADE_HOOKUP_OBJECT (main, check_perm, "check_perm");
  GLADE_HOOKUP_OBJECT (main, check_owner, "check_owner");
  GLADE_HOOKUP_OBJECT (main, check_onefs, "check_onefs");
  GLADE_HOOKUP_OBJECT (main, check_delete, "check_delete");
  GLADE_HOOKUP_OBJECT (main, check_verbose, "check_verbose");
  GLADE_HOOKUP_OBJECT (main, check_progr, "check_progr");
  GLADE_HOOKUP_OBJECT (main, check_exist, "check_exist");
  GLADE_HOOKUP_OBJECT (main, check_size, "check_size");
  GLADE_HOOKUP_OBJECT (main, hseparator2, "hseparator2");
  GLADE_HOOKUP_OBJECT (main, check_skipnew, "check_skipnew");
  GLADE_HOOKUP_OBJECT (main, check_windows, "check_windows");
  GLADE_HOOKUP_OBJECT (main, Basic, "Basic");
  GLADE_HOOKUP_OBJECT (main, table2, "table2");
  GLADE_HOOKUP_OBJECT (main, check_sum, "check_sum");
  GLADE_HOOKUP_OBJECT (main, check_symlink, "check_symlink");
  GLADE_HOOKUP_OBJECT (main, check_dev, "check_dev");
  GLADE_HOOKUP_OBJECT (main, check_update, "check_update");
  GLADE_HOOKUP_OBJECT (main, check_keepart, "check_keepart");
  GLADE_HOOKUP_OBJECT (main, check_mapuser, "check_mapuser");
  GLADE_HOOKUP_OBJECT (main, check_compr, "check_compr");
  GLADE_HOOKUP_OBJECT (main, check_backup, "check_backup");
  GLADE_HOOKUP_OBJECT (main, label17, "label17");
  GLADE_HOOKUP_OBJECT (main, entry_additional, "entry_additional");
  GLADE_HOOKUP_OBJECT (main, Advanced, "Advanced");
  GLADE_HOOKUP_OBJECT (main, table5, "table5");
  GLADE_HOOKUP_OBJECT (main, check_com_before, "check_com_before");
  GLADE_HOOKUP_OBJECT (main, entry_com_before, "entry_com_before");
  GLADE_HOOKUP_OBJECT (main, check_com_after, "check_com_after");
  GLADE_HOOKUP_OBJECT (main, entry_com_after, "entry_com_after");
  GLADE_HOOKUP_OBJECT (main, check_browse_files, "check_browse_files");
  GLADE_HOOKUP_OBJECT (main, label28, "label28");
  GLADE_HOOKUP_OBJECT (main, hbuttonbox1, "hbuttonbox1");
  GLADE_HOOKUP_OBJECT (main, cancel, "cancel");
  GLADE_HOOKUP_OBJECT (main, dryrun, "dryrun");
  GLADE_HOOKUP_OBJECT (main, alignment3, "alignment3");
  GLADE_HOOKUP_OBJECT (main, hbox3, "hbox3");
  GLADE_HOOKUP_OBJECT (main, image3, "image3");
  GLADE_HOOKUP_OBJECT (main, label7, "label7");
  GLADE_HOOKUP_OBJECT (main, play, "play");
  GLADE_HOOKUP_OBJECT_NO_REF (main, tooltips, "tooltips");

  gtk_widget_grab_focus (main);
  gtk_widget_grab_default (main);
  gtk_window_add_accel_group (GTK_WINDOW (main), accel_group);

  return main;
}

GtkWidget*
create_dialog_new_session (void)
{
  GtkWidget *dialog_new_session;
  GtkWidget *dialog_vbox1;
  GtkWidget *label27;
  GtkWidget *entry_session_name;
  GtkWidget *dialog_action_area1;
  GtkWidget *cancelbutton1;
  GtkWidget *okbutton1;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  dialog_new_session = gtk_dialog_new ();
  gtk_container_set_border_width (GTK_CONTAINER (dialog_new_session), 12);
  gtk_window_set_title (GTK_WINDOW (dialog_new_session), _("Add session"));
  gtk_window_set_modal (GTK_WINDOW (dialog_new_session), TRUE);
  gtk_window_set_resizable (GTK_WINDOW (dialog_new_session), FALSE);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog_new_session), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog_new_session), TRUE);
  gtk_window_set_type_hint (GTK_WINDOW (dialog_new_session), GDK_WINDOW_TYPE_HINT_DIALOG);
  gtk_dialog_set_has_separator (GTK_DIALOG (dialog_new_session), FALSE);

  dialog_vbox1 = GTK_DIALOG (dialog_new_session)->vbox;
  gtk_widget_show (dialog_vbox1);

  label27 = gtk_label_new (_("Enter session name you want to create:"));
  gtk_widget_show (label27);
  gtk_box_pack_start (GTK_BOX (dialog_vbox1), label27, FALSE, FALSE, 0);

  entry_session_name = gtk_entry_new ();
  gtk_widget_show (entry_session_name);
  gtk_box_pack_start (GTK_BOX (dialog_vbox1), entry_session_name, FALSE, FALSE, 0);
  gtk_widget_set_size_request (entry_session_name, 200, -1);
  gtk_tooltips_set_tip (tooltips, entry_session_name, _("Enter the name of the new session to create"), NULL);
  gtk_entry_set_max_length (GTK_ENTRY (entry_session_name), 50);
  gtk_entry_set_activates_default (GTK_ENTRY (entry_session_name), TRUE);

  dialog_action_area1 = GTK_DIALOG (dialog_new_session)->action_area;
  gtk_widget_show (dialog_action_area1);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_END);

  cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
  gtk_widget_show (cancelbutton1);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_new_session), cancelbutton1, GTK_RESPONSE_CANCEL);
  GTK_WIDGET_SET_FLAGS (cancelbutton1, GTK_CAN_DEFAULT);

  okbutton1 = gtk_button_new_from_stock ("gtk-ok");
  gtk_widget_show (okbutton1);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_new_session), okbutton1, GTK_RESPONSE_OK);
  GTK_WIDGET_SET_FLAGS (okbutton1, GTK_CAN_DEFAULT);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_new_session, dialog_new_session, "dialog_new_session");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_new_session, dialog_vbox1, "dialog_vbox1");
  GLADE_HOOKUP_OBJECT (dialog_new_session, label27, "label27");
  GLADE_HOOKUP_OBJECT (dialog_new_session, entry_session_name, "entry_session_name");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_new_session, dialog_action_area1, "dialog_action_area1");
  GLADE_HOOKUP_OBJECT (dialog_new_session, cancelbutton1, "cancelbutton1");
  GLADE_HOOKUP_OBJECT (dialog_new_session, okbutton1, "okbutton1");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_new_session, tooltips, "tooltips");

  gtk_widget_grab_default (okbutton1);
  return dialog_new_session;
}

GtkWidget*
create_dialog_config (void)
{
  GtkWidget *dialog_config;
  GtkWidget *dialog_vbox2;
  GtkWidget *table4;
  GtkWidget *check_output;
  GtkWidget *check_remember;
  GtkWidget *check_errorlist;
  GtkWidget *check_log;
  GtkWidget *entry_command;
  GtkWidget *label20;
  GtkWidget *dialog_action_area2;
  GtkWidget *cancelbutton2;
  GtkWidget *okbutton2;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  dialog_config = gtk_dialog_new ();
  gtk_container_set_border_width (GTK_CONTAINER (dialog_config), 12);
  gtk_window_set_title (GTK_WINDOW (dialog_config), _("Grsync preferences"));
  gtk_window_set_modal (GTK_WINDOW (dialog_config), TRUE);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog_config), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog_config), TRUE);
  gtk_window_set_type_hint (GTK_WINDOW (dialog_config), GDK_WINDOW_TYPE_HINT_DIALOG);
  gtk_dialog_set_has_separator (GTK_DIALOG (dialog_config), FALSE);

  dialog_vbox2 = GTK_DIALOG (dialog_config)->vbox;
  gtk_widget_show (dialog_vbox2);

  table4 = gtk_table_new (4, 2, FALSE);
  gtk_widget_show (table4);
  gtk_box_pack_start (GTK_BOX (dialog_vbox2), table4, TRUE, TRUE, 0);
  gtk_table_set_row_spacings (GTK_TABLE (table4), 6);
  gtk_table_set_col_spacings (GTK_TABLE (table4), 12);

  check_output = gtk_check_button_new_with_mnemonic (_("Show rsync output by default"));
  gtk_widget_show (check_output);
  gtk_table_attach (GTK_TABLE (table4), check_output, 0, 1, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_output, _("Wether to show rsync output by default or hide it (show graphical information only)"), NULL);

  check_remember = gtk_check_button_new_with_mnemonic (_("Remember last used session"));
  gtk_widget_show (check_remember);
  gtk_table_attach (GTK_TABLE (table4), check_remember, 1, 2, 2, 3,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_remember, _("Whether to load the last used session at startup or use the default one"), NULL);

  check_errorlist = gtk_check_button_new_with_mnemonic (_("Show error list when finished"));
  gtk_widget_show (check_errorlist);
  gtk_table_attach (GTK_TABLE (table4), check_errorlist, 0, 1, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_errorlist, _("When rsync has finished, show all the errors encountered in a separate window"), NULL);

  check_log = gtk_check_button_new_with_mnemonic (_("Enable logging"));
  gtk_widget_show (check_log);
  gtk_table_attach (GTK_TABLE (table4), check_log, 1, 2, 3, 4,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, check_log, _("Whether to save rsync output to a log file, named like the session, which will be located in the grsync directory (usually \".grsync\" into your user home)"), NULL);

  entry_command = gtk_entry_new ();
  gtk_widget_show (entry_command);
  gtk_table_attach (GTK_TABLE (table4), entry_command, 0, 2, 1, 2,
                    (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_tooltips_set_tip (tooltips, entry_command, _("Enter the rsync command to use, eventually including its full path"), NULL);
  gtk_entry_set_max_length (GTK_ENTRY (entry_command), 200);
  gtk_entry_set_activates_default (GTK_ENTRY (entry_command), TRUE);

  label20 = gtk_label_new (_("Rsync executable:"));
  gtk_widget_show (label20);
  gtk_table_attach (GTK_TABLE (table4), label20, 0, 2, 0, 1,
                    (GtkAttachOptions) (GTK_FILL),
                    (GtkAttachOptions) (0), 0, 0);
  gtk_misc_set_alignment (GTK_MISC (label20), 0, 0);

  dialog_action_area2 = GTK_DIALOG (dialog_config)->action_area;
  gtk_widget_show (dialog_action_area2);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_END);

  cancelbutton2 = gtk_button_new_from_stock ("gtk-cancel");
  gtk_widget_show (cancelbutton2);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_config), cancelbutton2, GTK_RESPONSE_CANCEL);
  GTK_WIDGET_SET_FLAGS (cancelbutton2, GTK_CAN_DEFAULT);

  okbutton2 = gtk_button_new_from_stock ("gtk-ok");
  gtk_widget_show (okbutton2);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_config), okbutton2, GTK_RESPONSE_OK);
  GTK_WIDGET_SET_FLAGS (okbutton2, GTK_CAN_DEFAULT);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_config, dialog_config, "dialog_config");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_config, dialog_vbox2, "dialog_vbox2");
  GLADE_HOOKUP_OBJECT (dialog_config, table4, "table4");
  GLADE_HOOKUP_OBJECT (dialog_config, check_output, "check_output");
  GLADE_HOOKUP_OBJECT (dialog_config, check_remember, "check_remember");
  GLADE_HOOKUP_OBJECT (dialog_config, check_errorlist, "check_errorlist");
  GLADE_HOOKUP_OBJECT (dialog_config, check_log, "check_log");
  GLADE_HOOKUP_OBJECT (dialog_config, entry_command, "entry_command");
  GLADE_HOOKUP_OBJECT (dialog_config, label20, "label20");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_config, dialog_action_area2, "dialog_action_area2");
  GLADE_HOOKUP_OBJECT (dialog_config, cancelbutton2, "cancelbutton2");
  GLADE_HOOKUP_OBJECT (dialog_config, okbutton2, "okbutton2");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_config, tooltips, "tooltips");

  gtk_widget_grab_default (okbutton2);
  return dialog_config;
}

GtkWidget*
create_dialog_errors (void)
{
  GtkWidget *dialog_errors;
  GtkWidget *dialog_vbox3;
  GtkWidget *vbox10;
  GtkWidget *label1;
  GtkWidget *scrolledwindow4;
  GtkWidget *textview_errors;
  GtkWidget *dialog_action_area3;
  GtkWidget *closebutton1;

  dialog_errors = gtk_dialog_new ();
  gtk_window_set_title (GTK_WINDOW (dialog_errors), _("Errors list"));
  gtk_window_set_modal (GTK_WINDOW (dialog_errors), TRUE);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog_errors), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog_errors), TRUE);
  gtk_window_set_type_hint (GTK_WINDOW (dialog_errors), GDK_WINDOW_TYPE_HINT_DIALOG);
  gtk_dialog_set_has_separator (GTK_DIALOG (dialog_errors), FALSE);

  dialog_vbox3 = GTK_DIALOG (dialog_errors)->vbox;
  gtk_widget_show (dialog_vbox3);

  vbox10 = gtk_vbox_new (FALSE, 12);
  gtk_widget_show (vbox10);
  gtk_box_pack_start (GTK_BOX (dialog_vbox3), vbox10, TRUE, TRUE, 0);
  gtk_container_set_border_width (GTK_CONTAINER (vbox10), 12);

  label1 = gtk_label_new (_("Error list of last rsync run:"));
  gtk_widget_show (label1);
  gtk_box_pack_start (GTK_BOX (vbox10), label1, FALSE, FALSE, 0);

  scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow4);
  gtk_box_pack_start (GTK_BOX (vbox10), scrolledwindow4, TRUE, TRUE, 0);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_SHADOW_IN);

  textview_errors = gtk_text_view_new ();
  gtk_widget_show (textview_errors);
  gtk_container_add (GTK_CONTAINER (scrolledwindow4), textview_errors);
  gtk_widget_set_size_request (textview_errors, 400, 150);
  gtk_text_view_set_editable (GTK_TEXT_VIEW (textview_errors), FALSE);

  dialog_action_area3 = GTK_DIALOG (dialog_errors)->action_area;
  gtk_widget_show (dialog_action_area3);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_END);

  closebutton1 = gtk_button_new_from_stock ("gtk-close");
  gtk_widget_show (closebutton1);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_errors), closebutton1, GTK_RESPONSE_CLOSE);
  GTK_WIDGET_SET_FLAGS (closebutton1, GTK_CAN_DEFAULT);

  g_signal_connect_swapped ((gpointer) closebutton1, "clicked",
                            G_CALLBACK (gtk_widget_destroy),
                            GTK_OBJECT (dialog_errors));

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_errors, dialog_errors, "dialog_errors");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_errors, dialog_vbox3, "dialog_vbox3");
  GLADE_HOOKUP_OBJECT (dialog_errors, vbox10, "vbox10");
  GLADE_HOOKUP_OBJECT (dialog_errors, label1, "label1");
  GLADE_HOOKUP_OBJECT (dialog_errors, scrolledwindow4, "scrolledwindow4");
  GLADE_HOOKUP_OBJECT (dialog_errors, textview_errors, "textview_errors");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_errors, dialog_action_area3, "dialog_action_area3");
  GLADE_HOOKUP_OBJECT (dialog_errors, closebutton1, "closebutton1");

  return dialog_errors;
}

GtkWidget*
create_dialog_rsync (void)
{
  GtkWidget *dialog_rsync;
  GtkWidget *dialog_vbox4;
  GtkWidget *vbox11;
  GtkWidget *label_file;
  GtkWidget *progress_file;
  GtkWidget *label_global;
  GtkWidget *progress_global;
  GtkWidget *hseparator4;
  GtkWidget *expander_rsync;
  GtkWidget *scrolledwindow5;
  GtkWidget *textview_output;
  GtkWidget *label26;
  GtkWidget *dialog_action_area4;
  GtkWidget *button_pause;
  GtkWidget *close;
  GtkTooltips *tooltips;

  tooltips = gtk_tooltips_new ();

  dialog_rsync = gtk_dialog_new ();
  gtk_container_set_border_width (GTK_CONTAINER (dialog_rsync), 12);
  gtk_window_set_title (GTK_WINDOW (dialog_rsync), _("rsync"));
  gtk_window_set_modal (GTK_WINDOW (dialog_rsync), TRUE);
  gtk_window_set_resizable (GTK_WINDOW (dialog_rsync), FALSE);
  gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog_rsync), TRUE);
  gtk_window_set_skip_pager_hint (GTK_WINDOW (dialog_rsync), TRUE);
  gtk_window_set_type_hint (GTK_WINDOW (dialog_rsync), GDK_WINDOW_TYPE_HINT_DIALOG);
  gtk_dialog_set_has_separator (GTK_DIALOG (dialog_rsync), FALSE);

  dialog_vbox4 = GTK_DIALOG (dialog_rsync)->vbox;
  gtk_widget_show (dialog_vbox4);

  vbox11 = gtk_vbox_new (FALSE, 6);
  gtk_widget_show (vbox11);
  gtk_box_pack_start (GTK_BOX (dialog_vbox4), vbox11, TRUE, TRUE, 0);

  label_file = gtk_label_new (_("Idle"));
  gtk_widget_show (label_file);
  gtk_box_pack_start (GTK_BOX (vbox11), label_file, FALSE, TRUE, 0);
  gtk_misc_set_alignment (GTK_MISC (label_file), 0, 0);

  progress_file = gtk_progress_bar_new ();
  gtk_widget_show (progress_file);
  gtk_box_pack_start (GTK_BOX (vbox11), progress_file, FALSE, TRUE, 3);
  gtk_tooltips_set_tip (tooltips, progress_file, _("Transfer progress of current file"), NULL);
  gtk_widget_set_events (progress_file, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
  gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress_file), "0%");

  label_global = gtk_label_new (_("Global progress"));
  gtk_widget_show (label_global);
  gtk_box_pack_start (GTK_BOX (vbox11), label_global, FALSE, FALSE, 0);
  gtk_label_set_line_wrap (GTK_LABEL (label_global), TRUE);
  gtk_misc_set_alignment (GTK_MISC (label_global), 0, 0);

  progress_global = gtk_progress_bar_new ();
  gtk_widget_show (progress_global);
  gtk_box_pack_start (GTK_BOX (vbox11), progress_global, FALSE, FALSE, 0);
  gtk_tooltips_set_tip (tooltips, progress_global, _("Global transfer progress: works only with rsync version 2.6.1 or newer, and may report wrong values depending on the ability of rsync to estimate the files to be copied in advance"), NULL);
  gtk_widget_set_events (progress_global, GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK);
  gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress_global), "0%");

  hseparator4 = gtk_hseparator_new ();
  gtk_widget_show (hseparator4);
  gtk_box_pack_start (GTK_BOX (vbox11), hseparator4, FALSE, TRUE, 0);
  gtk_widget_set_size_request (hseparator4, 410, -1);

  expander_rsync = gtk_expander_new (NULL);
  gtk_widget_show (expander_rsync);
  gtk_box_pack_start (GTK_BOX (vbox11), expander_rsync, FALSE, TRUE, 0);
  gtk_expander_set_expanded (GTK_EXPANDER (expander_rsync), TRUE);

  scrolledwindow5 = gtk_scrolled_window_new (NULL, NULL);
  gtk_widget_show (scrolledwindow5);
  gtk_container_add (GTK_CONTAINER (expander_rsync), scrolledwindow5);
  gtk_widget_set_size_request (scrolledwindow5, -1, 250);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow5), GTK_SHADOW_IN);

  textview_output = gtk_text_view_new ();
  gtk_widget_show (textview_output);
  gtk_container_add (GTK_CONTAINER (scrolledwindow5), textview_output);
  gtk_widget_set_sensitive (textview_output, FALSE);
  gtk_text_view_set_editable (GTK_TEXT_VIEW (textview_output), FALSE);
  gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (textview_output), FALSE);

  label26 = gtk_label_new (_("Rsync output:"));
  gtk_widget_show (label26);
  gtk_expander_set_label_widget (GTK_EXPANDER (expander_rsync), label26);

  dialog_action_area4 = GTK_DIALOG (dialog_rsync)->action_area;
  gtk_widget_show (dialog_action_area4);
  gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_END);

  button_pause = gtk_button_new_from_stock ("gtk-media-pause");
  gtk_widget_show (button_pause);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_rsync), button_pause, 0);
  gtk_tooltips_set_tip (tooltips, button_pause, _("Pause/resume rsync run"), NULL);

  close = gtk_button_new_from_stock ("gtk-stop");
  gtk_widget_show (close);
  gtk_dialog_add_action_widget (GTK_DIALOG (dialog_rsync), close, 0);
  gtk_tooltips_set_tip (tooltips, close, _("Stops rsync and closes the window"), NULL);

  g_signal_connect ((gpointer) dialog_rsync, "show",
                    G_CALLBACK (on_rsync_show),
                    NULL);
  g_signal_connect ((gpointer) dialog_rsync, "destroy",
                    G_CALLBACK (on_rsync_destroy),
                    NULL);
  g_signal_connect ((gpointer) button_pause, "clicked",
                    G_CALLBACK (on_button_pause_clicked),
                    NULL);
  g_signal_connect ((gpointer) close, "clicked",
                    G_CALLBACK (on_close_clicked),
                    NULL);

  /* Store pointers to all widgets, for use by lookup_widget(). */
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_rsync, dialog_rsync, "dialog_rsync");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_rsync, dialog_vbox4, "dialog_vbox4");
  GLADE_HOOKUP_OBJECT (dialog_rsync, vbox11, "vbox11");
  GLADE_HOOKUP_OBJECT (dialog_rsync, label_file, "label_file");
  GLADE_HOOKUP_OBJECT (dialog_rsync, progress_file, "progress_file");
  GLADE_HOOKUP_OBJECT (dialog_rsync, label_global, "label_global");
  GLADE_HOOKUP_OBJECT (dialog_rsync, progress_global, "progress_global");
  GLADE_HOOKUP_OBJECT (dialog_rsync, hseparator4, "hseparator4");
  GLADE_HOOKUP_OBJECT (dialog_rsync, expander_rsync, "expander_rsync");
  GLADE_HOOKUP_OBJECT (dialog_rsync, scrolledwindow5, "scrolledwindow5");
  GLADE_HOOKUP_OBJECT (dialog_rsync, textview_output, "textview_output");
  GLADE_HOOKUP_OBJECT (dialog_rsync, label26, "label26");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_rsync, dialog_action_area4, "dialog_action_area4");
  GLADE_HOOKUP_OBJECT (dialog_rsync, button_pause, "button_pause");
  GLADE_HOOKUP_OBJECT (dialog_rsync, close, "close");
  GLADE_HOOKUP_OBJECT_NO_REF (dialog_rsync, tooltips, "tooltips");

  return dialog_rsync;
}



syntax highlighted by Code2HTML, v. 0.9.1