brasero r1330 - in trunk: . src
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1330 - in trunk: . src
- Date: Tue, 30 Sep 2008 16:13:41 +0000 (UTC)
Author: philippr
Date: Tue Sep 30 16:13:41 2008
New Revision: 1330
URL: http://svn.gnome.org/viewvc/brasero?rev=1330&view=rev
Log:
Added a message when the input is a protected disc
* src/brasero-burn-options.c (brasero_burn_options_valid_media_cb):
* src/brasero-session-cfg.c (brasero_session_cfg_update),
(brasero_session_cfg_check):
* src/brasero-session-cfg.h:
* src/burn-caps.c (brasero_caps_find_link_for_input),
(brasero_caps_has_active_input), (brasero_burn_caps_is_input),
(brasero_burn_caps_has_capability):
* src/burn-caps.h:
Modified:
trunk/ChangeLog
trunk/src/brasero-burn-options.c
trunk/src/brasero-session-cfg.c
trunk/src/brasero-session-cfg.h
trunk/src/burn-caps.c
trunk/src/burn-caps.h
Modified: trunk/src/brasero-burn-options.c
==============================================================================
--- trunk/src/brasero-burn-options.c (original)
+++ trunk/src/brasero-burn-options.c Tue Sep 30 16:13:41 2008
@@ -277,10 +277,22 @@
BRASERO_NOTIFY_CONTEXT_SIZE);
}
}
+ else if (valid == BRASERO_SESSION_DISC_PROTECTED) {
+ GtkWidget *message;
+
+ if (priv->message_input) {
+ gtk_widget_show (priv->message_input);
+ message = brasero_notify_message_add (BRASERO_NOTIFY (priv->message_input),
+ _("Please, insert a disc that is not copy protected."),
+ _("Such a medium can't be copied without the proper plugins."),
+ -1,
+ BRASERO_NOTIFY_CONTEXT_SIZE);
+ }
+ }
else if (valid == BRASERO_SESSION_NOT_SUPPORTED) {
brasero_notify_message_add (BRASERO_NOTIFY (priv->message_output),
- _("Please, replace the disc with a recordable CD or DVD."),
- _("The medium is not writable with the current set of plugins."),
+ _("Please, replace the disc with a supported CD or DVD."),
+ _("It is not possible to write with the current set of plugins."),
-1,
BRASERO_NOTIFY_CONTEXT_SIZE);
}
Modified: trunk/src/brasero-session-cfg.c
==============================================================================
--- trunk/src/brasero-session-cfg.c (original)
+++ trunk/src/brasero-session-cfg.c Tue Sep 30 16:13:41 2008
@@ -495,10 +495,19 @@
result = brasero_burn_caps_is_session_supported (priv->caps, BRASERO_BURN_SESSION (self));
if (result != BRASERO_BURN_OK) {
- g_signal_emit (self,
- session_cfg_signals [IS_VALID_SIGNAL],
- 0,
- BRASERO_SESSION_NOT_SUPPORTED);
+ /* This is a special case */
+ if (source.type == BRASERO_TRACK_TYPE_DISC
+ && (source.subtype.media & BRASERO_MEDIUM_PROTECTED)
+ && brasero_burn_caps_has_capability (priv->caps, &source) != BRASERO_BURN_OK)
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_DISC_PROTECTED);
+ else
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_NOT_SUPPORTED);
return;
}
@@ -544,6 +553,7 @@
{
BraseroSessionCfgPrivate *priv;
BraseroBurnResult result;
+ BraseroTrackType source = {0,};
BraseroDrive *burner;
priv = BRASERO_SESSION_CFG_PRIVATE (self);
@@ -553,6 +563,37 @@
priv->configuring = TRUE;
+ /* make sure there is a source */
+ brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), &source);
+ if (source.type == BRASERO_TRACK_TYPE_NONE) {
+ priv->configuring = FALSE;
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_NOT_SUPPORTED);
+ return;
+ }
+
+ if (source.type == BRASERO_TRACK_TYPE_DISC
+ && source.subtype.media == BRASERO_MEDIUM_NONE) {
+ priv->configuring = FALSE;
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_NO_INPUT_MEDIUM);
+ return;
+ }
+
+ if (source.type == BRASERO_TRACK_TYPE_IMAGE
+ && source.subtype.img_format == BRASERO_IMAGE_FORMAT_NONE) {
+ priv->configuring = FALSE;
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_NO_INPUT_IMAGE);
+ return;
+ }
+
burner = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (self));
if (!burner) {
priv->configuring = FALSE;
@@ -575,10 +616,19 @@
result = brasero_burn_caps_is_session_supported (priv->caps, BRASERO_BURN_SESSION (self));
if (result != BRASERO_BURN_OK) {
- g_signal_emit (self,
- session_cfg_signals [IS_VALID_SIGNAL],
- 0,
- BRASERO_SESSION_NOT_SUPPORTED);
+ /* This is a special case */
+ if (source.type == BRASERO_TRACK_TYPE_DISC
+ && (source.subtype.media & BRASERO_MEDIUM_PROTECTED)
+ && brasero_burn_caps_has_capability (priv->caps, &source) != BRASERO_BURN_OK)
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_DISC_PROTECTED);
+ else
+ g_signal_emit (self,
+ session_cfg_signals [IS_VALID_SIGNAL],
+ 0,
+ BRASERO_SESSION_NOT_SUPPORTED);
return;
}
Modified: trunk/src/brasero-session-cfg.h
==============================================================================
--- trunk/src/brasero-session-cfg.h (original)
+++ trunk/src/brasero-session-cfg.h Tue Sep 30 16:13:41 2008
@@ -71,9 +71,10 @@
BRASERO_SESSION_UNKNOWN_IMAGE,
BRASERO_SESSION_NO_INPUT_MEDIUM,
BRASERO_SESSION_NO_OUTPUT,
- BRASERO_SESSION_NOT_SUPPORTED,
BRASERO_SESSION_INSUFFICIENT_SPACE,
- BRASERO_SESSION_OVERBURN_NECESSARY
+ BRASERO_SESSION_OVERBURN_NECESSARY,
+ BRASERO_SESSION_NOT_SUPPORTED,
+ BRASERO_SESSION_DISC_PROTECTED
} BraseroSessionError;
/**
Modified: trunk/src/burn-caps.c
==============================================================================
--- trunk/src/burn-caps.c (original)
+++ trunk/src/burn-caps.c Tue Sep 30 16:13:41 2008
@@ -2292,6 +2292,82 @@
return BRASERO_IMAGE_FORMAT_NONE;
}
+static BraseroCapsLink *
+brasero_caps_find_link_for_input (BraseroCaps *caps,
+ BraseroCaps *input)
+{
+ GSList *links;
+
+ for (links = caps->links; links; links = links->next) {
+ BraseroCapsLink *link;
+
+ link = links->data;
+ if (link->caps == input)
+ return link;
+ }
+
+ return NULL;
+}
+
+static gboolean
+brasero_caps_has_active_input (BraseroCaps *caps,
+ BraseroCaps *input)
+{
+ GSList *links;
+
+ for (links = caps->links; links; links = links->next) {
+ BraseroCapsLink *link;
+
+ link = links->data;
+ if (link->caps != input)
+ continue;
+
+ if (brasero_caps_link_active (link))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean
+brasero_burn_caps_is_input (BraseroBurnCaps *self,
+ BraseroCaps *input)
+{
+ GSList *iter;
+
+ for (iter = self->priv->caps_list; iter; iter = iter->next) {
+ BraseroCaps *tmp;
+
+ tmp = iter->data;
+ if (tmp == input)
+ continue;
+
+ if (brasero_caps_has_active_input (tmp, input))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+BraseroBurnResult
+brasero_burn_caps_has_capability (BraseroBurnCaps *self,
+ BraseroTrackType *type)
+{
+ GSList *iter;
+
+ for (iter = self->priv->caps_list; iter; iter = iter->next) {
+ BraseroCaps *caps;
+
+ caps = iter->data;
+
+ if (brasero_caps_is_compatible_type (caps, type)
+ && brasero_burn_caps_is_input (self, caps))
+ return BRASERO_BURN_OK;
+ }
+
+ return BRASERO_BURN_ERR;
+}
+
static BraseroPluginIOFlag
brasero_caps_get_flags (BraseroCaps *caps,
BraseroBurnFlag session_flags,
@@ -3616,23 +3692,6 @@
* these functions are to create links
*/
-static BraseroCapsLink *
-brasero_caps_find_link_for_input (BraseroCaps *caps,
- BraseroCaps *input)
-{
- GSList *links;
-
- for (links = caps->links; links; links = links->next) {
- BraseroCapsLink *link;
-
- link = links->data;
- if (link->caps == input)
- return link;
- }
-
- return NULL;
-}
-
static void
brasero_caps_create_links (BraseroCaps *output,
GSList *inputs,
Modified: trunk/src/burn-caps.h
==============================================================================
--- trunk/src/burn-caps.h (original)
+++ trunk/src/burn-caps.h Tue Sep 30 16:13:41 2008
@@ -98,6 +98,10 @@
*/
BraseroBurnResult
+brasero_burn_caps_has_capability (BraseroBurnCaps *caps,
+ BraseroTrackType *type);
+
+BraseroBurnResult
brasero_burn_caps_can_blank (BraseroBurnCaps *caps,
BraseroBurnSession *session);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]