371
* Get a key to save parameters through GConf
375
brasero_session_cfg_get_gconf_key (BraseroSessionCfg *self,
376
BraseroMedium *medium,
377
const gchar *property)
379
BraseroTrackType *type;
385
if (brasero_medium_get_status (medium) == BRASERO_MEDIUM_NONE)
388
drive = brasero_medium_get_drive (medium);
390
/* make sure display_name doesn't contain any forbidden characters */
391
if (!brasero_drive_is_fake (drive)) {
394
tmp = brasero_drive_get_display_name (drive);
395
display_name = gconf_escape_key (tmp, -1);
399
display_name = g_strdup ("File");
401
display_name = display_name ? display_name : g_strdup ("");
403
disc_type = gconf_escape_key (brasero_medium_get_type_string (medium), -1);
405
g_free (display_name);
409
type = brasero_track_type_new ();
410
brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), type);
411
if (brasero_track_type_get_has_medium (type))
412
key = g_strdup_printf ("%s/%s/disc_%s/%s",
413
BRASERO_DRIVE_PROPERTIES_KEY,
417
else if (brasero_track_type_get_has_data (type))
418
key = g_strdup_printf ("%s/%s/data_%s/%s",
419
BRASERO_DRIVE_PROPERTIES_KEY,
423
else if (brasero_track_type_get_has_image (type))
424
key = g_strdup_printf ("%s/%s/image_%s/%s",
425
BRASERO_DRIVE_PROPERTIES_KEY,
429
else if (brasero_track_type_get_has_stream (type))
430
key = g_strdup_printf ("%s/%s/audio_%s/%s",
431
BRASERO_DRIVE_PROPERTIES_KEY,
436
key = g_strdup_printf ("%s/%s/none_%s/%s",
437
BRASERO_DRIVE_PROPERTIES_KEY,
442
brasero_track_type_free (type);
443
g_free (display_name);
449
365
* brasero_session_cfg_get_error:
450
366
* @cfg: a #BraseroSessionCfg
507
brasero_session_cfg_save_drive_flags (BraseroSessionCfg *self,
508
BraseroMedium *medium)
510
BraseroSessionCfgPrivate *priv;
511
BraseroBurnFlag flags;
515
priv = BRASERO_SESSION_CFG_PRIVATE (self);
517
client = gconf_client_get_default ();
518
key = brasero_session_cfg_get_gconf_key (self, medium, "flags");
520
g_object_unref (client);
524
flags = gconf_client_get_int (client, key, NULL);
525
flags &= ~BRASERO_DEST_SAVED_FLAGS;
526
flags |= (brasero_burn_session_get_flags (BRASERO_BURN_SESSION (self)) & BRASERO_DEST_SAVED_FLAGS);
527
gconf_client_set_int (client, key, flags, NULL);
532
brasero_session_cfg_save_drive_properties (BraseroSessionCfg *self,
533
BraseroMedium *medium)
535
BraseroSessionCfgPrivate *priv;
540
priv = BRASERO_SESSION_CFG_PRIVATE (self);
542
brasero_session_cfg_save_drive_flags (self, medium);
544
client = gconf_client_get_default ();
546
rate = brasero_burn_session_get_rate (BRASERO_BURN_SESSION (self));
547
key = brasero_session_cfg_get_gconf_key (self, medium, "speed");
549
g_object_unref (client);
553
gconf_client_set_int (client, key, rate / 1000, NULL);
556
g_object_unref (client);
560
423
brasero_session_cfg_set_drive_properties_default_flags (BraseroSessionCfg *self)
562
425
BraseroMedia media;
753
616
brasero_session_cfg_set_drive_properties_default_flags (self);
755
/* allow flag changed signal again */
756
priv->inhibit_flag_sig = FALSE;
758
/* These are always supported and better be set.
759
* Set them now to trigger the "flags-changed" signal */
618
/* These are always supported and better be set. */
760
619
brasero_burn_session_add_flag (BRASERO_BURN_SESSION (self),
761
620
BRASERO_BURN_FLAG_CHECK_SIZE|
762
621
BRASERO_BURN_FLAG_NOGRACE);
794
brasero_session_cfg_set_drive_properties (BraseroSessionCfg *self)
796
BraseroSessionCfgPrivate *priv;
797
BraseroTrackType *source;
798
BraseroBurnFlag flags;
799
BraseroMedium *medium;
807
priv = BRASERO_SESSION_CFG_PRIVATE (self);
809
BRASERO_BURN_LOG ("Restoring session properties");
811
/* The next two must work as they were checked earlier */
812
drive = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (self));
813
medium = brasero_drive_get_medium (drive);
814
if (!medium || brasero_medium_get_status (medium) == BRASERO_MEDIUM_NONE) {
815
BRASERO_BURN_LOG ("No media");
819
/* Update/set the rate */
820
client = gconf_client_get_default ();
822
key = brasero_session_cfg_get_gconf_key (self, medium, "speed");
823
value = gconf_client_get_without_default (client, key, NULL);
827
rate = gconf_value_get_int (value) * 1000;
828
gconf_value_free (value);
831
rate = brasero_medium_get_max_write_speed (medium);
833
brasero_burn_session_set_rate (BRASERO_BURN_SESSION (self), rate);
835
/* Set temporary directory
836
* NOTE: BraseroBurnSession can cope with NULL path */
837
key = g_strdup_printf ("%s/tmpdir", BRASERO_DRIVE_PROPERTIES_KEY);
838
path = gconf_client_get_string (client, key, NULL);
841
brasero_burn_session_set_tmpdir (BRASERO_BURN_SESSION (self), path);
844
/* Do the same with the flags.
845
* NOTE: we only save/load PROPERTIES_FLAGS */
846
key = brasero_session_cfg_get_gconf_key (self, medium, "flags");
848
g_object_unref (client);
852
value = gconf_client_get_without_default (client, key, NULL);
855
g_object_unref (client);
857
source = brasero_track_type_new ();
858
brasero_burn_session_get_input_type (BRASERO_BURN_SESSION (self), source);
859
if (brasero_burn_session_same_src_dest_drive (BRASERO_BURN_SESSION (self))) {
862
flags = gconf_value_get_int (value) & BRASERO_DEST_SAVED_FLAGS;
863
gconf_value_free (value);
866
flags = BRASERO_BURN_FLAG_EJECT|
867
BRASERO_BURN_FLAG_BURNPROOF;
869
flags |= BRASERO_BURN_FLAG_BLANK_BEFORE_WRITE|
870
BRASERO_BURN_FLAG_FAST_BLANK;
873
/* Set sound defaults. */
874
flags = BRASERO_BURN_FLAG_EJECT|
875
BRASERO_BURN_FLAG_BURNPROOF;
877
if (brasero_track_type_get_has_data (source)
878
|| brasero_track_type_get_has_medium (source)
879
|| brasero_track_type_get_has_image (source))
880
flags |= BRASERO_BURN_FLAG_NO_TMP_FILES;
883
/* set the saved flags */
884
flags = gconf_value_get_int (value) & BRASERO_DEST_SAVED_FLAGS;
885
gconf_value_free (value);
887
brasero_track_type_free (source);
889
brasero_session_cfg_add_drive_properties_flags (self, flags);
893
653
brasero_session_cfg_check_drive_settings (BraseroSessionCfg *self)
895
655
BraseroSessionCfgPrivate *priv;
1276
1036
/* Special case for video projects */
1277
1037
if (brasero_track_type_get_has_stream (source)
1278
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (source))) {
1038
&& BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (source))) {
1279
1039
/* Only set if it was not already set */
1280
1040
if (brasero_burn_session_tag_lookup (BRASERO_BURN_SESSION (self), BRASERO_VCD_TYPE, NULL) != BRASERO_BURN_OK)
1281
1041
brasero_burn_session_tag_add_int (BRASERO_BURN_SESSION (self),
1353
1113
G_CALLBACK (brasero_session_cfg_session_loaded),
1356
/* when that happens it's mostly because a medium source changed, or
1357
* a new image was set.
1358
* - reload saved flags
1359
* - check if all flags are thereafter supported
1116
/* A track was added:
1117
* - check if all flags are supported
1360
1118
* - check available formats for path
1361
1119
* - set one path */
1120
brasero_session_cfg_check_drive_settings (BRASERO_SESSION_CFG (session));
1362
1121
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1363
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
1379
1137
brasero_session_cfg_session_loaded,
1382
/* when that happens it's mostly because a medium source changed, or
1383
* a new image was set.
1384
* - reload saved flags
1385
* - check if all flags are thereafter supported
1386
* - check available formats for path
1140
/* If there were several tracks and at least one remained there is no
1141
* use checking flags since the source type has not changed anyway.
1142
* If there is no more track, there is no use checking flags anyway. */
1389
1143
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1390
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
1403
1156
/* when that happens it's mostly because a medium source changed, or
1404
1157
* a new image was set.
1405
* - reload saved flags
1406
* - check if all flags are thereafter supported
1158
* - check if all flags are supported
1407
1159
* - check available formats for path
1160
* - set one path if need be */
1161
brasero_session_cfg_check_drive_settings (BRASERO_SESSION_CFG (session));
1410
1162
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1411
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
1453
1204
BRASERO_AUDIO_FORMAT_AC3);
1457
1207
brasero_track_type_free (type);
1459
brasero_session_cfg_save_drive_properties (BRASERO_SESSION_CFG (session),
1462
1209
/* In this case need to :
1464
* - check if all flags are thereafter supported
1210
* - check if all flags are supported
1465
1211
* - for images, set a path if it wasn't already set */
1212
brasero_session_cfg_check_drive_settings (BRASERO_SESSION_CFG (session));
1466
1213
brasero_session_cfg_update (BRASERO_SESSION_CFG (session));
1467
brasero_session_cfg_set_drive_properties (BRASERO_SESSION_CFG (session));
1480
1226
/* In this case we need to check if:
1481
* - new flags are supported or not supported anymore
1482
* - new image types as input/output are supported
1483
* - if the current set of flags/input/output still works */
1484
brasero_session_cfg_update (self);
1227
* - flags are supported or not supported anymore
1228
* - image types as input/output are supported
1229
* - if the current set of input/output still works */
1485
1230
brasero_session_cfg_check_drive_settings (self);
1489
brasero_session_cfg_flags_changed (BraseroBurnSession *session)
1491
BraseroSessionCfgPrivate *priv;
1493
priv = BRASERO_SESSION_CFG_PRIVATE (session);
1497
/* when we update the flags we don't want a
1498
* whole series of "flags-changed" emitted.
1499
* so make sure there is just one at the end */
1500
if (priv->inhibit_flag_sig)
1501
g_signal_stop_emission_by_name (session, "flags-changed");
1231
brasero_session_cfg_update (self);
1553
1282
* Example: After the removal of MULTI, FAST_BLANK
1554
1283
* becomes available again for DVDRW sequential */
1555
1284
brasero_session_cfg_set_drive_properties_default_flags (self);
1557
/* Always save flags */
1558
drive = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (self));
1559
if (drive && brasero_drive_get_medium (drive))
1560
brasero_session_cfg_save_drive_flags (self, brasero_drive_get_medium (drive));
1562
1285
brasero_session_cfg_update (self);
1625
1348
BraseroPluginManager *manager;
1626
1349
BraseroSessionCfgPrivate *priv;
1627
BraseroDrive *drive;
1628
1350
GSList *tracks;
1630
1352
priv = BRASERO_SESSION_CFG_PRIVATE (object);
1632
drive = brasero_burn_session_get_burner (BRASERO_BURN_SESSION (object));
1633
if (drive && brasero_drive_get_medium (drive))
1634
brasero_session_cfg_save_drive_properties (BRASERO_SESSION_CFG (object),
1635
brasero_drive_get_medium (drive));
1637
1354
tracks = brasero_burn_session_get_tracks (BRASERO_BURN_SESSION (object));
1638
1355
for (; tracks; tracks = tracks->next) {
1639
1356
BraseroTrack *track;