Imported Upstream version 0.79.2

This commit is contained in:
Rogério Brito
2010-11-06 20:36:40 -02:00
committed by TANIGUCHI Takaki
parent c3da7b4a44
commit bfe15b23fb
855 changed files with 28909 additions and 12770 deletions

88
misc.c
View File

@@ -1,5 +1,5 @@
/* dvdisaster: Additional error correction for optical media.
* Copyright (C) 2004-2009 Carsten Gnoerlich.
* Copyright (C) 2004-2010 Carsten Gnoerlich.
* Project home page: http://www.dvdisaster.com
* Email: carsten@dvdisaster.com -or- cgnoerlich@fsfe.org
*
@@ -202,7 +202,7 @@ static void print_greetings(FILE *where)
if(greetings_shown) return;
greetings_shown = 1;
g_fprintf(where, _("dvdisaster-%s%sCopyright 2004-2009 Carsten Gnoerlich.\n"),
g_fprintf(where, _("dvdisaster-%s%sCopyright 2004-2010 Carsten Gnoerlich.\n"),
VERSION, strstr(VERSION,"pl") ? " " : " ");
/* TRANSLATORS: Excluding all kinds of warranty might be harmful under your
legislature. If in doubt, just translate the following like "This is free
@@ -275,6 +275,7 @@ void PrintProgress(char *format, ...)
{ n = 255;
msg[255] = 0;
}
Closure->progressLength = n;
if(strchr(msg, '\n'))
g_fprintf(stderr, "%s", msg);
@@ -289,6 +290,21 @@ void PrintProgress(char *format, ...)
fflush(stderr); /* at least needed for Windows */
}
/*
* Clear last progress string
*/
void ClearProgress(void)
{ static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
int n = Closure->progressLength;
Closure->bs[n] = Closure->sp[n] = 0;
g_fprintf(stderr, "%s%s", Closure->sp, Closure->bs);
Closure->bs[n] = '\b';
Closure->sp[n] = ' ';
g_static_mutex_unlock(&mutex);
}
/*
* Print a message to both stderr and the log window
*/
@@ -758,6 +774,8 @@ void SetLabelText(GtkLabel *label, char *format, ...)
va_start(argp, format);
if(format)
{ char *tmp = g_strdup_vprintf(format, argp);
if(!tmp) tmp=g_strdup_printf("SetLabelText(%s) failed",format);
li->text = g_locale_to_utf8(tmp, -1, NULL, NULL, NULL);
g_free(tmp);
}
@@ -1095,3 +1113,69 @@ void LockLabelSize(GtkLabel *label, char *format, ...)
g_free(text);
}
/***
*** Safety requesters before overwriting stuff
***/
static void dont_ask_again_cb(GtkWidget *widget, gpointer data)
{ int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
Closure->confirmDeletion = !state;
UpdatePrefsConfirmDeletion();
}
static void insert_button(GtkDialog *dialog)
{ GtkWidget *check,*align;
align = gtk_alignment_new(0.5, 0.5, 0.0, 0.0);
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), align, FALSE, FALSE, 0);
check = gtk_check_button_new_with_label(_utf("Do not ask again"));
gtk_container_add(GTK_CONTAINER(align), check);
gtk_container_set_border_width(GTK_CONTAINER(align), 10);
g_signal_connect(G_OBJECT(check), "toggled", G_CALLBACK(dont_ask_again_cb), NULL);
gtk_widget_show(align);
gtk_widget_show(check);
ReverseCancelOK(GTK_DIALOG(dialog));
}
int ConfirmImageDeletion(char *file)
{ int answer;
if(!Closure->guiMode) /* Always delete it in command line mode */
return TRUE;
if(!Closure->confirmDeletion) /* I told you so... */
return TRUE;
answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL,
insert_button,
_("Image file already exists and does not match the medium:\n\n"
"%s\n\n"
"The existing image file will be deleted."),
file);
return answer == GTK_RESPONSE_OK;
}
int ConfirmEccDeletion(char *file)
{ int answer;
if(!Closure->guiMode) /* Always delete it in command line mode */
return TRUE;
if(!Closure->confirmDeletion) /* I told you so... */
return TRUE;
answer = ModalDialog(GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL,
insert_button,
_("The error correction file is already present:\n\n"
"%s\n\n"
"Overwrite it?"),
file);
return answer == GTK_RESPONSE_OK;
}