1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3  * git-shell-test
4  * Copyright (C) James Liggett 2010 <jrliggett@cox.net>
5  *
6  * git-shell-test is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * git-shell-test is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include "git-unstage-pane.h"
21 
22 void
on_unstage_button_clicked(GtkAction * action,Git * plugin)23 on_unstage_button_clicked (GtkAction *action, Git *plugin)
24 {
25 	GList *paths;
26 	GitResetFilesCommand *reset_command;
27 
28 	paths = git_status_pane_get_checked_commit_items (GIT_STATUS_PANE (plugin->status_pane),
29 	                                                  ANJUTA_VCS_STATUS_ALL);
30 
31 	if (paths)
32 	{
33 		reset_command = git_reset_files_command_new (plugin->project_root_directory,
34 		                                             GIT_RESET_FILES_HEAD,
35 		                                             paths);
36 
37 		anjuta_util_glist_strings_free (paths);
38 
39 		g_signal_connect (G_OBJECT (reset_command), "command-finished",
40 		                  G_CALLBACK (git_pane_report_errors),
41 		                  plugin);
42 
43 
44 		g_signal_connect (G_OBJECT (reset_command), "command-finished",
45 		                  G_CALLBACK (g_object_unref),
46 		                  NULL);
47 
48 		anjuta_command_start (ANJUTA_COMMAND (reset_command));
49 	}
50 	else
51 		anjuta_util_dialog_error (NULL, _("No staged files selected."));
52 }
53 
54 void
on_git_status_unstage_activated(GtkAction * action,Git * plugin)55 on_git_status_unstage_activated (GtkAction *action, Git *plugin)
56 {
57 	gchar *path;
58 	GList *paths;
59 	GitResetFilesCommand *reset_command;
60 
61 	path = git_status_pane_get_selected_commit_path (GIT_STATUS_PANE (plugin->status_pane));
62 
63 	if (path)
64 	{
65 		paths = g_list_append (NULL, path);
66 
67 		reset_command = git_reset_files_command_new (plugin->project_root_directory,
68 		                                             GIT_RESET_FILES_HEAD,
69 		                                             paths);
70 
71 		g_signal_connect (G_OBJECT (reset_command), "command-finished",
72 		                  G_CALLBACK (git_pane_report_errors),
73 		                  plugin);
74 
75 		g_signal_connect (G_OBJECT (reset_command), "command-finished",
76 		                  G_CALLBACK (g_object_unref),
77 		                  NULL);
78 
79 		anjuta_util_glist_strings_free (paths);
80 
81 		anjuta_command_start (ANJUTA_COMMAND (reset_command));
82 	}
83 }
84