[brasero] Fix build for nautilus extension
- From: Philippe Rouquier <philippr src gnome org>
- To: svn-commits-list gnome org
- Subject: [brasero] Fix build for nautilus extension
- Date: Sun, 21 Jun 2009 17:07:58 -0400 (EDT)
commit 52c41cbbc6ae05a54ffaa0328a3abd33dfe320d8
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date: Sun Jun 21 13:32:16 2009 +0200
Fix build for nautilus extension
Rework brasero-project-name.c to make it rely entirely on the BraseroBurnSession object
nautilus/nautilus-burn-extension.c | 15 ++++--
src/brasero-project-name.c | 82 ++++++++++++++++++++++++-----------
src/brasero-project-name.h | 7 ---
src/brasero-project.c | 20 ---------
4 files changed, 66 insertions(+), 58 deletions(-)
---
diff --git a/nautilus/nautilus-burn-extension.c b/nautilus/nautilus-burn-extension.c
index 12f1593..38c1e66 100644
--- a/nautilus/nautilus-burn-extension.c
+++ b/nautilus/nautilus-burn-extension.c
@@ -211,14 +211,18 @@ write_activate (GtkWindow *toplevel)
track = brasero_track_data_cfg_new ();
brasero_track_data_cfg_add (track, BURN_URI, NULL);
+ session = brasero_session_cfg_new ();
+ brasero_burn_session_add_track (BRASERO_BURN_SESSION (session),
+ BRASERO_TRACK (track),
+ NULL);
+ g_object_unref (track);
+
+ /* Add option widget */
box = gtk_vbox_new (FALSE, 6);
gtk_widget_show (box);
/* add name widget here to set the label of the volume */
- name_options = brasero_project_name_new ();
- brasero_project_name_set_type (BRASERO_PROJECT_NAME (name_options),
- BRASERO_PROJECT_TYPE_DATA);
-
+ name_options = brasero_project_name_new (BRASERO_BURN_SESSION (session));
string = g_strdup_printf ("<b>%s</b>", _("Disc name"));
options = brasero_utils_pack_properties (string,
name_options,
@@ -258,7 +262,8 @@ launch_brasero_on_window_track (BraseroTrack *track,
/* create a session and add track */
session = brasero_session_cfg_new ();
brasero_burn_session_add_track (BRASERO_BURN_SESSION (session),
- BRASERO_TRACK (track));
+ BRASERO_TRACK (track),
+ NULL);
launch_brasero_on_window_session (session, options, window);
g_object_unref (session);
diff --git a/src/brasero-project-name.c b/src/brasero-project-name.c
index 714a127..3feb276 100644
--- a/src/brasero-project-name.c
+++ b/src/brasero-project-name.c
@@ -44,7 +44,6 @@ struct _BraseroProjectNamePrivate
BraseroBurnSession *session;
BraseroProjectType type;
- BraseroMedium *medium;
guint label_modified:1;
};
@@ -248,14 +247,27 @@ brasero_project_name_get_default_label (BraseroProjectName *self)
{
time_t t;
gchar buffer [128];
+ BraseroBurnFlag flags;
gchar *title_str = NULL;
BraseroProjectNamePrivate *priv;
priv = BRASERO_PROJECT_NAME_PRIVATE (self);
- if (priv->medium) {
- title_str = brasero_volume_get_name (BRASERO_VOLUME (priv->medium));
- goto end;
+ if (priv->type == BRASERO_PROJECT_TYPE_INVALID)
+ return g_strdup ("");
+
+ flags = brasero_burn_session_get_flags (priv->session);
+ if (flags & BRASERO_BURN_FLAG_MERGE) {
+ BraseroMedium *medium;
+ BraseroDrive *burner;
+
+ burner = brasero_burn_session_get_burner (priv->session);
+ medium = brasero_drive_get_medium (burner);
+
+ if (medium) {
+ title_str = brasero_volume_get_name (BRASERO_VOLUME (medium));
+ goto end;
+ }
}
t = time (NULL);
@@ -394,22 +406,36 @@ brasero_project_name_label_changed (GtkEditable *editable,
0);
}
-void
-brasero_project_name_set_type (BraseroProjectName *self,
- BraseroProjectType type)
+static void
+brasero_project_name_set_type (BraseroProjectName *self)
{
BraseroProjectNamePrivate *priv;
+ BraseroTrackType *track_type;
+ BraseroProjectType type;
gchar *title_str = NULL;
priv = BRASERO_PROJECT_NAME_PRIVATE (self);
- priv->type = type;
+ track_type = brasero_track_type_new ();
+ brasero_burn_session_get_input_type (priv->session, track_type);
- if (priv->medium) {
- g_object_unref (priv->medium);
- priv->medium = NULL;
+ if (brasero_track_type_get_has_data (track_type))
+ type = BRASERO_PROJECT_TYPE_DATA;
+ else if (brasero_track_type_get_has_stream (track_type)) {
+ if (BRASERO_STREAM_FORMAT_HAS_VIDEO (brasero_track_type_get_stream_format (track_type)))
+ type = BRASERO_PROJECT_TYPE_VIDEO;
+ else
+ type = BRASERO_PROJECT_TYPE_AUDIO;
}
+ else
+ type = BRASERO_PROJECT_TYPE_INVALID;
+
+ brasero_track_type_free (track_type);
+
+ if (priv->type == type)
+ return;
+ priv->type = type;
priv->label_modified = FALSE;
title_str = brasero_project_name_get_default_label (self);
@@ -421,23 +447,14 @@ brasero_project_name_set_type (BraseroProjectName *self,
g_free (title_str);
}
-void
-brasero_project_name_set_multisession_medium (BraseroProjectName *self,
- BraseroMedium *medium)
+static void
+brasero_project_name_flags_changed (BraseroBurnSession *session,
+ BraseroProjectName *self)
{
BraseroProjectNamePrivate *priv;
gchar *title_str;
priv = BRASERO_PROJECT_NAME_PRIVATE (self);
- if (priv->medium) {
- g_object_unref (priv->medium);
- priv->medium = NULL;
- }
-
- priv->medium = medium;
-
- if (medium)
- g_object_ref (medium);
if (priv->label_modified)
return;
@@ -512,6 +529,8 @@ brasero_project_name_session_changed (BraseroProjectName *self)
}
brasero_track_type_free (type);
+
+ brasero_project_name_set_type (self);
}
static void
@@ -558,6 +577,10 @@ brasero_project_name_set_property (GObject *object,
"track-removed",
G_CALLBACK (brasero_project_name_track_removed),
object);
+ g_signal_connect (g_value_get_object (value),
+ "flags-changed",
+ G_CALLBACK (brasero_project_name_flags_changed),
+ object);
break;
default:
@@ -591,9 +614,16 @@ brasero_project_name_finalize (GObject *object)
BraseroProjectNamePrivate *priv;
priv = BRASERO_PROJECT_NAME_PRIVATE (object);
- if (priv->medium) {
- g_object_unref (priv->medium);
- priv->medium = NULL;
+ if (priv->session) {
+ g_signal_handlers_disconnect_by_func (priv->session,
+ brasero_project_name_track_added,
+ object);
+ g_signal_handlers_disconnect_by_func (priv->session,
+ brasero_project_name_track_removed,
+ object);
+ g_signal_handlers_disconnect_by_func (priv->session,
+ brasero_project_name_flags_changed,
+ object);
}
G_OBJECT_CLASS (brasero_project_name_parent_class)->finalize (object);
diff --git a/src/brasero-project-name.h b/src/brasero-project-name.h
index 720feb2..a6d87c9 100644
--- a/src/brasero-project-name.h
+++ b/src/brasero-project-name.h
@@ -55,13 +55,6 @@ GType brasero_project_name_get_type (void) G_GNUC_CONST;
GtkWidget *
brasero_project_name_new (BraseroBurnSession *session);
-void
-brasero_project_name_set_type (BraseroProjectName *self,
- BraseroProjectType type);
-void
-brasero_project_name_set_multisession_medium (BraseroProjectName *self,
- BraseroMedium *medium);
-
G_END_DECLS
#endif /* _BRASERO_PROJECT_NAME_H_ */
diff --git a/src/brasero-project.c b/src/brasero-project.c
index acec0e7..37da45c 100644
--- a/src/brasero-project.c
+++ b/src/brasero-project.c
@@ -1011,20 +1011,6 @@ brasero_project_is_valid (BraseroSessionCfg *session,
}
static void
-brasero_project_flags_changed_cb (BraseroBurnSession *session,
- BraseroProject *project)
-{
- BraseroBurnFlag flags;
-
- flags = brasero_burn_session_get_flags (session);
-
- /* see if the project name should be updated */
- if (flags & BRASERO_BURN_FLAG_MERGE)
- brasero_project_name_set_multisession_medium (BRASERO_PROJECT_NAME (project->priv->name_display),
- brasero_data_disc_get_loaded_medium (BRASERO_DATA_DISC (project->priv->current)));
-}
-
-static void
brasero_project_init (BraseroProject *obj)
{
GtkSizeGroup *size_group;
@@ -1054,10 +1040,6 @@ brasero_project_init (BraseroProject *obj)
G_CALLBACK (brasero_project_is_valid),
obj);
g_signal_connect (obj->priv->session,
- "flags-changed",
- G_CALLBACK (brasero_project_flags_changed_cb),
- obj);
- g_signal_connect (obj->priv->session,
"track-added",
G_CALLBACK (brasero_project_track_added),
obj);
@@ -1604,8 +1586,6 @@ brasero_project_switch (BraseroProject *project, BraseroProjectType type)
gtk_action_set_sensitive (action, TRUE);
action = gtk_action_group_get_action (project->priv->project_group, "Save");
gtk_action_set_sensitive (action, FALSE);
-
- brasero_project_name_set_type (BRASERO_PROJECT_NAME (project->priv->name_display), type);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]