[brasero] Improve button states management and display of help in the project interface



commit 85a56e3060634b1a155b3cf4eca353b39b865855
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Wed Jul 15 15:17:25 2009 +0200

    Improve button states management and display of help in the project interface

 libbrasero-burn/brasero-track-data-cfg.c |    3 +--
 src/brasero-audio-disc.c                 |   11 +++++++++++
 src/brasero-data-disc.c                  |   15 +++++++++++++++
 src/brasero-disc.c                       |   18 ++++++++++++++++++
 src/brasero-disc.h                       |    4 ++++
 src/brasero-project-name.c               |    5 ++---
 src/brasero-project.c                    |   10 ++++++----
 src/brasero-video-disc.c                 |   12 ++++++++++++
 8 files changed, 69 insertions(+), 9 deletions(-)
---
diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
index b89b38a..6c902c8 100644
--- a/libbrasero-burn/brasero-track-data-cfg.c
+++ b/libbrasero-burn/brasero-track-data-cfg.c
@@ -2276,8 +2276,7 @@ brasero_track_data_cfg_get_status (BraseroTrack *track,
 		return BRASERO_BURN_ERR;
 	}
 
-	if (brasero_data_session_get_loaded_medium (BRASERO_DATA_SESSION (priv->tree)) == NULL
-	&& brasero_data_project_is_empty (BRASERO_DATA_PROJECT (priv->tree))) {
+	if (brasero_data_project_is_empty (BRASERO_DATA_PROJECT (priv->tree))) {
 		if (status)
 			brasero_status_set_error (status,
 						  g_error_new (BRASERO_BURN_ERROR,
diff --git a/src/brasero-audio-disc.c b/src/brasero-audio-disc.c
index e9c59af..ff8be03 100644
--- a/src/brasero-audio-disc.c
+++ b/src/brasero-audio-disc.c
@@ -225,12 +225,23 @@ G_DEFINE_TYPE_WITH_CODE (BraseroAudioDisc,
 			 GTK_TYPE_VBOX,
 			 G_IMPLEMENT_INTERFACE (BRASERO_TYPE_DISC,
 					        brasero_audio_disc_iface_disc_init));
+static gboolean
+brasero_audio_disc_is_empty (BraseroDisc *disc)
+{
+	GtkTreeModel *model;
+
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (BRASERO_AUDIO_DISC (disc)->priv->tree));
+	return gtk_tree_model_iter_n_children (model, NULL) != 0;
+}
 
 static void
 brasero_audio_disc_iface_disc_init (BraseroDiscIface *iface)
 {
 	iface->add_uri = brasero_audio_disc_add_uri;
 	iface->delete_selected = brasero_audio_disc_delete_selected;
+
+	iface->is_empty = brasero_audio_disc_is_empty;
+
 	iface->set_session_contents = brasero_audio_disc_set_session_contents;
 	iface->get_selected_uri = brasero_audio_disc_get_selected_uri;
 	iface->get_boundaries = brasero_audio_disc_get_boundaries;
diff --git a/src/brasero-data-disc.c b/src/brasero-data-disc.c
index a1b5822..e802ad8 100644
--- a/src/brasero-data-disc.c
+++ b/src/brasero-data-disc.c
@@ -2336,11 +2336,26 @@ brasero_data_disc_finalize (GObject *object)
 	G_OBJECT_CLASS (brasero_data_disc_parent_class)->finalize (object);
 }
 
+static gboolean
+brasero_data_disc_is_empty (BraseroDisc *disc)
+{
+	BraseroDataDiscPrivate *priv;
+	GtkTreeModel *model;
+
+	priv = BRASERO_DATA_DISC_PRIVATE (disc);
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree));
+	if(!model)
+		return FALSE;
+
+	return gtk_tree_model_iter_n_children (model, NULL) != 0;
+}
+
 static void
 brasero_data_disc_iface_disc_init (BraseroDiscIface *iface)
 {
 	iface->add_uri = brasero_data_disc_add_uri;
 	iface->delete_selected = brasero_data_disc_delete_selected;
+	iface->is_empty = brasero_data_disc_is_empty;
 	iface->clear = brasero_data_disc_clear;
 	iface->set_session_contents = brasero_data_disc_set_session_contents;
 	iface->get_selected_uri = brasero_data_disc_get_selected_uri;
diff --git a/src/brasero-disc.c b/src/brasero-disc.c
index 5f9e84e..6e8011d 100644
--- a/src/brasero-disc.c
+++ b/src/brasero-disc.c
@@ -203,6 +203,24 @@ brasero_disc_add_ui (BraseroDisc *disc, GtkUIManager *manager, GtkWidget *messag
 	return 0;
 }
 
+gboolean
+brasero_disc_is_empty (BraseroDisc *disc)
+{
+	BraseroDiscIface *iface;
+
+	if (!disc)
+		return 0;
+
+	g_return_val_if_fail (BRASERO_IS_DISC (disc), 0);
+
+	iface = BRASERO_DISC_GET_IFACE (disc);
+	if (iface->is_empty)
+		return (* iface->is_empty) (disc);
+
+	return FALSE;
+
+}
+
 void
 brasero_disc_selection_changed (BraseroDisc *disc)
 {
diff --git a/src/brasero-disc.h b/src/brasero-disc.h
index 60516b6..afcc8f1 100644
--- a/src/brasero-disc.h
+++ b/src/brasero-disc.h
@@ -80,6 +80,7 @@ struct _BraseroDiscIface {
 	BraseroDiscResult	(*add_uri)		(BraseroDisc *disc,
 							 const gchar *uri);
 
+	gboolean		(*is_empty)		(BraseroDisc *disc);
 	gboolean		(*get_selected_uri)	(BraseroDisc *disc,
 							 gchar **uri);
 	gboolean		(*get_boundaries)	(BraseroDisc *disc,
@@ -127,6 +128,9 @@ BraseroDiscResult
 brasero_disc_set_session_contents (BraseroDisc *disc,
 				   BraseroBurnSession *session);
 
+gboolean
+brasero_disc_is_empty (BraseroDisc *disc);
+
 void
 brasero_disc_selection_changed (BraseroDisc *disc);
 
diff --git a/src/brasero-project-name.c b/src/brasero-project-name.c
index 9fe234b..29b49a6 100644
--- a/src/brasero-project-name.c
+++ b/src/brasero-project-name.c
@@ -94,7 +94,7 @@ brasero_project_name_icon_update (BraseroProjectName *self,
 
 	gtk_entry_set_icon_from_pixbuf (GTK_ENTRY (self),
 					GTK_ENTRY_ICON_PRIMARY,
-					NULL);	
+					NULL);
 	gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self),
 					   GTK_ENTRY_ICON_PRIMARY,
 					   NULL);
@@ -176,8 +176,6 @@ brasero_project_name_icon_button_clicked (BraseroProjectName *project,
 	if (!track)
 		return;
 
-	filename = brasero_track_data_cfg_get_icon_path (track);
-
 	chooser = gtk_file_chooser_dialog_new (_("Medium Icon"),
 					       GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (project))),
 					       GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -198,6 +196,7 @@ brasero_project_name_icon_button_clicked (BraseroProjectName *project,
 
 	gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter);
 
+	filename = brasero_track_data_cfg_get_icon_path (track);
 	if (filename)
 		gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (chooser), filename);
 
diff --git a/src/brasero-project.c b/src/brasero-project.c
index c9b48ac..847e6ba 100644
--- a/src/brasero-project.c
+++ b/src/brasero-project.c
@@ -350,8 +350,8 @@ brasero_project_set_remove_button_state (BraseroProject *project)
 	gboolean sensitive;
 
 	sensitive = (project->priv->has_focus &&
-		    !project->priv->empty &&
-		     project->priv->selected_uris);
+	             project->priv->selected_uris &&
+		    !brasero_disc_is_empty (BRASERO_DISC (project->priv->current)));
 
 	action = gtk_action_group_get_action (project->priv->project_group, "DeleteProject");
 	gtk_action_set_sensitive (action, sensitive);
@@ -825,7 +825,7 @@ brasero_project_update_controls (BraseroProject *project)
 	brasero_project_set_add_button_state (project);
 
 	action = gtk_action_group_get_action (project->priv->project_group, "DeleteAll");
-	gtk_action_set_sensitive (action, (project->priv->empty == FALSE));
+	gtk_action_set_sensitive (action, (brasero_disc_is_empty (BRASERO_DISC (project->priv->current))));
 }
 
 static void
