[Goodies-commits] r4857 - xfburn/trunk/xfburn

David Mohr squisher at xfce.org
Thu May 29 04:48:00 CEST 2008


Author: squisher
Date: 2008-05-29 02:48:00 +0000 (Thu, 29 May 2008)
New Revision: 4857

Modified:
   xfburn/trunk/xfburn/xfburn-blank-dialog.c
Log:
Connecting blank dialog to device box refresh signal

Modified: xfburn/trunk/xfburn/xfburn-blank-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-blank-dialog.c	2008-05-28 22:16:03 UTC (rev 4856)
+++ xfburn/trunk/xfburn/xfburn-blank-dialog.c	2008-05-29 02:48:00 UTC (rev 4857)
@@ -39,6 +39,7 @@
 {
   GtkWidget *device_box;
   GtkWidget *combo_type;
+  GtkWidget *button_blank;
   
   GtkWidget *check_eject;
 } XfburnBlankDialogPrivate;
@@ -84,11 +85,13 @@
 static void xfburn_blank_dialog_init (XfburnBlankDialog * sp);
 
 static gboolean is_valid_blank_mode (XfburnDevice *device, XfburnBlankMode mode);
+static void fill_combo_mode (XfburnBlankDialog *dialog);
 //static GList * get_valid_blank_modes (XfburnDevice *device);
 static XfburnBlankMode get_selected_mode (XfburnBlankDialogPrivate *priv);
 static gboolean thread_blank_perform_blank (ThreadBlankParams * params, struct burn_drive_info *drive_info);
 static void thread_blank (ThreadBlankParams * params);
 static void xfburn_blank_dialog_response_cb (XfburnBlankDialog * dialog, gint response_id, gpointer user_data);
+static void cb_disc_refreshed (GtkWidget *device_box, XfburnDevice *device, XfburnBlankDialog * dialog);
 
 static XfceTitledDialogClass *parent_class = NULL;
 
@@ -136,7 +139,6 @@
   GtkWidget *vbox;
   GtkWidget *button;
 
-  XfburnBlankMode mode = XFBURN_BLANK_FAST;
   GtkListStore *store = NULL;
   GtkCellRenderer *cell;
   
@@ -149,6 +151,7 @@
 
   /* devices list */
   priv->device_box = xfburn_device_box_new (SHOW_CDRW_WRITERS | BLANK_MODE);
+  g_signal_connect (G_OBJECT (priv->device_box), "disc-refreshed", G_CALLBACK (cb_disc_refreshed), obj);
   gtk_widget_show (priv->device_box);
 
   frame = xfce_create_framebox_with_content (_("Burning device"), priv->device_box);
@@ -162,16 +165,6 @@
   cell = gtk_cell_renderer_text_new ();
   gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->combo_type), cell, TRUE);
   gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->combo_type), cell, "text", BLANK_COMBO_NAME_COLUMN, NULL);
-  while (mode < XFBURN_BLANK_MODE_LAST) {
-    if (is_valid_blank_mode (NULL, mode)) {
-      GtkTreeIter iter;
-
-      gtk_list_store_append (store, &iter);
-      gtk_list_store_set (store, &iter, BLANK_COMBO_NAME_COLUMN, blank_mode_names[mode], BLANK_COMBO_MODE_COLUMN, mode, -1);
-    }
-    mode++;
-  }
-  gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_type), 0);
   gtk_widget_show (priv->combo_type);
 
   frame = xfce_create_framebox_with_content (_("Blank mode"), priv->combo_type);
@@ -202,10 +195,35 @@
   GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
   gtk_widget_grab_focus (button);
   gtk_widget_grab_default (button);
+  priv->button_blank = button;
 
   g_signal_connect (G_OBJECT (obj), "response", G_CALLBACK (xfburn_blank_dialog_response_cb), obj);
+  fill_combo_mode (obj);
 }
 
+static void fill_combo_mode (XfburnBlankDialog *dialog)
+{
+  XfburnBlankDialogPrivate *priv = XFBURN_BLANK_DIALOG_GET_PRIVATE (dialog);
+  XfburnBlankMode mode = XFBURN_BLANK_FAST;
+  GtkTreeModel *model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->combo_type));
+  int n = 0;
+
+  gtk_list_store_clear (GTK_LIST_STORE (model));
+
+  while (mode < XFBURN_BLANK_MODE_LAST) {
+    if (is_valid_blank_mode (NULL, mode)) {
+      GtkTreeIter iter;
+
+      gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+      gtk_list_store_set (GTK_LIST_STORE (model), &iter, BLANK_COMBO_NAME_COLUMN, blank_mode_names[mode], BLANK_COMBO_MODE_COLUMN, mode, -1);
+      n++;
+    }
+    mode++;
+  }
+  gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combo_type), 0);
+  gtk_widget_set_sensitive (priv->button_blank, n > 0);
+}
+
 static gboolean is_valid_blank_mode (XfburnDevice *device, XfburnBlankMode mode)
 {
   int profile_no = xfburn_device_list_get_profile_no ();
@@ -443,7 +461,15 @@
   }
 }
    
+static void
+cb_disc_refreshed (GtkWidget *device_box, XfburnDevice *device, XfburnBlankDialog * dialog)
+{
+  //XfburnBlankDialogPrivate *priv = XFBURN_BLANK_DIALOG_GET_PRIVATE (dialog);
 
+  fill_combo_mode (dialog);
+}
+
+
 /* public */
 GtkWidget *
 xfburn_blank_dialog_new ()




More information about the Goodies-commits mailing list