[anjuta] Add option to use the origin branch to Git Push, Pull, Rebase, and Create Patch Series commands.



commit ebfe4c48026f8361dfeb9b76bd88ad6a48b96517
Author: James Liggett <jrliggett cox net>
Date:   Sun May 10 19:41:00 2009 -0700

    Add option to use the origin branch to Git Push, Pull, Rebase, and Create Patch Series commands.
    
    Since origin is a commonly used branch for these operations, add a checkbox for it to these dialogs.
    It is on by default in Rebase and Create Patch Series.
---
 plugins/git/anjuta-git.glade                 |  106 ++++++++++++++++++++++++--
 plugins/git/git-create-patch-series-dialog.c |   20 +++++-
 plugins/git/git-pull-dialog.c                |   16 ++++-
 plugins/git/git-push-dialog.c                |   81 ++++++++++++--------
 plugins/git/git-rebase-dialog.c              |   20 ++++-
 plugins/git/git-ui-utils.c                   |    6 ++
 plugins/git/git-ui-utils.h                   |    1 +
 7 files changed, 204 insertions(+), 46 deletions(-)

diff --git a/plugins/git/anjuta-git.glade b/plugins/git/anjuta-git.glade
index cd61525..e76623e 100644
--- a/plugins/git/anjuta-git.glade
+++ b/plugins/git/anjuta-git.glade
@@ -2952,8 +2952,31 @@
                 <property name="visible">True</property>
                 <property name="left_padding">12</property>
                 <child>
-                  <widget class="GtkComboBox" id="rebase_branch_combo">
+                  <widget class="GtkVBox" id="vbox1">
                     <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <child>
+                      <widget class="GtkComboBox" id="rebase_branch_combo">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                      </widget>
+                      <packing>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckButton" id="rebase_origin_check">
+                        <property name="label" translatable="yes">Repository origin</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="active">True</property>
+                        <property name="draw_indicator">True</property>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -3635,8 +3658,31 @@
                     <property name="visible">True</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkComboBox" id="patch_series_branch_combo">
+                      <widget class="GtkVBox" id="vbox1">
                         <property name="visible">True</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <widget class="GtkComboBox" id="patch_series_branch_combo">
+                            <property name="visible">True</property>
+                            <property name="sensitive">False</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="patch_series_origin_check">
+                            <property name="label" translatable="yes">Repository origin</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="active">True</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -3816,10 +3862,32 @@
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkEntry" id="pull_url_entry">
+                      <widget class="GtkVBox" id="vbox1">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="width_chars">60</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <widget class="GtkEntry" id="pull_url_entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="width_chars">60</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="pull_origin_check">
+                            <property name="label" translatable="yes">Repositiory origin</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -4037,10 +4105,32 @@
                     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                     <property name="left_padding">12</property>
                     <child>
-                      <widget class="GtkEntry" id="push_url_entry">
+                      <widget class="GtkVBox" id="vbox2">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="width_chars">60</property>
+                        <property name="orientation">vertical</property>
+                        <child>
+                          <widget class="GtkEntry" id="push_url_entry">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">&#x25CF;</property>
+                            <property name="width_chars">60</property>
+                          </widget>
+                          <packing>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkCheckButton" id="push_origin_check">
+                            <property name="label" translatable="yes">Repository origin</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">False</property>
+                            <property name="draw_indicator">True</property>
+                          </widget>
+                          <packing>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
                       </widget>
                     </child>
                   </widget>