@@ -980,7 +980,6 @@ brasero_project_is_valid (BraseroSessionCfg *session,
 	}
 	else if (valid == BRASERO_SESSION_EMPTY) {
 		project->priv->empty = TRUE;
-		gtk_notebook_set_current_page (GTK_NOTEBOOK (project->priv->help), 1);
 	}
 	else if (valid == BRASERO_SESSION_NO_OUTPUT) {
 		brasero_notify_message_add (BRASERO_NOTIFY (project->priv->message),
@@ -1021,6 +1020,9 @@ brasero_project_is_valid (BraseroSessionCfg *session,
 		project->priv->empty = FALSE;
 		project->priv->oversized = FALSE;
 	}
+
+	gtk_notebook_set_current_page (GTK_NOTEBOOK (project->priv->help),
+	                               brasero_disc_is_empty (BRASERO_DISC (project->priv->current))? 0:1);
 }
 
 static void
diff --git a/src/brasero-video-disc.c b/src/brasero-video-disc.c
index 45de598..c23d837 100644
--- a/src/brasero-video-disc.c
+++ b/src/brasero-video-disc.c
@@ -1352,12 +1352,24 @@ brasero_video_disc_set_session_contents (BraseroDisc *self,
 	return BRASERO_DISC_OK;
 }
 
+static gboolean
+brasero_video_disc_is_empty (BraseroDisc *disc)
+{
+	BraseroVideoDiscPrivate *priv;
+	GtkTreeModel *model;
+
+	priv = BRASERO_VIDEO_DISC_PRIVATE (disc);
+	model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->tree));
+	return gtk_tree_model_iter_n_children (model, NULL) != 0;
+}
+
 static void
 brasero_video_disc_iface_disc_init (BraseroDiscIface *iface)
 {
 	iface->add_uri = brasero_video_disc_add_uri;
 	iface->delete_selected = brasero_video_disc_delete_selected;
 
+	iface->is_empty = brasero_video_disc_is_empty;
 	iface->set_session_contents = brasero_video_disc_set_session_contents;
 
 	iface->get_selected_uri = brasero_video_disc_get_selected_uri;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]