static void
brasero_medium_selection_get_property (GObject *object,
                                       guint prop_id,
                                       GValue *value,
                                       GParamSpec *pspec)
{
    BraseroMediumSelectionPrivate *priv;

    g_return_if_fail (BRASERO_IS_MEDIUM_SELECTION (object));

    priv = BRASERO_MEDIUM_SELECTION_PRIVATE (object);

    switch (prop_id)
    {
    case PROP_MEDIA_TYPE:
        g_value_set_uint (value, priv->type);
        break;
    case PROP_MEDIUM:
        g_value_set_object (value, brasero_medium_selection_get_active (BRASERO_MEDIUM_SELECTION (object)));
        break;
    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
        break;
    }
}
BraseroMedium *
brasero_tool_dialog_get_medium (BraseroToolDialog *self)
{
	BraseroToolDialogPrivate *priv;

	priv = BRASERO_TOOL_DIALOG_PRIVATE (self);
	return brasero_medium_selection_get_active (BRASERO_MEDIUM_SELECTION (priv->selector));
}
static void
brasero_drive_selection_set_tooltip (BraseroMediumSelection *self)
{
    BraseroMedium *medium;
    gchar *tooltip;

    medium = brasero_medium_selection_get_active (self);
    if (medium) {
        tooltip = brasero_medium_get_tooltip (medium);
        g_object_unref (medium);
    }
    else
        tooltip = NULL;

    gtk_widget_set_tooltip_text (GTK_WIDGET (self), tooltip);
    g_free (tooltip);
}
static gboolean
brasero_tool_dialog_run (BraseroToolDialog *self)
{
	BraseroToolDialogPrivate *priv;
	BraseroToolDialogClass *klass;
	gboolean close = FALSE;
	BraseroMedium *medium;
	BraseroMedia media;
	GdkCursor *cursor;
	GdkWindow *window;

	priv = BRASERO_TOOL_DIALOG_PRIVATE (self);
	medium = brasero_medium_selection_get_active (BRASERO_MEDIUM_SELECTION (priv->selector));

	/* set up */
	gtk_widget_set_sensitive (priv->upper_box, FALSE);
	gtk_widget_set_sensitive (priv->lower_box, TRUE);
	gtk_widget_set_sensitive (GTK_WIDGET (priv->button), FALSE);

	cursor = gdk_cursor_new (GDK_WATCH);
	window = gtk_widget_get_window (GTK_WIDGET (self));
	gdk_window_set_cursor (window, cursor);
	g_object_unref (cursor);

	gtk_button_set_label (GTK_BUTTON (priv->cancel), GTK_STOCK_CANCEL);

	/* check the contents of the drive */
	media = brasero_medium_get_status (medium);
	if (media == BRASERO_MEDIUM_NONE) {
		brasero_tool_dialog_no_media (self);
		gtk_widget_set_sensitive (GTK_WIDGET (priv->button), TRUE);
		goto end;
	}
	else if (media == BRASERO_MEDIUM_UNSUPPORTED) {
		/* error out */
		gtk_widget_set_sensitive (GTK_WIDGET (priv->button), TRUE);
		brasero_tool_dialog_media_error (self);
		goto end;
	}
	else if (media == BRASERO_MEDIUM_BUSY) {
		gtk_widget_set_sensitive (GTK_WIDGET (priv->button), TRUE);
		brasero_tool_dialog_media_busy (self);
		goto end;
	}

	priv->running = TRUE;

	klass = BRASERO_TOOL_DIALOG_GET_CLASS (self);
	if (klass->activate)
		close = klass->activate (self, medium);

	priv->running = FALSE;

	if (medium)
		g_object_unref (medium);

	if (close)
		return TRUE;

end:

	gdk_window_set_cursor (window, NULL);
	gtk_button_set_label (GTK_BUTTON (priv->cancel), GTK_STOCK_CLOSE);

	gtk_widget_set_sensitive (priv->upper_box, TRUE);
	gtk_widget_set_sensitive (priv->lower_box, FALSE);

	brasero_burn_progress_reset (BRASERO_BURN_PROGRESS (priv->progress));

	return FALSE;
}