[gnome-games] libgames-support: Add games_show_error()



commit 2ea7f6a3fbfb408bb1ce4086cb7fb3bbb3b7820b
Author: Christian Persch <chpe gnome org>
Date:   Fri Jul 3 20:18:21 2009 +0200

    libgames-support: Add games_show_error()
    
    Add a helper function that shows a GtkMessageDialog with a GError's
    message as secondary text, and the passed-in primary text.

 libgames-support/games-help.c |   23 ++-----------------
 libgames-support/games-show.c |   46 +++++++++++++++++++++++++++++++++++++++++
 libgames-support/games-show.h |    4 +++
 3 files changed, 53 insertions(+), 20 deletions(-)
---
diff --git a/libgames-support/games-help.c b/libgames-support/games-help.c
index 3654ac5..b4ea536 100644
--- a/libgames-support/games-help.c
+++ b/libgames-support/games-help.c
@@ -133,27 +133,10 @@ err:
 #endif
 
   if (error != NULL) {
-    GtkWidget *dialog;
-    dialog = gtk_message_dialog_new (GTK_WINDOW (window), 
-                                     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
-                                     GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
-                                     _("Could not show help for â??%sâ??"),
-                                     section ? section : g_get_application_name ());
-
-    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                              "%s", error->message);
+    games_show_error (window, error,
+                      _("Could not show help for â??%sâ??"),
+                      section ? section : g_get_application_name ());
     g_error_free (error);
-
-#ifdef HAVE_HILDON
-  /* Empty title shows up as "<unnamed>" on maemo */
-  gtk_window_set_title (GTK_WINDOW (dialog), _("Error"));
-#else
-  gtk_window_set_title (GTK_WINDOW (dialog), "");
-#endif /* HAVE_HILDON */
-
-    g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
-    
-    gtk_window_present (GTK_WINDOW (dialog));
   }
 
   g_free (help_uri);
diff --git a/libgames-support/games-show.c b/libgames-support/games-show.c
index 50b43e5..aa4388d 100644
--- a/libgames-support/games-show.c
+++ b/libgames-support/games-show.c
@@ -111,3 +111,49 @@ games_show_uri (GdkScreen *screen,
 #endif /* G_OS_WIN32 */
 #endif /* HAVE_MAEMO */
 }
+
+/**
+ * games_show_error:
+ * @parent: a transient parent window
+ * @error: a #GError
+ * @primary_text_format:
+ * @...:
+ *
+ * Shows a message dialog with the given primary text, and @error's message
+ * as secondary text. The dialog will be transient to @parent, and modal.
+ * However, this function will *not* block until the dialogue has been dismissed.
+ */
+void
+games_show_error (GtkWidget *window,
+                  GError *error,
+                  const char *primary_text_format,
+                  ...)
+{
+  GtkWidget *dialog;
+  char *primary_text;
+  va_list args;
+
+  va_start (args, primary_text_format);
+  primary_text = g_strdup_vprintf (primary_text_format, args);
+  va_end (args);
+
+  dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+                                   GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                   GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+                                   "%s", primary_text);
+  g_free (primary_text);
+
+  gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                                            "%s", error->message);
+
+#ifdef HAVE_HILDON
+  /* Empty title shows up as "<unnamed>" on maemo */
+  gtk_window_set_title (GTK_WINDOW (dialog), _("Error"));
+#else
+  gtk_window_set_title (GTK_WINDOW (dialog), "");
+#endif /* HAVE_HILDON */
+
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
+
+  gtk_window_present (GTK_WINDOW (dialog));
+}
diff --git a/libgames-support/games-show.h b/libgames-support/games-show.h
index a1519f4..3a270ee 100644
--- a/libgames-support/games-show.h
+++ b/libgames-support/games-show.h
@@ -29,6 +29,10 @@ gboolean games_show_uri (GdkScreen   *screen,
                          guint32      timestamp,
                          GError     **error);
 
+void games_show_error (GtkWidget *window,
+                       GError *error,
+                       const char *primary_text_format,
+                       ...) G_GNUC_PRINTF (3, 4);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]