]> www.fi.muni.cz Git - evince.git/blobdiff - shell/eggfindbar.c
Add warnings about unimplemented/unknown link types.
[evince.git] / shell / eggfindbar.c
index c81120ce80217eaaa79af0691a5bcbdb9b6fbb54..c16e9b952cb4a2a993e27a684015f8d5264f41d8 100644 (file)
@@ -42,6 +42,8 @@ struct _EggFindBarPrivate
   GtkWidget *next_button;
   GtkWidget *previous_button;
   GtkWidget *case_button;
+  GtkWidget *status_separator;
+  GtkWidget *status_label;
   guint case_sensitive : 1;
 };
 
@@ -238,8 +240,11 @@ entry_activate_callback (GtkEntry *entry,
                           void     *data)
 {
   EggFindBar *find_bar = EGG_FIND_BAR (data);
+  EggFindBarPrivate *priv = (EggFindBarPrivate *)find_bar->private_data;
 
-  egg_find_bar_emit_next (find_bar);
+  /* We activate the "next" button here so we'll get a nice
+     animation */
+  gtk_widget_activate (priv->next_button);
 }
 
 static void
@@ -266,6 +271,8 @@ egg_find_bar_init (EggFindBar *find_bar)
   GtkWidget *label;
   GtkWidget *separator;
   GtkWidget *image;
+  GtkWidget *image_back;
+  GtkWidget *image_forward;
 
   /* Data */
   priv = EGG_FIND_BAR_GET_PRIVATE (find_bar);
@@ -291,11 +298,42 @@ egg_find_bar_init (EggFindBar *find_bar)
   priv->find_entry = gtk_entry_new ();
   gtk_label_set_mnemonic_widget (GTK_LABEL (label), priv->find_entry);
   
-  priv->previous_button = gtk_button_new_from_stock (GTK_STOCK_GO_BACK);
-  priv->next_button = gtk_button_new_from_stock (GTK_STOCK_GO_FORWARD);
-
+  priv->previous_button = gtk_button_new_with_mnemonic (_("_Previous"));
+  priv->next_button = gtk_button_new_with_mnemonic (_("_Next"));
+
+  image_back = gtk_image_new_from_stock (GTK_STOCK_GO_BACK,
+                                         GTK_ICON_SIZE_BUTTON);
+  image_forward = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD,
+                                            GTK_ICON_SIZE_BUTTON);
+
+  gtk_button_set_image (GTK_BUTTON (priv->previous_button),
+                        image_back);
+  gtk_button_set_image (GTK_BUTTON (priv->next_button),
+                        image_forward);
+  
   priv->case_button = gtk_check_button_new_with_mnemonic (_("C_ase Sensitive"));
 
+  priv->status_separator = gtk_vseparator_new ();
+  
+  priv->status_label = gtk_label_new (NULL);
+  gtk_label_set_ellipsize (GTK_LABEL (priv->status_label),
+                           PANGO_ELLIPSIZE_END);
+  gtk_misc_set_alignment (GTK_MISC (priv->status_label), 0.0, 0.5);
+  
+#if 0
+ {
+   GtkWidget *button_label;
+   /* This hack doesn't work because GtkCheckButton doesn't pass the
+    * larger size allocation to the label, it always gives the label
+    * its exact request. If you un-ifdef this, set the box back
+    * on case_button to TRUE, TRUE below
+    */
+   button_label = gtk_bin_get_child (GTK_BIN (priv->case_button));
+   gtk_label_set_ellipsize (GTK_LABEL (button_label),
+                            PANGO_ELLIPSIZE_END);
+ }
+#endif
+  
   gtk_box_pack_start (GTK_BOX (priv->hbox),
                       priv->close_button, FALSE, FALSE, 0);
   gtk_box_pack_start (GTK_BOX (priv->hbox),
@@ -310,7 +348,11 @@ egg_find_bar_init (EggFindBar *find_bar)
                       separator, FALSE, FALSE, 0);
   gtk_box_pack_start (GTK_BOX (priv->hbox),
                       priv->case_button, FALSE, FALSE, 0);
-
+  gtk_box_pack_start (GTK_BOX (priv->hbox),
+                      priv->status_separator, FALSE, FALSE, 0);
+  gtk_box_pack_start (GTK_BOX (priv->hbox),
+                      priv->status_label, TRUE, TRUE, 0);
+  
   gtk_container_add (GTK_CONTAINER (find_bar), priv->hbox);
 
   gtk_widget_show (priv->hbox);
@@ -321,6 +363,9 @@ egg_find_bar_init (EggFindBar *find_bar)
   gtk_widget_show (separator);
   gtk_widget_show (label);
   gtk_widget_show (image);
+  gtk_widget_show (image_back);
+  gtk_widget_show (image_forward);
+  /* don't show status separator/label until they are set */
 
   gtk_widget_pop_composite_child ();
 
@@ -659,3 +704,37 @@ egg_find_bar_grab_focus (EggFindBar *find_bar)
  
   gtk_widget_grab_focus (priv->find_entry);
 }
+
+/**
+ * egg_find_bar_set_status_text:
+ *
+ * Sets some text to display if there's space; typical text would
+ * be something like "5 results on this page" or "No results"
+ *
+ * @text: the text to display
+ *
+ * Since: 2.6
+ */
+void
+egg_find_bar_set_status_text (EggFindBar *find_bar,
+                              const char *text)
+{
+  EggFindBarPrivate *priv;
+
+  g_return_if_fail (EGG_IS_FIND_BAR (find_bar));
+
+  priv = (EggFindBarPrivate *)find_bar->private_data;
+  
+  if (text == NULL || *text == '\0')
+    {
+      gtk_widget_hide (priv->status_label);
+      gtk_widget_hide (priv->status_separator);
+      gtk_label_set_text (GTK_LABEL (priv->status_label), NULL);
+    }
+  else
+    {
+      gtk_label_set_text (GTK_LABEL (priv->status_label), text);
+      gtk_widget_show (priv->status_label);
+      gtk_widget_show (priv->status_separator);
+    }
+}