X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=085f60ab9a9e9d98ca043e311273f8b6fb26ba92;hb=f7510970589ab3a687023b127803ae6d11d41aca;hp=fe1c2263a049c44c68051d1b328ce5e80a6ec040;hpb=f7d8183b26d763d0501f40720aed357d5aa35029;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index fe1c2263..085f60ab 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -55,6 +55,7 @@ #include "ev-application.h" #include "ev-stock-icons.h" #include "ev-file-helpers.h" +#include #include #include @@ -70,9 +71,8 @@ #include typedef enum { - PAGE_MODE_SINGLE_PAGE, - PAGE_MODE_CONTINUOUS_PAGE, - PAGE_MODE_PASSWORD, + PAGE_MODE_DOCUMENT, + PAGE_MODE_PASSWORD } EvWindowPageMode; typedef enum { @@ -244,15 +244,6 @@ update_action_sensitivity (EvWindow *ev_window) set_action_sensitive (ev_window, "GoLastPage", FALSE); } - /* Page View radio group */ - if (document) { - set_action_sensitive (ev_window, "SinglePage", page_mode != PAGE_MODE_PASSWORD); - set_action_sensitive (ev_window, "ContinuousPage", page_mode != PAGE_MODE_PASSWORD); - } else { - set_action_sensitive (ev_window, "SinglePage", FALSE); - set_action_sensitive (ev_window, "ContinuousPage", FALSE); - } - /* Toolbar-specific actions: */ set_action_sensitive (ev_window, PAGE_SELECTOR_ACTION, has_pages); set_action_sensitive (ev_window, ZOOM_CONTROL_ACTION, has_pages); @@ -608,7 +599,7 @@ ev_window_setup_document (EvWindow *ev_window) ev_window, 0); } - ev_window_set_page_mode (ev_window, PAGE_MODE_SINGLE_PAGE); + ev_window_set_page_mode (ev_window, PAGE_MODE_DOCUMENT); ev_sidebar_set_document (sidebar, document); @@ -1649,15 +1640,12 @@ ev_window_set_page_mode (EvWindow *window, window->priv->page_mode = page_mode; switch (page_mode) { - case PAGE_MODE_SINGLE_PAGE: + case PAGE_MODE_DOCUMENT: child = window->priv->view; break; case PAGE_MODE_PASSWORD: child = window->priv->password_view; break; - case PAGE_MODE_CONTINUOUS_PAGE: - child = window->priv->page_view; - break; default: g_assert_not_reached (); } @@ -1934,16 +1922,46 @@ ev_window_sizing_mode_changed_cb (EvView *view, GParamSpec *pspec, update_sizing_buttons (ev_window); } +static char * +build_comments_string (void) +{ + PopplerBackend backend; + const char *backend_name; + const char *version; + + backend = poppler_get_backend (); + version = poppler_get_version (); + switch (backend) { + case POPPLER_BACKEND_CAIRO: + backend_name = "cairo"; + break; + case POPPLER_BACKEND_SPLASH: + backend_name = "splash"; + break; + default: + backend_name = "unknown"; + break; + } + + return g_strdup_printf (_("PostScript and PDF File Viewer.\n" + "Using poppler %s (%s)"), + version, backend_name); +} + static void ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window) { const char *authors[] = { - N_("Many..."), + "Martin Kretzschmar ", + "Jonathan Blandford ", + "Marco Pesenti Gritti ", + "Nickolay V. Shmyrev ", + "Bryan Clark ", NULL }; const char *documenters[] = { - N_("Not so many..."), + "Nickolay V. Shmyrev ", NULL }; @@ -1962,6 +1980,7 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window) }; char *license_trans; + char *comments; #ifdef ENABLE_NLS const char **p; @@ -1975,6 +1994,7 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window) license_trans = g_strconcat (_(license[0]), "\n", _(license[1]), "\n", _(license[2]), "\n", NULL); + comments = build_comments_string (); gtk_show_about_dialog ( GTK_WINDOW (ev_window), @@ -1984,12 +2004,13 @@ ev_window_cmd_help_about (GtkAction *action, EvWindow *ev_window) _("\xc2\xa9 1996-2004 The Evince authors"), "license", license_trans, "website", "http://www.gnome.org/projects/evince", - "comments", _("PostScript and PDF File Viewer."), + "comments", comments, "authors", authors, "documenters", documenters, "translator-credits", _("translator-credits"), NULL); + g_free (comments); g_free (license_trans); } @@ -2146,21 +2167,6 @@ find_bar_close_cb (EggFindBar *find_bar, update_chrome_flag (ev_window, EV_CHROME_FINDBAR, NULL, FALSE); } -static void -ev_window_page_mode_cb (GtkRadioAction *action, - GtkRadioAction *activated_action, - EvWindow *window) -{ - int mode; - - mode = gtk_radio_action_get_current_value (action); - - g_assert (mode == PAGE_MODE_CONTINUOUS_PAGE || - mode == PAGE_MODE_SINGLE_PAGE); - - ev_window_set_page_mode (window, (EvWindowPageMode) mode); -} - static void find_bar_search_changed_cb (EggFindBar *find_bar, GParamSpec *param, @@ -2446,15 +2452,6 @@ static const GtkToggleActionEntry toggle_entries[] = { G_CALLBACK (ev_window_cmd_view_page_width) }, }; -static const GtkRadioActionEntry page_view_entries[] = { - { "SinglePage", GTK_STOCK_DND, N_("Single"), NULL, - N_("Show the document one page at a time"), - PAGE_MODE_SINGLE_PAGE }, - { "ContinuousPage", GTK_STOCK_DND_MULTIPLE, N_("Multi"), NULL, - N_("Show the full document at once"), - PAGE_MODE_CONTINUOUS_PAGE } -}; - static void drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, @@ -2473,6 +2470,25 @@ drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, } } +static void +activate_link_cb (EvPageAction *page_action, EvLink *link, EvWindow *window) +{ + g_return_if_fail (EV_IS_WINDOW (window)); + + ev_page_cache_set_link (window->priv->page_cache, link); + gtk_widget_grab_focus (window->priv->view); +} + +static gboolean +activate_label_cb (EvPageAction *page_action, char *label, EvWindow *window) +{ + g_return_val_if_fail (EV_IS_WINDOW (window), FALSE); + + gtk_widget_grab_focus (window->priv->view); + + return ev_page_cache_set_page_label (window->priv->page_cache, label); +} + static void register_custom_actions (EvWindow *window, GtkActionGroup *group) { @@ -2484,6 +2500,10 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group) "tooltip", _("Select Page"), "visible_overflown", FALSE, NULL); + g_signal_connect (action, "activate_link", + G_CALLBACK (activate_link_cb), window); + g_signal_connect (action, "activate_label", + G_CALLBACK (activate_label_cb), window); gtk_action_group_add_action (group, action); g_object_unref (action); @@ -2673,7 +2693,7 @@ ev_window_init (EvWindow *ev_window) ev_window->priv = EV_WINDOW_GET_PRIVATE (ev_window); - ev_window->priv->page_mode = PAGE_MODE_SINGLE_PAGE; + ev_window->priv->page_mode = PAGE_MODE_DOCUMENT; update_window_title (NULL, NULL, ev_window); ev_window->priv->main_box = gtk_vbox_new (FALSE, 0); @@ -2688,11 +2708,6 @@ ev_window_init (EvWindow *ev_window) gtk_action_group_add_toggle_actions (action_group, toggle_entries, G_N_ELEMENTS (toggle_entries), ev_window); - gtk_action_group_add_radio_actions (action_group, page_view_entries, - G_N_ELEMENTS (page_view_entries), - ev_window->priv->page_mode, - G_CALLBACK (ev_window_page_mode_cb), - ev_window); set_action_properties (action_group); register_custom_actions (ev_window, action_group);