[Goodies-commits] r4574 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Tue Apr 15 00:21:58 CEST 2008
Author: squisher
Date: 2008-04-14 22:21:57 +0000 (Mon, 14 Apr 2008)
New Revision: 4574
Modified:
xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
xfburn/trunk/xfburn/xfburn-device-box.c
xfburn/trunk/xfburn/xfburn-device-box.h
Log:
Adding new signal for a refresh to the device box class to be able to en/disable the burn botton
Modified: xfburn/trunk/xfburn/xfburn-burn-image-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-burn-image-dialog.c 2008-04-14 20:28:15 UTC (rev 4573)
+++ xfburn/trunk/xfburn/xfburn-burn-image-dialog.c 2008-04-14 22:21:57 UTC (rev 4574)
@@ -58,6 +58,9 @@
GtkWidget *check_eject;
GtkWidget *check_burnfree;
GtkWidget *check_dummy;
+
+ GtkWidget *burn_button;
+
ThreadBurnIsoParams *params;
} XfburnBurnImageDialogPrivate;
@@ -67,6 +70,7 @@
void burn_image_dialog_error (XfburnBurnImageDialog * dialog, const gchar * msg_error);
static void cb_device_changed (XfburnDeviceBox *box, XfburnDevice *device, XfburnBurnImageDialog * dialog);
+static void cb_disc_refreshed (XfburnDeviceBox *box, XfburnDevice *device, XfburnBurnImageDialog * dialog);
static void cb_dialog_response (XfburnBurnImageDialog * dialog, gint response_id, gpointer user_data);
static gboolean check_media (XfburnBurnImageDialog * dialog, ThreadBurnIsoParams *params, struct burn_drive *drive, struct burn_write_opts * burn_options);
static void cb_clicked_ok (GtkButton * button, gpointer user_data);
@@ -120,6 +124,8 @@
GtkWidget *button;
XfburnDevice *device;
+ gboolean valid_disc;
+
gtk_window_set_title (GTK_WINDOW (obj), _("Burn image"));
gtk_window_set_destroy_with_parent (GTK_WINDOW (obj), TRUE);
icon = gtk_widget_render_icon (GTK_WIDGET (obj), XFBURN_STOCK_BURN_CD, GTK_ICON_SIZE_DIALOG, NULL);
@@ -179,16 +185,19 @@
gtk_widget_show (button);
gtk_dialog_add_action_widget (GTK_DIALOG (obj), button, GTK_RESPONSE_CANCEL);
- button = xfce_create_mixed_button ("xfburn-burn-cd", _("_Burn image"));
- gtk_widget_show (button);
- g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_clicked_ok), obj);
- gtk_container_add (GTK_CONTAINER( GTK_DIALOG(obj)->action_area), button);
+ priv->burn_button = xfce_create_mixed_button ("xfburn-burn-cd", _("_Burn image"));
+ g_object_get (G_OBJECT (priv->device_box), "get-disc-status", &valid_disc, NULL);
+ gtk_widget_set_sensitive (priv->burn_button, valid_disc);
+ gtk_widget_show (priv->burn_button);
+ g_signal_connect (G_OBJECT (priv->burn_button), "clicked", G_CALLBACK (cb_clicked_ok), obj);
+ gtk_container_add (GTK_CONTAINER( GTK_DIALOG(obj)->action_area), priv->burn_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);
+ GTK_WIDGET_SET_FLAGS (priv->burn_button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_focus (priv->burn_button);
+ gtk_widget_grab_default (priv->burn_button);
g_signal_connect (G_OBJECT (priv->device_box), "device-changed", G_CALLBACK (cb_device_changed), obj);
+ g_signal_connect (G_OBJECT (priv->device_box), "disc-refreshed", G_CALLBACK (cb_disc_refreshed), obj);
g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK (cb_dialog_response), obj);
device = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX (priv->device_box));
@@ -440,6 +449,16 @@
}
static void
+cb_disc_refreshed (XfburnDeviceBox *box, XfburnDevice *device, XfburnBurnImageDialog * dialog)
+{
+ XfburnBurnImageDialogPrivate *priv = XFBURN_BURN_IMAGE_DIALOG_GET_PRIVATE (dialog);
+ gboolean valid_disc;
+
+ g_object_get (G_OBJECT (priv->device_box), "get-disc-status", &valid_disc, NULL);
+ gtk_widget_set_sensitive (priv->burn_button, valid_disc);
+}
+
+static void
cb_dialog_response (XfburnBurnImageDialog * dialog, gint response_id, gpointer user_data)
{
Modified: xfburn/trunk/xfburn/xfburn-device-box.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.c 2008-04-14 20:28:15 UTC (rev 4573)
+++ xfburn/trunk/xfburn/xfburn-device-box.c 2008-04-14 22:21:57 UTC (rev 4574)
@@ -31,6 +31,7 @@
enum {
DEVICE_CHANGED,
+ DISC_REFRESHED,
LAST_SIGNAL,
};
@@ -39,6 +40,7 @@
PROP_SHOW_WRITERS_ONLY,
PROP_SHOW_SPEED_SELECTION,
PROP_SHOW_MODE_SELECTION,
+ PROP_GET_DISC_STATUS,
};
enum {
@@ -65,6 +67,7 @@
gboolean show_writers_only;
gboolean show_speed_selection;
gboolean show_mode_selection;
+ gboolean valid_disc;
GtkWidget *combo_device;
@@ -135,7 +138,12 @@
G_STRUCT_OFFSET (XfburnDeviceBoxClass, device_changed),
NULL, NULL, g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING);
+ signals[DISC_REFRESHED] = g_signal_new ("disc-refreshed", XFBURN_TYPE_DEVICE_BOX, G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (XfburnDeviceBoxClass, disc_refreshed),
+ 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));
@@ -147,6 +155,10 @@
g_param_spec_boolean ("show-mode-selection", _("Show mode selection"),
_("Show mode selection combo"),
FALSE, G_PARAM_READWRITE));
+ g_object_class_install_property (object_class, PROP_GET_DISC_STATUS,
+ g_param_spec_boolean ("get-disc-status", _("Get disc status"),
+ _("Get the status of the disc in the drive"),
+ FALSE, G_PARAM_READABLE));
}
static void
@@ -254,6 +266,9 @@
case PROP_SHOW_MODE_SELECTION:
g_value_set_boolean (value, priv->show_mode_selection);
break;
+ case PROP_GET_DISC_STATUS:
+ g_value_set_boolean (value, priv->valid_disc);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -301,8 +316,11 @@
gtk_list_store_clear (GTK_LIST_STORE (model));
+ priv->valid_disc = (el != NULL);
+ gtk_widget_set_sensitive (priv->combo_speed, priv->valid_disc);
+
if (el == NULL) {
- gtk_label_set_markup (GTK_LABEL(priv->status_label), _("<span weight=\"bold\">No writable disk in drive</span>"));
+ gtk_label_set_markup (GTK_LABEL(priv->status_label), _("<span weight=\"bold\" foreground=\"darkred\" stretch=\"semiexpanded\">Please insert a writeable disc!</span>"));
return;
} else {
gtk_label_set_text (GTK_LABEL(priv->status_label), "");
@@ -374,6 +392,7 @@
xfburn_device_refresh_supported_speeds (device);
fill_combo_speed (box, device);
+ g_signal_emit (G_OBJECT (box), signals[DISC_REFRESHED], 0, device);
}
static void
Modified: xfburn/trunk/xfburn/xfburn-device-box.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-box.h 2008-04-14 20:28:15 UTC (rev 4573)
+++ xfburn/trunk/xfburn/xfburn-device-box.h 2008-04-14 22:21:57 UTC (rev 4574)
@@ -47,6 +47,7 @@
GtkVBoxClass parent_class;
void (*device_changed) (XfburnDeviceBox *box, XfburnDevice *device);
+ void (*disc_refreshed) (XfburnDeviceBox *box, XfburnDevice *device);
} XfburnDeviceBoxClass;
typedef enum
More information about the Goodies-commits
mailing list