diff --git a/plugins/git/git-create-patch-series-dialog.c b/plugins/git/git-create-patch-series-dialog.c
index b2101c8..441b969 100644
--- a/plugins/git/git-create-patch-series-dialog.c
+++ b/plugins/git/git-create-patch-series-dialog.c
@@ -28,6 +28,7 @@ static void
 on_create_patch_series_dialog_response (GtkDialog *dialog, gint response_id, 
 										GitBranchComboData *data)
 {
+	GtkWidget *patch_series_origin_check;
 	GtkWidget *patch_series_branch_combo;
 	GtkWidget *patch_series_file_chooser_button;
 	GtkWidget *patch_series_signoff_check;
@@ -38,6 +39,8 @@ on_create_patch_series_dialog_response (GtkDialog *dialog, gint response_id,
 	
 	if (response_id == GTK_RESPONSE_OK)
 	{	
+		patch_series_origin_check = glade_xml_get_widget (data->gxml, 
+		                                                  "patch_series_origin_check");
 		patch_series_branch_combo = glade_xml_get_widget (data->gxml, 
 														  "patch_series_branch_combo");
 		patch_series_file_chooser_button = glade_xml_get_widget (data->gxml, 
@@ -45,9 +48,15 @@ on_create_patch_series_dialog_response (GtkDialog *dialog, gint response_id,
 		patch_series_signoff_check = glade_xml_get_widget (data->gxml, 
 														   "patch_series_signoff_check");
 		
-		gtk_combo_box_get_active_iter (GTK_COMBO_BOX (patch_series_branch_combo), 
+		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (patch_series_origin_check)))
+		    branch = g_strdup ("origin");
+		else
+		{
+			gtk_combo_box_get_active_iter (GTK_COMBO_BOX (patch_series_branch_combo), 
 									   &iter);
-		branch = git_branch_combo_model_get_branch (data->model, &iter);
+			branch = git_branch_combo_model_get_branch (data->model, &iter);
+		}
+		    
 		output_directory = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (patch_series_file_chooser_button));
 		
 		format_patch_command = git_format_patch_command_new (data->plugin->project_root_directory,
@@ -80,6 +89,7 @@ create_patch_series_dialog (Git *plugin)
 {
 	GladeXML *gxml;
 	GtkWidget *dialog;
+	GtkWidget *patch_series_origin_check;
 	GtkWidget *patch_series_branch_combo;
 	GtkListStore *branch_list_store;
 	GitBranchComboData *data;
@@ -88,6 +98,8 @@ create_patch_series_dialog (Git *plugin)
 	gxml = glade_xml_new (GLADE_FILE, "patch_series_dialog", NULL);
 	
 	dialog = glade_xml_get_widget (gxml, "patch_series_dialog");
+	patch_series_origin_check = glade_xml_get_widget (gxml, 
+	                                                  "patch_series_origin_check");
 	patch_series_branch_combo = glade_xml_get_widget (gxml, 
 													  "patch_series_branch_combo");
 	branch_list_store = git_branch_combo_model_new ();
@@ -116,6 +128,10 @@ create_patch_series_dialog (Git *plugin)
 	g_signal_connect (G_OBJECT (dialog), "response", 
 					  G_CALLBACK (on_create_patch_series_dialog_response), 
 					  data);
+
+	g_signal_connect (G_OBJECT (patch_series_origin_check), "toggled",
+	                  G_CALLBACK (on_git_origin_check_toggled),
+	                  patch_series_branch_combo);
 	
 	gtk_widget_show_all (dialog);
 }
diff --git a/plugins/git/git-pull-dialog.c b/plugins/git/git-pull-dialog.c
index 0962a7c..1b586b9 100644
--- a/plugins/git/git-pull-dialog.c
+++ b/plugins/git/git-pull-dialog.c
@@ -45,6 +45,7 @@ static void
 on_pull_dialog_response (GtkDialog *dialog, gint response_id, 
 						 GitUIData *data)
 {
+	GtkWidget *pull_origin_check;
 	GtkWidget *pull_url_entry;
 	GtkWidget *pull_no_commit_check;
 	GtkWidget *pull_squash_check;
@@ -57,6 +58,8 @@ on_pull_dialog_response (GtkDialog *dialog, gint response_id,
 	
 	if (response_id == GTK_RESPONSE_OK)
 	{	
+		pull_origin_check = glade_xml_get_widget (data->gxml, 
+		                                          "pull_origin_check");
 		pull_url_entry = glade_xml_get_widget (data->gxml, "pull_url_entry");
 		pull_no_commit_check = glade_xml_get_widget (data->gxml, 
 													 "pull_no_commit_check");
@@ -71,7 +74,10 @@ on_pull_dialog_response (GtkDialog *dialog, gint response_id,
 		pull_no_follow_tags_check = glade_xml_get_widget (data->gxml,
 														  "pull_no_follow_tags_check");
 		
-		url = gtk_editable_get_chars (GTK_EDITABLE (pull_url_entry), 0, -1);
+		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (pull_origin_check)))
+		    url = g_strdup ("origin");
+		else
+		    url = gtk_editable_get_chars (GTK_EDITABLE (pull_url_entry), 0, -1);
 		
 		if (!git_check_input (GTK_WIDGET (dialog), pull_url_entry, url,
 							  _("Please enter the URL of the repository to pull" 
@@ -116,15 +122,23 @@ pull_dialog (Git *plugin)
 {
 	GladeXML *gxml;
 	GtkWidget *dialog;
+	GtkWidget *pull_origin_check;
+	GtkWidget *pull_url_entry;
 	GitUIData *data;
 	
 	gxml = glade_xml_new (GLADE_FILE, "pull_dialog", NULL);
 	dialog = glade_xml_get_widget (gxml, "pull_dialog");
+	pull_origin_check = glade_xml_get_widget (gxml, "pull_origin_check");
+	pull_url_entry = glade_xml_get_widget (gxml, "pull_url_entry");
 	data = git_ui_data_new (plugin, gxml);
 	
 	g_signal_connect (G_OBJECT (dialog), "response", 
 					  G_CALLBACK (on_pull_dialog_response), 
 					  data);
+
+	g_signal_connect (G_OBJECT (pull_origin_check), "toggled",
+	                  G_CALLBACK (on_git_origin_check_toggled),
+	                  pull_url_entry);
 	
 	gtk_widget_show_all (dialog);
 }
diff --git a/plugins/git/git-push-dialog.c b/plugins/git/git-push-dialog.c
index 676ac34..e7b324d 100644
--- a/plugins/git/git-push-dialog.c
+++ b/plugins/git/git-push-dialog.c
@@ -45,6 +45,7 @@ static void
 on_push_dialog_response (GtkDialog *dialog, gint response_id, 
 						 GitUIData *data)
 {
+	GtkWidget *push_origin_check;
 	GtkWidget *push_url_entry;
 	GtkWidget *push_all_check;
 	GtkWidget *push_tags_check;
@@ -54,42 +55,50 @@ on_push_dialog_response (GtkDialog *dialog, gint response_id,
 	
 	if (response_id == GTK_RESPONSE_OK)
 	{
+		push_origin_check = glade_xml_get_widget (data->gxml, 
+		                                          "push_origin_check");
 		push_url_entry = glade_xml_get_widget (data->gxml, "push_url_entry");
 		push_all_check = glade_xml_get_widget (data->gxml, "push_all_check");
 		push_tags_check = glade_xml_get_widget (data->gxml, "push_tags_check");
 
-		url = gtk_editable_get_chars (GTK_EDITABLE (push_url_entry), 0, -1);
-		
-		if (git_check_input (GTK_WIDGET (dialog), push_url_entry, url, 
-							 _("Please enter the URL of the repository to push to.")))
+		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (push_origin_check)))
+			url = g_strdup ("origin");
+		else 
 		{
-			push_command = git_push_command_new (data->plugin->project_root_directory,
-												 url,
-												 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (push_all_check)),
-			                                     gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (push_tags_check)));
-			progress_data = git_progress_data_new (data->plugin, _("Git: Pushing..."));
-			
-			g_free (url);
-
-			git_create_message_view (data->plugin);
-			
-
-			g_signal_connect (G_OBJECT (push_command), "data-arrived",
-			                  G_CALLBACK (on_git_command_info_arrived),
-			                  data->plugin);
-
-			g_signal_connect (G_OBJECT (push_command), "progress",
-			                  G_CALLBACK (on_git_command_progress),
-			                  progress_data);
-			
-			g_signal_connect (G_OBJECT (push_command), "command-finished",
-							  G_CALLBACK (on_push_command_finished),
-							  data->plugin);
-			
-			anjuta_command_start (ANJUTA_COMMAND (push_command));
+			url = gtk_editable_get_chars (GTK_EDITABLE (push_url_entry), 0, -1);
 		}
-		else
+
+		if (!git_check_input (GTK_WIDGET (dialog), push_url_entry, url, 
+							  _("Please enter the URL of the repository to push to.")))
+		{
+			g_free (url);
 			return;
+		}
+		
+		push_command = git_push_command_new (data->plugin->project_root_directory,
+		                                     url,
+		                                     gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (push_all_check)),
+		                                     gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (push_tags_check)));
+		progress_data = git_progress_data_new (data->plugin, _("Git: Pushing..."));
+
+		g_free (url);
+
+		git_create_message_view (data->plugin);
+
+
+		g_signal_connect (G_OBJECT (push_command), "data-arrived",
+		                  G_CALLBACK (on_git_command_info_arrived),
+		                  data->plugin);
+
+		g_signal_connect (G_OBJECT (push_command), "progress",
+		                  G_CALLBACK (on_git_command_progress),
+		                  progress_data);
+
+		g_signal_connect (G_OBJECT (push_command), "command-finished",
+		                  G_CALLBACK (on_push_command_finished),
+		                  data->plugin);
+
+		anjuta_command_start (ANJUTA_COMMAND (push_command));
 	}
 	
 	gtk_widget_destroy (GTK_WIDGET (dialog));
@@ -101,17 +110,25 @@ push_dialog (Git *plugin)
 {
 	GladeXML *gxml;
 	GtkWidget *dialog;
+	GtkWidget *push_origin_check;
+	GtkWidget *push_url_entry;
 	GitUIData *data;
 	
 	gxml = glade_xml_new (GLADE_FILE, "push_dialog", NULL);
 	
 	dialog = glade_xml_get_widget (gxml, "push_dialog");
+	push_origin_check = glade_xml_get_widget (gxml, "push_origin_check");
+	push_url_entry = glade_xml_get_widget (gxml, "push_url_entry");
 	
 	data = git_ui_data_new (plugin, gxml);
 
-	g_signal_connect(G_OBJECT (dialog), "response", 
-					 G_CALLBACK (on_push_dialog_response), 
-					 data);
+	g_signal_connect (G_OBJECT (dialog), "response", 
+					  G_CALLBACK (on_push_dialog_response), 
+					  data);
+
+	g_signal_connect (G_OBJECT (push_origin_check), "toggled",
+	                  G_CALLBACK (on_git_origin_check_toggled),
+	                  push_url_entry);
 	
 	gtk_widget_show_all (dialog);
 }
diff --git a/plugins/git/git-rebase-dialog.c b/plugins/git/git-rebase-dialog.c
index c7aa012..4f775a9 100644
--- a/plugins/git/git-rebase-dialog.c
+++ b/plugins/git/git-rebase-dialog.c
@@ -29,6 +29,7 @@ on_rebase_dialog_response (GtkDialog *dialog, gint response_id,
 						   GitBranchComboData *data)
 {
 	GtkWidget *rebase_branch_combo;
+	GtkWidget *rebase_origin_check;
 	gchar *branch;
 	GtkTreeIter iter;
 	GitRebaseStartCommand *rebase_command;
@@ -38,11 +39,18 @@ on_rebase_dialog_response (GtkDialog *dialog, gint response_id,
 	{	
 		rebase_branch_combo = glade_xml_get_widget (data->gxml, 
 													"rebase_branch_combo");
+		rebase_origin_check = glade_xml_get_widget (data->gxml,
+		                                            "rebase_origin_check");
 
-		gtk_combo_box_get_active_iter (GTK_COMBO_BOX (rebase_branch_combo), 
+		if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (rebase_origin_check)))
+		    branch = g_strdup ("origin");
+		else
+		{
+			gtk_combo_box_get_active_iter (GTK_COMBO_BOX (rebase_branch_combo), 
 									   &iter);
-		branch = git_branch_combo_model_get_branch (data->model, &iter);
-		
+			branch = git_branch_combo_model_get_branch (data->model, &iter);
+		}
+
 		rebase_command = git_rebase_start_command_new (data->plugin->project_root_directory,
 													   branch);
 		progress_data = git_progress_data_new (data->plugin,
@@ -82,6 +90,7 @@ rebase_dialog (Git *plugin)
 	GladeXML *gxml;
 	GtkWidget *dialog;
 	GtkWidget *rebase_branch_combo;
+	GtkWidget *rebase_origin_check;
 	GtkListStore *branch_list_store;
 	GitBranchComboData *data;
 	GitBranchListCommand *list_command;
@@ -90,6 +99,7 @@ rebase_dialog (Git *plugin)
 	
 	dialog = glade_xml_get_widget (gxml, "rebase_dialog");
 	rebase_branch_combo = glade_xml_get_widget (gxml, "rebase_branch_combo");
+	rebase_origin_check = glade_xml_get_widget (gxml, "rebase_origin_check");
 	branch_list_store = git_branch_combo_model_new ();
 	
 	gtk_combo_box_set_model (GTK_COMBO_BOX (rebase_branch_combo), 
@@ -116,6 +126,10 @@ rebase_dialog (Git *plugin)
 	g_signal_connect (G_OBJECT (dialog), "response", 
 					  G_CALLBACK (on_rebase_dialog_response), 
 					  data);
+
+	g_signal_connect (G_OBJECT (rebase_origin_check), "toggled",
+	                  G_CALLBACK (on_git_origin_check_toggled),
+	                  rebase_branch_combo);
 	
 	gtk_widget_show_all (dialog);
 }
diff --git a/plugins/git/git-ui-utils.c b/plugins/git/git-ui-utils.c
index 81f79b1..bdd103a 100644
--- a/plugins/git/git-ui-utils.c
+++ b/plugins/git/git-ui-utils.c
@@ -385,6 +385,12 @@ git_clear_all_status_selections (GtkButton *clear_button,
 	anjuta_vcs_status_tree_view_unselect_all (tree_view);
 }
 
+void
+on_git_origin_check_toggled (GtkToggleButton *button, GtkWidget *widget)
+{
+	gtk_widget_set_sensitive (widget, !gtk_toggle_button_get_active (button));
+}
+
 void 
 git_init_whole_project (Git *plugin, GtkWidget* project, gboolean active)
 {
diff --git a/plugins/git/git-ui-utils.h b/plugins/git/git-ui-utils.h
index 82ab2d5..ed8e4cc 100644
--- a/plugins/git/git-ui-utils.h
+++ b/plugins/git/git-ui-utils.h
@@ -81,6 +81,7 @@ void git_select_all_status_items (GtkButton *select_all_button,
 								  AnjutaVcsStatusTreeView *tree_view);
 void git_clear_all_status_selections (GtkButton *clear_button,
 									  AnjutaVcsStatusTreeView *tree_view);
+void on_git_origin_check_toggled (GtkToggleButton *button, GtkWidget *widget);
 
 void git_init_whole_project (Git *plugin, GtkWidget* project,
 							 gboolean active);



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