[anjuta/git-shell] git: Implement error reporting
- From: James Liggett <jrliggett src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta/git-shell] git: Implement error reporting
- Date: Fri, 9 Jul 2010 22:07:30 +0000 (UTC)
commit 7e6b0d1d0d899a90a3d73d99067c5dafe219328d
Author: James Liggett <jrliggett cox net>
Date: Thu Jul 8 19:17:41 2010 -0700
git: Implement error reporting
plugins/git/git-pane.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++
plugins/git/git-pane.h | 3 +-
2 files changed, 100 insertions(+), 1 deletions(-)
---
diff --git a/plugins/git/git-pane.c b/plugins/git/git-pane.c
index f1b4472..264cd9d 100644
--- a/plugins/git/git-pane.c
+++ b/plugins/git/git-pane.c
@@ -168,3 +168,101 @@ git_pane_check_input (GtkWidget *parent, GtkWidget *widget, const gchar *input,
return ret;
}
+static void
+message_dialog (GtkMessageType message_type, const gchar *message, Git *plugin)
+{
+ const gchar *dialog_title;
+ GtkWidget *image;
+ GtkWidget *dialog;
+ GtkWidget *close_button;
+ GtkWidget *content_area;
+ GtkWidget *hbox;
+ GtkWidget *scrolled_window;
+ GtkWidget *text_view;
+ GtkTextBuffer *text_buffer;
+
+ dialog_title = NULL;
+ image = gtk_image_new ();
+
+ switch (message_type)
+ {
+ case GTK_MESSAGE_ERROR:
+ gtk_image_set_from_icon_name (GTK_IMAGE (image),
+ GTK_STOCK_DIALOG_ERROR,
+ GTK_ICON_SIZE_DIALOG);
+ dialog_title = _("Git Error");
+ break;
+ case GTK_MESSAGE_WARNING:
+ gtk_image_set_from_icon_name (GTK_IMAGE (image),
+ GTK_STOCK_DIALOG_WARNING,
+ GTK_ICON_SIZE_DIALOG);
+ dialog_title = _("Git Warning");
+ break;
+ default:
+ break;
+ }
+
+
+ dialog = gtk_dialog_new_with_buttons (dialog_title,
+ GTK_WINDOW (ANJUTA_PLUGIN (plugin)->shell),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ NULL);
+
+ close_button = gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CLOSE,
+ GTK_RESPONSE_CLOSE);
+ content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+ hbox = gtk_hbox_new (FALSE, 2);
+ scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ text_view = gtk_text_view_new ();
+ text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
+
+ gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
+ gtk_widget_set_size_request (text_view, 500, 150);
+
+ gtk_container_add (GTK_CONTAINER (scrolled_window), text_view);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_SHADOW_IN);
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (text_view), FALSE);
+ gtk_text_buffer_set_text (text_buffer, message, strlen (message));
+
+ gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), scrolled_window, TRUE, TRUE, 0);
+
+ gtk_box_pack_start (GTK_BOX (content_area), hbox, TRUE, TRUE, 0);
+
+ gtk_widget_grab_default (close_button);
+ gtk_widget_grab_focus (close_button);
+
+ g_signal_connect (G_OBJECT (dialog), "response",
+ G_CALLBACK (gtk_widget_destroy),
+ NULL);
+
+ gtk_widget_show_all (dialog);
+
+}
+
+void
+git_pane_report_errors (AnjutaCommand *command, guint return_code, Git *plugin)
+{
+ gchar *message;
+
+ /* In some cases, git might report errors yet still indicate success.
+ * When this happens, use a warning dialog instead of an error, so the user
+ * knows that something actually happened. */
+ message = anjuta_command_get_error_message (command);
+
+ if (message)
+ {
+ if (return_code != 0)
+ message_dialog (GTK_MESSAGE_ERROR, message, plugin);
+ else
+ message_dialog (GTK_MESSAGE_WARNING, message, plugin);
+
+ g_free (message);
+ }
+}
+
diff --git a/plugins/git/git-pane.h b/plugins/git/git-pane.h
index 60ed5ca..cdfd8b0 100644
--- a/plugins/git/git-pane.h
+++ b/plugins/git/git-pane.h
@@ -59,7 +59,8 @@ void git_pane_set_log_view_column_label (GtkTextBuffer *buffer,
gchar *git_pane_get_log_from_text_view (GtkTextView *text_view);
gboolean git_pane_check_input (GtkWidget *parent, GtkWidget *widget,
const gchar *input, const gchar *error_message);
-
+void git_pane_report_errors (AnjutaCommand *command, guint return_code,
+ Git *plugin);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]