137 |
gboolean scan_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
gboolean scan_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
138 |
{ |
{ |
139 |
GIOStatus Lstatus; |
GIOStatus Lstatus; |
140 |
GHashTable *Lhash = (GHashTable *)Adata; |
Tgrave *Lg = (Tgrave *)Adata; |
141 |
gint *Lcont = (gint *)g_hash_table_lookup(Lhash, "cont"); |
gint *Lcont = (gint *)sc_grave_get_data(Lg, "cont"); |
142 |
Tsearchdrive *Ldrivedesc = (Tsearchdrive *)g_hash_table_lookup(Lhash, "drivedesc"); |
Tsearchdrive *Ldrivedesc = (Tsearchdrive *)sc_grave_get_data(Lg, "drivedesc"); |
143 |
gchar *Lbuffer = NULL; |
gchar *Lbuffer = NULL; |
144 |
gchar *Lmodel, *Lmarque, *Ldev, *Lquoi; |
gchar *Lmodel, *Lmarque, *Ldev, *Lquoi; |
145 |
|
|
172 |
} |
} |
173 |
|
|
174 |
/* scan des lecteurs */ |
/* scan des lecteurs */ |
175 |
gboolean scan_for_drives(GHashTable *Ahash, GError **Aerror) |
gboolean scan_for_drives(Tgrave *Ag, GError **Aerror) |
176 |
{ |
{ |
177 |
gchar **Lcmd; |
gchar **Lcmd; |
178 |
gchar *Lcommandline; |
gchar *Lcommandline; |
182 |
gboolean Lstatus; |
gboolean Lstatus; |
183 |
guint Lcomevent; |
guint Lcomevent; |
184 |
Tsearchdrive *Lcurentry; |
Tsearchdrive *Lcurentry; |
185 |
gint *Lcont = (gint *)g_hash_table_lookup(Ahash, "cont"); |
gint *Lcont = (gint *)sc_grave_get_data(Ag, "cont"); |
186 |
gboolean *Labort = (gboolean *)g_hash_table_lookup(Ahash, "gabort"); |
gboolean *Labort = (gboolean *)sc_grave_get_data(Ag, "gabort"); |
187 |
|
|
188 |
free_drives(FALSE); |
free_drives(FALSE); |
189 |
|
|
195 |
if (Lstatus == FALSE) return FALSE; |
if (Lstatus == FALSE) return FALSE; |
196 |
|
|
197 |
*Lcont = 3; |
*Lcont = 3; |
198 |
g_hash_table_insert(Ahash, "drivedesc", Lcurentry); |
sc_grave_set_data(Ag, Lcurentry, "drivedesc"); |
199 |
|
|
200 |
Lbolstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, /* env argument */ |
Lbolstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, /* env argument */ |
201 |
(GSpawnFlags ) (0), |
(GSpawnFlags ) (0), |
212 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
213 |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
214 |
scan_callback, |
scan_callback, |
215 |
Ahash); |
Ag); |
216 |
while (*Lcont==3) { |
while (*Lcont==3) { |
217 |
gtk_main_iteration(); |
gtk_main_iteration(); |
218 |
} |
} |
222 |
g_io_channel_shutdown(Lcom, FALSE, NULL); |
g_io_channel_shutdown(Lcom, FALSE, NULL); |
223 |
g_io_channel_unref(Lcom); |
g_io_channel_unref(Lcom); |
224 |
g_spawn_close_pid(Lpid); |
g_spawn_close_pid(Lpid); |
225 |
g_hash_table_remove(Ahash, "drivedesc"); |
sc_grave_del_data(Ag, "drivedesc"); |
226 |
} |
} |
227 |
|
|
228 |
return TRUE; |
return TRUE; |
287 |
} |
} |
288 |
|
|
289 |
/* recherche les parametres supllementaires a passer a cdrecord */ |
/* recherche les parametres supllementaires a passer a cdrecord */ |
290 |
gchar *burn_data_getextrapara(GHashTable *Ahash) |
gchar *burn_data_getextrapara(Tgrave *Ag) |
291 |
{ |
{ |
292 |
gchar *Lformat = get_combo_value(g_hash_table_lookup(Ahash, "dataformat")); |
gchar *Lformat = get_combo_value(sc_grave_get_widget(Ag, "dataformat")); |
293 |
gchar *Lmodburn = get_combo_value(g_hash_table_lookup(Ahash, "datamodburn")); |
gchar *Lmodburn = get_combo_value(sc_grave_get_widget(Ag, "datamodburn")); |
294 |
gchar *Lreturn; |
gchar *Lreturn; |
295 |
|
|
296 |
Lreturn = g_strdup_printf("-%s -%s", Lformat, Lmodburn); |
Lreturn = g_strdup_printf("-%s -%s", Lformat, Lmodburn); |
300 |
return Lreturn; |
return Lreturn; |
301 |
} |
} |
302 |
|
|
303 |
static gchar *get_blank_type(GHashTable *Ahash) |
static gchar *get_blank_type(Tgrave *Ag) |
304 |
{ |
{ |
305 |
gboolean *Luseautoblank = (gboolean *) g_hash_table_lookup(Ahash, "useautoblank"); |
gboolean *Luseautoblank = (gboolean *) sc_grave_get_widget(Ag, "useautoblank"); |
306 |
|
|
307 |
if (!*Luseautoblank) return g_strdup(""); |
if (!*Luseautoblank) return g_strdup(""); |
308 |
|
|
310 |
} |
} |
311 |
|
|
312 |
/* copie d'une image iso */ |
/* copie d'une image iso */ |
313 |
gboolean burn_from_image(gchar *Aop, GHashTable *Ahash, GError **Aerror) { |
gboolean burn_from_image(gchar *Aop, Tgrave *Ag, GError **Aerror) { |
314 |
gchar **Lcmd; |
gchar **Lcmd; |
315 |
gchar *Lcommandline, *Lbufgrav, *Ltxt; |
gchar *Lcommandline, *Lbufgrav, *Ltxt; |
316 |
GIOChannel *Lcom, *Lcomerr; |
GIOChannel *Lcom, *Lcomerr; |
317 |
guint Lcomevent, Lcomerrevent; |
guint Lcomevent, Lcomerrevent; |
318 |
gint *Lcont = (gint *) g_hash_table_lookup(Ahash, "cont"); |
gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont"); |
319 |
gboolean *Labort = (gboolean *) g_hash_table_lookup(Ahash, "gabort"); |
gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort"); |
320 |
GtkWindow *Lwindow = GTK_WINDOW(g_hash_table_lookup(Ahash, "window_burn")); |
GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_widget(Ag, "window_burn")); |
321 |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%ssimul", Aop))); |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%ssimul", Aop))); |
322 |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_hash_table_lookupv(Ahash, "nbrcd%s", Aop))); |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widgetv(Ag, "nbrcd%s", Aop))); |
323 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Ahash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus"); |
324 |
gboolean Lwanteject = conf_get_boolean("eject"); |
gboolean Lwanteject = conf_get_boolean("eject"); |
325 |
gchar **Liso = (gchar **)g_hash_table_lookup(Ahash, "iso"); /* image iso */ |
gchar **Liso = (gchar **)sc_grave_get_data(Ag, "iso"); /* image iso */ |
326 |
gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid"); |
gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid"); |
327 |
gboolean Ldosimul; |
gboolean Ldosimul; |
328 |
GtkWidget *Lvitesse = sc_hash_table_lookupv(Ahash, "dst%sspeed", Aop); |
GtkWidget *Lvitesse = sc_grave_get_widgetv(Ag, "dst%sspeed", Aop); |
329 |
GtkWidget *Lgraveur = sc_hash_table_lookupv(Ahash, "dst%scombo", Aop); |
GtkWidget *Lgraveur = sc_grave_get_widgetv(Ag, "dst%scombo", Aop); |
330 |
GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Ahash, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle")); |
331 |
GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%snotfix", Aop)); |
GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%snotfix", Aop)); |
332 |
gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE; |
gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE; |
333 |
gchar **Lextrapara = g_hash_table_lookup(Ahash, "extrapara"); |
gchar **Lextrapara = sc_grave_get_data(Ag, "extrapara"); |
334 |
gboolean Lmulti = FALSE; |
gboolean Lmulti = FALSE; |
335 |
gint *Ldone = (gint *)g_hash_table_lookup(Ahash, "done"); /* fais */ |
gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */ |
336 |
gint Lcurcd; |
gint Lcurcd; |
337 |
gint Lnbrpass=1; |
gint Lnbrpass=1; |
338 |
gchar *Lbufvitesse, *Lblank; |
gchar *Lbufvitesse, *Lblank; |
342 |
gboolean Leject = FALSE; |
gboolean Leject = FALSE; |
343 |
GtkToggleButton *Ltbtn = NULL; |
GtkToggleButton *Ltbtn = NULL; |
344 |
|
|
345 |
Lblank = get_blank_type(Ahash); |
Lblank = get_blank_type(Ag); |
346 |
|
|
347 |
if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%smulti", Aop)))) |
if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%smulti", Aop)))) |
348 |
Lmulti =gtk_toggle_button_get_active(Ltbtn); |
Lmulti =gtk_toggle_button_get_active(Ltbtn); |
349 |
|
|
350 |
_DEB("on veut graver %d cd simul(%d)", Lnbrgravure, Lsimul ? 1 : 0); |
_DEB("on veut graver %d cd simul(%d)", Lnbrgravure, Lsimul ? 1 : 0); |
420 |
} |
} |
421 |
|
|
422 |
*Lcont = 1; |
*Lcont = 1; |
423 |
g_hash_table_insert(Ahash, "lasttrack", &Llasttrack); |
sc_grave_set_data(Ag, &Llasttrack, "lasttrack"); |
424 |
Lcom = g_io_channel_unix_new( g_out ); |
Lcom = g_io_channel_unix_new( g_out ); |
425 |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
426 |
g_io_channel_set_buffered(Lcom, FALSE); |
g_io_channel_set_buffered(Lcom, FALSE); |
427 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
428 |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
429 |
cdrecord_grave_callback, Ahash); |
cdrecord_grave_callback, Ag); |
430 |
|
|
431 |
Lcomerr = g_io_channel_unix_new( g_err ); |
Lcomerr = g_io_channel_unix_new( g_err ); |
432 |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
433 |
g_io_channel_set_buffered(Lcomerr, FALSE); |
g_io_channel_set_buffered(Lcomerr, FALSE); |
434 |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
435 |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
436 |
cdrecord_grave_callback, Ahash); |
cdrecord_grave_callback, Ag); |
437 |
|
|
438 |
while (*Lcont > 0 && *Labort == FALSE) { |
while (*Lcont > 0 && *Labort == FALSE) { |
439 |
gtk_main_iteration(); |
gtk_main_iteration(); |
450 |
g_spawn_close_pid(*Lpid); |
g_spawn_close_pid(*Lpid); |
451 |
*Lpid = 0; |
*Lpid = 0; |
452 |
|
|
453 |
g_hash_table_remove(Ahash, "lasttrack"); |
sc_grave_del_data(Ag, "lasttrack"); |
454 |
|
|
455 |
if (*Aerror) { |
if (*Aerror) { |
456 |
_DEB("IL Y A UNE ERREUR !!"); |
_DEB("IL Y A UNE ERREUR !!"); |
513 |
gboolean cdrecord_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
gboolean cdrecord_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
514 |
{ |
{ |
515 |
GIOStatus Lstatus; |
GIOStatus Lstatus; |
516 |
GHashTable *Lhash = (GHashTable *)Adata; |
Tgrave *Lg = (Tgrave *)Adata; |
517 |
gchar Lbuffer[_BUF_SIZE]; |
gchar Lbuffer[_BUF_SIZE]; |
518 |
gint *Lcont = (gint *) g_hash_table_lookup(Lhash, "cont"); /* on traite encore des donnees ? */ |
gint *Lcont = (gint *) sc_grave_get_data(Lg, "cont"); /* on traite encore des donnees ? */ |
519 |
GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */ |
GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */ |
520 |
gint *Ltodo = (gint *) g_hash_table_lookup(Lhash, "todo"); /* nombre de piste a traiter */ |
gint *Ltodo = (gint *) sc_grave_get_data(Lg, "todo"); /* nombre de piste a traiter */ |
521 |
gint *Ldone = (gint *) g_hash_table_lookup(Lhash, "done"); /* nombre de piste deja traite */ |
gint *Ldone = (gint *) sc_grave_get_data(Lg, "done"); /* nombre de piste deja traite */ |
522 |
gchar *Llasttrack = (gchar *) g_hash_table_lookup(Lhash, "lasttrack"); /* precedente piste traite */ |
gchar *Llasttrack = (gchar *) sc_grave_get_data(Lg, "lasttrack"); /* precedente piste traite */ |
523 |
gchar *f, *e; |
gchar *f, *e; |
524 |
gchar *Ltxt; |
gchar *Ltxt; |
525 |
gchar Lsbuf[200], Lsbuf2[200]; |
gchar Lsbuf[200]; |
526 |
gdouble Ltotaldone = 1, Ltotaltodo, Lfifo, Lpct, Lgbuf = 0, Ltava; |
gdouble Ltotaldone = 1, Ltotaltodo, Lfifo, Lpct, Lgbuf = 0, Ltava; |
527 |
gsize Llu = 0; |
gsize Llu = 0; |
528 |
gchar *Ltracknum; |
gchar *Ltracknum; |
529 |
|
|
530 |
GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Lhash, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Lg, "gravetitle")); |
531 |
GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_total")); |
GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_step")); |
532 |
GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_step")); |
GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_fifo")); |
533 |
GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_fifo")); |
GtkProgressBar *LprogressbarBuffer = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_buffer")); |
|
GtkProgressBar *LprogressbarBuffer = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_buffer")); |
|
534 |
|
|
535 |
/* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */ |
/* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */ |
536 |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
635 |
/* blanking disk */ |
/* blanking disk */ |
636 |
gtk_label_set_text(Ltitle, _("Blanking...")); |
gtk_label_set_text(Ltitle, _("Blanking...")); |
637 |
} else if ((f=strstr(Lbuffer, CDRECORD_STATUS))) { |
} else if ((f=strstr(Lbuffer, CDRECORD_STATUS))) { |
638 |
gboolean *Lstatus = (gboolean *) g_hash_table_lookup(Lhash, "operationstatus"); |
gboolean *Lstatus = (gboolean *) sc_grave_get_data(Lg, "operationstatus"); |
639 |
/* bug 11803 |
/* bug 11803 |
640 |
* cause des problems apparements, a tester .. |
* cause des problems apparements, a tester .. |
641 |
f=f+strlen(CDRECORD_STATUS); |
f=f+strlen(CDRECORD_STATUS); |
692 |
return TRUE; |
return TRUE; |
693 |
} |
} |
694 |
|
|
695 |
gboolean gravepiste(GHashTable *Ahash, GError **Aerror) { |
gboolean gravepiste(Tgrave *Ag, GError **Aerror) { |
696 |
GtkWindow *Lwindow = GTK_WINDOW(g_hash_table_lookup(Ahash, "window_burn")); |
GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_widget(Ag, "window_burn")); |
697 |
GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Ahash, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle")); |
698 |
GtkWidget *Lvitesse = g_hash_table_lookup(Ahash, "dstaudiospeed"); |
GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstaudiospeed"); |
699 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstaudiocombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstaudiocombo"); |
700 |
gchar **Lrepertoire = (gchar **)g_hash_table_lookup(Ahash, "tmpdir"); |
gchar **Lrepertoire = (gchar **)sc_grave_get_data(Ag, "tmpdir"); |
701 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Ahash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus"); |
702 |
gboolean *Labort = (gboolean *) g_hash_table_lookup(Ahash, "gabort"); |
gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort"); |
703 |
gchar *Lbuftitle = NULL; |
gchar *Lbuftitle = NULL; |
704 |
gchar **Lcmd; |
gchar **Lcmd; |
705 |
gchar *Lcommandline; |
gchar *Lcommandline; |
706 |
GIOChannel *Lcom, *Lcomerr; |
GIOChannel *Lcom, *Lcomerr; |
707 |
guint Lcomevent, Lcomerrevent; |
guint Lcomevent, Lcomerrevent; |
708 |
gint *Lcont = (gint *) g_hash_table_lookup(Ahash, "cont"); /* on traite encore des donnees ? */ |
gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont"); /* on traite encore des donnees ? */ |
709 |
/* nombre d'element total */ |
/* nombre d'element total */ |
710 |
gint *Ldone = (gint *)g_hash_table_lookup(Ahash, "done"); /* fais */ |
gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */ |
711 |
gint *Ltodo = (gint *) g_hash_table_lookup(Ahash, "todo"); |
gint *Ltodo = (gint *) sc_grave_get_data(Ag, "todo"); |
712 |
gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid"); |
gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid"); |
713 |
|
|
714 |
gint g_out, g_err, Lnbrarg; |
gint g_out, g_err, Lnbrarg; |
715 |
gboolean Lstatus = FALSE; |
gboolean Lstatus = FALSE; |
716 |
gchar *Lbufvitesse, *Lbufgrav; |
gchar *Lbufvitesse, *Lbufgrav; |
717 |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audiosimul"))); |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiosimul"))); |
718 |
gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audionotfix"))); |
gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audionotfix"))); |
719 |
gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audiodao"))); |
gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiodao"))); |
720 |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrcdaudio"))); |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrcdaudio"))); |
721 |
gboolean Lwanteject = conf_get_boolean("eject"); |
gboolean Lwanteject = conf_get_boolean("eject"); |
722 |
gint Lcurcd; |
gint Lcurcd; |
723 |
gboolean Ldosimul; |
gboolean Ldosimul; |
729 |
Lfileslist = make_audio_fileslist(*Ltodo); |
Lfileslist = make_audio_fileslist(*Ltodo); |
730 |
Lbufvitesse = get_combo_value(Lvitesse); |
Lbufvitesse = get_combo_value(Lvitesse); |
731 |
Lbufgrav = get_combo_value(Lgraveur); |
Lbufgrav = get_combo_value(Lgraveur); |
732 |
Lblank = get_blank_type(Ahash); |
Lblank = get_blank_type(Ag); |
733 |
|
|
734 |
*Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0)); |
*Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0)); |
735 |
|
|
794 |
} |
} |
795 |
|
|
796 |
*Lcont = 1; |
*Lcont = 1; |
797 |
g_hash_table_insert(Ahash, "lasttrack", &Llasttrack); |
sc_grave_set_data(Ag, &Llasttrack, "lasttrack"); |
798 |
Lcom = g_io_channel_unix_new( g_out ); |
Lcom = g_io_channel_unix_new( g_out ); |
799 |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
800 |
g_io_channel_set_buffered(Lcom, FALSE); |
g_io_channel_set_buffered(Lcom, FALSE); |
801 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
802 |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
803 |
cdrecord_grave_callback, Ahash); |
cdrecord_grave_callback, Ag); |
804 |
|
|
805 |
Lcomerr = g_io_channel_unix_new( g_err ); |
Lcomerr = g_io_channel_unix_new( g_err ); |
806 |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
807 |
g_io_channel_set_buffered(Lcomerr, FALSE); |
g_io_channel_set_buffered(Lcomerr, FALSE); |
808 |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
809 |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
810 |
cdrecord_grave_callback, Ahash); |
cdrecord_grave_callback, Ag); |
811 |
|
|
812 |
while (*Lcont>0 && *Labort == FALSE) { |
while (*Lcont>0 && *Labort == FALSE) { |
813 |
gtk_main_iteration(); |
gtk_main_iteration(); |
824 |
g_spawn_close_pid(*Lpid); |
g_spawn_close_pid(*Lpid); |
825 |
*Lpid = 0; |
*Lpid = 0; |
826 |
|
|
827 |
g_hash_table_remove(Ahash, "lasttrack"); |
sc_grave_del_data(Ag, "lasttrack"); |
828 |
|
|
829 |
if (*Aerror) { |
if (*Aerror) { |
830 |
Lstatus = FALSE; |
Lstatus = FALSE; |
871 |
gboolean common_blankorfix_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
gboolean common_blankorfix_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
872 |
{ |
{ |
873 |
GIOStatus Lstatus; |
GIOStatus Lstatus; |
874 |
GHashTable *Lhash = (GHashTable *)Adata; |
Tgrave *Lg = (Tgrave *)Adata; |
875 |
gint *Lcont = (gint *) g_hash_table_lookup(Lhash, "cont"); /* on traite encore des donnees ? */ |
gint *Lcont = (gint *) sc_grave_get_data(Lg, "cont"); /* on traite encore des donnees ? */ |
876 |
gchar *Lbuffer = NULL; |
gchar *Lbuffer = NULL; |
877 |
/* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */ |
/* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */ |
878 |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
887 |
|
|
888 |
if (!strcmp(Lbuffer, CDRECORD_BLANKING_TIME)) { |
if (!strcmp(Lbuffer, CDRECORD_BLANKING_TIME)) { |
889 |
/* fin de l'operation: effacer un cdrw */ |
/* fin de l'operation: effacer un cdrw */ |
890 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Lhash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Lg, "operationstatus"); |
891 |
*Loperationstatus = TRUE; |
*Loperationstatus = TRUE; |
892 |
} else if (!strcmp(Lbuffer, CDRECORD_FIXATING_TIME)) { |
} else if (!strcmp(Lbuffer, CDRECORD_FIXATING_TIME)) { |
893 |
/* fin de l'operation: cloturer un cdr */ |
/* fin de l'operation: cloturer un cdr */ |
894 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Lhash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Lg, "operationstatus"); |
895 |
*Loperationstatus = TRUE; |
*Loperationstatus = TRUE; |
896 |
} else if (strstr(Lbuffer, CDRECORD_CANNOT_BLANK)) { |
} else if (strstr(Lbuffer, CDRECORD_CANNOT_BLANK)) { |
897 |
GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */ |
GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */ |
898 |
if (!*Lerreur) |
if (!*Lerreur) |
899 |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_CANNOT_BLANK, _("Cannot blank disk, aborting.")); |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_CANNOT_BLANK, _("Cannot blank disk, aborting.")); |
900 |
} else if (strstr(Lbuffer, CDRECORD_INCOMPATIBLE_MEDIUM)) { |
} else if (strstr(Lbuffer, CDRECORD_INCOMPATIBLE_MEDIUM)) { |
901 |
/* hum, erreur */ |
/* hum, erreur */ |
902 |
GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */ |
GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */ |
903 |
if (!*Lerreur) |
if (!*Lerreur) |
904 |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_INCOMPATIBLE_MEDIUM, _("Cannot blank disk, this is not a CD-RW !")); |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_INCOMPATIBLE_MEDIUM, _("Cannot blank disk, this is not a CD-RW !")); |
905 |
} else if (strstr(Lbuffer, CDRECORD_ERRORDISK)) { |
} else if (strstr(Lbuffer, CDRECORD_ERRORDISK)) { |
906 |
/* erreur pas de cd */ |
/* erreur pas de cd */ |
907 |
GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */ |
GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */ |
908 |
if (!*Lerreur) |
if (!*Lerreur) |
909 |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_NO_CD, _("Error, a CD-R/CD-RW is required in the cd recorder !")); |
g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_NO_CD, _("Error, a CD-R/CD-RW is required in the cd recorder !")); |
910 |
} |
} |
914 |
} |
} |
915 |
|
|
916 |
/* cloturer un cdr*/ |
/* cloturer un cdr*/ |
917 |
gboolean perform_fix_cd(GHashTable *Ahash, GError **Aerror) |
gboolean perform_fix_cd(Tgrave *Ag, GError **Aerror) |
918 |
{ |
{ |
919 |
gchar **Lcmd; |
gchar **Lcmd; |
920 |
gchar *Lcommandline, *Lbufgrav; |
gchar *Lcommandline, *Lbufgrav; |
922 |
GIOChannel *Lcom, *Lcomerr; |
GIOChannel *Lcom, *Lcomerr; |
923 |
guint Lcomevent, Lcomerrevent; |
guint Lcomevent, Lcomerrevent; |
924 |
gint g_out, g_err, Lnbrarg; |
gint g_out, g_err, Lnbrarg; |
925 |
gint *Lcont = g_hash_table_lookup(Ahash, "cont"); |
gint *Lcont = sc_grave_get_data(Ag, "cont"); |
926 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstothercombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstothercombo"); |
927 |
|
|
928 |
/* pid de cdrecord */ |
/* pid de cdrecord */ |
929 |
gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid"); |
gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid"); |
930 |
|
|
931 |
Lbufgrav = get_combo_value(Lgraveur); |
Lbufgrav = get_combo_value(Lgraveur); |
932 |
Lcommandline = g_strdup_printf("%s dev=%s -v -fix", conf_get_string("cdrecord"), Lbufgrav); |
Lcommandline = g_strdup_printf("%s dev=%s -v -fix", conf_get_string("cdrecord"), Lbufgrav); |
953 |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
954 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
955 |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
956 |
common_blankorfix_callback, Ahash); |
common_blankorfix_callback, Ag); |
957 |
|
|
958 |
Lcomerr = g_io_channel_unix_new( g_err ); |
Lcomerr = g_io_channel_unix_new( g_err ); |
959 |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
960 |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
961 |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
962 |
common_blankorfix_callback, Ahash); |
common_blankorfix_callback, Ag); |
963 |
_DEB("cont vaut => %d\n", *Lcont); |
_DEB("cont vaut => %d\n", *Lcont); |
964 |
while (*Lcont > 1) { |
while (*Lcont > 1) { |
965 |
gtk_main_iteration(); |
gtk_main_iteration(); |
995 |
} |
} |
996 |
|
|
997 |
/* effacer un cdrw */ |
/* effacer un cdrw */ |
998 |
gboolean perform_erase_cdrw(GHashTable *Ahash, GError **Aerror) |
gboolean perform_erase_cdrw(Tgrave *Ag, GError **Aerror) |
999 |
{ |
{ |
1000 |
gchar **Lcmd; |
gchar **Lcmd; |
1001 |
gchar *Lcommandline, *Lbufgrav; |
gchar *Lcommandline, *Lbufgrav; |
1003 |
GIOChannel *Lcom, *Lcomerr; |
GIOChannel *Lcom, *Lcomerr; |
1004 |
guint Lcomevent, Lcomerrevent; |
guint Lcomevent, Lcomerrevent; |
1005 |
gint g_out, g_err, Lnbrarg; |
gint g_out, g_err, Lnbrarg; |
1006 |
gint *Lcont = g_hash_table_lookup(Ahash, "cont"); |
gint *Lcont = sc_grave_get_data(Ag, "cont"); |
1007 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstothercombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstothercombo"); |
1008 |
gboolean *Lfastblank = g_hash_table_lookup(Ahash, "usefastblank"); |
gboolean *Lfastblank = sc_grave_get_data(Ag, "usefastblank"); |
1009 |
|
|
1010 |
/* pid de cdrecord */ |
/* pid de cdrecord */ |
1011 |
gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid"); |
gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid"); |
1012 |
|
|
1013 |
Lbufgrav = get_combo_value(Lgraveur); |
Lbufgrav = get_combo_value(Lgraveur); |
1014 |
Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 blank=%s", |
Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 blank=%s", |
1037 |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
1038 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
1039 |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
1040 |
common_blankorfix_callback, Ahash); |
common_blankorfix_callback, Ag); |
1041 |
|
|
1042 |
Lcomerr = g_io_channel_unix_new( g_err ); |
Lcomerr = g_io_channel_unix_new( g_err ); |
1043 |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
1044 |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
1045 |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI), |
1046 |
common_blankorfix_callback, Ahash); |
common_blankorfix_callback, Ag); |
1047 |
_DEB("cont vaut => %d\n", *Lcont); |
_DEB("cont vaut => %d\n", *Lcont); |
1048 |
while (*Lcont > 1) { |
while (*Lcont > 1) { |
1049 |
gtk_main_iteration(); |
gtk_main_iteration(); |