gnome-utils r8271 - trunk/logview



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

Log:
Implement messages in the findbar for feedback upon search.

Modified:
   trunk/logview/logview-findbar.c
   trunk/logview/logview-findbar.h
   trunk/logview/logview.c

Modified: trunk/logview/logview-findbar.c
==============================================================================
--- trunk/logview/logview-findbar.c	(original)
+++ trunk/logview/logview-findbar.c	Tue Dec 23 13:26:45 2008
@@ -25,12 +25,16 @@
 
 struct _LogviewFindbarPrivate {
   GtkWidget *entry;
+  GtkWidget *message;
 
   GtkToolItem *clear_button;
   GtkToolItem *back_button;
   GtkToolItem *forward_button;
+  GtkToolItem *status_item;
   
   char *string;
+
+  guint status_bold_id;
 };
 
 enum {
@@ -114,6 +118,21 @@
   return FALSE;
 }
 
+static gboolean
+unbold_timeout_cb (gpointer user_data)
+{
+  LogviewFindbar *findbar = user_data;
+  PangoFontDescription *desc;
+
+  desc = pango_font_description_new ();
+  gtk_widget_modify_font (findbar->priv->message, desc);
+  pango_font_description_free (desc);
+
+  findbar->priv->status_bold_id = 0;
+
+  return FALSE;
+}
+
 static void 
 logview_findbar_init (LogviewFindbar *findbar)
 {
@@ -128,6 +147,8 @@
 
   gtk_toolbar_set_style (gtoolbar, GTK_TOOLBAR_BOTH_HORIZ);
 
+  priv->status_bold_id = 0;
+
   /* Find: |_______| */
   w = gtk_alignment_new (0.0, 0.5, 1.0, 1.0);
   gtk_alignment_set_padding (GTK_ALIGNMENT (w), 0, 0, 2, 2);
@@ -172,6 +193,16 @@
   gtk_toolbar_insert (gtoolbar, priv->clear_button, -1);
   gtk_widget_show_all (GTK_WIDGET (priv->clear_button));
 
+  /* message */
+  priv->status_item = gtk_tool_item_new ();
+  gtk_tool_item_set_expand (priv->status_item, TRUE);
+  priv->message = gtk_label_new ("");
+  gtk_label_set_use_markup (GTK_LABEL (priv->message), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (priv->message), 0.0, 0.5);
+  gtk_container_add (GTK_CONTAINER (priv->status_item), priv->message);
+  gtk_widget_show (priv->message);
+  gtk_toolbar_insert (gtoolbar, priv->status_item, -1);
+
   priv->string = NULL;
 
   /* signal handlers */
@@ -278,4 +309,26 @@
   g_assert (LOGVIEW_IS_FINDBAR (findbar));
 
   return findbar->priv->string;
+}
+
+void
+logview_findbar_set_message (LogviewFindbar *findbar,
+                             const char *text)
+{
+  PangoFontDescription *desc;
+
+  g_assert (LOGVIEW_IS_FINDBAR (findbar));
+
+  if (text) {
+    desc = pango_font_description_new ();
+    pango_font_description_set_weight (desc, PANGO_WEIGHT_BOLD);
+    gtk_widget_modify_font (findbar->priv->message, desc);
+    pango_font_description_free (desc);
+    
+    findbar->priv->status_bold_id = g_timeout_add (600, unbold_timeout_cb, findbar);
+  }
+
+  gtk_label_set_text (GTK_LABEL (findbar->priv->message), 
+                      text != NULL ? text : "");
+  g_object_set (findbar->priv->status_item, "visible", text != NULL, NULL);
 }
\ No newline at end of file

Modified: trunk/logview/logview-findbar.h
==============================================================================
--- trunk/logview/logview-findbar.h	(original)
+++ trunk/logview/logview-findbar.h	Tue Dec 23 13:26:45 2008
@@ -64,6 +64,8 @@
 GtkWidget *  logview_findbar_new (void);
 void         logview_findbar_open (LogviewFindbar *findbar);
 const char * logview_findbar_get_text (LogviewFindbar *findbar);
+void         logview_findbar_set_message (LogviewFindbar *findbar,
+                                          const char *message);
 
 G_END_DECLS
 

Modified: trunk/logview/logview.c
==============================================================================
--- trunk/logview/logview.c	(original)
+++ trunk/logview/logview.c	Tue Dec 23 13:26:45 2008
@@ -434,6 +434,7 @@
   LogviewWindow *logview = user_data;
 
   gtk_widget_hide (logview->priv->find_bar);
+  logview_findbar_set_message (LOGVIEW_FINDBAR (logview->priv->find_bar), NULL);
 }
 
 static void
@@ -480,6 +481,10 @@
     gtk_text_buffer_select_range (buffer, &start_m, &end_m);
     gtk_text_buffer_move_mark (buffer, search_start, &start_m);
     gtk_text_buffer_move_mark (buffer, search_end, &end_m);
+
+    if (wrapped) {
+      logview_findbar_set_message (LOGVIEW_FINDBAR (logview->priv->find_bar), _("Wrapped"));
+    }
   } else {
     if (wrapped) {
       
@@ -492,6 +497,8 @@
         gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
         gtk_text_buffer_move_mark_by_name (buffer, "selection_bound", &iter);
       }
+
+      logview_findbar_set_message (LOGVIEW_FINDBAR (logview->priv->find_bar), _("Not found"));
     } else {
       if (forward) {
         gtk_text_buffer_get_start_iter (buffer, &search);
@@ -544,6 +551,8 @@
     gtk_text_buffer_move_mark (buffer, search_end, &start);
   }
 
+  logview_findbar_set_message (LOGVIEW_FINDBAR (logview->priv->find_bar), NULL);
+
   logview_search_text (logview, TRUE);
 
   return FALSE;
@@ -688,7 +697,7 @@
       G_CALLBACK (logview_toggle_statusbar), TRUE },
     { "ShowSidebar", NULL, N_("Side _Pane"), "F9", N_("Show Side Pane"), 
       G_CALLBACK (logview_toggle_sidebar), TRUE },  
-    {"ShowCalendar", NULL,  N_("Ca_lendar"), "<control>L", N_("Show Calendar Log"), 
+    { "ShowCalendar", NULL,  N_("Ca_lendar"), "<control>L", N_("Show Calendar Log"), 
       G_CALLBACK (logview_toggle_calendar), TRUE },
 };
 



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