GtkWidget *next_button;
GtkWidget *previous_button;
GtkWidget *case_button;
+ GtkWidget *status_separator;
+ GtkWidget *status_label;
guint case_sensitive : 1;
};
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
GtkWidget *label;
GtkWidget *separator;
GtkWidget *image;
+ GtkWidget *image_back;
+ GtkWidget *image_forward;
/* Data */
priv = EGG_FIND_BAR_GET_PRIVATE (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),
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);
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 ();
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);
+ }
+}