backup-restore cleanups.
This commit is contained in:
@ -47,12 +47,14 @@
|
||||
#define localtime_r(timep, result) (localtime (timep) ? memcpy ((result), localtime (timep), sizeof (*(result))) : 0)
|
||||
#endif
|
||||
|
||||
gboolean e_plugin_ui_init (GtkUIManager *ui_manager,
|
||||
EShellWindow *shell_window);
|
||||
|
||||
GtkWidget * backup_restore_page (EPlugin *ep, EConfigHookItemFactoryData *hook_data);
|
||||
void backup_restore_commit (EPlugin *ep, EMConfigTargetAccount *target);
|
||||
void backup_restore_abort (EPlugin *ep, EMConfigTargetAccount *target);
|
||||
gboolean e_plugin_ui_init (GtkUIManager *ui_manager,
|
||||
EShellWindow *shell_window);
|
||||
GtkWidget * backup_restore_page (EPlugin *ep,
|
||||
EConfigHookItemFactoryData *hook_data);
|
||||
void backup_restore_commit (EPlugin *ep,
|
||||
EMConfigTargetAccount *target);
|
||||
void backup_restore_abort (EPlugin *ep,
|
||||
EMConfigTargetAccount *target);
|
||||
|
||||
typedef enum _br_flags {
|
||||
BR_OK = 1 << 0,
|
||||
@ -73,9 +75,22 @@ backup (const gchar *filename,
|
||||
gboolean restart)
|
||||
{
|
||||
if (restart)
|
||||
execl (EVOLUTION_TOOLSDIR "/evolution-backup", "evolution-backup", "--gui", "--backup", "--restart", filename, (gchar *)NULL);
|
||||
execl (
|
||||
EVOLUTION_TOOLSDIR "/evolution-backup",
|
||||
"evolution-backup",
|
||||
"--gui",
|
||||
"--backup",
|
||||
"--restart",
|
||||
filename,
|
||||
NULL);
|
||||
else
|
||||
execl (EVOLUTION_TOOLSDIR "/evolution-backup", "evolution-backup", "--gui", "--backup", filename, (gchar *)NULL);
|
||||
execl (
|
||||
EVOLUTION_TOOLSDIR "/evolution-backup",
|
||||
"evolution-backup",
|
||||
"--gui",
|
||||
"--backup",
|
||||
filename,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -83,9 +98,22 @@ restore (const gchar *filename,
|
||||
gboolean restart)
|
||||
{
|
||||
if (restart)
|
||||
execl (EVOLUTION_TOOLSDIR "/evolution-backup", "evolution-backup", "--gui", "--restore", "--restart", filename, (gchar *)NULL);
|
||||
execl (
|
||||
EVOLUTION_TOOLSDIR "/evolution-backup",
|
||||
"evolution-backup",
|
||||
"--gui",
|
||||
"--restore",
|
||||
"--restart",
|
||||
filename,
|
||||
NULL);
|
||||
else
|
||||
execl (EVOLUTION_TOOLSDIR "/evolution-backup", "evolution-backup", "--gui", "--restore", filename, (gchar *)NULL);
|
||||
execl (
|
||||
EVOLUTION_TOOLSDIR "/evolution-backup",
|
||||
"evolution-backup",
|
||||
"--gui",
|
||||
"--restore",
|
||||
filename,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -105,7 +133,9 @@ sanity_check (const gchar *filename)
|
||||
g_free (toolfname);
|
||||
|
||||
#ifdef HAVE_SYS_WAIT_H
|
||||
g_message ("Sanity check result %d:%d %d", WIFEXITED (result), WEXITSTATUS (result), result);
|
||||
g_message (
|
||||
"Sanity check result %d:%d %d",
|
||||
WIFEXITED (result), WEXITSTATUS (result), result);
|
||||
|
||||
return WIFEXITED (result) && (WEXITSTATUS (result) == 0);
|
||||
#else
|
||||
@ -137,7 +167,6 @@ dialog_prompt_user (GtkWindow *parent,
|
||||
container = e_alert_dialog_get_content_area (E_ALERT_DIALOG (dialog));
|
||||
|
||||
check = gtk_check_button_new_with_mnemonic (string);
|
||||
/* We should hardcode this to true */
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), TRUE);
|
||||
gtk_box_pack_start (GTK_BOX (container), check, FALSE, FALSE, 0);
|
||||
gtk_widget_show (check);
|
||||
@ -171,7 +200,9 @@ suggest_file_name (void)
|
||||
t = time (NULL);
|
||||
localtime_r (&t, &tm);
|
||||
|
||||
return g_strdup_printf ("evolution-backup-%04d%02d%02d.tar.gz", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
|
||||
return g_strdup_printf (
|
||||
"evolution-backup-%04d%02d%02d.tar.gz",
|
||||
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -232,7 +263,8 @@ action_settings_backup_cb (GtkAction *action,
|
||||
} else {
|
||||
e_alert_run_dialog_for_args (
|
||||
GTK_WINDOW (shell_window),
|
||||
"org.gnome.backup-restore:insufficient-permissions", NULL);
|
||||
"org.gnome.backup-restore:insufficient-permissions",
|
||||
NULL);
|
||||
}
|
||||
|
||||
g_object_unref (file_info);
|
||||
@ -277,30 +309,42 @@ action_settings_restore_cb (GtkAction *action,
|
||||
|
||||
static void
|
||||
check_toggled (GtkToggleButton *button,
|
||||
GtkAssistant *assistant)
|
||||
GObject *assistant)
|
||||
{
|
||||
GtkWidget *box = g_object_get_data ((GObject *)button, "box");
|
||||
gboolean state = gtk_toggle_button_get_active ((GtkToggleButton *) button);
|
||||
EConfig *config;
|
||||
GtkWidget *box;
|
||||
gboolean active;
|
||||
|
||||
gtk_widget_set_sensitive (box, state);
|
||||
active = gtk_toggle_button_get_active (button);
|
||||
box = g_object_get_data (G_OBJECT (button), "box");
|
||||
gtk_widget_set_sensitive (box, active);
|
||||
|
||||
g_object_set_data ((GObject *)assistant, "restore", GINT_TO_POINTER (state?1:0));
|
||||
g_object_set_data (
|
||||
assistant, "restore",
|
||||
GINT_TO_POINTER (active ? 1 : 0));
|
||||
|
||||
e_config_target_changed ((EConfig *) g_object_get_data ((GObject *)assistant, "restore-config"), E_CONFIG_TARGET_CHANGED_STATE);
|
||||
config = g_object_get_data (assistant, "restore-config");
|
||||
|
||||
e_config_target_changed (
|
||||
config, E_CONFIG_TARGET_CHANGED_STATE);
|
||||
}
|
||||
|
||||
static void
|
||||
file_changed (GtkFileChooser *chooser,
|
||||
GtkAssistant *assistant)
|
||||
GObject *assistant)
|
||||
{
|
||||
EConfig *config;
|
||||
gchar *file = NULL, *prevfile = NULL;
|
||||
|
||||
file = gtk_file_chooser_get_filename (chooser);
|
||||
prevfile = g_object_get_data ((GObject *)assistant, "restore-file");
|
||||
g_object_set_data ((GObject *)assistant, "restore-file", file);
|
||||
prevfile = g_object_get_data (assistant, "restore-file");
|
||||
g_object_set_data (assistant, "restore-file", file);
|
||||
g_free (prevfile);
|
||||
|
||||
e_config_target_changed ((EConfig *) g_object_get_data ((GObject *)assistant, "restore-config"), E_CONFIG_TARGET_CHANGED_STATE);
|
||||
config = g_object_get_data (assistant, "restore-config");
|
||||
|
||||
e_config_target_changed (
|
||||
config, E_CONFIG_TARGET_CHANGED_STATE);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -308,17 +352,18 @@ backup_restore_check (EConfig *ec,
|
||||
const gchar *pageid,
|
||||
gpointer data)
|
||||
{
|
||||
GtkAssistant *assistant = data;
|
||||
gint do_restore;
|
||||
GObject *assistant = data;
|
||||
gboolean do_restore;
|
||||
gchar *file;
|
||||
|
||||
g_return_val_if_fail (data != NULL, FALSE);
|
||||
g_return_val_if_fail (GTK_IS_ASSISTANT (data), FALSE);
|
||||
|
||||
do_restore = GPOINTER_TO_INT (g_object_get_data ((GObject *)assistant, "restore"));
|
||||
file = g_object_get_data ((GObject *)assistant, "restore-file");
|
||||
do_restore = (g_object_get_data (assistant, "restore") != NULL);
|
||||
file = g_object_get_data (assistant, "restore-file");
|
||||
|
||||
e_config_set_page_is_finish (ec, "0.startup_page.10.backup_restore", do_restore);
|
||||
e_config_set_page_is_finish (
|
||||
ec, "0.startup_page.10.backup_restore", do_restore);
|
||||
|
||||
return !do_restore || file;
|
||||
}
|
||||
@ -328,60 +373,81 @@ backup_restore_page (EPlugin *ep,
|
||||
EConfigHookItemFactoryData *hook_data)
|
||||
{
|
||||
GtkWidget *page, *hbox, *label, *cbox, *button;
|
||||
GtkAssistant *assistant = GTK_ASSISTANT (hook_data->parent);
|
||||
GObject *assistant = G_OBJECT (hook_data->parent);
|
||||
|
||||
page = gtk_vbox_new (FALSE, 6);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (page), 12);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 6);
|
||||
label = gtk_label_new (_("You can restore Evolution from your backup. It can restore all the Mails, Calendars, Tasks, Memos, Contacts. It also restores all your personal settings, mail filters etc."));
|
||||
gtk_label_set_line_wrap ((GtkLabel *) label, TRUE);
|
||||
gtk_label_set_single_line_mode ((GtkLabel *) label, FALSE);
|
||||
gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 6);
|
||||
gtk_box_pack_start ((GtkBox *) page, hbox, FALSE, FALSE, 0);
|
||||
label = gtk_label_new (
|
||||
_("You can restore Evolution from your backup. It can restore "
|
||||
"all the Mails, Calendars, Tasks, Memos, Contacts. It also "
|
||||
"restores all your personal settings, mail filters etc."));
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_label_set_single_line_mode (GTK_LABEL (label), FALSE);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 6);
|
||||
gtk_box_pack_start (GTK_BOX (page), hbox, FALSE, FALSE, 0);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 6);
|
||||
cbox = gtk_check_button_new_with_mnemonic (_("_Restore Evolution from the backup file"));
|
||||
g_signal_connect (cbox, "toggled", G_CALLBACK (check_toggled), assistant);
|
||||
gtk_box_pack_start ((GtkBox *) hbox, cbox, FALSE, FALSE, 6);
|
||||
gtk_box_pack_start ((GtkBox *) page, hbox, FALSE, FALSE, 0);
|
||||
cbox = gtk_check_button_new_with_mnemonic (
|
||||
_("_Restore Evolution from the backup file"));
|
||||
g_signal_connect (
|
||||
cbox, "toggled",
|
||||
G_CALLBACK (check_toggled), assistant);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), cbox, FALSE, FALSE, 6);
|
||||
gtk_box_pack_start (GTK_BOX (page), hbox, FALSE, FALSE, 0);
|
||||
|
||||
hbox = gtk_hbox_new (FALSE, 6);
|
||||
g_object_set_data ((GObject *)cbox, "box", hbox);
|
||||
label = gtk_label_new (_("Please select an Evolution Archive to restore:"));
|
||||
gtk_box_pack_start ((GtkBox *) hbox, label, FALSE, FALSE, 12);
|
||||
label = gtk_label_new (
|
||||
_("Please select an Evolution Archive to restore:"));
|
||||
gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 12);
|
||||
|
||||
button = gtk_file_chooser_button_new (_("Choose a file to restore"), GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
g_signal_connect (button, "selection-changed", G_CALLBACK (file_changed), assistant);
|
||||
gtk_file_chooser_button_set_width_chars ((GtkFileChooserButton *) button, 20);
|
||||
gtk_box_pack_start ((GtkBox *) hbox, button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start ((GtkBox *) page, hbox, FALSE, FALSE, 0);
|
||||
button = gtk_file_chooser_button_new (
|
||||
_("Choose a file to restore"),
|
||||
GTK_FILE_CHOOSER_ACTION_OPEN);
|
||||
g_signal_connect (
|
||||
button, "selection-changed",
|
||||
G_CALLBACK (file_changed), assistant);
|
||||
gtk_file_chooser_button_set_width_chars (
|
||||
GTK_FILE_CHOOSER_BUTTON (button), 20);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (page), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_set_sensitive (hbox, FALSE);
|
||||
|
||||
gtk_assistant_append_page (assistant, page);
|
||||
gtk_assistant_set_page_title (assistant, page, _("Restore from backup"));
|
||||
gtk_assistant_append_page (GTK_ASSISTANT (assistant), page);
|
||||
gtk_assistant_set_page_title (
|
||||
GTK_ASSISTANT (assistant),
|
||||
page, _("Restore from backup"));
|
||||
gtk_widget_show_all (page);
|
||||
|
||||
g_object_set_data ((GObject *)assistant, "restore", GINT_TO_POINTER (FALSE));
|
||||
g_object_set_data ((GObject *)assistant, "restore-config", hook_data->config);
|
||||
g_object_set_data (assistant, "restore", GINT_TO_POINTER (FALSE));
|
||||
g_object_set_data (assistant, "restore-config", hook_data->config);
|
||||
|
||||
e_config_add_page_check (hook_data->config, "0.startup_page.10.backup_restore", backup_restore_check, assistant);
|
||||
e_config_add_page_check (
|
||||
hook_data->config,
|
||||
"0.startup_page.10.backup_restore",
|
||||
backup_restore_check, assistant);
|
||||
|
||||
return GTK_WIDGET (page);
|
||||
}
|
||||
|
||||
void
|
||||
backup_restore_commit (EPlugin *ep,
|
||||
EMConfigTargetAccount *target)
|
||||
{
|
||||
GtkWidget *assistant = target->target.config->widget;
|
||||
gboolean state = GPOINTER_TO_INT (g_object_get_data ((GObject *)assistant, "restore")) ? TRUE : FALSE;
|
||||
gchar *file = g_object_get_data ((GObject *)assistant, "restore-file");
|
||||
GObject *assistant;
|
||||
gchar *file;
|
||||
|
||||
if (state) {
|
||||
if (!file || !sanity_check (file)) {
|
||||
e_alert_run_dialog_for_args ((GtkWindow *) assistant,
|
||||
"org.gnome.backup-restore:invalid-backup",
|
||||
NULL);
|
||||
assistant = G_OBJECT (target->target.config->widget);
|
||||
file = g_object_get_data (assistant, "restore-file");
|
||||
|
||||
if (g_object_get_data (assistant, "restore") != NULL) {
|
||||
if (file == NULL || !sanity_check (file)) {
|
||||
e_alert_run_dialog_for_args (
|
||||
GTK_WINDOW (assistant),
|
||||
"org.gnome.backup-restore:invalid-backup",
|
||||
NULL);
|
||||
} else {
|
||||
restore (file, TRUE);
|
||||
}
|
||||
|
||||
@ -90,7 +90,8 @@ static GOptionEntry options[] = {
|
||||
|
||||
#define d(x)
|
||||
|
||||
#define print_and_run(x) G_STMT_START { g_message ("%s", x); system (x); } G_STMT_END
|
||||
#define print_and_run(x) \
|
||||
G_STMT_START { g_message ("%s", x); system (x); } G_STMT_END
|
||||
|
||||
static gboolean check (const gchar *filename, gboolean *is_new_format);
|
||||
|
||||
@ -308,7 +309,9 @@ backup (const gchar *filename,
|
||||
txt = _("Backing Evolution accounts and settings");
|
||||
run_cmd ("gconftool-2 --dump " GCONF_DIR " > " EVOLUTION_DIR GCONF_DUMP_FILE);
|
||||
|
||||
replace_in_file (EVOLUTION_DIR GCONF_DUMP_FILE, e_get_user_data_dir (), EVOUSERDATADIR_MAGIC);
|
||||
replace_in_file (
|
||||
EVOLUTION_DIR GCONF_DUMP_FILE,
|
||||
e_get_user_data_dir (), EVOUSERDATADIR_MAGIC);
|
||||
|
||||
write_dir_file ();
|
||||
|
||||
@ -321,7 +324,10 @@ backup (const gchar *filename,
|
||||
/* FIXME compression type?" */
|
||||
/* FIXME date/time stamp?" */
|
||||
/* FIXME backup location?" */
|
||||
command = g_strdup_printf ("cd $HOME && tar chf - $STRIPDATADIR $STRIPCONFIGDIR .camel_certs " EVOLUTION_DIR_FILE " | gzip > %s", quotedfname);
|
||||
command = g_strdup_printf (
|
||||
"cd $HOME && tar chf - $STRIPDATADIR "
|
||||
"$STRIPCONFIGDIR .camel_certs " EVOLUTION_DIR_FILE " | "
|
||||
"gzip > %s", quotedfname);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
g_free (quotedfname);
|
||||
@ -435,7 +441,9 @@ restore (const gchar *filename,
|
||||
GString *dir_fn;
|
||||
gchar *data_dir = NULL, *config_dir = NULL;
|
||||
|
||||
command = g_strdup_printf ("cd $TMP && tar xzf %s " EVOLUTION_DIR_FILE, quotedfname);
|
||||
command = g_strdup_printf (
|
||||
"cd $TMP && tar xzf %s "
|
||||
EVOLUTION_DIR_FILE, quotedfname);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
@ -461,15 +469,20 @@ restore (const gchar *filename,
|
||||
g_mkdir_with_parents (e_get_user_data_dir (), 0700);
|
||||
g_mkdir_with_parents (e_get_user_config_dir (), 0700);
|
||||
|
||||
command = g_strdup_printf ("cd $DATADIR && tar xzf %s %s --strip-components=%d", quotedfname, data_dir, get_dir_level (data_dir));
|
||||
command = g_strdup_printf (
|
||||
"cd $DATADIR && tar xzf %s %s --strip-components=%d",
|
||||
quotedfname, data_dir, get_dir_level (data_dir));
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
command = g_strdup_printf ("cd $CONFIGDIR && tar xzf %s %s --strip-components=%d", quotedfname, config_dir, get_dir_level (config_dir));
|
||||
command = g_strdup_printf (
|
||||
"cd $CONFIGDIR && tar xzf %s %s --strip-components=%d",
|
||||
quotedfname, config_dir, get_dir_level (config_dir));
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
command = g_strdup_printf ("cd $HOME && tar xzf %s .camel_certs", quotedfname);
|
||||
command = g_strdup_printf (
|
||||
"cd $HOME && tar xzf %s .camel_certs", quotedfname);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
@ -478,7 +491,8 @@ restore (const gchar *filename,
|
||||
} else {
|
||||
run_cmd ("mv $HOME/.evolution $HOME/.evolution_old");
|
||||
|
||||
command = g_strdup_printf ("cd $HOME && gzip -cd %s | tar xf -", quotedfname);
|
||||
command = g_strdup_printf (
|
||||
"cd $HOME && gzip -cd %s | tar xf -", quotedfname);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
}
|
||||
@ -492,14 +506,33 @@ restore (const gchar *filename,
|
||||
|
||||
if (is_new_format) {
|
||||
/* new format has it in DATADIR... */
|
||||
replace_in_file (EVOLUTION_DIR GCONF_DUMP_FILE, EVOUSERDATADIR_MAGIC, e_get_user_data_dir ());
|
||||
replace_in_file (
|
||||
EVOLUTION_DIR GCONF_DUMP_FILE,
|
||||
EVOUSERDATADIR_MAGIC, e_get_user_data_dir ());
|
||||
run_cmd ("gconftool-2 --load " EVOLUTION_DIR GCONF_DUMP_FILE);
|
||||
run_cmd ("rm " EVOLUTION_DIR GCONF_DUMP_FILE);
|
||||
} else {
|
||||
gchar *gconf_dump_file;
|
||||
|
||||
/* ... old format in ~/.evolution */
|
||||
replace_in_file ("$HOME/.evolution/" GCONF_DUMP_FILE, EVOUSERDATADIR_MAGIC, e_get_user_data_dir ());
|
||||
run_cmd ("gconftool-2 --load " "$HOME/.evolution/" GCONF_DUMP_FILE);
|
||||
run_cmd ("rm " "$HOME/.evolution/" GCONF_DUMP_FILE);
|
||||
gconf_dump_file = g_build_filename (
|
||||
"$HOME", ".evolution", GCONF_DUMP_FILE, NULL);
|
||||
|
||||
replace_in_file (
|
||||
gconf_dump_file,
|
||||
EVOUSERDATADIR_MAGIC,
|
||||
e_get_user_data_dir ());
|
||||
|
||||
command = g_strconcat (
|
||||
"gconftool-2 --load ", gconf_dump_file, NULL);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
command = g_strconcat ("rm ", gconf_dump_file, NULL);
|
||||
run_cmd (command);
|
||||
g_free (command);
|
||||
|
||||
g_free (gconf_dump_file);
|
||||
}
|
||||
|
||||
if (g_cancellable_is_cancelled (cancellable))
|
||||
@ -519,7 +552,7 @@ restore (const gchar *filename,
|
||||
|
||||
txt = _("Ensuring local sources");
|
||||
|
||||
end:
|
||||
end:
|
||||
if (restart_arg) {
|
||||
if (g_cancellable_is_cancelled (cancellable))
|
||||
return;
|
||||
@ -662,7 +695,8 @@ main (gint argc,
|
||||
{
|
||||
GCancellable *cancellable;
|
||||
gchar *file = NULL, *oper = NULL;
|
||||
gint i;
|
||||
const gchar *title = NULL;
|
||||
gint ii;
|
||||
GError *error = NULL;
|
||||
|
||||
#ifdef G_OS_WIN32
|
||||
@ -671,18 +705,26 @@ main (gint argc,
|
||||
typedef BOOL (WINAPI *t_SetDllDirectoryA) (LPCSTR lpPathName);
|
||||
t_SetDllDirectoryA p_SetDllDirectoryA;
|
||||
|
||||
p_SetDllDirectoryA = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetDllDirectoryA");
|
||||
if (p_SetDllDirectoryA)
|
||||
(*p_SetDllDirectoryA) ("");
|
||||
p_SetDllDirectoryA = GetProcAddress (
|
||||
GetModuleHandle ("kernel32.dll"),
|
||||
"SetDllDirectoryA");
|
||||
|
||||
if (p_SetDllDirectoryA != NULL)
|
||||
p_SetDllDirectoryA ("");
|
||||
}
|
||||
#ifndef _WIN64
|
||||
{
|
||||
typedef BOOL (WINAPI *t_SetProcessDEPPolicy) (DWORD dwFlags);
|
||||
t_SetProcessDEPPolicy p_SetProcessDEPPolicy;
|
||||
|
||||
p_SetProcessDEPPolicy = GetProcAddress (GetModuleHandle ("kernel32.dll"), "SetProcessDEPPolicy");
|
||||
p_SetProcessDEPPolicy = GetProcAddress (
|
||||
GetModuleHandle ("kernel32.dll"),
|
||||
"SetProcessDEPPolicy");
|
||||
|
||||
if (p_SetProcessDEPPolicy)
|
||||
(*p_SetProcessDEPPolicy) (PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION);
|
||||
p_SetProcessDEPPolicy (
|
||||
PROCESS_DEP_ENABLE |
|
||||
PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@ -691,31 +733,32 @@ main (gint argc,
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
textdomain (GETTEXT_PACKAGE);
|
||||
|
||||
g_thread_init (NULL);
|
||||
|
||||
gtk_init_with_args (
|
||||
&argc, &argv, NULL, options, (gchar *) GETTEXT_PACKAGE, &error);
|
||||
&argc, &argv, NULL, options, GETTEXT_PACKAGE, &error);
|
||||
|
||||
if (error != NULL) {
|
||||
g_printerr ("%s\n", error->message);
|
||||
g_error_free (error);
|
||||
exit (1);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (opt_remaining) {
|
||||
for (i = 0; i < g_strv_length (opt_remaining); i++) {
|
||||
if (opt_remaining != NULL) {
|
||||
for (ii = 0; ii < g_strv_length (opt_remaining); ii++) {
|
||||
if (backup_op) {
|
||||
title = _("Evolution Back Up");
|
||||
oper = _("Backing up to the folder %s");
|
||||
d(g_message ("Backing up to the folder %s", (gchar *) opt_remaining[i]));
|
||||
bk_file = g_strdup ((gchar *) opt_remaining[i]);
|
||||
d(g_message ("Backing up to the folder %s", (gchar *) opt_remaining[ii]));
|
||||
bk_file = g_strdup ((gchar *) opt_remaining[ii]);
|
||||
file = bk_file;
|
||||
} else if (restore_op) {
|
||||
title = _("Evolution Restore");
|
||||
oper = _("Restoring from the folder %s");
|
||||
d(g_message ("Restoring from the folder %s", (gchar *) opt_remaining[i]));
|
||||
res_file = g_strdup ((gchar *) opt_remaining[i]);
|
||||
d(g_message ("Restoring from the folder %s", (gchar *) opt_remaining[ii]));
|
||||
res_file = g_strdup ((gchar *) opt_remaining[ii]);
|
||||
file = res_file;
|
||||
} else if (check_op) {
|
||||
d(g_message ("Checking %s", (gchar *) opt_remaining[i]));
|
||||
chk_file = g_strdup ((gchar *) opt_remaining[i]);
|
||||
d(g_message ("Checking %s", (gchar *) opt_remaining[ii]));
|
||||
chk_file = g_strdup ((gchar *) opt_remaining[ii]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -732,15 +775,19 @@ main (gint argc,
|
||||
|
||||
gtk_window_set_default_icon_name ("evolution");
|
||||
|
||||
/* Backup / Restore only can have GUI. We should restrict the rest */
|
||||
progress_dialog = gtk_dialog_new_with_buttons (backup_op ? _("Evolution Back up"): _("Evolution Restore"),
|
||||
NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_REJECT,
|
||||
NULL);
|
||||
/* Backup / Restore only can have GUI.
|
||||
* We should restrict the rest. */
|
||||
progress_dialog = gtk_dialog_new_with_buttons (
|
||||
title, NULL,
|
||||
GTK_DIALOG_MODAL,
|
||||
GTK_STOCK_CANCEL,
|
||||
GTK_RESPONSE_REJECT,
|
||||
NULL);
|
||||
|
||||
gtk_container_set_border_width (GTK_CONTAINER (progress_dialog), 12);
|
||||
gtk_container_set_border_width (
|
||||
GTK_CONTAINER (progress_dialog), 12);
|
||||
gtk_window_set_default_size (
|
||||
GTK_WINDOW (progress_dialog), 450, 120);
|
||||
|
||||
action_area = gtk_dialog_get_action_area (
|
||||
GTK_DIALOG (progress_dialog));
|
||||
@ -764,11 +811,14 @@ main (gint argc,
|
||||
gtk_box_pack_start (
|
||||
GTK_BOX (content_area), container, FALSE, TRUE, 0);
|
||||
|
||||
widget = gtk_image_new_from_stock (GTK_STOCK_COPY, GTK_ICON_SIZE_DIALOG);
|
||||
widget = gtk_image_new_from_stock (
|
||||
GTK_STOCK_COPY, GTK_ICON_SIZE_DIALOG);
|
||||
gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0);
|
||||
gtk_widget_show (widget);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (container), widget, 0, 1, 0, 3, GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), widget, 0, 1, 0, 3,
|
||||
GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
|
||||
if (backup_op) {
|
||||
txt = _("Backing up Evolution Data");
|
||||
@ -777,53 +827,62 @@ main (gint argc,
|
||||
txt = _("Restoring Evolution Data");
|
||||
txt2 = _("Please wait while Evolution is restoring your data.");
|
||||
} else {
|
||||
/* do not translate these two, it's just a fallback when something goes wrong,
|
||||
* we should never get here anyway. */
|
||||
txt = "Oops, doing nothing...";
|
||||
txt2 = "Should not be here now, really...";
|
||||
g_return_val_if_reached (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
markup = g_strconcat ("<b><big>", txt, "</big></b>", NULL);
|
||||
widget = gtk_label_new (NULL);
|
||||
markup = g_markup_printf_escaped ("<b><big>%s</big></b>", txt);
|
||||
widget = gtk_label_new (markup);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (widget), FALSE);
|
||||
gtk_label_set_markup (GTK_LABEL (widget), markup);
|
||||
gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
|
||||
gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.0);
|
||||
gtk_widget_show (widget);
|
||||
g_free (markup);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (container), widget, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), widget, 1, 2, 0, 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
||||
markup = g_strconcat (txt2, " ", _("This may take a while depending on the amount of data in your account."), NULL);
|
||||
widget = gtk_label_new (NULL);
|
||||
markup = g_strconcat (
|
||||
txt2, " ", _("This may take a while depending "
|
||||
"on the amount of data in your account."), NULL);
|
||||
widget = gtk_label_new (markup);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE);
|
||||
gtk_label_set_markup (GTK_LABEL (widget), markup);
|
||||
gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
|
||||
gtk_widget_show (widget);
|
||||
g_free (markup);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (container), widget, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), widget, 1, 2, 1, 2,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
||||
pbar = gtk_progress_bar_new ();
|
||||
|
||||
if (str) {
|
||||
markup = g_strconcat ("<i>", str, "</i>", NULL);
|
||||
widget = gtk_label_new (NULL);
|
||||
gtk_label_set_markup (GTK_LABEL (widget), markup);
|
||||
if (str != NULL) {
|
||||
markup = g_markup_printf_escaped ("<i>%s</i>", str);
|
||||
widget = gtk_label_new (markup);
|
||||
gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
|
||||
gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
|
||||
g_free (markup);
|
||||
g_free (str);
|
||||
gtk_table_attach (GTK_TABLE (container), widget, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), widget, 1, 2, 2, 3,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_table_set_row_spacing (GTK_TABLE (container), 2, 6);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (container), pbar, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), pbar, 1, 2, 3, 4,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
} else
|
||||
gtk_table_attach (GTK_TABLE (container), pbar, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_table_attach (
|
||||
GTK_TABLE (container), pbar, 1, 2, 2, 3,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
||||
gtk_window_set_default_size ((GtkWindow *) progress_dialog, 450, 120);
|
||||
g_signal_connect (
|
||||
progress_dialog, "response",
|
||||
G_CALLBACK (dlg_response), cancellable);
|
||||
gtk_widget_show_all (progress_dialog);
|
||||
|
||||
} else if (check_op) {
|
||||
/* For sanity we don't need gui */
|
||||
check (chk_file, NULL);
|
||||
|
||||
Reference in New Issue
Block a user