Author: pollux
Date: 2006-07-30 12:09:37 +0000 (Sun, 30 Jul 2006)
New Revision: 22563
Added:
xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c
xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.h
xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.c
xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.h
Removed:
xfburn/trunk/xfburn/xfburn-burn-composition-dialog.c
xfburn/trunk/xfburn/xfburn-burn-composition-dialog.h
xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.c
xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.h
Modified:
xfburn/trunk/xfburn/Makefile.am
xfburn/trunk/xfburn/xfburn-data-composition.c
xfburn/trunk/xfburn/xfburn-main.c
Log:
* rename XfburnBurnCompositionDialog and
XfburnBurnCompositionProgressDialog into XfburnBurnDataCompositionDialog
and XfburnBurnDataCompositionProgressDialog (gosh it's long)
* the generated filelist is now mkisofs compliant
Modified: xfburn/trunk/xfburn/Makefile.am
===================================================================
--- xfburn/trunk/xfburn/Makefile.am 2006-07-30 08:31:55 UTC (rev 22562)
+++ xfburn/trunk/xfburn/Makefile.am 2006-07-30 12:09:37 UTC (rev 22563)
@@ -12,8 +12,8 @@
xfburn-adding-progress.h \
xfburn-blank-cd-dialog.h \
xfburn-blank-cd-progress-dialog.h \
- xfburn-burn-composition-dialog.h \
- xfburn-burn-composition-progress-dialog.h \
+ xfburn-burn-data-composition-dialog.h \
+ xfburn-burn-data-composition-progress-dialog.h \
xfburn-burn-image-dialog.h \
xfburn-burn-image-progress-dialog.h \
xfburn-settings.h \
@@ -40,8 +40,8 @@
xfburn-adding-progress.c \
xfburn-blank-cd-dialog.c \
xfburn-blank-cd-progress-dialog.c \
- xfburn-burn-composition-dialog.c \
- xfburn-burn-composition-progress-dialog.c \
+ xfburn-burn-data-composition-dialog.c \
+ xfburn-burn-data-composition-progress-dialog.c \
xfburn-burn-image-dialog.c \
xfburn-burn-image-progress-dialog.c \
xfburn-composition.c \
Deleted: xfburn/trunk/xfburn/xfburn-burn-composition-dialog.c
Deleted: xfburn/trunk/xfburn/xfburn-burn-composition-dialog.h
Deleted: xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.c
Deleted: xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.h
Copied: xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c (from rev
22560, xfburn/trunk/xfburn/xfburn-burn-composition-dialog.c)
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c
(rev 0)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c 2006-07-30
12:09:37 UTC (rev 22563)
@@ -0,0 +1,383 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy ([EMAIL PROTECTED])
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include "xfburn-global.h"
+#include "xfburn-utils.h"
+#include "xfburn-settings.h"
+#include "xfburn-burn-data-composition-progress-dialog.h"
+#include "xfburn-create-iso-from-composition-progress-dialog.h"
+
+#include "xfburn-burn-data-composition-dialog.h"
+
+/* prototypes */
+static void xfburn_burn_data_composition_dialog_class_init
(XfburnBurnDataCompositionDialogClass * klass);
+static void xfburn_burn_data_composition_dialog_init
(XfburnBurnDataCompositionDialog * obj);
+static void xfburn_burn_data_composition_dialog_finalize (GObject * object);
+
+static void cb_check_only_iso_toggled (GtkToggleButton * button,
XfburnBurnDataCompositionDialog * dialog);
+static void cb_browse_iso (GtkButton * button, XfburnBurnDataCompositionDialog
* dialog);
+static void cb_dialog_response (XfburnBurnDataCompositionDialog * dialog, gint
response_id,
+ XfburnBurnDataCompositionDialogPrivate * priv);
+
+/* structures */
+struct XfburnBurnDataCompositionDialogPrivate
+{
+ gchar *command_iso;
+ gchar *command_burn;
+
+ GtkWidget *combo_device;
+ GtkWidget *combo_speed;
+ GtkWidget *combo_mode;
+
+ GtkWidget *check_eject;
+ GtkWidget *check_burnfree;
+ GtkWidget *check_only_iso;
+ GtkWidget *hbox_iso;
+ GtkWidget *entry_path_iso;
+ GtkWidget *check_dummy;
+
+ gchar *file_list;
+};
+
+/* globals */
+static XfceTitledDialogClass *parent_class = NULL;
+
+GtkType
+xfburn_burn_data_composition_dialog_get_type ()
+{
+ static GtkType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo our_info = {
+ sizeof (XfburnBurnDataCompositionDialogClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) xfburn_burn_data_composition_dialog_class_init,
+ NULL,
+ NULL,
+ sizeof (XfburnBurnDataCompositionDialog),
+ 0,
+ (GInstanceInitFunc) xfburn_burn_data_composition_dialog_init,
+ };
+
+ type = g_type_register_static (XFCE_TYPE_TITLED_DIALOG,
"XfburnBurnDataCompositionDialog", &our_info, 0);
+ }
+
+ return type;
+}
+
+static void
+xfburn_burn_data_composition_dialog_class_init
(XfburnBurnDataCompositionDialogClass * klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+ object_class->finalize = xfburn_burn_data_composition_dialog_finalize;
+
+}
+
+static void
+xfburn_burn_data_composition_dialog_init (XfburnBurnDataCompositionDialog *
obj)
+{
+ XfburnBurnDataCompositionDialogPrivate *priv;
+ GtkBox *box = GTK_BOX (GTK_DIALOG (obj)->vbox);
+ GList *device;
+ GtkWidget *img;
+ GtkWidget *frame;
+ GtkWidget *vbox;
+ GtkWidget *hbox;
+ GtkWidget *align;
+ GtkWidget *label;
+ GtkWidget *button;
+ int i;
+ gchar *default_path;
+ gchar *tmp_dir;
+
+ obj->priv = g_new0 (XfburnBurnDataCompositionDialogPrivate, 1);
+ priv = obj->priv;
+
+ priv->command_iso = NULL;
+ priv->command_burn = NULL;
+
+ gtk_window_set_title (GTK_WINDOW (obj), _("Burn Composition"));
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (obj), TRUE);
+ gtk_window_set_icon_name (GTK_WINDOW (obj), GTK_STOCK_CDROM);
+
+ /* burning devices list */
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox);
+
+ frame = xfce_create_framebox_with_content (_("Burning device"), vbox);
+ gtk_widget_show (frame);
+ gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
+
+ priv->combo_device = gtk_combo_box_new_text ();
+ gtk_widget_show (priv->combo_device);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->combo_device, FALSE, FALSE,
BORDER);
+
+ device = list_devices;
+ while (device) {
+ XfburnDevice *device_data = (XfburnDevice *) device->data;
+
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_device),
device_data->name);
+
+ device = g_list_next (device);
+ }
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_device), 0);
+
+ /* speed */
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, BORDER);
+
+ label = gtk_label_new_with_mnemonic (_("_Speed :"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, BORDER);
+
+ priv->combo_speed = gtk_combo_box_new_text ();
+ gtk_widget_show (priv->combo_speed);
+ gtk_box_pack_start (GTK_BOX (hbox), priv->combo_speed, TRUE, TRUE, BORDER);
+
+ for (i = 2; i <= 52; i += 2) {
+ gchar *str;
+
+ str = g_strdup_printf ("%d", i);
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_speed), str);
+ g_free (str);
+ }
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_speed), 19);
+
+ img = gtk_image_new_from_stock (GTK_STOCK_REFRESH,
GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_widget_show (img);
+ button = gtk_button_new ();
+ gtk_container_add (GTK_CONTAINER (button), img);
+ gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+
+ /* mode */
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (hbox);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, BORDER);
+
+ label = gtk_label_new_with_mnemonic (_("Write _mode :"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, BORDER);
+
+ priv->combo_mode = gtk_combo_box_new_text ();
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_mode), _("default"));
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_mode), "tao");
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_mode), "dao");
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_mode), "raw96p");
+ gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_mode), "raw16");
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_mode), 0);
+ gtk_box_pack_start (GTK_BOX (hbox), priv->combo_mode, TRUE, TRUE, BORDER);
+ gtk_widget_show (priv->combo_mode);
+
+ /* options */
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_widget_show (vbox);
+
+ frame = xfce_create_framebox_with_content (_("Options"), vbox);
+ gtk_widget_show (frame);
+ gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
+
+ priv->check_eject = gtk_check_button_new_with_mnemonic (_("E_ject disk"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->check_eject), TRUE);
+ gtk_widget_show (priv->check_eject);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->check_eject, FALSE, FALSE, BORDER);
+
+ priv->check_dummy = gtk_check_button_new_with_mnemonic (_("_Dummy write"));
+ gtk_widget_show (priv->check_dummy);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->check_dummy, FALSE, FALSE, BORDER);
+
+ priv->check_burnfree = gtk_check_button_new_with_mnemonic (_("Burn_Free"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->check_burnfree),
TRUE);
+ gtk_widget_show (priv->check_burnfree);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->check_burnfree, FALSE, FALSE,
BORDER);
+
+ /* create ISO ? */
+ priv->check_only_iso = gtk_check_button_new_with_mnemonic (_("Only create
_ISO"));
+ gtk_widget_show (priv->check_only_iso);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->check_only_iso, FALSE, FALSE,
BORDER);
+ g_signal_connect (G_OBJECT (priv->check_only_iso), "toggled", G_CALLBACK
(cb_check_only_iso_toggled), obj);
+
+ align = gtk_alignment_new (0, 0, 0, 0);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, BORDER * 4, 0);
+ gtk_widget_show (align);
+ gtk_box_pack_start (GTK_BOX (vbox), align, FALSE, FALSE, 0);
+
+ priv->hbox_iso = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (priv->hbox_iso);
+ gtk_container_add (GTK_CONTAINER (align), priv->hbox_iso);
+ gtk_widget_set_sensitive (priv->hbox_iso, FALSE);
+
+ priv->entry_path_iso = gtk_entry_new ();
+ tmp_dir = xfburn_settings_get_string ("temporary-dir", "/tmp");
+ default_path = g_build_filename (tmp_dir, "xfburn.iso", NULL);
+ gtk_entry_set_text (GTK_ENTRY (priv->entry_path_iso), default_path);
+ g_free (default_path);
+ g_free (tmp_dir);
+ gtk_widget_show (priv->entry_path_iso);
+ gtk_box_pack_start (GTK_BOX (priv->hbox_iso), priv->entry_path_iso, FALSE,
FALSE, 0);
+
+ img = gtk_image_new_from_stock (GTK_STOCK_DIRECTORY,
GTK_ICON_SIZE_SMALL_TOOLBAR);
+ gtk_widget_show (img);
+ button = gtk_button_new ();
+ gtk_container_add (GTK_CONTAINER (button), img);
+ gtk_widget_show (button);
+ gtk_box_pack_start (GTK_BOX (priv->hbox_iso), button, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_browse_iso),
obj);
+
+ /* action buttons */
+ button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
+ gtk_widget_show (button);
+ gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_CANCEL);
+
+ button = xfce_create_mixed_button (GTK_STOCK_CDROM, _("_Burn Composition"));
+ gtk_widget_show (button);
+ gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_OK);
+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_focus (button);
+ gtk_widget_grab_default (button);
+
+ g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK
(cb_dialog_response), priv);
+}
+
+static void
+xfburn_burn_data_composition_dialog_finalize (GObject * object)
+{
+ XfburnBurnDataCompositionDialog *cobj;
+ cobj = XFBURN_BURN_COMPOSITION_DIALOG (object);
+
+ g_free (cobj->priv->file_list);
+ g_free (cobj->priv->command_iso);
+ g_free (cobj->priv->command_burn);
+ g_free (cobj->priv);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/* internals */
+static void
+cb_check_only_iso_toggled (GtkToggleButton * button,
XfburnBurnDataCompositionDialog * dialog)
+{
+ XfburnBurnDataCompositionDialogPrivate *priv = dialog->priv;
+
+ gtk_widget_set_sensitive (priv->hbox_iso, gtk_toggle_button_get_active
(button));
+ gtk_widget_set_sensitive (priv->check_eject, !gtk_toggle_button_get_active
(button));
+ gtk_widget_set_sensitive (priv->check_burnfree,
!gtk_toggle_button_get_active (button));
+ gtk_widget_set_sensitive (priv->check_dummy, !gtk_toggle_button_get_active
(button));
+}
+
+static void
+cb_browse_iso (GtkButton * button, XfburnBurnDataCompositionDialog * dialog)
+{
+ xfburn_browse_for_file (GTK_ENTRY (dialog->priv->entry_path_iso), GTK_WINDOW
(dialog));
+}
+
+static void
+cb_dialog_response (XfburnBurnDataCompositionDialog * dialog, gint
response_id, XfburnBurnDataCompositionDialogPrivate * priv)
+{
+ if (response_id == GTK_RESPONSE_OK) {
+ gchar *command = NULL;
+ GtkWidget *dialog_progress = NULL;
+
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_only_iso))) {
+ command = g_strconcat ("sh -c \"mkisofs -gui -graft-points -joliet
-full-iso9660-filenames -iso-level 2 -path-list ",
+ priv->file_list, " > ", gtk_entry_get_text
(GTK_ENTRY (priv->entry_path_iso)), "\"", NULL);
+
+ dialog_progress = xfburn_create_iso_from_composition_progress_dialog_new
();
+ }
+ else {
+ gchar *speed;
+ gchar *write_mode;
+ gchar *device_name;
+ XfburnDevice *device;
+
+ device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_device));
+ device = xfburn_device_lookup_by_name (device_name);
+
+ speed = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_speed));
+
+ switch (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combo_mode))) {
+ case 2:
+ write_mode = g_strdup (" -dao");
+ break;
+ case 3:
+ write_mode = g_strdup (" -raw96p");
+ break;
+ case 4:
+ write_mode = g_strdup (" -raw16");
+ break;
+ case 0:
+ case 1:
+ default:
+ write_mode = g_strdup (" -tao");
+ }
+
+ command = g_strconcat ("sh -c \"mkisofs -gui -graft-points -joliet
-full-iso9660-filenames -iso-level 2 -path-list ",
+ priv->file_list, " | cdrecord -v gracetime=2", "
dev=", device->node_path, write_mode, " speed=", speed,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_eject)) ? " -eject" : "",
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_dummy)) ? " -dummy" : "",
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_burnfree)) ? " driveropts=burnfree" : "",
+ " - \"", NULL);
+ g_free (device_name);
+ g_free (speed);
+ g_free (write_mode);
+ dialog_progress = xfburn_burn_data_composition_progress_dialog_new ();
+ }
+
+ gtk_window_set_transient_for (GTK_WINDOW (dialog_progress),
gtk_window_get_transient_for (GTK_WINDOW (dialog)));
+ gtk_widget_hide (GTK_WIDGET (dialog));
+
+ g_object_set_data (G_OBJECT (dialog_progress), "command", command);
+ gtk_dialog_run (GTK_DIALOG (dialog_progress));
+
+ unlink (priv->file_list);
+ g_free (command);
+ }
+}
+
+/* public */
+gchar *
+xfburn_burn_data_composition_dialog_get_command_iso
(XfburnBurnDataCompositionDialog * dialog)
+{
+ return g_strdup (dialog->priv->command_iso);
+}
+
+gchar *
+xfburn_burn_data_composition_dialog_get_command_burn
(XfburnBurnDataCompositionDialog * dialog)
+{
+ return g_strdup (dialog->priv->command_burn);
+}
+
+GtkWidget *
+xfburn_burn_data_composition_dialog_new (const gchar * file_list)
+{
+ XfburnBurnDataCompositionDialog *obj;
+
+ obj = XFBURN_BURN_COMPOSITION_DIALOG (g_object_new
(XFBURN_TYPE_BURN_COMPOSITION_DIALOG, NULL));
+
+ obj->priv->file_list = g_strdup (file_list);
+
+ return GTK_WIDGET (obj);
+}
Copied: xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.h (from rev
22560, xfburn/trunk/xfburn/xfburn-burn-composition-dialog.h)
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.h
(rev 0)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.h 2006-07-30
12:09:37 UTC (rev 22563)
@@ -0,0 +1,57 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy ([EMAIL PROTECTED])
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFBURN_BURN_COMPOSITION_DIALOG_H__
+#define __XFBURN_BURN_COMPOSITION_DIALOG_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define XFBURN_TYPE_BURN_COMPOSITION_DIALOG
(xfburn_burn_data_composition_dialog_get_type ())
+#define XFBURN_BURN_COMPOSITION_DIALOG(o)
(G_TYPE_CHECK_INSTANCE_CAST ((o), XFBURN_TYPE_BURN_COMPOSITION_DIALOG,
XfburnBurnDataCompositionDialog))
+#define XFBURN_BURN_COMPOSITION_DIALOG_CLASS(k)
(G_TYPE_CHECK_CLASS_CAST((k), XFBURN_TYPE_BURN_COMPOSITION_DIALOG,
XfburnBurnDataCompositionDialogClass))
+#define XFBURN_IS_BURN_COMPOSITION_DIALOG(o)
(G_TYPE_CHECK_INSTANCE_TYPE ((o), XFBURN_TYPE_BURN_COMPOSITION_DIALOG))
+#define XFBURN_IS_BURN_COMPOSITION_DIALOG_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE
((k), XFBURN_TYPE_BURN_COMPOSITION_DIALOG))
+#define XFBURN_BURN_COMPOSITION_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS
((o), XFBURN_TYPE_BURN_COMPOSITION_DIALOG,
XfburnBurnDataCompositionDialogClass))
+typedef struct XfburnBurnDataCompositionDialogPrivate
XfburnBurnDataCompositionDialogPrivate;
+
+typedef struct
+{
+ XfceTitledDialog parent;
+ XfburnBurnDataCompositionDialogPrivate *priv;
+} XfburnBurnDataCompositionDialog;
+
+typedef struct
+{
+ XfceTitledDialogClass parent_class;
+} XfburnBurnDataCompositionDialogClass;
+
+GtkType xfburn_burn_data_composition_dialog_get_type ();
+GtkWidget *xfburn_burn_data_composition_dialog_new (const gchar *file_list);
+
+gchar *xfburn_burn_data_composition_dialog_get_command_iso
(XfburnBurnDataCompositionDialog *dialog);
+gchar *xfburn_burn_data_composition_dialog_get_command_burn
(XfburnBurnDataCompositionDialog *dialog);
+
+G_END_DECLS
+#endif /* XFBURN_BURN_COMPOSITION_DIALOG_H */
Copied: xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.c
(from rev 22560, xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.c)
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.c
(rev 0)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.c
2006-07-30 12:09:37 UTC (rev 22563)
@@ -0,0 +1,108 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy ([EMAIL PROTECTED])
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include "xfburn-progress-dialog.h"
+
+#include "xfburn-burn-data-composition-progress-dialog.h"
+
+static void xfburn_burn_data_composition_progress_dialog_class_init
(XfburnBurnDataCompositionProgressDialogClass * klass);
+static void xfburn_burn_data_composition_progress_dialog_init
(XfburnBurnDataCompositionProgressDialog * sp);
+static void xfburn_burn_data_composition_progress_dialog_finalize (GObject *
object);
+
+struct XfburnBurnDataCompositionProgressDialogPrivate
+{
+ /* Place Private Members Here */
+};
+
+static XfburnProgressDialogClass *parent_class = NULL;
+
+GtkType
+xfburn_burn_data_composition_progress_dialog_get_type ()
+{
+ static GtkType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo our_info = {
+ sizeof (XfburnBurnDataCompositionProgressDialogClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) xfburn_burn_data_composition_progress_dialog_class_init,
+ NULL,
+ NULL,
+ sizeof (XfburnBurnDataCompositionProgressDialog),
+ 0,
+ (GInstanceInitFunc) xfburn_burn_data_composition_progress_dialog_init,
+ };
+
+ type = g_type_register_static (XFBURN_TYPE_PROGRESS_DIALOG,
"XfburnBurnDataCompositionProgressDialog", &our_info, 0);
+ }
+
+ return type;
+}
+
+static void
+xfburn_burn_data_composition_progress_dialog_class_init
(XfburnBurnDataCompositionProgressDialogClass * klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+ object_class->finalize =
xfburn_burn_data_composition_progress_dialog_finalize;
+
+}
+
+static void
+xfburn_burn_data_composition_progress_dialog_init
(XfburnBurnDataCompositionProgressDialog * obj)
+{
+ obj->priv = g_new0 (XfburnBurnDataCompositionProgressDialogPrivate, 1);
+ /* Initialize private members, etc. */
+}
+
+static void
+xfburn_burn_data_composition_progress_dialog_finalize (GObject * object)
+{
+ XfburnBurnDataCompositionProgressDialog *cobj;
+ cobj = XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG (object);
+
+ /* Free private members, etc. */
+
+ g_free (cobj->priv);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+/* */
+/* internals */
+/* */
+
+/* */
+/* public */
+/* */
+
+GtkWidget *
+xfburn_burn_data_composition_progress_dialog_new ()
+{
+ XfburnBurnDataCompositionProgressDialog *obj;
+
+ obj = XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG (g_object_new
(XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG, NULL));
+
+ return GTK_WIDGET (obj);
+}
Copied: xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.h
(from rev 22560, xfburn/trunk/xfburn/xfburn-burn-composition-progress-dialog.h)
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.h
(rev 0)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-progress-dialog.h
2006-07-30 12:09:37 UTC (rev 22563)
@@ -0,0 +1,55 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2005-2006 Jean-François Wauthy ([EMAIL PROTECTED])
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG_H__
+#define __XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include <gtk/gtk.h>
+
+#include "xfburn-progress-dialog.h"
+
+G_BEGIN_DECLS
+
+#define XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG
(xfburn_burn_data_composition_progress_dialog_get_type ())
+#define XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG(o)
(G_TYPE_CHECK_INSTANCE_CAST ((o), XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG,
XfburnBurnDataCompositionProgressDialog))
+#define XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG_CLASS(k)
(G_TYPE_CHECK_CLASS_CAST((k), XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG,
XfburnBurnDataCompositionProgressDialogClass))
+#define XFBURN_IS_BURN_COMPOSITION_PROGRESS_DIALOG(o)
(G_TYPE_CHECK_INSTANCE_TYPE ((o), XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG))
+#define XFBURN_IS_BURN_COMPOSITION_PROGRESS_DIALOG_CLASS(k)
(G_TYPE_CHECK_CLASS_TYPE ((k), XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG))
+#define XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG_GET_CLASS(o)
(G_TYPE_INSTANCE_GET_CLASS ((o), XFBURN_TYPE_BURN_COMPOSITION_PROGRESS_DIALOG,
XfburnBurnDataCompositionProgressDialogClass))
+
+typedef struct XfburnBurnDataCompositionProgressDialogPrivate
XfburnBurnDataCompositionProgressDialogPrivate;
+
+typedef struct {
+ XfburnProgressDialog parent;
+ XfburnBurnDataCompositionProgressDialogPrivate *priv;
+} XfburnBurnDataCompositionProgressDialog;
+
+typedef struct {
+ XfburnProgressDialogClass parent_class;
+ /* Add Signal Functions Here */
+} XfburnBurnDataCompositionProgressDialogClass;
+
+GtkType xfburn_burn_data_composition_progress_dialog_get_type ();
+GtkWidget *xfburn_burn_data_composition_progress_dialog_new ();
+
+#endif /* XFBURN_BURN_COMPOSITION_PROGRESS_DIALOG_H */
Modified: xfburn/trunk/xfburn/xfburn-data-composition.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-data-composition.c 2006-07-30 08:31:55 UTC
(rev 22562)
+++ xfburn/trunk/xfburn/xfburn-data-composition.c 2006-07-30 12:09:37 UTC
(rev 22563)
@@ -50,7 +50,7 @@
#endif
#include "xfburn-composition.h"
-#include "xfburn-burn-composition-dialog.h"
+#include "xfburn-burn-data-composition-dialog.h"
#include "xfburn-disc-usage.h"
#include "xfburn-main-window.h"
#include "xfburn-utils.h"
@@ -105,7 +105,7 @@
{
DATA_COMPOSITION_TYPE_FILE,
DATA_COMPOSITION_TYPE_DIRECTORY
-} DataCompositionype;
+} DataCompositionType;
typedef struct
{
@@ -376,7 +376,7 @@
generate_file_list (XFBURN_DATA_COMPOSITION (dc), &tmpfile);
- dialog = xfburn_burn_composition_dialog_new (tmpfile);
+ dialog = xfburn_burn_data_composition_dialog_new (tmpfile);
gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (mainwin));
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
@@ -940,16 +940,56 @@
}
}
+static gchar *
+get_composition_path (GtkTreeModel *model, GtkTreeIter *iter)
+{
+ GtkTreeIter parent;
+ GtkTreeIter current = *iter;
+ gchar *path = g_strdup ("");
+ gchar *temp = NULL;
+
+ while (gtk_tree_model_iter_parent (model, &parent, ¤t)) {
+ gchar *name = NULL;
+
+ gtk_tree_model_get (model, &parent, DATA_COMPOSITION_COLUMN_CONTENT,
&name, -1);
+
+ temp = g_strdup_printf ("%s/%s", name, path);
+ g_free (path);
+ path = temp;
+
+ g_free (name);
+
+ current = parent;
+ }
+
+ return path;
+}
+
static gboolean
foreach_generate_file_list (GtkTreeModel * model, GtkTreePath * path,
GtkTreeIter * iter, FILE * file)
{
- gchar *name;
- gchar *src;
+ DataCompositionType type;
+ gchar *dir_path = NULL;
+ gchar *name = NULL;
+ gchar *src = NULL;
+
+ gtk_tree_model_get (model, iter, DATA_COMPOSITION_COLUMN_TYPE, &type,
+ DATA_COMPOSITION_COLUMN_CONTENT, &name,
DATA_COMPOSITION_COLUMN_PATH, &src, -1);
- gtk_tree_model_get (model, iter, DATA_COMPOSITION_COLUMN_CONTENT, &name,
DATA_COMPOSITION_COLUMN_PATH, &src, -1);
+ dir_path = get_composition_path (model, iter);
+
+ fprintf (file, "%s%s=", dir_path, name);
+
+ if (type == DATA_COMPOSITION_TYPE_DIRECTORY) {
+ gchar *dummy_dir = NULL;
+
+ dummy_dir = g_object_get_data (G_OBJECT (model), "dummy-dir");
+ fprintf (file, "%s\n", dummy_dir);
+ } else {
+ fprintf (file, "%s\n", src);
+ }
- fprintf (file, "%s=%s\n", name, src);
-
+ g_free (dir_path);
g_free (name);
g_free (src);
return FALSE;
@@ -964,7 +1004,9 @@
FILE *file_tmp;
int fd_tmpfile;
GtkTreeModel *model;
-
+ gchar *dummy_dir = NULL;
+ gchar template[] = "/tmp/xfburnXXXXXX";
+
fd_tmpfile = g_file_open_tmp ("xfburnXXXXXX", tmpfile, &error);
if (error) {
g_warning ("Unable to create temporary file: %s", error->message);
@@ -974,9 +1016,14 @@
file_tmp = fdopen (fd_tmpfile, "w+");
model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->content));
+
+
+ dummy_dir = mkdtemp (template);
+ g_object_set_data (G_OBJECT (model), "dummy-dir", dummy_dir);
+
gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc)
foreach_generate_file_list, file_tmp);
fclose (file_tmp);
-
+
return TRUE;
}
@@ -1147,7 +1194,7 @@
gint i;
gchar *name = NULL;
gchar *source_path = NULL;
- DataCompositionype type;
+ DataCompositionType type;
space = g_strnfill (gtk_tree_path_get_depth (path), '\t');
Modified: xfburn/trunk/xfburn/xfburn-main.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-main.c 2006-07-30 08:31:55 UTC (rev 22562)
+++ xfburn/trunk/xfburn/xfburn-main.c 2006-07-30 12:09:37 UTC (rev 22563)
@@ -79,7 +79,7 @@
mainwin = xfburn_main_window_new ();
gtk_widget_show (mainwin);
-
+
gtk_main ();
#ifdef HAVE_THUNAR_VFS
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits