154 |
} |
} |
155 |
|
|
156 |
/* operation de copie */ |
/* operation de copie */ |
157 |
gboolean burn_copy(GHashTable *Ahash, GError **Aerror) |
gboolean burn_copy(Tgrave *Ag, GError **Aerror) |
158 |
{ |
{ |
159 |
GtkWidget *Llecteur = g_hash_table_lookup(Ahash, "srccopycombo"); |
GtkWidget *Llecteur = sc_grave_get_widget(Ag, "srccopycombo"); |
160 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstcopycombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstcopycombo"); |
161 |
GtkEntry *Llecteuriso = GTK_ENTRY(g_hash_table_lookup(Ahash, "srccopybtnvalue")); |
GtkEntry *Llecteuriso = GTK_ENTRY(sc_grave_get_widget(Ag, "srccopybtnvalue")); |
162 |
GtkEntry *Lgraveuriso = GTK_ENTRY(g_hash_table_lookup(Ahash, "dstcopybtnvalue")); |
GtkEntry *Lgraveuriso = GTK_ENTRY(sc_grave_get_widget(Ag, "dstcopybtnvalue")); |
|
gboolean *Labort = (gboolean *)g_hash_table_lookup(Ahash, "gabort"); |
|
163 |
gchar *Lsrc = get_combo_value(Llecteur); |
gchar *Lsrc = get_combo_value(Llecteur); |
164 |
gchar *Ldst = get_combo_value(Lgraveur); |
gchar *Ldst = get_combo_value(Lgraveur); |
165 |
gchar *Liso = NULL; |
gchar *Liso = NULL; |
166 |
gchar *Ltxt; |
gchar *Ltxt; |
167 |
gboolean Lstatus; |
gboolean Lstatus; |
168 |
gboolean Loperationstatus = FALSE; |
gboolean Loperationstatus = FALSE; |
169 |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "copysimul"))); |
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrcdcopy"))); |
|
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrcdcopy"))); |
|
170 |
gint Ldone = 1; |
gint Ldone = 1; |
171 |
gchar *Ltmpdir = NULL; |
gchar *Ltmpdir = NULL; |
172 |
const gchar *Lptriso; |
const gchar *Lptriso; |
179 |
} |
} |
180 |
|
|
181 |
/* referecement variables */ |
/* referecement variables */ |
182 |
g_hash_table_insert(Ahash, "todo", &Ltodo); /* a faire */ |
sc_grave_set_data(Ag, &Ltodo, "todo"); /* a faire */ |
183 |
g_hash_table_insert(Ahash, "done", &Ldone); /* fais */ |
sc_grave_set_data(Ag, &Ldone, "done"); /* fais */ |
184 |
g_hash_table_insert(Ahash, "operationstatus", &Loperationstatus); /* resultat de l'operation */ |
sc_grave_set_data(Ag, &Loperationstatus, "operationstatus"); /* resultat de l'operation */ |
185 |
g_hash_table_insert(Ahash, "tmpdir", &Ltmpdir); /* repertoire temporraire */ |
sc_grave_set_data(Ag, &Ltmpdir, "tmpdir"); /* repertoire temporraire */ |
186 |
g_hash_table_insert(Ahash, "gerror", Aerror); /* pointeur retour des erreurs */ |
sc_grave_set_data(Ag, Aerror, "gerror"); /* pointeur retour des erreurs */ |
187 |
|
|
188 |
if (!strcmp(Lsrc, "iso")) { |
if (!strcmp(Lsrc, "iso")) { |
189 |
/* copie d'une image vers un cd, on utilise cdrecord */ |
/* copie d'une image vers un cd, on utilise cdrecord */ |
201 |
Liso, g_strerror(errno)); |
Liso, g_strerror(errno)); |
202 |
Lstatus = FALSE; |
Lstatus = FALSE; |
203 |
} else { |
} else { |
204 |
g_hash_table_insert(Ahash, "iso", &Liso); /* image iso */ |
sc_grave_set_data(Ag, &Liso, "iso"); /* image iso */ |
205 |
Lstatus = burn_from_image("copy", Ahash, Aerror); |
Lstatus = burn_from_image("copy", Ag, Aerror); |
206 |
g_hash_table_remove(Ahash, "iso"); |
sc_grave_del_data(Ag, "iso"); |
207 |
} |
} |
208 |
g_free(Liso); |
g_free(Liso); |
209 |
} else if (!strcmp(Ldst, "iso")) { |
} else if (!strcmp(Ldst, "iso")) { |
227 |
Ltxt, Liso, g_strerror(errno)); |
Ltxt, Liso, g_strerror(errno)); |
228 |
Lstatus = FALSE; |
Lstatus = FALSE; |
229 |
} else { |
} else { |
230 |
g_hash_table_insert(Ahash, "iso", &Liso); /* image iso */ |
sc_grave_set_data(Ag, &Liso, "iso"); /* image iso */ |
231 |
Lstatus = make_image(Ahash, Aerror); |
Lstatus = make_image(Ag, Aerror); |
232 |
g_hash_table_remove(Ahash, "iso"); |
sc_grave_del_data(Ag, "iso"); |
233 |
g_free(Liso); |
g_free(Liso); |
234 |
} |
} |
235 |
} else { /* copie d'un cd a un autre, on utilise cdrdao */ |
} else { /* copie d'un cd a un autre, on utilise cdrdao */ |
252 |
Ltmpdir = g_realloc(Ltmpdir, strlen(Ltmpdir)+strlen("/tmpiso.bin")+1); |
Ltmpdir = g_realloc(Ltmpdir, strlen(Ltmpdir)+strlen("/tmpiso.bin")+1); |
253 |
strcat(Ltmpdir, "/tmpiso.bin"); |
strcat(Ltmpdir, "/tmpiso.bin"); |
254 |
|
|
255 |
g_hash_table_insert(Ahash, "iso", &Ltmpdir); /* image iso */ |
sc_grave_set_data(Ag, &Ltmpdir, "iso"); /* image iso */ |
256 |
|
|
257 |
/* copie du cd avec monsieur cdrdao */ |
/* copie du cd avec monsieur cdrdao */ |
258 |
Lstatus = copycd(Ahash, Aerror); |
Lstatus = copycd(Ag, Aerror); |
259 |
|
|
260 |
|
|
261 |
/* on copie donc vers l'iso |
/* on copie donc vers l'iso |
262 |
Lstatus = make_image(Ahash, Aerror); |
Lstatus = make_image(Ag, Aerror); |
263 |
if (Lstatus == TRUE && *Labort == FALSE) { |
if (Lstatus == TRUE && *Labort == FALSE) { |
264 |
* et maintenant dans le sens inverse si tout va toujours bien * |
* et maintenant dans le sens inverse si tout va toujours bien * |
265 |
Ldone++; |
Ldone++; |
286 |
} |
} |
287 |
|
|
288 |
if (Lstatus == TRUE && *Labort == FALSE) { |
if (Lstatus == TRUE && *Labort == FALSE) { |
289 |
Lstatus = burn_from_image("copy", Ahash, Aerror); |
Lstatus = burn_from_image("copy", Ag, Aerror); |
290 |
} |
} |
291 |
} */ |
} */ |
292 |
if ((Ltxt=strrchr(Ltmpdir, '/'))) *Ltxt=0; |
if ((Ltxt=strrchr(Ltmpdir, '/'))) *Ltxt=0; |
293 |
|
|
294 |
deltempdir(Ltmpdir); |
deltempdir(Ltmpdir); |
295 |
|
|
296 |
g_hash_table_remove(Ahash, "iso"); |
sc_grave_del_data(Ag, "iso"); |
297 |
} |
} |
298 |
g_free(Ltmpdir); |
g_free(Ltmpdir); |
299 |
} |
} |
304 |
} |
} |
305 |
|
|
306 |
/* operation gravure cd de donnee */ |
/* operation gravure cd de donnee */ |
307 |
gboolean burn_data(GHashTable *Ahash, GError **Aerror) |
gboolean burn_data(Tgrave *Ag, GError **Aerror) |
308 |
{ |
{ |
309 |
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrcddata"))); |
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrcddata"))); |
310 |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "datasimul"))); |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "datasimul"))); |
311 |
GtkEntry *Lgraveuriso = GTK_ENTRY(g_hash_table_lookup(Ahash, "dstdatabtnvalue")); |
GtkEntry *Lgraveuriso = GTK_ENTRY(sc_grave_get_widget(Ag, "dstdatabtnvalue")); |
312 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstdatacombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstdatacombo"); |
313 |
gboolean *Labort = g_hash_table_lookup(Ahash, "gabort"); |
gboolean *Labort = sc_grave_get_data(Ag, "gabort"); |
314 |
gint Ldone = 1; |
gint Ldone = 1; |
315 |
gchar *Ldst = get_combo_value(Lgraveur); |
gchar *Ldst = get_combo_value(Lgraveur); |
316 |
gchar *Ltmpdir = NULL; |
gchar *Ltmpdir = NULL; |
319 |
gboolean Loperationstatus = FALSE; |
gboolean Loperationstatus = FALSE; |
320 |
gboolean Lstatus; |
gboolean Lstatus; |
321 |
|
|
322 |
g_hash_table_insert(Ahash, "todo", &Ltodo); /* a faire */ |
sc_grave_set_data(Ag, &Ltodo, "todo"); /* a faire */ |
323 |
g_hash_table_insert(Ahash, "done", &Ldone); /* fais */ |
sc_grave_set_data(Ag, &Ldone, "done"); /* fais */ |
324 |
g_hash_table_insert(Ahash, "operationstatus", &Loperationstatus); /* resultat de l'operation */ |
sc_grave_set_data(Ag, &Loperationstatus, "operationstatus"); /* resultat de l'operation */ |
325 |
g_hash_table_insert(Ahash, "gerror", Aerror); /* pointeur retour des erreurs */ |
sc_grave_set_data(Ag, Aerror, "gerror"); /* pointeur retour des erreurs */ |
326 |
g_hash_table_insert(Ahash, "tmpdir", &Ltmpdir); /* repertoire temporraire */ |
sc_grave_set_data(Ag, &Ltmpdir, "tmpdir"); /* repertoire temporraire */ |
327 |
|
|
328 |
/* on retourne dans ltmp le nom du repertoire temporraire utilise pour |
/* on retourne dans ltmp le nom du repertoire temporraire utilise pour |
329 |
* l'operation */ |
* l'operation */ |
330 |
Lstatus = preparedata(Ahash, Aerror); |
Lstatus = preparedata(Ag, Aerror); |
331 |
_DEB("ici LDST => %s\n", Ldst); |
_DEB("ici LDST => %s\n", Ldst); |
332 |
if (strcmp(Ldst, "iso")) { |
if (strcmp(Ldst, "iso")) { |
333 |
Liso = g_strdup_printf("%s.iso", Ltmpdir); |
Liso = g_strdup_printf("%s.iso", Ltmpdir); |
336 |
Liso = _FILENAME(gtk_entry_get_text(Lgraveuriso)); |
Liso = _FILENAME(gtk_entry_get_text(Lgraveuriso)); |
337 |
Ltodo = 1; |
Ltodo = 1; |
338 |
} |
} |
339 |
g_hash_table_insert(Ahash, "iso", &Liso); /* image iso */ |
sc_grave_set_data(Ag, &Liso, "iso"); /* image iso */ |
340 |
if (Lstatus && *Labort==FALSE) { |
if (Lstatus && *Labort==FALSE) { |
341 |
Lextrapara = make_image_getextrapara(Ahash, "data"); |
Lextrapara = make_image_getextrapara(Ag, "data"); |
342 |
g_hash_table_insert(Ahash, "extrapara", &Lextrapara); /* parametres supplementaires */ |
sc_grave_set_data(Ag, &Lextrapara, "extrapara"); /* parametres supplementaires */ |
343 |
Lstatus = make_iso(Ahash, Aerror); |
Lstatus = make_iso(Ag, Aerror); |
344 |
g_hash_table_remove(Ahash, "extrapara"); |
sc_grave_del_data(Ag, "extrapara"); |
345 |
g_free(Lextrapara); |
g_free(Lextrapara); |
346 |
if (strcmp(Ldst, "iso") && Lstatus && *Labort==FALSE) { |
if (strcmp(Ldst, "iso") && Lstatus && *Labort==FALSE) { |
347 |
/* ici il faut appeler cdrecord ! */ |
/* ici il faut appeler cdrecord ! */ |
348 |
Lextrapara = burn_data_getextrapara(Ahash); |
Lextrapara = burn_data_getextrapara(Ag); |
349 |
g_hash_table_insert(Ahash, "extrapara", &Lextrapara); /* parametres supplementaires */ |
sc_grave_set_data(Ag, &Lextrapara, "extrapara"); /* parametres supplementaires */ |
350 |
Lstatus = burn_from_image("data", Ahash, Aerror); |
Lstatus = burn_from_image("data", Ag, Aerror); |
351 |
g_hash_table_remove(Ahash, "extrapara"); |
sc_grave_del_data(Ag, "extrapara"); |
352 |
g_free(Lextrapara); |
g_free(Lextrapara); |
353 |
} |
} |
354 |
} |
} |
361 |
} |
} |
362 |
g_free(Liso); |
g_free(Liso); |
363 |
|
|
364 |
g_hash_table_remove(Ahash, "todo"); |
sc_grave_del_data(Ag, "todo"); |
365 |
g_hash_table_remove(Ahash, "done"); |
sc_grave_del_data(Ag, "done"); |
366 |
g_hash_table_remove(Ahash, "tmpdir"); g_free(Ltmpdir); |
sc_grave_del_data(Ag, "tmpdir"); g_free(Ltmpdir); |
367 |
g_hash_table_remove(Ahash, "operationstatus"); |
sc_grave_del_data(Ag, "operationstatus"); |
368 |
g_hash_table_remove(Ahash, "gerror"); |
sc_grave_del_data(Ag, "gerror"); |
369 |
g_hash_table_remove(Ahash, "iso"); |
sc_grave_del_data(Ag, "iso"); |
370 |
|
|
371 |
return Lstatus; |
return Lstatus; |
372 |
} |
} |
373 |
|
|
374 |
/* operation gravure cd audio */ |
/* operation gravure cd audio */ |
375 |
gboolean burn_audio(GHashTable *Ahash, GError **Aerror) |
gboolean burn_audio(Tgrave *Ag, GError **Aerror) |
376 |
{ |
{ |
377 |
GtkTreeModel *Ltreemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(g_hash_table_lookup(Ahash, "LISTEAUDIO"))); |
GtkTreeModel *Ltreemodel = gtk_tree_view_get_model(GTK_TREE_VIEW(sc_grave_get_widget(Ag, "LISTEAUDIO"))); |
378 |
|
|
379 |
gint Ltodo = gtk_tree_model_iter_n_children(Ltreemodel, NULL); |
gint Ltodo = gtk_tree_model_iter_n_children(Ltreemodel, NULL); |
380 |
gint Ldone = 0; |
gint Ldone = 0; |
381 |
gchar *Ltmpdir = NULL; |
gchar *Ltmpdir = NULL; |
382 |
gboolean Lstatus, Loperationstatus = FALSE; |
gboolean Lstatus, Loperationstatus = FALSE; |
383 |
|
|
384 |
g_hash_table_insert(Ahash, "todo", &Ltodo); /* a faire */ |
sc_grave_set_data(Ag, &Ltodo, "todo"); /* a faire */ |
385 |
g_hash_table_insert(Ahash, "done", &Ldone); /* fais */ |
sc_grave_set_data(Ag, &Ldone, "done"); /* fais */ |
386 |
g_hash_table_insert(Ahash, "operationstatus", &Loperationstatus); /* resultat de l'operation */ |
sc_grave_set_data(Ag, &Loperationstatus, "operationstatus"); /* resultat de l'operation */ |
387 |
g_hash_table_insert(Ahash, "gerror", Aerror); /* pointeur retour des erreurs */ |
sc_grave_set_data(Ag, Aerror, "gerror"); /* pointeur retour des erreurs */ |
388 |
g_hash_table_insert(Ahash, "tmpdir", &Ltmpdir); /* repertoire temporraire */ |
sc_grave_set_data(Ag, &Ltmpdir, "tmpdir"); /* repertoire temporraire */ |
389 |
|
|
390 |
Lstatus = preparetrack(Ahash, Aerror); |
Lstatus = preparetrack(Ag, Aerror); |
391 |
|
|
392 |
if (Lstatus == TRUE) { |
if (Lstatus == TRUE) { |
393 |
Ldone = 1; |
Ldone = 1; |
394 |
|
|
395 |
Lstatus = gravepiste(Ahash, Aerror); |
Lstatus = gravepiste(Ag, Aerror); |
396 |
} |
} |
397 |
|
|
398 |
if (Ltmpdir) { |
if (Ltmpdir) { |
476 |
} |
} |
477 |
|
|
478 |
/* operation gravure dcd de donnee */ |
/* operation gravure dcd de donnee */ |
479 |
gboolean burn_dvddata(GHashTable *Ahash, GError **Aerror) |
gboolean burn_dvddata(Tgrave *Ag, GError **Aerror) |
480 |
{ |
{ |
481 |
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrdvddata"))); |
gint Ltodo = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrdvddata"))); |
482 |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "dvddatasimul"))); |
gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "dvddatasimul"))); |
483 |
GtkEntry *Lgraveuriso = GTK_ENTRY(g_hash_table_lookup(Ahash, "dstdvddatabtnvalue")); |
GtkEntry *Lgraveuriso = GTK_ENTRY(sc_grave_get_widget(Ag, "dstdvddatabtnvalue")); |
484 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstdvddatacombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstdvddatacombo"); |
485 |
gint Ldone = 1; |
gint Ldone = 1; |
486 |
gchar *Ldst = get_combo_value(Lgraveur); |
gchar *Ldst = get_combo_value(Lgraveur); |
487 |
gchar *Ltmpdir = NULL; |
gchar *Ltmpdir = NULL; |
490 |
gboolean Loperationstatus = FALSE; |
gboolean Loperationstatus = FALSE; |
491 |
gboolean Lstatus; |
gboolean Lstatus; |
492 |
|
|
493 |
g_hash_table_insert(Ahash, "todo", &Ltodo); /* a faire */ |
sc_grave_set_data(Ag, &Ltodo, "todo"); /* a faire */ |
494 |
g_hash_table_insert(Ahash, "done", &Ldone); /* fais */ |
sc_grave_set_data(Ag, &Ldone, "done"); /* fais */ |
495 |
g_hash_table_insert(Ahash, "operationstatus", &Loperationstatus); /* resultat de l'operation */ |
sc_grave_set_data(Ag, &Loperationstatus, "operationstatus"); /* resultat de l'operation */ |
496 |
g_hash_table_insert(Ahash, "gerror", Aerror); /* pointeur retour des erreurs */ |
sc_grave_set_data(Ag, Aerror, "gerror"); /* pointeur retour des erreurs */ |
497 |
g_hash_table_insert(Ahash, "tmpdir", &Ltmpdir); /* repertoire temporraire */ |
sc_grave_set_data(Ag, &Ltmpdir, "tmpdir"); /* repertoire temporraire */ |
498 |
|
|
499 |
/* on retourne dans ltmp le nom du repertoire temporraire utilise pour |
/* on retourne dans ltmp le nom du repertoire temporraire utilise pour |
500 |
* l'operation */ |
* l'operation */ |
501 |
Lstatus = preparedata(Ahash, Aerror); |
Lstatus = preparedata(Ag, Aerror); |
502 |
_DEB("ici LDST => %s\n", Ldst); |
_DEB("ici LDST => %s\n", Ldst); |
503 |
|
|
504 |
Lextrapara = make_image_getextrapara(Ahash, "dvddata"); |
Lextrapara = make_image_getextrapara(Ag, "dvddata"); |
505 |
g_hash_table_insert(Ahash, "extrapara", &Lextrapara); /* parametres supplementaires */ |
sc_grave_set_data(Ag, &Lextrapara, "extradata"); /* parametres supplementaires */ |
506 |
if (strcmp(Ldst, "iso")) { |
if (strcmp(Ldst, "iso")) { |
507 |
if (Lsimul) Ltodo++; /* 1 pour la simulation */ |
if (Lsimul) Ltodo++; /* 1 pour la simulation */ |
508 |
|
|
509 |
Lstatus = burn_dvd(Ahash, Aerror); |
Lstatus = burn_dvd(Ag, Aerror); |
510 |
|
|
511 |
} else { |
} else { |
512 |
Liso = _FILENAME(gtk_entry_get_text(Lgraveuriso)); |
Liso = _FILENAME(gtk_entry_get_text(Lgraveuriso)); |
513 |
Ltodo = 1; |
Ltodo = 1; |
514 |
g_hash_table_insert(Ahash, "iso", &Liso); /* image iso */ |
sc_grave_set_data(Ag, &Liso, "iso"); /* image iso */ |
515 |
Lstatus = make_iso(Ahash, Aerror); |
Lstatus = make_iso(Ag, Aerror); |
516 |
g_hash_table_remove(Ahash, "iso"); |
sc_grave_del_data(Ag, "iso"); |
517 |
g_free(Liso); |
g_free(Liso); |
518 |
} |
} |
519 |
g_hash_table_remove(Ahash, "extrapara"); |
sc_grave_del_data(Ag, "extrapara"); |
520 |
g_free(Lextrapara); |
g_free(Lextrapara); |
521 |
|
|
522 |
deltempdir(Ltmpdir); |
deltempdir(Ltmpdir); |
523 |
|
|
524 |
g_hash_table_remove(Ahash, "todo"); |
sc_grave_del_data(Ag, "todo"); |
525 |
g_hash_table_remove(Ahash, "done"); |
sc_grave_del_data(Ag, "done"); |
526 |
g_hash_table_remove(Ahash, "tmpdir"); g_free(Ltmpdir); |
sc_grave_del_data(Ag, "tmpdir"); g_free(Ltmpdir); |
527 |
g_hash_table_remove(Ahash, "operationstatus"); |
sc_grave_del_data(Ag, "operationstatus"); |
528 |
g_hash_table_remove(Ahash, "gerror"); |
sc_grave_del_data(Ag, "gerror"); |
529 |
|
|
530 |
return Lstatus; |
return Lstatus; |
531 |
} |
} |