X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=shell%2Fev-window.c;h=14733fe243cb11380c1ac5fdfcd30da604b0ca6d;hb=1790c3aee3156081e86e6de56d5a86dbdd516b67;hp=ca753bff08d5f2c13e25bfc6a1107e50e86c77f5;hpb=8aabbe7d5ef979d538996a7dd8a245f77b15ed51;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index ca753bff..14733fe2 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -28,6 +28,7 @@ #include "ev-window.h" #include "ev-sidebar.h" +#include "eggfindbar.h" #include #include @@ -51,6 +52,7 @@ struct _EvWindowPrivate { GtkWidget *main_box; GtkWidget *hpaned; GtkWidget *sidebar; + GtkWidget *find_bar; GtkWidget *bonobo_widget; GtkUIManager *ui_manager; GtkWidget *statusbar; @@ -216,7 +218,8 @@ ev_window_cmd_edit_find (GtkAction *action, EvWindow *ev_window) { g_return_if_fail (EV_IS_WINDOW (ev_window)); - /* FIXME */ + gtk_widget_show (ev_window->priv->find_bar); + egg_find_bar_grab_focus (EGG_FIND_BAR (ev_window->priv->find_bar)); } static void @@ -467,6 +470,55 @@ disconnect_proxy_cb (GtkUIManager *ui_manager, GtkAction *action, } } +static void +find_bar_previous_cb (EggFindBar *find_bar, + EvWindow *ev_window) +{ + /* FIXME - highlight previous result */ + g_printerr ("Find Previous\n"); + +} + +static void +find_bar_next_cb (EggFindBar *find_bar, + EvWindow *ev_window) +{ + /* FIXME - highlight next result */ + g_printerr ("Find Next\n"); +} + +static void +find_bar_close_cb (EggFindBar *find_bar, + EvWindow *ev_window) +{ + gtk_widget_hide (ev_window->priv->find_bar); +} + +static void +find_bar_search_changed_cb (EggFindBar *find_bar, + GParamSpec *param, + EvWindow *ev_window) +{ + gboolean case_sensitive; + gboolean visible; + const char *search_string; + + g_return_if_fail (EV_IS_WINDOW (ev_window)); + + /* Either the string or case sensitivity could have changed, + * we connect this callback to both. We also connect it + * to ::visible so when the find bar is hidden, we should + * pretend the search string is NULL/"" + */ + + case_sensitive = egg_find_bar_get_case_sensitive (find_bar); + visible = GTK_WIDGET_VISIBLE (find_bar); + search_string = egg_find_bar_get_search_string (find_bar); + + /* FIXME */ + g_printerr ("search for '%s'\n", search_string ? search_string : "(nil)"); +} + static void ev_window_dispose (GObject *object) { @@ -694,7 +746,6 @@ ev_window_init (EvWindow *ev_window) gtk_paned_add2 (GTK_PANED (ev_window->priv->hpaned), darea); - ev_window->priv->statusbar = gtk_statusbar_new (); gtk_widget_show (ev_window->priv->statusbar); gtk_box_pack_end (GTK_BOX (ev_window->priv->main_box), @@ -703,4 +754,34 @@ ev_window_init (EvWindow *ev_window) ev_window->priv->help_message_cid = gtk_statusbar_get_context_id (GTK_STATUSBAR (ev_window->priv->statusbar), "help_message"); + ev_window->priv->find_bar = egg_find_bar_new (); + gtk_box_pack_end (GTK_BOX (ev_window->priv->main_box), + ev_window->priv->find_bar, + FALSE, TRUE, 0); + + /* Connect to find bar signals */ + g_signal_connect (ev_window->priv->find_bar, + "previous", + G_CALLBACK (find_bar_previous_cb), + ev_window); + g_signal_connect (ev_window->priv->find_bar, + "next", + G_CALLBACK (find_bar_next_cb), + ev_window); + g_signal_connect (ev_window->priv->find_bar, + "close", + G_CALLBACK (find_bar_close_cb), + ev_window); + g_signal_connect (ev_window->priv->find_bar, + "notify::search-string", + G_CALLBACK (find_bar_search_changed_cb), + ev_window); + g_signal_connect (ev_window->priv->find_bar, + "notify::case-sensitive", + G_CALLBACK (find_bar_search_changed_cb), + ev_window); + g_signal_connect (ev_window->priv->find_bar, + "notify::visible", + G_CALLBACK (find_bar_search_changed_cb), + ev_window); }