1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
4 * Copyright (C) James Liggett 2010 <jrliggett@cox.net>
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"
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
,
32 editor
= ianjuta_document_manager_add_buffer (document_manager
,/* Translators: default file name for git diff's output */
33 _("Uncommitted Changes.diff"),
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
),
42 g_signal_connect (G_OBJECT (diff_command
), "command_finished",
43 G_CALLBACK (git_pane_report_errors
),
46 g_signal_connect (G_OBJECT (diff_command
), "command_finished",
47 G_CALLBACK (g_object_unref
),
50 anjuta_command_start (ANJUTA_COMMAND (diff_command
));
54 on_commit_diff_button_clicked (GtkAction
*action
, Git
*plugin
)
56 GitRevision
*revision
;
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
));
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
,
76 editor
= ianjuta_document_manager_add_buffer (document_manager
,
80 diff_command
= git_diff_tree_command_new (plugin
->project_root_directory
,
83 g_signal_connect (G_OBJECT (diff_command
), "data-arrived",
84 G_CALLBACK (git_pane_send_raw_output_to_editor
),
87 g_signal_connect (G_OBJECT (diff_command
), "command_finished",
88 G_CALLBACK (git_pane_report_errors
),
91 g_signal_connect (G_OBJECT (diff_command
), "command_finished",
92 G_CALLBACK (g_object_unref
),
96 anjuta_command_start (ANJUTA_COMMAND (diff_command
));
98 g_object_unref (revision
);
101 g_free (editor_name
);
104 anjuta_util_dialog_error (NULL
, _("No revision selected"));