1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
4 * Copyright (C) James Liggett 2008 <jrliggett@cox.net>
6 * anjuta is free software.
8 * You may redistribute it and/or modify it under the terms of the
9 * GNU General Public License, as published by the Free Software
10 * Foundation; either version 2 of the License, or (at your option)
13 * anjuta is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 * See the GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with anjuta. If not, write to:
20 * The Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor
22 * Boston, MA 02110-1301, USA.
25 #include "git-reset-dialog.h"
28 on_reset_dialog_response (GtkDialog
*dialog
, gint response_id
,
31 GtkWidget
*reset_revision_radio
;
32 GtkWidget
*reset_revision_entry
;
33 GtkWidget
*reset_soft_radio
;
34 GtkWidget
*reset_hard_radio
;
36 GitResetTreeMode mode
;
37 GitResetTreeCommand
*reset_command
;
39 if (response_id
== GTK_RESPONSE_OK
)
41 reset_revision_radio
= glade_xml_get_widget (data
->gxml
,
42 "reset_revision_radio");
43 reset_revision_entry
= glade_xml_get_widget (data
->gxml
,
44 "reset_revision_entry");
45 reset_soft_radio
= glade_xml_get_widget (data
->gxml
,
47 reset_hard_radio
= glade_xml_get_widget (data
->gxml
,
50 mode
= GIT_RESET_TREE_MODE_MIXED
;
52 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (reset_revision_radio
)))
54 revision
= gtk_editable_get_chars (GTK_EDITABLE (reset_revision_entry
),
56 if (!check_input (GTK_WIDGET (dialog
), reset_revision_entry
,
57 revision
, _("Please enter a revision.")))
64 if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (reset_soft_radio
)))
65 mode
= GIT_RESET_TREE_MODE_SOFT
;
66 else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (reset_hard_radio
)))
67 mode
= GIT_RESET_TREE_MODE_HARD
;
71 reset_command
= git_reset_tree_command_new (data
->plugin
->project_root_directory
,
76 reset_command
= git_reset_tree_command_new (data
->plugin
->project_root_directory
,
77 GIT_RESET_TREE_PREVIOUS
,
83 create_message_view (data
->plugin
);
85 g_signal_connect (G_OBJECT (reset_command
), "command-finished",
86 G_CALLBACK (on_command_finished
),
89 g_signal_connect (G_OBJECT (reset_command
), "data-arrived",
90 G_CALLBACK (on_command_info_arrived
),
93 anjuta_command_start (ANJUTA_COMMAND (reset_command
));
96 gtk_widget_destroy (GTK_WIDGET (dialog
));
97 git_ui_data_free (data
);
101 on_reset_revision_radio_toggled (GtkToggleButton
*toggle_button
,
104 GtkWidget
*reset_dialog
;
105 GtkWidget
*reset_revision_entry
;
108 reset_dialog
= glade_xml_get_widget (data
->gxml
,
110 reset_revision_entry
= glade_xml_get_widget (data
->gxml
,
111 "reset_revision_entry");
113 active
= gtk_toggle_button_get_active (toggle_button
);
114 gtk_widget_set_sensitive (reset_revision_entry
, active
);
118 gtk_window_set_focus (GTK_WINDOW (reset_dialog
),
119 reset_revision_entry
);
125 reset_dialog (Git
*plugin
, const gchar
*revision
)
129 GtkWidget
*reset_revision_radio
;
130 GtkWidget
*reset_revision_entry
;
133 gxml
= glade_xml_new (GLADE_FILE
, "reset_dialog", NULL
);
134 dialog
= glade_xml_get_widget (gxml
, "reset_dialog");
135 reset_revision_radio
= glade_xml_get_widget (gxml
,
136 "reset_revision_radio");
137 reset_revision_entry
= glade_xml_get_widget (gxml
,
138 "reset_revision_entry");
139 data
= git_ui_data_new (plugin
, gxml
);
141 g_signal_connect (G_OBJECT (dialog
), "response",
142 G_CALLBACK (on_reset_dialog_response
),
145 g_signal_connect (G_OBJECT (reset_revision_radio
), "toggled",
146 G_CALLBACK (on_reset_revision_radio_toggled
),
151 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (reset_revision_radio
), TRUE
);
152 gtk_entry_set_text (GTK_ENTRY (reset_revision_entry
), revision
);
155 gtk_widget_show_all (dialog
);
159 on_menu_git_reset (GtkAction
*action
, Git
*plugin
)
161 reset_dialog (plugin
, NULL
);
165 on_log_menu_git_reset (GtkAction
*action
, Git
*plugin
)
167 GitRevision
*revision
;
170 revision
= git_log_get_selected_revision (plugin
);
174 sha
= git_revision_get_sha (revision
);
176 reset_dialog (plugin
, sha
);