gnome-utils r8349 - trunk/logview



Author: cosimoc
Date: Tue Dec 23 13:29:11 2008
New Revision: 8349
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8349&view=rev

Log:
Use the message area to show errors for single load operations.

Modified:
   trunk/logview/gtkmessagearea.c
   trunk/logview/logview-app.c
   trunk/logview/logview-app.h
   trunk/logview/logview-main.c
   trunk/logview/logview-manager.c
   trunk/logview/logview-window.c
   trunk/logview/logview-window.h

Modified: trunk/logview/gtkmessagearea.c
==============================================================================
--- trunk/logview/gtkmessagearea.c	(original)
+++ trunk/logview/gtkmessagearea.c	Tue Dec 23 13:29:11 2008
@@ -300,8 +300,6 @@
                         "use-tooltip-style", &use_tooltip_style,
                         NULL);
 
-  g_print ("use tooltip style: %d\n", use_tooltip_style);
-
   gtk_box_set_spacing (GTK_BOX (GTK_MESSAGE_AREA (widget)->priv->action_area),
                        button_spacing);
   gtk_container_set_border_width (GTK_CONTAINER (GTK_MESSAGE_AREA (widget)->priv->action_area),

Modified: trunk/logview/logview-app.c
==============================================================================
--- trunk/logview/logview-app.c	(original)
+++ trunk/logview/logview-app.c	Tue Dec 23 13:29:11 2008
@@ -26,6 +26,8 @@
 #include "logview-window.h"
 #include "logview-prefs.h"
 
+#include <glib/gi18n.h>
+
 struct _LogviewAppPrivate {
   LogviewPrefs *prefs;
   LogviewManager *manager;
@@ -165,16 +167,20 @@
 
 void
 logview_app_add_error (LogviewApp *app,
-                       const char *primary,
+                       const char *file_path,
                        const char *secondary)
 {
   LogviewWindow *window;
+  char *primary;
 
   g_assert (LOGVIEW_IS_APP (app));
 
   window = app->priv->window;
+  primary = g_strdup_printf (_("Impossible to open the file %s"), file_path);
 
   logview_window_add_error (window, primary, secondary);
+
+  g_free (primary);
 }
 
 void

Modified: trunk/logview/logview-app.h
==============================================================================
--- trunk/logview/logview-app.h	(original)
+++ trunk/logview/logview-app.h	Tue Dec 23 13:29:11 2008
@@ -63,7 +63,7 @@
 void         logview_app_initialize (LogviewApp *app,
                                      char **log_files);
 void         logview_app_add_error  (LogviewApp *app,
-                                     const char *primary,
+                                     const char *file_path,
                                      const char *secondary);
 void         logview_app_add_errors (LogviewApp *app,
                                      GPtrArray *errors);

Modified: trunk/logview/logview-main.c
==============================================================================
--- trunk/logview/logview-main.c	(original)
+++ trunk/logview/logview-main.c	Tue Dec 23 13:29:11 2008
@@ -35,7 +35,7 @@
 
 static void
 app_quit_cb (LogviewApp *app,
-                       gpointer user_data)
+             gpointer user_data)
 {
   gtk_main_quit ();
 }

Modified: trunk/logview/logview-manager.c
==============================================================================
--- trunk/logview/logview-manager.c	(original)
+++ trunk/logview/logview-manager.c	Tue Dec 23 13:29:11 2008
@@ -182,11 +182,10 @@
 
     /* notify the error */
     path = g_file_get_path (data->file);
-    primary = g_strdup_printf (_("Impossible to open the file %s."), path);
 
     if (!data->is_multiple) {
       logview_app_add_error (logview_app_get (),
-                             primary, error->message);
+                             path, error->message);
     } else {
       char **error_arr = g_new0 (char *, 3);
 

Modified: trunk/logview/logview-window.c
==============================================================================
--- trunk/logview/logview-window.c	(original)
+++ trunk/logview/logview-window.c	Tue Dec 23 13:29:11 2008
@@ -50,7 +50,10 @@
   GtkWidget *version_selector;
   GtkWidget *hpaned;
   GtkWidget *text_view;
+
   GtkWidget *message_area;
+  GtkWidget *message_primary;
+  GtkWidget *message_secondary;
 
   GtkTextTagTable *tag_table;
 
@@ -924,13 +927,11 @@
   populate_style_tag_table (style, logview->priv->tag_table);
 }
 
-/* copy-paste from GEdit */
+/* adapted from GEdit */
 
 static void
-set_message_area_text_and_icon (GtkWidget *message_area,
-                                const char *icon_stock_id,
-                                const char *primary_text,
-                                const char *secondary_text)
+message_area_create_error_box (LogviewWindow *window,
+                               GtkWidget *message_area)
 {
   GtkWidget *hbox_content;
   GtkWidget *image;
@@ -939,11 +940,12 @@
   char *secondary_markup;
   GtkWidget *primary_label;
   GtkWidget *secondary_label;
-
+  
   hbox_content = gtk_hbox_new (FALSE, 8);
   gtk_widget_show (hbox_content);
 
-  image = gtk_image_new_from_stock (icon_stock_id, GTK_ICON_SIZE_DIALOG);
+  image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_ERROR,
+                                    GTK_ICON_SIZE_DIALOG);
   gtk_widget_show (image);
   gtk_box_pack_start (GTK_BOX (hbox_content), image, FALSE, FALSE, 0);
   gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0);
