diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-embed-container.c | 4 | ||||
-rw-r--r-- | embed/ephy-web-view.c | 73 | ||||
-rw-r--r-- | embed/ephy-web-view.h | 16 |
3 files changed, 41 insertions, 52 deletions
diff --git a/embed/ephy-embed-container.c b/embed/ephy-embed-container.c index 50d1c143c..75ca72e78 100644 --- a/embed/ephy-embed-container.c +++ b/embed/ephy-embed-container.c @@ -47,10 +47,6 @@ ephy_embed_container_base_init (gpointer g_class) g_param_spec_object ("active-child", NULL, NULL, GTK_TYPE_WIDGET /* Can't use an interface type here */, G_PARAM_READWRITE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); - g_object_interface_install_property (g_class, - g_param_spec_boolean ("is-print-preview", NULL, NULL, - FALSE, - G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); } } diff --git a/embed/ephy-web-view.c b/embed/ephy-web-view.c index 44143b97e..ed745aecc 100644 --- a/embed/ephy-web-view.c +++ b/embed/ephy-web-view.c @@ -3011,46 +3011,53 @@ ephy_web_view_show_page_certificate (EphyWebView *view) } /** - * ephy_web_view_set_print_preview_mode: + * ephy_web_view_show_print_preview * @view: an #EphyWebView - * @preview_mode: Whether the print preview mode is enabled. * - * Enable and disable the print preview mode. + * Generates a print preview of the specified view. + * An external viewer is used to display the preview. + * + * Since: 2.30 **/ void -ephy_web_view_set_print_preview_mode (EphyWebView *view, - gboolean preview_mode) +ephy_web_view_show_print_preview (EphyWebView *view) { -} + WebKitWebFrame *main_frame; + GtkPrintOperation *operation; + GError *error; + EphyEmbedShell *shell; -/** - * ephy_web_view_print_preview_n_pages: - * @view: an #EphyWebView - * - * Returns the number of pages which would appear in @view's loaded document - * if it were to be printed. - * - * Return value: the number of pages in @view's loaded document - **/ -int -ephy_web_view_print_preview_n_pages (EphyWebView *view) -{ - return 0; -} + shell = ephy_embed_shell_get_default (); + error = NULL; + main_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view)); -/** - * ephy_web_view_print_preview_navigate: - * @view: an #EphyWebView - * @type: an #EphyPrintPreviewNavType which determines where to navigate - * @page: if @type is %EPHY_WEB_VIEW_PRINTPREVIEW_GOTO_PAGENUM, the desired page number - * - * Navigates @view's print preview. - **/ -void -ephy_web_view_print_preview_navigate (EphyWebView *view, - EphyWebViewPrintPreviewNavType type, - int page) -{ + operation = gtk_print_operation_new (); + gtk_print_operation_set_default_page_setup (operation, ephy_embed_shell_get_page_setup (shell)); + + webkit_web_frame_print_full (main_frame, operation, GTK_PRINT_OPERATION_ACTION_PREVIEW, &error); + g_object_unref (operation); + + if (error) { + GtkWidget *info_bar; + GtkWidget *label; + GtkContainer *content_area; + EphyEmbed *embed = EPHY_GET_EMBED_FROM_EPHY_WEB_VIEW (view); + + info_bar = gtk_info_bar_new_with_buttons (GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + label = gtk_label_new (error->message); + content_area = GTK_CONTAINER (gtk_info_bar_get_content_area (GTK_INFO_BAR (info_bar))); + g_error_free (error); + + gtk_info_bar_set_message_type (GTK_INFO_BAR (info_bar), GTK_MESSAGE_ERROR); + gtk_container_add (content_area, label); + g_signal_connect (info_bar, "response", + G_CALLBACK (gtk_widget_destroy), NULL); + + ephy_embed_add_top_widget (embed, info_bar, FALSE); + gtk_widget_show_all (info_bar); + } + + return; } /** diff --git a/embed/ephy-web-view.h b/embed/ephy-web-view.h index 37852bccd..57dde0bff 100644 --- a/embed/ephy-web-view.h +++ b/embed/ephy-web-view.h @@ -83,15 +83,6 @@ typedef enum typedef enum { - EPHY_WEB_VIEW_PRINTPREVIEW_GOTO_PAGENUM = 0, - EPHY_WEB_VIEW_PRINTPREVIEW_PREV_PAGE = 1, - EPHY_WEB_VIEW_PRINTPREVIEW_NEXT_PAGE = 2, - EPHY_WEB_VIEW_PRINTPREVIEW_HOME = 3, - EPHY_WEB_VIEW_PRINTPREVIEW_END = 4 -} EphyWebViewPrintPreviewNavType; - -typedef enum -{ EPHY_WEB_VIEW_STATE_IS_UNKNOWN, EPHY_WEB_VIEW_STATE_IS_INSECURE, EPHY_WEB_VIEW_STATE_IS_BROKEN, @@ -191,12 +182,7 @@ void ephy_web_view_get_security_level (EphyWebView EphyWebViewSecurityLevel *level, char **description); void ephy_web_view_show_page_certificate (EphyWebView *view); -void ephy_web_view_set_print_preview_mode (EphyWebView *view, - gboolean preview_mode); -int ephy_web_view_print_preview_n_pages (EphyWebView *view); -void ephy_web_view_print_preview_navigate (EphyWebView *view, - EphyWebViewPrintPreviewNavType type, - int page); +void ephy_web_view_show_print_preview (EphyWebView *view); GSList * ephy_web_view_get_go_up_list (EphyWebView *view); void ephy_web_view_set_title (EphyWebView *view, const char *view_title); |