[anjuta] git: Don't disable the OK button the the Remote delete dialog



commit 7985ee5efe4acf1754bbd095b0bbed7b98e74851
Author: James Liggett <jrliggett cox net>
Date:   Tue Jul 28 18:21:13 2009 -0700

    git: Don't disable the OK button the the Remote delete dialog
    
    Instead, make OK always active, and default. Pop up an error message if there are no branches

 plugins/git/anjuta-git.ui              |    5 +++--
 plugins/git/git-delete-remote-dialog.c |   28 ++++------------------------
 plugins/git/git-ui-utils.c             |   27 +++++++++++++++++++++++++++
 plugins/git/git-ui-utils.h             |    1 +
 4 files changed, 35 insertions(+), 26 deletions(-)
---
diff --git a/plugins/git/anjuta-git.ui b/plugins/git/anjuta-git.ui
index 769887a..82bafe5 100644
--- a/plugins/git/anjuta-git.ui
+++ b/plugins/git/anjuta-git.ui
@@ -3882,9 +3882,10 @@
               <object class="GtkButton" id="delete_remote_ok_button">
                 <property name="label">gtk-ok</property>
                 <property name="visible">True</property>
-                <property name="sensitive">False</property>
                 <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
+                <property name="can_default">True</property>
+                <property name="has_default">True</property>
+                <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
               </object>
               <packing>
diff --git a/plugins/git/git-delete-remote-dialog.c b/plugins/git/git-delete-remote-dialog.c
index 723ce1b..6b9be4c 100644
--- a/plugins/git/git-delete-remote-dialog.c
+++ b/plugins/git/git-delete-remote-dialog.c
@@ -41,6 +41,9 @@ on_delete_remote_dialog_response (GtkDialog *dialog, gint response_id,
 		branch_combo_model = GTK_TREE_MODEL (gtk_builder_get_object (data->bxml,
 		                                                             "branch_combo_model"));
 
+		if (!git_check_branches (GTK_COMBO_BOX (delete_remote_branch_combo)))
+			return;
+
 		gtk_combo_box_get_active_iter (GTK_COMBO_BOX (delete_remote_branch_combo), 
 									   &iter);
 		gtk_tree_model_get (branch_combo_model, &iter, 0, &branch, -1);
@@ -89,29 +92,6 @@ on_remote_list_command_data_arrived (AnjutaCommand *command,
 }
 
 static void
-on_remote_list_command_finished (AnjutaCommand *command, guint return_code,
-								 GtkBuilder *bxml)
-{
-	GtkWidget *delete_remote_ok_button;
-	GtkWidget *delete_remote_combo;
-	GtkTreeModel *branch_combo_model;
-	GtkTreeIter iter;
-	
-	delete_remote_ok_button = GTK_WIDGET (gtk_builder_get_object (bxml, 
-																  "delete_remote_ok_button"));
-	delete_remote_combo = GTK_WIDGET (gtk_builder_get_object (bxml,
-															  "delete_remote_combo"));
-	branch_combo_model = GTK_TREE_MODEL (gtk_builder_get_object (bxml,
-	                                                             "branch_combo_model"));
-	
-	if (gtk_tree_model_get_iter_first (branch_combo_model, &iter))
-	{
-		gtk_widget_set_sensitive (delete_remote_ok_button, TRUE);
-		gtk_combo_box_set_active (GTK_COMBO_BOX (delete_remote_combo), 0);
-	}
-}
-
-static void
 delete_remote_dialog (Git *plugin)
 {
 	GtkBuilder *bxml;
@@ -148,7 +128,7 @@ delete_remote_dialog (Git *plugin)
 					  branch_combo_model);
 	
 	g_signal_connect (G_OBJECT (list_command), "command-finished", 
-					  G_CALLBACK (on_remote_list_command_finished), 
+					  G_CALLBACK (on_git_command_finished), 
 					  bxml);
 	
 	anjuta_command_start (ANJUTA_COMMAND (list_command));
diff --git a/plugins/git/git-ui-utils.c b/plugins/git/git-ui-utils.c
index 89028f9..31aa4d5 100644
--- a/plugins/git/git-ui-utils.c
+++ b/plugins/git/git-ui-utils.c
@@ -139,6 +139,33 @@ git_check_input (GtkWidget *parent, GtkWidget *widget, const gchar *input,
 }
 
 gboolean
+git_check_branches (GtkComboBox *combo_box)
+{
+	gint ret;
+	GtkWidget *parent;
+	GtkWidget *dialog;
+	
+	ret = (gtk_combo_box_get_active (combo_box) > 0);
+
+	if (!ret)
+	{
+		parent = gtk_widget_get_toplevel (GTK_WIDGET (combo_box));
+		dialog = gtk_message_dialog_new (GTK_WINDOW (parent),
+										 GTK_DIALOG_DESTROY_WITH_PARENT,
+										 GTK_MESSAGE_WARNING,
+										 GTK_BUTTONS_OK,
+		                                 "%s",
+										 _("There are no branches available."));
+		
+		gtk_dialog_run (GTK_DIALOG (dialog));
+		gtk_widget_destroy (dialog);
+		
+	}
+
+	return ret;
+}
+
+gboolean
 git_get_selected_stash (GtkTreeSelection *selection, gchar **stash)
 {
 	gboolean ret;
diff --git a/plugins/git/git-ui-utils.h b/plugins/git/git-ui-utils.h
index 5bf916f..79e9357 100644
--- a/plugins/git/git-ui-utils.h
+++ b/plugins/git/git-ui-utils.h
@@ -56,6 +56,7 @@ void git_create_message_view (Git* plugin);
 gboolean git_check_input (GtkWidget *parent, GtkWidget *widget,  
 						  const gchar *input, const gchar *error_message);
 gboolean git_get_selected_stash (GtkTreeSelection *selection, gchar **stash);
+gboolean git_check_branches (GtkComboBox *combo_box);
 gchar *git_get_log_from_textview (GtkWidget* textview);
 guint git_status_bar_progress_pulse (Git *plugin, gchar *text);
 void git_clear_status_bar_progress_pulse (guint timer_id);



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