[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