@@ -952,9 +954,8 @@
   gtk_widget_show (vbox);
   gtk_box_pack_start (GTK_BOX (hbox_content), vbox, TRUE, TRUE, 0);
 
-  primary_markup = g_strdup_printf ("<b>%s</b>", primary_text);
-  primary_label = gtk_label_new (primary_markup);
-  g_free (primary_markup);
+
+  primary_label = gtk_label_new (NULL);
   gtk_widget_show (primary_label);
   gtk_box_pack_start (GTK_BOX (vbox), primary_label, TRUE, TRUE, 0);
   gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE);
@@ -962,25 +963,54 @@
   gtk_misc_set_alignment (GTK_MISC (primary_label), 0, 0.5);
   GTK_WIDGET_SET_FLAGS (primary_label, GTK_CAN_FOCUS);
   gtk_label_set_selectable (GTK_LABEL (primary_label), TRUE);
+  window->priv->message_primary = primary_label;
 
-  if (secondary_text != NULL) {
-      secondary_markup = g_strdup_printf ("<small>%s</small>",
-                                          secondary_text);
-      secondary_label = gtk_label_new (secondary_markup);
-      g_free (secondary_markup);
-      gtk_widget_show (secondary_label);
-      gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0);
-      GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS);
-      gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE);
-      gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE);
-      gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE);
-      gtk_misc_set_alignment (GTK_MISC (secondary_label), 0, 0.5);
-  }
+  secondary_label = gtk_label_new (NULL);
+  gtk_widget_show (secondary_label);
+  gtk_box_pack_start (GTK_BOX (vbox), secondary_label, TRUE, TRUE, 0);
+  GTK_WIDGET_SET_FLAGS (secondary_label, GTK_CAN_FOCUS);
+  gtk_label_set_use_markup (GTK_LABEL (secondary_label), TRUE);
+  gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE);
+  gtk_label_set_selectable (GTK_LABEL (secondary_label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (secondary_label), 0, 0.5);
+  window->priv->message_secondary = secondary_label;
 
   gtk_message_area_set_contents (GTK_MESSAGE_AREA (message_area),
                                  hbox_content);
 }
 
+static void
+message_area_set_labels (LogviewWindow *window,
+                         const char *primary,
+                         const char *secondary)
+{
+  char *primary_markup, *secondary_markup;
+
+  primary_markup = g_markup_printf_escaped ("<b>%s</b>", primary);
+  secondary_markup = g_markup_printf_escaped ("<small>%s</small>",
+                                              secondary);
+
+  gtk_label_set_markup (GTK_LABEL (window->priv->message_primary),
+                        primary_markup);
+  gtk_label_set_markup (GTK_LABEL (window->priv->message_secondary),
+                        secondary_markup);
+
+  g_free (primary_markup);
+  g_free (secondary_markup);
+}
+
+static void
+message_area_response_cb (GtkMessageArea *message_area,
+                          int response_id, gpointer user_data)
+{
+  LogviewWindow *window = user_data;
+
+  gtk_widget_hide (GTK_WIDGET (message_area));
+
+  g_signal_handlers_disconnect_by_func (message_area,
+                                        message_area_response_cb,
+                                        user_data);
+}
 
 static void
 logview_window_finalize (GObject *object)
@@ -1082,6 +1112,10 @@
 
   /* second pane: error message area */
   priv->message_area = gtk_message_area_new ();
+  message_area_create_error_box (logview, priv->message_area);
+  gtk_message_area_add_stock_button_with_text (GTK_MESSAGE_AREA (priv->message_area),
+                                               _("Close"), GTK_STOCK_CLOSE,
+                                               GTK_RESPONSE_CLOSE);
   gtk_box_pack_start (GTK_BOX (main_view), priv->message_area, FALSE, FALSE, 0);
 
   /* second pane: text view */
@@ -1190,9 +1224,18 @@
                           const char *primary,
                           const char *secondary)
 {
+  LogviewWindowPrivate *priv;
+
   g_assert (LOGVIEW_IS_WINDOW (window));
+  priv = window->priv;
 
-  /* TODO: */
+  message_area_set_labels (window,
+                           primary, secondary); 
+
+  gtk_widget_show (priv->message_area);
+
+  g_signal_connect (priv->message_area, "response",
+                    G_CALLBACK (message_area_response_cb), window);
 }
 
 void

Modified: trunk/logview/logview-window.h
==============================================================================
--- trunk/logview/logview-window.h	(original)
+++ trunk/logview/logview-window.h	Tue Dec 23 13:29:11 2008
@@ -46,6 +46,11 @@
 GType logview_window_get_type (void);
 
 /* public methods */
-GtkWidget *logview_window_new (void);
+GtkWidget * logview_window_new        (void);
+void        logview_window_add_error  (LogviewWindow *window,
+                                       const char *primary,
+                                       const char *secondary);
+void        logview_window_add_errors (LogviewWindow *window,
+                                       GPtrArray *errors);
 
 #endif /* __LOGVIEW_WINDOW_H__ */



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