[Goodies-commits] r4856 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Thu May 29 00:16:03 CEST 2008
Author: squisher
Date: 2008-05-28 22:16:03 +0000 (Wed, 28 May 2008)
New Revision: 4856
Modified:
xfburn/trunk/xfburn/xfburn-blank-dialog.c
xfburn/trunk/xfburn/xfburn-progress-dialog.c
Log:
Fixing selection of blank mode by putting mode no into the combo box
Modified: xfburn/trunk/xfburn/xfburn-blank-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-blank-dialog.c 2008-05-28 17:19:49 UTC (rev 4855)
+++ xfburn/trunk/xfburn/xfburn-blank-dialog.c 2008-05-28 22:16:03 UTC (rev 4856)
@@ -43,6 +43,9 @@
GtkWidget *check_eject;
} XfburnBlankDialogPrivate;
+/* FIXME: the 128MB comes from cdrskin, but why? Is this really complete? */
+#define XFBURN_FORMAT_COMPLETE_SIZE 128*1024*1024
+
typedef enum {
XFBURN_BLANK_FAST, /* erase w/ fast flag */
XFBURN_BLANK_COMPLETE, /* erase, no flag */
@@ -62,7 +65,11 @@
"Deformat Complete",
};
-#define XFBURN_FORMAT_COMPLETE_SIZE 128*1024*1024
+enum {
+ BLANK_COMBO_NAME_COLUMN,
+ BLANK_COMBO_MODE_COLUMN,
+ BLANK_COMBO_N_COLUMNS,
+};
typedef struct {
GtkWidget *dialog_progress;
@@ -78,6 +85,7 @@
static gboolean is_valid_blank_mode (XfburnDevice *device, XfburnBlankMode mode);
//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);
@@ -129,6 +137,8 @@
GtkWidget *button;
XfburnBlankMode mode = XFBURN_BLANK_FAST;
+ GtkListStore *store = NULL;
+ GtkCellRenderer *cell;
gtk_window_set_title (GTK_WINDOW (obj), _("Blank CD-RW"));
gtk_window_set_destroy_with_parent (GTK_WINDOW (obj), TRUE);
@@ -146,10 +156,19 @@
gtk_box_pack_start (box, frame, FALSE, FALSE, BORDER);
/* blank mode */
- priv->combo_type = gtk_combo_box_new_text ();
+ store = gtk_list_store_new (BLANK_COMBO_N_COLUMNS, G_TYPE_STRING, G_TYPE_INT);
+ priv->combo_type = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store));
+ g_object_unref (store);
+ 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))
- gtk_combo_box_append_text (GTK_COMBO_BOX (priv->combo_type), _(blank_mode_names[mode]));
+ 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);
@@ -191,8 +210,9 @@
{
int profile_no = xfburn_device_list_get_profile_no ();
gboolean erasable = xfburn_device_list_disc_is_erasable ();
+ enum burn_disc_status disc_state = xfburn_device_list_get_disc_status ();
- if (profile_no == 0x14) {
+ if (profile_no == 0x13) {
/* in 0x14 no blanking is needed, we can only deformat */
if (mode == XFBURN_DEFORMAT_FAST || mode == XFBURN_DEFORMAT_COMPLETE)
return TRUE;
@@ -200,10 +220,10 @@
return FALSE;
}
- if (erasable && (mode == XFBURN_BLANK_FAST || mode == XFBURN_BLANK_COMPLETE))
- return TRUE;
+ if (profile_no == 0x14 && (mode == XFBURN_FORMAT_FAST || mode == XFBURN_FORMAT_COMPLETE))
+ return TRUE;
- if (profile_no == 0x13 && (mode == XFBURN_FORMAT_FAST || mode == XFBURN_FORMAT_COMPLETE))
+ if (erasable && (disc_state != BURN_DISC_BLANK) && (mode == XFBURN_BLANK_FAST || mode == XFBURN_BLANK_COMPLETE))
return TRUE;
return FALSE;
@@ -255,7 +275,7 @@
switch (disc_state) {
case BURN_DISC_BLANK:
- if (params->blank_mode <= XFBURN_BLANK_COMPLETE) {
+ if (params->blank_mode == XFBURN_BLANK_FAST || params->blank_mode == XFBURN_BLANK_COMPLETE) {
/* blanking can only be performed on blank discs, format and deformat are allowed to be blank ones */
xfburn_progress_dialog_burning_failed (XFBURN_PROGRESS_DIALOG (dialog_progress), _("The inserted disc is already blank"));
return FALSE;
@@ -287,21 +307,27 @@
switch (params->blank_mode) {
case XFBURN_BLANK_FAST:
+ //DBG ("blank_fast");
burn_disc_erase(drive, 1);
break;
case XFBURN_BLANK_COMPLETE:
+ //DBG ("blank_complete");
burn_disc_erase(drive, 0);
break;
case XFBURN_FORMAT_FAST:
+ //DBG ("format_fast");
burn_disc_format(drive, 0, 0);
break;
case XFBURN_FORMAT_COMPLETE:
+ //DBG ("format_complete");
burn_disc_format(drive, XFBURN_FORMAT_COMPLETE_SIZE, 1);
break;
case XFBURN_DEFORMAT_FAST:
+ //DBG ("deformat_fast");
burn_disc_erase(drive, 1);
break;
case XFBURN_DEFORMAT_COMPLETE:
+ //DBG ("deformat_complete");
burn_disc_erase(drive, 0);
break;
default:
@@ -372,36 +398,34 @@
g_free (params);
}
+static XfburnBlankMode
+get_selected_mode (XfburnBlankDialogPrivate *priv)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ XfburnBlankMode blank_mode;
+ gboolean ret;
+
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->combo_type));
+ ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX (priv->combo_type), &iter);
+ if (ret)
+ gtk_tree_model_get (model, &iter, BLANK_COMBO_MODE_COLUMN, &blank_mode, -1);
+
+ return blank_mode;
+}
+
static void
xfburn_blank_dialog_response_cb (XfburnBlankDialog * dialog, gint response_id, gpointer user_data)
{
if (response_id == GTK_RESPONSE_OK) {
XfburnBlankDialogPrivate *priv = XFBURN_BLANK_DIALOG_GET_PRIVATE (dialog);
XfburnDevice *device;
- XfburnBlankMode blank_mode;
GtkWidget *dialog_progress;
ThreadBlankParams *params = NULL;
device = xfburn_device_box_get_selected_device (XFBURN_DEVICE_BOX (priv->device_box));
- switch (gtk_combo_box_get_active (GTK_COMBO_BOX (priv->combo_type))) {
- case 0:
- blank_mode = XFBURN_BLANK_FAST;
- break;
- case 1:
- blank_mode = XFBURN_BLANK_COMPLETE;
- break;
- case 2:
- blank_mode = XFBURN_FORMAT_FAST;
- break;
- case 3:
- blank_mode = XFBURN_FORMAT_COMPLETE;
- break;
- default:
- DBG ("Invalid blank mode selected, falling back to complete blank");
- blank_mode = XFBURN_BLANK_COMPLETE;
- }
dialog_progress = xfburn_progress_dialog_new (GTK_WINDOW (dialog));
g_object_set (dialog_progress, "animate", TRUE, NULL);
@@ -413,7 +437,7 @@
params = g_new0 (ThreadBlankParams, 1);
params->dialog_progress = dialog_progress;
params->device = device;
- params->blank_mode = blank_mode;
+ params->blank_mode = get_selected_mode (priv);
params->eject = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->check_eject));
g_thread_create ((GThreadFunc) thread_blank, params, FALSE, NULL);
}
Modified: xfburn/trunk/xfburn/xfburn-progress-dialog.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-progress-dialog.c 2008-05-28 17:19:49 UTC (rev 4855)
+++ xfburn/trunk/xfburn/xfburn-progress-dialog.c 2008-05-28 22:16:03 UTC (rev 4856)
@@ -275,7 +275,7 @@
case PROP_ANIMATE:
priv->animate = g_value_get_boolean (value);
priv->ani_index = 0;
- DBG ("Set animate to %d", priv->animate);
+ //DBG ("Set animate to %d", priv->animate);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
More information about the Goodies-commits
mailing list