625
625
gchar* slots = g_strjoinv (" , ", (gchar**)gcr_pkcs11_get_trust_lookup_uris ());
626
626
gchar* title = g_strdup_printf ("Error granting trust: %s", error->message);
627
627
midori_tab_stop_loading (MIDORI_TAB (view));
628
midori_view_display_error (view, NULL, NULL, NULL, title, slots, NULL,
628
midori_view_display_error (view, NULL, "security-low", NULL, title, slots, NULL,
629
629
_("Trust this website"), NULL);
837
837
g_free (filepath);
839
else if (g_str_has_prefix (uri, "stock://"))
842
const gchar* icon_name = &uri[8] ? &uri[8] : "";
843
gint icon_size = GTK_ICON_SIZE_MENU;
844
static gint icon_size_large_dialog = 0;
846
if (!icon_size_large_dialog)
848
gint width = 48, height = 48;
849
gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &width, &height);
850
icon_size_large_dialog = gtk_icon_size_register ("large-dialog", width * 2, height * 2);
853
if (g_ascii_isalpha (icon_name[0]))
855
if (g_str_has_prefix (icon_name, "dialog/"))
857
icon_name = &icon_name [strlen("dialog/")];
858
icon_size = icon_size_large_dialog;
861
icon_size = GTK_ICON_SIZE_BUTTON;
863
else if (g_ascii_isdigit (icon_name[0]))
867
if (icon_name[i++] == '/')
869
gchar* size = g_strndup (icon_name, i - 1);
870
icon_size = atoi (size);
871
/* Compatibility: map pixel to symbolic size */
873
icon_size = GTK_ICON_SIZE_MENU;
875
icon_name = &icon_name[i];
879
/* Render icon as a PNG at the desired size */
880
pixbuf = gtk_widget_render_icon (GTK_WIDGET (view), icon_name, icon_size, NULL);
882
pixbuf = gtk_widget_render_icon (GTK_WIDGET (view),
883
GTK_STOCK_MISSING_IMAGE, icon_size, NULL);
892
success = gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &buffer_size, "png", NULL, NULL);
893
g_object_unref (pixbuf);
897
encoded = g_base64_encode ((guchar*)buffer, buffer_size);
898
data_uri = g_strconcat ("data:image/png;base64,", encoded, NULL);
901
GInputStream* stream = g_memory_input_stream_new_from_data (buffer, buffer_size, g_free);
902
webkit_uri_scheme_request_finish (request, stream, -1, "image/png");
903
g_object_unref (stream);
906
webkit_network_request_set_uri (request, data_uri);
1132
1066
void* web_frame)
1135
gchar* path = midori_paths_get_res_filename ("error.html");
1138
if (g_file_get_contents (path, &template, NULL, NULL))
1140
gchar* title_escaped;
1144
gboolean is_main_frame;
1147
is_main_frame = TRUE;
1149
is_main_frame = web_frame && (webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (view->web_view)) == web_frame);
1152
#if !GTK_CHECK_VERSION (3, 0, 0)
1153
/* g_object_get_valist: object class `GtkSettings' has no property named `gtk-button-images' */
1154
g_type_class_unref (g_type_class_ref (GTK_TYPE_BUTTON));
1157
GtkSettings* gtk_settings = gtk_widget_get_settings (view->web_view);
1158
gboolean show_button_images = gtk_settings != NULL
1159
&& katze_object_get_boolean (gtk_settings, "gtk-button-images");
1161
uri = midori_tab_get_uri (MIDORI_TAB (view));
1162
title_escaped = g_markup_escape_text (title ? title : view->title, -1);
1163
icon = katze_item_get_icon (view->item);
1164
favicon = icon && !g_str_has_prefix (icon, "stock://")
1165
? g_strdup_printf ("<link rel=\"shortcut icon\" href=\"%s\" />", icon) : NULL;
1166
result = sokoke_replace_variables (template,
1167
"{dir}", gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL ?
1169
"{title}", title_escaped,
1170
"{favicon}", katze_str_non_null (favicon),
1171
"{error_icon}", katze_str_non_null (error_icon),
1172
"{message}", message,
1173
"{description}", description,
1174
"{suggestions}", katze_str_non_null (suggestions),
1175
"{tryagain}", try_again,
1177
"{hide-button-images}", show_button_images ? "" : "display:none",
1178
"{autofocus}", is_main_frame ? "autofocus=\"true\" " : "",
1181
g_free (title_escaped);
1184
midori_view_set_html (view, result, uri, web_frame);
1070
uri = midori_tab_get_uri (MIDORI_TAB (view));
1072
title = view->title ? view->title : uri;
1073
const gchar* icon = error_icon ? error_icon : "dialog-error";
1074
GtkWidget* error = midori_oops_new (uri, icon, title, message, description, suggestions, try_again);
1075
g_signal_connect (error, "retried", G_CALLBACK (midori_view_error_try_again_clicked_cb), view);
1076
midori_tab_set_widget (MIDORI_TAB (view), error);
1196
1080
static gboolean
1252
1136
midori_uri_parse_hostname(uri, NULL));
1255
result = midori_view_display_error (view, uri, "stock://dialog/network-error", title,
1139
result = midori_view_display_error (view, uri, "network-error", title,
1256
1140
message, error->message, NULL,
1257
1141
_("Try Again"), web_frame);
3672
3556
(GCallback)midori_view_web_view_crashed_cb, view);
3673
3557
view->scrolled_window = view->web_view;
3674
3558
WebKitWebContext* context = webkit_web_view_get_context (WEBKIT_WEB_VIEW (view->web_view));
3675
webkit_web_context_register_uri_scheme (context,
3676
"res", midori_view_uri_scheme_res, NULL, NULL);
3677
webkit_web_context_register_uri_scheme (context,
3678
"stock", midori_view_uri_scheme_res, NULL, NULL);
3679
3559
g_signal_connect (context, "download-started",
3680
3560
G_CALLBACK (midori_view_download_started_cb), view);
3563
GtkWidget* content = gtk_vbox_new (FALSE, 0);
3564
gtk_widget_show (content);
3565
gtk_box_pack_start (GTK_BOX (content), view->scrolled_window, TRUE, TRUE, 0);
3683
3567
#if GTK_CHECK_VERSION(3, 2, 0)
3684
3568
view->overlay = gtk_overlay_new ();
3685
3569
gtk_widget_show (view->overlay);
3686
gtk_container_add (GTK_CONTAINER (view->overlay), view->scrolled_window);
3570
gtk_container_add (GTK_CONTAINER (view->overlay), content);
3687
3571
gtk_box_pack_start (GTK_BOX (view), view->overlay, TRUE, TRUE, 0);
3689
3573
/* Overlays must be created before showing GtkOverlay as of GTK+ 3.2 */
3708
3592
view->overlay_find);
3709
3593
gtk_widget_set_no_show_all (view->overlay_find, TRUE);
3711
gtk_box_pack_start (GTK_BOX (view), view->scrolled_window, TRUE, TRUE, 0);
3595
gtk_box_pack_start (GTK_BOX (view), content, TRUE, TRUE, 0);
3714
3598
#ifndef HAVE_WEBKIT2
3896
3782
midori_tab_set_uri (MIDORI_TAB (view), uri);
3897
3783
midori_tab_set_special (MIDORI_TAB (view), TRUE);
3898
3784
katze_item_set_meta_integer (view->item, "delay", MIDORI_DELAY_PENDING_UNDELAY);
3899
midori_view_display_error (view, NULL, "stock://dialog/network-idle", NULL,
3785
midori_view_display_error (view, NULL, "network-idle", NULL,
3900
3786
_("Page loading delayed:"),
3901
3787
_("Loading delayed either due to a recent crash or startup preferences."),