Author: pollux
Date: 2006-08-10 13:14:41 +0000 (Thu, 10 Aug 2006)
New Revision: 22704
Added:
xfburn/trunk/xfburn/xfburn-device-box.c
xfburn/trunk/xfburn/xfburn-device-box.h
Modified:
xfburn/trunk/xfburn/Makefile.am
xfburn/trunk/xfburn/xfburn-blank-cd-dialog.c
xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c
xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
xfburn/trunk/xfburn/xfburn-copy-cd-dialog.c
Log:
Add the XfburnDeviceBox class and use it in the burning dialogs
Modified: xfburn/trunk/xfburn/Makefile.am
===================================================================
--- xfburn/trunk/xfburn/Makefile.am 2006-08-10 13:01:08 UTC (rev 22703)
+++ xfburn/trunk/xfburn/Makefile.am 2006-08-10 13:14:41 UTC (rev 22704)
@@ -24,6 +24,7 @@
xfburn-copy-cd-progress-dialog.h \
xfburn-create-iso-progress-dialog.h \
xfburn-create-iso-from-composition-progress-dialog.h \
+ xfburn-device-box.h \
xfburn-progress-dialog.h \
xfburn-main-window.h \
xfburn-notebook-tab.h \
@@ -53,6 +54,7 @@
xfburn-settings.c \
xfburn-copy-cd-dialog.c \
xfburn-copy-cd-progress-dialog.c \
+ xfburn-device-box.c \
xfburn-progress-dialog.c \
xfburn-main.c \
xfburn-main-window.c \
Modified: xfburn/trunk/xfburn/xfburn-blank-cd-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-blank-cd-dialog.c 2006-08-10 13:01:08 UTC
(rev 22703)
+++ xfburn/trunk/xfburn/xfburn-blank-cd-dialog.c 2006-08-10 13:14:41 UTC
(rev 22704)
@@ -24,6 +24,7 @@
#include "xfburn-global.h"
#include "xfburn-utils.h"
#include "xfburn-blank-cd-progress-dialog.h"
+#include "xfburn-device-box.h"
#include "xfburn-stock.h"
#include "xfburn-blank-cd-dialog.h"
@@ -37,9 +38,9 @@
struct XfburnBlankCdDialogPrivate
{
- GtkWidget *combo_device;
+ GtkWidget *device_box;
GtkWidget *combo_type;
- GtkWidget *combo_speed;
+
GtkWidget *check_force;
GtkWidget *check_eject;
};
@@ -85,15 +86,10 @@
{
GtkBox *box = GTK_BOX (GTK_DIALOG (obj)->vbox);
XfburnBlankCdDialogPrivate *priv;
- GList *device;
- GtkWidget *img;
GdkPixbuf *icon = NULL;
GtkWidget *frame;
GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *label;
GtkWidget *button;
- int i;
obj->priv = g_new0 (XfburnBlankCdDialogPrivate, 1);
@@ -105,58 +101,15 @@
icon = gtk_widget_render_icon (GTK_WIDGET (obj), XFBURN_STOCK_BLANK_CDRW,
GTK_ICON_SIZE_DIALOG, NULL);
gtk_window_set_icon (GTK_WINDOW (obj), icon);
g_object_unref (icon);
-
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
- frame = xfce_create_framebox_with_content (_("Burning device"), vbox);
+ /* devices list */
+ priv->device_box = xfburn_device_box_new (TRUE, TRUE);
+ gtk_widget_show (priv->device_box);
+
+ frame = xfce_create_framebox_with_content (_("Burning device"),
priv->device_box);
gtk_widget_show (frame);
gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
- /* devices list */
- 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 <= 24; 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), 4);
-
- 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);
-
/* blank type */
priv->combo_type = gtk_combo_box_new_text ();
gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_type), _("Fast"));
@@ -219,15 +172,13 @@
XfburnBlankCdDialogPrivate *priv;
gchar *command;
XfburnDevice *device;
- gchar *device_name, *blank_type, *speed;
+ gchar *blank_type, *speed;
priv = dialog->priv;
- device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_device));
- device = xfburn_device_lookup_by_name (device_name);
+ device = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX
(priv->device_box));
+ speed = xfburn_device_box_get_speed (XFBURN_DEVICE_BOX (priv->device_box));
- speed = gtk_combo_box_get_active_text (GTK_COMBO_BOX (priv->combo_speed));
-
switch (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combo_type))) {
case 0:
blank_type = g_strdup ("fast");
@@ -249,7 +200,6 @@
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_eject)) ? " -eject" : "",
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_force)) ? " -force" : "", NULL);
- g_free (device_name);
g_free (blank_type);
g_free (speed);
Modified: xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c 2006-08-10
13:01:08 UTC (rev 22703)
+++ xfburn/trunk/xfburn/xfburn-burn-data-composition-dialog.c 2006-08-10
13:14:41 UTC (rev 22704)
@@ -26,6 +26,7 @@
#include "xfburn-settings.h"
#include "xfburn-burn-data-composition-progress-dialog.h"
#include "xfburn-create-iso-from-composition-progress-dialog.h"
+#include "xfburn-device-box.h"
#include "xfburn-write-mode-combo-box.h"
#include "xfburn-burn-data-composition-dialog.h"
@@ -47,8 +48,7 @@
gchar *command_burn;
GtkWidget *frame_device;
- GtkWidget *combo_device;
- GtkWidget *combo_speed;
+ GtkWidget *device_box;
GtkWidget *combo_mode;
GtkWidget *check_eject;
@@ -104,7 +104,6 @@
{
XfburnBurnDataCompositionDialogPrivate *priv;
GtkBox *box = GTK_BOX (GTK_DIALOG (obj)->vbox);
- GList *device;
GtkWidget *img;
GtkWidget *frame;
GtkWidget *vbox;
@@ -112,7 +111,6 @@
GtkWidget *align;
GtkWidget *label;
GtkWidget *button;
- int i;
gchar *default_path;
gchar *tmp_dir;
@@ -127,60 +125,17 @@
gtk_window_set_icon_name (GTK_WINDOW (obj), GTK_STOCK_CDROM);
/* burning devices list */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
+ priv->device_box = xfburn_device_box_new (TRUE, TRUE);
+ gtk_widget_show (priv->device_box);
- priv->frame_device = xfce_create_framebox_with_content (_("Burning device"),
vbox);
+ priv->frame_device = xfce_create_framebox_with_content (_("Burning device"),
priv->device_box);
gtk_widget_show (priv->frame_device);
gtk_box_pack_start (box, priv->frame_device, 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);
+ gtk_box_pack_start (GTK_BOX (priv->device_box), hbox, FALSE, FALSE, BORDER);
label = gtk_label_new_with_mnemonic (_("Write _mode :"));
gtk_widget_show (label);
@@ -314,13 +269,10 @@
else {
gchar *speed = NULL;
gchar *write_mode = NULL;
- gchar *device_name = NULL;
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));
+ device = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX
(priv->device_box));
+ speed = xfburn_device_box_get_speed (XFBURN_DEVICE_BOX
(priv->device_box));
write_mode = xfburn_write_mode_combo_box_get_cdrecord_param
(XFBURN_WRITE_MODE_COMBO_BOX (priv->combo_mode));
@@ -331,7 +283,6 @@
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);
Modified: xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-image-dialog.c 2006-08-10 13:01:08 UTC
(rev 22703)
+++ xfburn/trunk/xfburn/xfburn-burn-image-dialog.c 2006-08-10 13:14:41 UTC
(rev 22704)
@@ -26,6 +26,7 @@
#include "xfburn-global.h"
#include "xfburn-utils.h"
#include "xfburn-burn-image-progress-dialog.h"
+#include "xfburn-device-box.h"
#include "xfburn-stock.h"
#include "xfburn-write-mode-combo-box.h"
@@ -41,8 +42,8 @@
struct XfburnBurnImageDialogPrivate
{
GtkWidget *chooser_image;
-
- GtkWidget *combo_device;
+
+ GtkWidget *device_box;
GtkWidget *combo_speed;
GtkWidget *combo_mode;
@@ -92,15 +93,12 @@
{
GtkBox *box = GTK_BOX (GTK_DIALOG (obj)->vbox);
XfburnBurnImageDialogPrivate *priv;
- GList *device;
- GtkWidget *img;
GdkPixbuf *icon = NULL;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *label;
GtkWidget *button;
- int i;
obj->priv = g_new0 (XfburnBurnImageDialogPrivate, 1);
@@ -121,60 +119,17 @@
gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
/* devices list */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
-
- frame = xfce_create_framebox_with_content (_("Burning device"), vbox);
+ priv->device_box = xfburn_device_box_new (TRUE, TRUE);
+ gtk_widget_show (priv->device_box);
+
+ frame = xfce_create_framebox_with_content (_("Burning device"),
priv->device_box);
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);
+ gtk_box_pack_start (GTK_BOX (priv->device_box), hbox, FALSE, FALSE, BORDER);
label = gtk_label_new_with_mnemonic (_("Write _mode :"));
gtk_widget_show (label);
@@ -238,7 +193,7 @@
if (response_id == GTK_RESPONSE_OK) {
XfburnBurnImageDialogPrivate *priv;
XfburnDevice *device;
- gchar *iso_path, *device_name, *speed, *write_mode;
+ gchar *iso_path, *speed, *write_mode;
gchar *command;
GtkWidget *dialog_progress;
@@ -246,8 +201,7 @@
iso_path = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER
(priv->chooser_image));
- device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_device));
- device = xfburn_device_lookup_by_name (device_name);
+ device = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX
(priv->device_box));
speed = gtk_combo_box_get_active_text (GTK_COMBO_BOX (priv->combo_speed));
@@ -258,7 +212,6 @@
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"
: "", " '", iso_path, "'", NULL);
- g_free (device_name);
g_free (write_mode);
g_free (speed);
g_free (iso_path);
Modified: xfburn/trunk/xfburn/xfburn-copy-cd-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-copy-cd-dialog.c 2006-08-10 13:01:08 UTC (rev
22703)
+++ xfburn/trunk/xfburn/xfburn-copy-cd-dialog.c 2006-08-10 13:14:41 UTC (rev
22704)
@@ -30,6 +30,7 @@
#include "xfburn-settings.h"
#include "xfburn-copy-cd-progress-dialog.h"
#include "xfburn-create-iso-progress-dialog.h"
+#include "xfburn-device-box.h"
#include "xfburn-stock.h"
#include "xfburn-copy-cd-dialog.h"
@@ -39,7 +40,7 @@
static void xfburn_copy_cd_dialog_init (XfburnCopyCdDialog * sp);
static void xfburn_copy_cd_dialog_finalize (GObject * object);
-static void cb_combo_device_changed (GtkComboBox *combo,
XfburnCopyCdDialogPrivate *priv);
+static void cb_device_changed (XfburnDeviceBox *box, const gchar *device_name,
XfburnCopyCdDialogPrivate *priv);
static void cb_check_only_iso_toggled (GtkToggleButton * button,
XfburnCopyCdDialog * dialog);
static void cb_browse_iso (GtkButton * button, XfburnCopyCdDialog * dialog);
static void cb_dialog_response (XfburnCopyCdDialog * dialog, gint response_id,
XfburnCopyCdDialogPrivate * priv);
@@ -47,10 +48,9 @@
/* structures */
struct XfburnCopyCdDialogPrivate
{
- GtkWidget *combo_source_device;
+ GtkWidget *device_box_src;
GtkWidget *frame_burn;
- GtkWidget *combo_dest_device;
- GtkWidget *combo_speed;
+ GtkWidget *device_box_dest;
GtkWidget *check_eject;
GtkWidget *check_onthefly;
@@ -102,17 +102,13 @@
{
XfburnCopyCdDialogPrivate *priv;
GtkBox *box = GTK_BOX (GTK_DIALOG (obj)->vbox);
- GList *device;
GtkWidget *img;
GdkPixbuf *icon = NULL;
GtkWidget *frame;
GtkWidget *vbox;
- GtkWidget *hbox;
GtkWidget *align;
- GtkWidget *label;
GtkWidget *button;
gchar *default_path, *tmp_dir;
- int i;
obj->priv = g_new0 (XfburnCopyCdDialogPrivate, 1);
priv = obj->priv;
@@ -124,60 +120,21 @@
g_object_unref (icon);
/* reader devices list */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
-
- frame = xfce_create_framebox_with_content (_("CD Reader device"), vbox);
+ priv->device_box_src = xfburn_device_box_new (FALSE, FALSE);
+ gtk_widget_show (priv->device_box_src);
+
+ frame = xfce_create_framebox_with_content (_("CD Reader device"),
priv->device_box_src);
gtk_widget_show (frame);
gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
- priv->combo_source_device = gtk_combo_box_new_text ();
- gtk_widget_show (priv->combo_source_device);
- gtk_box_pack_start (GTK_BOX (vbox), priv->combo_source_device, FALSE, FALSE,
BORDER);
- g_signal_connect (G_OBJECT (priv->combo_source_device), "changed",
G_CALLBACK (cb_combo_device_changed), priv);
-
/* burning devices list */
- vbox = gtk_vbox_new (FALSE, 0);
- gtk_widget_show (vbox);
+ priv->device_box_dest = xfburn_device_box_new (TRUE, TRUE);
+ gtk_widget_show (priv->device_box_dest);
- priv->frame_burn = xfce_create_framebox_with_content (_("Burning device"),
vbox);
+ priv->frame_burn = xfce_create_framebox_with_content (_("Burning device"),
priv->device_box_dest);
gtk_widget_show (priv->frame_burn);
gtk_box_pack_start (box, priv->frame_burn, FALSE, FALSE, BORDER);
-
- priv->combo_dest_device = gtk_combo_box_new_text ();
- gtk_widget_show (priv->combo_dest_device);
- gtk_box_pack_start (GTK_BOX (vbox), priv->combo_dest_device, FALSE, FALSE,
BORDER);
- g_signal_connect (G_OBJECT (priv->combo_dest_device), "changed", G_CALLBACK
(cb_combo_device_changed), priv);
-
- /* 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);
-
+
/* options */
vbox = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox);
@@ -243,20 +200,13 @@
gtk_widget_grab_focus (button);
gtk_widget_grab_default (button);
- g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK
(cb_dialog_response), priv);
+ g_signal_connect (G_OBJECT (priv->device_box_src), "device-changed",
G_CALLBACK (cb_device_changed), priv);
+ g_signal_connect (G_OBJECT (priv->device_box_dest), "device-changed",
G_CALLBACK (cb_device_changed), priv);
- /* load devices in combos */
- device = list_devices;
- while (device) {
- XfburnDevice *device_data = (XfburnDevice *) device->data;
-
- gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_source_device),
device_data->name);
- gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_dest_device),
device_data->name);
- device = g_list_next (device);
- }
- gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_source_device), 0);
- gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_dest_device), 0);
-
+ /* check if the selected devices are the same */
+ cb_device_changed (XFBURN_DEVICE_BOX (priv->device_box_dest), NULL, priv);
+
+ g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK
(cb_dialog_response), priv);
}
static void
@@ -286,18 +236,21 @@
}
static void
-cb_combo_device_changed (GtkComboBox *combo, XfburnCopyCdDialogPrivate *priv)
+cb_device_changed (XfburnDeviceBox *box, const gchar *device_name,
XfburnCopyCdDialogPrivate *priv)
{
- gchar *source_device_name, *dest_device_name;
+ gchar *source_device_name = NULL, *dest_device_name = NULL;
- source_device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_source_device));
- dest_device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_dest_device));
+ source_device_name = xfburn_device_box_get_selected (XFBURN_DEVICE_BOX
(priv->device_box_src));
+ dest_device_name = xfburn_device_box_get_selected (XFBURN_DEVICE_BOX
(priv->device_box_dest));
if (source_device_name && dest_device_name && !strcmp (source_device_name,
dest_device_name)) {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->check_onthefly),
FALSE);
gtk_widget_set_sensitive (priv->check_onthefly, FALSE);
} else
gtk_widget_set_sensitive (priv->check_onthefly, TRUE);
+
+ g_free (source_device_name);
+ g_free (dest_device_name);
}
static void
@@ -310,14 +263,12 @@
cb_dialog_response (XfburnCopyCdDialog * dialog, gint response_id,
XfburnCopyCdDialogPrivate * priv)
{
if (response_id == GTK_RESPONSE_OK) {
- gchar *source_device_name;
gchar *command;
XfburnDevice *device_burn;
XfburnDevice *device_read;
GtkWidget *dialog_progress = NULL;
- source_device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_source_device));
- device_read = xfburn_device_lookup_by_name (source_device_name);
+ device_read = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX
(priv->device_box_src));
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(priv->check_only_iso))) {
command = g_strconcat ("readcd dev=", device_read->node_path, " f=",
@@ -325,12 +276,11 @@
dialog_progress = xfburn_create_iso_progress_dialog_new ();
} else {
- gchar *dest_device_name, *speed;
+ gchar *speed;
gchar *source_device = NULL;
- dest_device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_dest_device));
- device_burn = xfburn_device_lookup_by_name (dest_device_name);
- speed = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_speed));
+ device_burn = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX
(priv->device_box_dest));
+ speed = xfburn_device_box_get_speed (XFBURN_DEVICE_BOX
(priv->device_box_dest));
if (device_burn != device_read)
source_device = g_strconcat (" --source-device ",
device_read->node_path, NULL);
@@ -345,7 +295,6 @@
" --datafile /tmp/xfburn.bin", NULL);
g_free (source_device);
g_free (speed);
- g_free (dest_device_name);
dialog_progress = xfburn_copy_cd_progress_dialog_new ();
}
@@ -356,7 +305,6 @@
g_object_set_data (G_OBJECT (dialog_progress), "command", command);
gtk_dialog_run (GTK_DIALOG (dialog_progress));
- g_free (source_device_name);
g_free (command);
}
}
Added: xfburn/trunk/xfburn/xfburn-device-box.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.c (rev 0)
+++ xfburn/trunk/xfburn/xfburn-device-box.c 2006-08-10 13:14:41 UTC (rev
22704)
@@ -0,0 +1,280 @@
+/* $Id$ */
+/*
+ * Copyright (c) 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 <gtk/gtk.h>
+#include <libxfce4util/libxfce4util.h>
+
+#include "xfburn-utils.h"
+
+#include "xfburn-device-box.h"
+
+#define XFBURN_DEVICE_BOX_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE
((obj), XFBURN_TYPE_DEVICE_BOX, XfburnDeviceBoxPrivate))
+
+enum {
+ DEVICE_CHANGED,
+ LAST_SIGNAL,
+};
+
+enum {
+ PROP_0,
+ PROP_SHOW_WRITERS_ONLY,
+ PROP_SHOW_SPEED_SELECTION,
+};
+
+/* private struct */
+typedef struct
+{
+ gboolean show_writers_only;
+ gboolean show_speed_selection;
+
+ GtkWidget *combo_device;
+
+ GtkWidget *hbox_speed_selection;
+ GtkWidget *combo_speed;
+} XfburnDeviceBoxPrivate;
+
+/* prototypes */
+static void xfburn_device_box_class_init (XfburnDeviceBoxClass *);
+static void xfburn_device_box_init (XfburnDeviceBox *);
+static void xfburn_device_box_get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec);
+static void xfburn_device_box_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec);
+
+static void cb_combo_device_changed (GtkComboBox *combo, XfburnDeviceBox *box);
+
+/* globals */
+static GtkVBoxClass *parent_class = NULL;
+
+/*************************/
+/* XfburnDeviceBox class */
+/*************************/
+static guint signals[LAST_SIGNAL];
+
+GtkType
+xfburn_device_box_get_type (void)
+{
+ static GtkType device_box_type = 0;
+
+ if (!device_box_type)
+ {
+ static const GTypeInfo device_box_info = {
+ sizeof (XfburnDeviceBoxClass),
+ NULL,
+ NULL,
+ (GClassInitFunc) xfburn_device_box_class_init,
+ NULL,
+ NULL,
+ sizeof (XfburnDeviceBox),
+ 0,
+ (GInstanceInitFunc) xfburn_device_box_init
+ };
+
+ device_box_type = g_type_register_static (GTK_TYPE_VBOX,
"XfburnDeviceBox", &device_box_info, 0);
+ }
+
+ return device_box_type;
+}
+
+static void
+xfburn_device_box_class_init (XfburnDeviceBoxClass * klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ g_type_class_add_private (klass, sizeof (XfburnDeviceBoxPrivate));
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ object_class->set_property = xfburn_device_box_set_property;
+ object_class->get_property = xfburn_device_box_get_property;
+
+ signals[DEVICE_CHANGED] = g_signal_new ("device-changed",
XFBURN_TYPE_DEVICE_BOX, G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET
(XfburnDeviceBoxClass, device_changed),
+ NULL, NULL,
g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
+ g_object_class_install_property (object_class, PROP_SHOW_WRITERS_ONLY,
+ g_param_spec_boolean ("show-writers-only",
_("Show writers only"),
+ _("Show writers
only"), FALSE, G_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_SHOW_SPEED_SELECTION,
+ g_param_spec_boolean
("show-speed-selection", _("Show speed selection"),
+ _("Show speed
selection list and refresh button"),
+ FALSE,
G_PARAM_READWRITE));
+}
+
+static void
+xfburn_device_box_init (XfburnDeviceBox * box)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (box);
+
+ GtkWidget *label, *img, *button;
+ GList *device = NULL;
+ gint i;
+
+ /* devices */
+ priv->combo_device = gtk_combo_box_new_text ();
+ gtk_widget_show (priv->combo_device);
+ gtk_box_pack_start (GTK_BOX (box), 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);
+
+ g_signal_connect (G_OBJECT (priv->combo_device), "changed", G_CALLBACK
(cb_combo_device_changed), box);
+
+ /* speed */
+ priv->hbox_speed_selection = gtk_hbox_new (FALSE, 0);
+ gtk_widget_show (priv->hbox_speed_selection);
+ gtk_box_pack_start (GTK_BOX (box), priv->hbox_speed_selection, FALSE, FALSE,
BORDER);
+
+ label = gtk_label_new_with_mnemonic (_("_Speed :"));
+ gtk_widget_show (label);
+ gtk_box_pack_start (GTK_BOX (priv->hbox_speed_selection), label, FALSE,
FALSE, BORDER);
+
+ priv->combo_speed = gtk_combo_box_new_text ();
+ gtk_widget_show (priv->combo_speed);
+ gtk_box_pack_start (GTK_BOX (priv->hbox_speed_selection), priv->combo_speed,
TRUE, TRUE, BORDER);
+
+ for (i = 2; i <= 52; i += 2) {
+ gchar *str = NULL;
+
+ 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 (priv->hbox_speed_selection), button, FALSE,
FALSE, 0);
+}
+
+static void
+xfburn_device_box_get_property (GObject *object, guint prop_id, GValue *value,
GParamSpec *pspec)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_SHOW_WRITERS_ONLY:
+ g_value_set_boolean (value, priv->show_writers_only);
+ break;
+ case PROP_SHOW_SPEED_SELECTION:
+ g_value_set_boolean (value, priv->show_speed_selection);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+xfburn_device_box_set_property (GObject *object, guint prop_id, const GValue
*value, GParamSpec *pspec)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_SHOW_WRITERS_ONLY:
+ priv->show_writers_only = g_value_get_boolean (value);
+ break;
+ case PROP_SHOW_SPEED_SELECTION:
+ priv->show_speed_selection = g_value_get_boolean (value);
+ if (priv->show_speed_selection)
+ gtk_widget_show (priv->hbox_speed_selection);
+ else
+ gtk_widget_hide (priv->hbox_speed_selection);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+/*************/
+/* internals */
+/*************/
+static void
+cb_combo_device_changed (GtkComboBox *combo, XfburnDeviceBox *box)
+{
+ gchar *device_name = NULL;
+
+ gtk_combo_box_get_active_text (combo);
+
+ g_signal_emit (G_OBJECT (box), signals[DEVICE_CHANGED], 0, device_name);
+
+ g_free (device_name);
+}
+
+/******************/
+/* public methods */
+/******************/
+GtkWidget *
+xfburn_device_box_new (gboolean show_writers_only, gboolean
show_speed_selection)
+{
+ GtkWidget *obj;
+
+ obj = g_object_new (xfburn_device_box_get_type (), "show-writers-only",
show_writers_only,
+ "show-speed-selection", show_speed_selection, NULL);
+
+ return obj;
+}
+
+gchar *
+xfburn_device_box_get_selected (XfburnDeviceBox *box)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (box);
+
+ return gtk_combo_box_get_active_text (GTK_COMBO_BOX (priv->combo_device));
+}
+
+XfburnDevice *
+xfburn_device_box_get_selected_device (XfburnDeviceBox *box)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (box);
+ gchar *device_name = NULL;
+ XfburnDevice * device = NULL;
+
+ device_name = gtk_combo_box_get_active_text (GTK_COMBO_BOX
(priv->combo_device));
+ device = xfburn_device_lookup_by_name (device_name);
+ g_free (device_name);
+
+ return device;
+}
+
+gchar *
+xfburn_device_box_get_speed (XfburnDeviceBox *box)
+{
+ XfburnDeviceBoxPrivate *priv = XFBURN_DEVICE_BOX_GET_PRIVATE (box);
+
+ g_return_val_if_fail (priv->show_speed_selection == TRUE, NULL);
+ if (priv->show_speed_selection)
+ return gtk_combo_box_get_active_text (GTK_COMBO_BOX (priv->combo_speed));
+ else
+ return NULL;
+}
Property changes on: xfburn/trunk/xfburn/xfburn-device-box.c
___________________________________________________________________
Name: svn:keywords
+ Id
Added: xfburn/trunk/xfburn/xfburn-device-box.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.h (rev 0)
+++ xfburn/trunk/xfburn/xfburn-device-box.h 2006-08-10 13:14:41 UTC (rev
22704)
@@ -0,0 +1,61 @@
+/* $Id$ */
+/*
+ * Copyright (c) 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_DEVICE_BOX_H__
+#define __XFBURN_DEVICE_BOX_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <gtk/gtk.h>
+
+#include "xfburn-global.h"
+
+G_BEGIN_DECLS
+#define XFBURN_TYPE_DEVICE_BOX (xfburn_device_box_get_type ())
+#define XFBURN_DEVICE_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),
XFBURN_TYPE_DEVICE_BOX, XfburnDeviceBox))
+#define XFBURN_DEVICE_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),
XFBURN_TYPE_DEVICE_BOX, XfburnDeviceBoxClass))
+#define XFBURN_IS_DEVICE_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj),
XFBURN_TYPE_DEVICE_BOX))
+#define XFBURN_IS_DEVICE_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass),
XFBURN_TYPE_DEVICE_BOX))
+#define XFBURN_DEVICE_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj),
XFBURN_TYPE_DEVICE_BOX, XfburnDeviceBoxClass))
+
+typedef struct
+{
+ GtkVBox window;
+} XfburnDeviceBox;
+
+typedef struct
+{
+ GtkVBoxClass parent_class;
+
+ void (*device_changed) (XfburnDeviceBox *box, const gchar *selected_device);
+} XfburnDeviceBoxClass;
+
+GtkType xfburn_device_box_get_type (void);
+
+GtkWidget *xfburn_device_box_new (gboolean show_writers_only, gboolean
show_speed_selection);
+
+gchar *xfburn_device_box_get_selected (XfburnDeviceBox *box);
+XfburnDevice *xfburn_device_box_get_selected_device (XfburnDeviceBox *box);
+
+gchar *xfburn_device_box_get_speed (XfburnDeviceBox *box);
+
+G_END_DECLS
+#endif
Property changes on: xfburn/trunk/xfburn/xfburn-device-box.h
___________________________________________________________________
Name: svn:keywords
+ Id
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits