34 |
/* communication avec growisofs */ |
/* communication avec growisofs */ |
35 |
|
|
36 |
/* mise a jour du titre depuis le template prepare avec prepare_title */ |
/* mise a jour du titre depuis le template prepare avec prepare_title */ |
37 |
void set_title(GHashTable *Ahash, gchar *Avitesse) { |
void set_title(Tgrave *Ag, gchar *Avitesse) { |
38 |
GtkLabel *Llabel = g_hash_table_lookup(Ahash, "gravetitle"); |
GtkLabel *Llabel = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle")); |
39 |
gchar *Ltitleshow = g_strdup_printf(_("Writing DVD in progress at %sx..."), Avitesse); |
gchar *Ltitleshow = g_strdup_printf(_("Writing DVD in progress at %sx..."), Avitesse); |
40 |
|
|
41 |
gtk_label_set_text(Llabel, Ltitleshow); |
gtk_label_set_text(Llabel, Ltitleshow); |
63 |
gboolean growisofs_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
gboolean growisofs_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata) |
64 |
{ |
{ |
65 |
GIOStatus Lstatus; |
GIOStatus Lstatus; |
66 |
GHashTable *Lhash = (GHashTable *)Adata; |
Tgrave *Lg = (Tgrave *)Adata; |
67 |
gchar *Lbuffer; |
gchar *Lbuffer; |
68 |
gchar *s, *t; |
gchar *s, *t; |
69 |
GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_total")); |
GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_total")); |
70 |
GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_step")); |
GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_step")); |
71 |
GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Lhash, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Lg, "gravetitle")); |
72 |
GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */ |
GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */ |
73 |
gdouble Lpct, Ltava; |
gdouble Lpct, Ltava; |
74 |
gchar Lsbuf[100], Lsbuf2[100]; |
gchar Lsbuf[100], Lsbuf2[100]; |
75 |
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 ? */ |
76 |
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 */ |
77 |
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 */ |
78 |
|
|
79 |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
if (Acond == G_IO_HUP || Acond == G_IO_ERR) { |
80 |
*Lcont = 0; |
*Lcont = 0; |
92 |
s+=strlen(GROWISOFS_CURRENT_WRITE_SPEED); |
s+=strlen(GROWISOFS_CURRENT_WRITE_SPEED); |
93 |
if ((t = strchr(s, 'x'))) { |
if ((t = strchr(s, 'x'))) { |
94 |
*t = 0; |
*t = 0; |
95 |
set_title(Lhash, s); |
set_title(Lg, s); |
96 |
} |
} |
97 |
} else if (!strncmp(Lbuffer, GROWISOFS_USING, strlen(GROWISOFS_USING))) { |
} else if (!strncmp(Lbuffer, GROWISOFS_USING, strlen(GROWISOFS_USING))) { |
98 |
/* rien pour le moment */ |
/* rien pour le moment */ |
123 |
g_snprintf(Lsbuf2, sizeof(Lsbuf2)-1, "%.0f%%", Ltava*100); |
g_snprintf(Lsbuf2, sizeof(Lsbuf2)-1, "%.0f%%", Ltava*100); |
124 |
gtk_progress_bar_set_text(Lprogressbar, Lsbuf2); |
gtk_progress_bar_set_text(Lprogressbar, Lsbuf2); |
125 |
} else if (strstr(Lbuffer, GROWISOFS_WRITING_LEADOUT)) { |
} else if (strstr(Lbuffer, GROWISOFS_WRITING_LEADOUT)) { |
126 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Lhash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Lg, "operationstatus"); |
127 |
gtk_label_set_text(Ltitle, _("Writing lead-out...")); |
gtk_label_set_text(Ltitle, _("Writing lead-out...")); |
128 |
*Loperationstatus = TRUE; |
*Loperationstatus = TRUE; |
129 |
} else if ((s=strstr(Lbuffer, GROWISOFS_FAILED))) { |
} else if ((s=strstr(Lbuffer, GROWISOFS_FAILED))) { |
139 |
} |
} |
140 |
|
|
141 |
/* copie d'une image iso */ |
/* copie d'une image iso */ |
142 |
gboolean burn_dvd(GHashTable *Ahash, GError **Aerror) { |
gboolean burn_dvd(Tgrave *Ag, GError **Aerror) { |
143 |
gchar **Lcmd; |
gchar **Lcmd; |
144 |
gchar *Lcommandline, *Lbufgrav, *Ltxt; |
gchar *Lcommandline, *Lbufgrav, *Ltxt; |
145 |
gchar **Lrepertoire = (gchar **)g_hash_table_lookup(Ahash, "tmpdir"); |
gchar **Lrepertoire = (gchar **)sc_grave_get_data(Ag, "tmpdir"); |
146 |
gint *Lcont = (gint *) g_hash_table_lookup(Ahash, "cont"); |
gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont"); |
147 |
gboolean *Labort = (gboolean *) g_hash_table_lookup(Ahash, "gabort"); |
gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort"); |
148 |
GtkWindow *Lwindow = GTK_WINDOW(g_hash_table_lookup(Ahash, "window_burn")); |
GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_widget(Ag, "window_burn")); |
149 |
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"))); |
150 |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrdvddata"))); |
gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrdvddata"))); |
151 |
gint *Ldone = (gint *)g_hash_table_lookup(Ahash, "done"); /* fais */ |
gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */ |
152 |
|
|
153 |
gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Ahash, "operationstatus"); |
gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus"); |
154 |
gboolean Lwanteject = conf_get_boolean("eject"); |
gboolean Lwanteject = conf_get_boolean("eject"); |
155 |
|
|
156 |
gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid"); |
gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid"); |
157 |
GtkWidget *Lvitesse = g_hash_table_lookup(Ahash, "dstdvddataspeed"); |
GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstdvddataspeed"); |
158 |
GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstdvddatacombo"); |
GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstdvddatacombo"); |
159 |
GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Ahash, "gravetitle")); |
GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle")); |
160 |
gboolean Leject = FALSE; |
gboolean Leject = FALSE; |
161 |
gboolean Ldosimul; |
gboolean Ldosimul; |
162 |
gchar *Lbufvitesse; |
gchar *Lbufvitesse; |
163 |
gchar *Loperation = g_hash_table_lookup(Ahash, "typeburn"); |
gchar *Loperation = sc_grave_get_data(Ag, "typeburn"); |
164 |
gint Lcurcd; |
gint Lcurcd; |
165 |
gint Lnbrpass=1; |
gint Lnbrpass=1; |
166 |
gint g_out, g_err, Lnbrarg; |
gint g_out, g_err, Lnbrarg; |
169 |
gchar *Lisopara = NULL; |
gchar *Lisopara = NULL; |
170 |
gboolean Lstatus; |
gboolean Lstatus; |
171 |
|
|
172 |
GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "dvddatanotfix")); |
GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "dvddatanotfix")); |
173 |
gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE; |
gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE; |
174 |
_DEB("DVD DATA\n"); |
_DEB("DVD DATA\n"); |
175 |
_DEB("nbr gravure = [%d]\n", Lnbrgravure); |
_DEB("nbr gravure = [%d]\n", Lnbrgravure); |
176 |
|
|
177 |
Lbufvitesse = get_combo_value(Lvitesse); |
Lbufvitesse = get_combo_value(Lvitesse); |
178 |
Lbufgrav = get_combo_value(Lgraveur); |
Lbufgrav = get_combo_value(Lgraveur); |
179 |
Lisopara = make_image_getextrapara(Ahash, "dvddata"); |
Lisopara = make_image_getextrapara(Ag, "dvddata"); |
180 |
|
|
181 |
for (Lcurcd=1; Lcurcd<= Lnbrgravure; |
for (Lcurcd=1; Lcurcd<= Lnbrgravure; |
182 |
((Lsimul && Lnbrpass>1) || (!Lsimul)) ? ( Lcurcd++, Lnbrpass=1 ) : ( Lnbrpass++ )) { |
((Lsimul && Lnbrpass>1) || (!Lsimul)) ? ( Lcurcd++, Lnbrpass=1 ) : ( Lnbrpass++ )) { |
251 |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
g_io_channel_set_encoding (Lcom, NULL, NULL); |
252 |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL ); |
253 |
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), |
254 |
growisofs_grave_callback, Ahash); |
growisofs_grave_callback, Ag); |
255 |
|
|
256 |
Lcomerr = g_io_channel_unix_new( g_err ); |
Lcomerr = g_io_channel_unix_new( g_err ); |
257 |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
g_io_channel_set_encoding (Lcomerr, NULL, NULL); |
258 |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL ); |
259 |
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), |
260 |
growisofs_grave_callback, Ahash); |
growisofs_grave_callback, Ag); |
261 |
|
|
262 |
while (*Lcont>0 && *Labort == FALSE) { |
while (*Lcont>0 && *Labort == FALSE) { |
263 |
gtk_main_iteration(); |
gtk_main_iteration(); |