[brasero] Virtualize two methods (add_fs and rm_fs) of BraseroTrackData
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Subject: [brasero] Virtualize two methods (add_fs and rm_fs) of BraseroTrackData
- Date: Mon, 18 May 2009 11:01:53 -0400 (EDT)
commit 7070a87c70d275454291b494282c96b2667e4e53
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Mon May 18 09:06:47 2009 +0200
Virtualize two methods (add_fs and rm_fs) of BraseroTrackData
---
libbrasero-burn/brasero-track-data-cfg.c | 32 +++++++++++++++
libbrasero-burn/brasero-track-data.c | 64 +++++++++++++++++++++++-------
libbrasero-burn/brasero-track-data.h | 6 +++
src/brasero-utils.h | 4 --
4 files changed, 87 insertions(+), 19 deletions(-)
diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
index 979e712..7096361 100644
--- a/libbrasero-burn/brasero-track-data-cfg.c
+++ b/libbrasero-burn/brasero-track-data-cfg.c
@@ -52,6 +52,9 @@
typedef struct _BraseroTrackDataCfgPrivate BraseroTrackDataCfgPrivate;
struct _BraseroTrackDataCfgPrivate
{
+ BraseroImageFS *forced_fs;
+ BraseroImageFS *banned_fs;
+
BraseroDataTreeModel *tree;
guint stamp;
@@ -1825,6 +1828,30 @@ brasero_track_data_cfg_set_source (BraseroTrackData *track,
return BRASERO_BURN_NOT_READY;
}
+static BraseroBurnResult
+brasero_track_data_cfg_add_fs (BraseroTrackData *track,
+ BraseroImageFS fstype)
+{
+ BraseroTrackDataCfgPrivate *priv;
+
+ priv = BRASERO_TRACK_DATA_CFG_PRIVATE (track);
+ priv->forced |= fstype;
+ priv->banned &= ~(fstype);
+ return BRASERO_BURN_OK;
+}
+
+static BraseroBurnResult
+brasero_track_data_cfg_rm_fs (BraseroTrackData *track,
+ BraseroImageFS fstype)
+{
+ BraseroTrackDataCfgPrivate *priv;
+
+ priv = BRASERO_TRACK_DATA_CFG_PRIVATE (track);
+ priv->banned |= fstype;
+ priv->forced &= ~(fstype);
+ return BRASERO_BURN_OK;
+}
+
static BraseroImageFS
brasero_track_data_cfg_get_fs (BraseroTrackData *track)
{
@@ -1839,6 +1866,8 @@ brasero_track_data_cfg_get_fs (BraseroTrackData *track)
stats = BRASERO_FILE_NODE_STATS (root);
fs_type = BRASERO_IMAGE_FS_ISO;
+ fs_type |= priv->forced;
+
if (brasero_data_project_has_symlinks (BRASERO_DATA_PROJECT (priv->tree)))
fs_type |= BRASERO_IMAGE_FS_SYMLINK;
else {
@@ -1859,6 +1888,7 @@ brasero_track_data_cfg_get_fs (BraseroTrackData *track)
if (stats->num_deep != 0)
fs_type |= BRASERO_IMAGE_ISO_FS_DEEP_DIRECTORY;
+ fs_type &= ~(priv->banned);
return fs_type;
}
@@ -2465,6 +2495,8 @@ brasero_track_data_cfg_class_init (BraseroTrackDataCfgClass *klass)
track_class->get_status = brasero_track_data_cfg_get_status;
parent_class->set_source = brasero_track_data_cfg_set_source;
+ parent_class->set_source = brasero_track_data_cfg_add_fs;
+ parent_class->set_source = brasero_track_data_cfg_rm_fs;
parent_class->get_fs = brasero_track_data_cfg_get_fs;
parent_class->get_grafts = brasero_track_data_cfg_get_grafts;
diff --git a/libbrasero-burn/brasero-track-data.c b/libbrasero-burn/brasero-track-data.c
index 1ee5332..87e7bce 100644
--- a/libbrasero-burn/brasero-track-data.c
+++ b/libbrasero-burn/brasero-track-data.c
@@ -121,44 +121,76 @@ brasero_track_data_set_source (BraseroTrackData *track,
return klass->set_source (track, grafts, unreadable);
}
+static BraseroBurnResult
+brasero_track_data_add_fs_real (BraseroTrackData *track,
+ BraseroImageFS fstype)
+{
+ BraseroTrackDataPrivate *priv;
+
+ priv = BRASERO_TRACK_DATA_PRIVATE (track);
+ priv->fs_type |= fstype;
+ return BRASERO_BURN_OK;
+}
+
BraseroBurnResult
brasero_track_data_add_fs (BraseroTrackData *track,
BraseroImageFS fstype)
{
- BraseroTrackDataPrivate *priv;
+ BraseroTrackDataClass *klass;
+ BraseroImageFS fs_before;
+ BraseroBurnResult result;
g_return_val_if_fail (BRASERO_IS_TRACK_DATA (track), BRASERO_BURN_NOT_SUPPORTED);
- priv = BRASERO_TRACK_DATA_PRIVATE (track);
+ fs_before = brasero_track_data_get_fs (track);
+ klass = BRASERO_TRACK_DATA_GET_CLASS (track);
+ if (!klass->add_fs)
+ return BRASERO_BURN_NOT_SUPPORTED;
- fstype |= priv->fs_type;
- if (fstype == priv->fs_type)
- return BRASERO_BURN_OK;
+ result = klass->add_fs (track, fstype);
+ if (result != BRASERO_BURN_OK)
+ return result;
- priv->fs_type = fstype;
- brasero_track_changed (BRASERO_TRACK (track));
+ if (fs_before != brasero_track_data_get_fs (track))
+ brasero_track_changed (BRASERO_TRACK (track));
return BRASERO_BURN_OK;
}
+static BraseroBurnResult
+brasero_track_data_rm_fs_real (BraseroTrackData *track,
+ BraseroImageFS fstype)
+{
+ BraseroTrackDataPrivate *priv;
+
+ priv = BRASERO_TRACK_DATA_PRIVATE (track);
+ priv->fs_type &= ~(fstype);
+ return BRASERO_BURN_OK;
+}
+
BraseroBurnResult
brasero_track_data_rm_fs (BraseroTrackData *track,
BraseroImageFS fstype)
{
- BraseroTrackDataPrivate *priv;
- BraseroImageFS new_fstype;
+ BraseroTrackDataClass *klass;
+ BraseroImageFS fs_before;
+ BraseroBurnResult result;
g_return_val_if_fail (BRASERO_IS_TRACK_DATA (track), BRASERO_BURN_NOT_SUPPORTED);
priv = BRASERO_TRACK_DATA_PRIVATE (track);
- new_fstype = priv->fs_type;
- new_fstype &= ~fstype;
- if (new_fstype == priv->fs_type)
- return BRASERO_BURN_OK;
+ fs_before = brasero_track_data_get_fs (track);
+ klass = BRASERO_TRACK_DATA_GET_CLASS (track);
+ if (!klass->rm_fs);
+ return BRASERO_BURN_NOT_SUPPORTED;
- priv->fs_type = new_fstype;
- brasero_track_changed (BRASERO_TRACK (track));
+ result = klass->rm_fs (track, fstype);
+ if (result != BRASERO_BURN_OK)
+ return result;
+
+ if (fs_before != brasero_track_data_get_fs (track))
+ brasero_track_changed (BRASERO_TRACK (track));
return BRASERO_BURN_OK;
}
@@ -402,6 +434,8 @@ brasero_track_data_class_init (BraseroTrackDataClass *klass)
track_class->get_size = brasero_track_data_get_size;
track_data_class->set_source = brasero_track_data_set_source_real;
+ track_data_class->add_fs = brasero_track_data_add_fs_real;
+ track_data_class->rm_fs = brasero_track_data_rm_fs_real;
track_data_class->get_fs = brasero_track_data_get_fs_real;
track_data_class->get_grafts = brasero_track_data_get_grafts_real;
diff --git a/libbrasero-burn/brasero-track-data.h b/libbrasero-burn/brasero-track-data.h
index 3ace6cc..a418239 100644
--- a/libbrasero-burn/brasero-track-data.h
+++ b/libbrasero-burn/brasero-track-data.h
@@ -68,6 +68,12 @@ struct _BraseroTrackDataClass
BraseroBurnResult (*set_source) (BraseroTrackData *track,
GSList *grafts,
GSList *unreadable);
+ BraseroBurnResult (*add_fs) (BraseroTrackData *track,
+ BraseroImageFS fstype);
+
+ BraseroBurnResult (*rm_fs) (BraseroTrackData *track,
+ BraseroImageFS fstype);
+
BraseroImageFS (*get_fs) (BraseroTrackData *track);
GSList* (*get_grafts) (BraseroTrackData *track);
GSList* (*get_excluded) (BraseroTrackData *track);
diff --git a/src/brasero-utils.h b/src/brasero-utils.h
index 69ab1f7..71cde36 100644
--- a/src/brasero-utils.h
+++ b/src/brasero-utils.h
@@ -55,10 +55,6 @@ brasero_utils_launch_app (GtkWidget *widget,
GSList *list);
gboolean
-brasero_utils_selection_may_have_uri (GdkAtom *atoms,
- gint n_atoms);
-
-gboolean
brasero_clipboard_selection_may_have_uri (GdkAtom *atoms,
gint n_atoms);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]