glade: Fix make file some files were not installed
[anjuta.git] / plugins / git / git-diff-pane.c
blobc342d7381c5c4c85786db7a44cd762ca5494daa2
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.
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.
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/>.
20 #include "git-diff-pane.h"
22 void
23 on_diff_button_clicked (GtkAction *action, Git *plugin)
25 IAnjutaDocumentManager *document_manager;
26 IAnjutaEditor *editor;
27 GitDiffCommand *diff_command;
29 document_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (plugin)->shell,
30 IAnjutaDocumentManager,
31 NULL);
32 editor = ianjuta_document_manager_add_buffer (document_manager,/* Translators: default file name for git diff's output */
33 _("Uncommitted Changes.diff"),
34 "", NULL);
36 diff_command = git_diff_command_new (plugin->project_root_directory);
38 g_signal_connect (G_OBJECT (diff_command), "data-arrived",
39 G_CALLBACK (git_pane_send_raw_output_to_editor),
40 editor);
42 g_signal_connect (G_OBJECT (diff_command), "command_finished",
43 G_CALLBACK (git_pane_report_errors),
44 plugin);
46 g_signal_connect (G_OBJECT (diff_command), "command_finished",
47 G_CALLBACK (g_object_unref),
48 NULL);
50 anjuta_command_start (ANJUTA_COMMAND (diff_command));
53 void
54 on_commit_diff_button_clicked (GtkAction *action, Git *plugin)
56 GitRevision *revision;
57 gchar *sha;
58 gchar *short_sha;
59 gchar *editor_name;
60 IAnjutaDocumentManager *document_manager;
61 IAnjutaEditor *editor;
62 GitDiffTreeCommand *diff_command;
64 revision = git_log_pane_get_selected_revision (GIT_LOG_PANE (plugin->log_pane));
66 if (revision)
68 sha = git_revision_get_sha (revision);
69 short_sha = git_revision_get_short_sha (revision);
70 /* Translators: file name for an existing commits diff, %s is an SHASUM of a commit */
71 editor_name = g_strdup_printf (_("Commit %s.diff"), short_sha);
73 document_manager = anjuta_shell_get_interface (ANJUTA_PLUGIN (plugin)->shell,
74 IAnjutaDocumentManager,
75 NULL);
76 editor = ianjuta_document_manager_add_buffer (document_manager,
77 editor_name,
78 "", NULL);
80 diff_command = git_diff_tree_command_new (plugin->project_root_directory,
81 sha);
83 g_signal_connect (G_OBJECT (diff_command), "data-arrived",
84 G_CALLBACK (git_pane_send_raw_output_to_editor),
85 editor);
87 g_signal_connect (G_OBJECT (diff_command), "command_finished",
88 G_CALLBACK (git_pane_report_errors),
89 plugin);
91 g_signal_connect (G_OBJECT (diff_command), "command_finished",
92 G_CALLBACK (g_object_unref),
93 NULL);
96 anjuta_command_start (ANJUTA_COMMAND (diff_command));
98 g_object_unref (revision);
99 g_free (sha);
100 g_free (short_sha);
101 g_free (editor_name);
103 else
104 anjuta_util_dialog_error (NULL, _("No revision selected"));