1419
1422
#if WEBKIT_CHECK_VERSION (1, 1, 3)
1421
midori_browser_download_notify_progress_cb (WebKitDownload* download,
1423
GtkWidget* progress)
1430
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress),
1431
webkit_download_get_progress (download));
1433
current = g_format_size_for_display (webkit_download_get_current_size (download));
1434
total = g_format_size_for_display (webkit_download_get_total_size (download));
1435
size_text = g_strdup_printf (_("%s of %s"), current, total);
1438
text = g_strdup_printf ("%s (%s)",
1439
gtk_progress_bar_get_text (GTK_PROGRESS_BAR (progress)),
1441
gtk_widget_set_tooltip_text (progress, text);
1445
midori_browser_download_notify_status_cb (WebKitDownload* download,
1451
switch (webkit_download_get_status (download))
1453
case WEBKIT_DOWNLOAD_STATUS_FINISHED:
1455
MidoriBrowser* browser = midori_browser_get_for_widget (button);
1457
icon = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
1458
gtk_button_set_image (GTK_BUTTON (button), icon);
1459
if (g_object_get_data (G_OBJECT (download), "open-download"))
1460
gtk_button_clicked (GTK_BUTTON (button));
1462
g_object_set_data (G_OBJECT (gtk_widget_get_parent (button)),
1465
if (katze_object_get_boolean (browser->settings, "notify-transfer-completed"))
1467
const gchar* uri = webkit_download_get_destination_uri (download);
1468
gchar* path = soup_uri_decode (uri);
1469
gchar* filename = g_strrstr (path, "/") + 1;
1470
gchar* msg = g_strdup_printf (
1471
_("The file '<b>%s</b>' has been downloaded."), filename);
1474
g_signal_emit (browser, signals[SEND_NOTIFICATION], 0,
1475
_("Transfer completed"), msg);
1481
case WEBKIT_DOWNLOAD_STATUS_CANCELLED:
1482
case WEBKIT_DOWNLOAD_STATUS_ERROR:
1483
icon = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU);
1484
gtk_button_set_image (GTK_BUTTON (button), icon);
1485
g_object_set_data (G_OBJECT (gtk_widget_get_parent (button)),
1494
midori_browser_download_button_clicked_cb (GtkWidget* button,
1495
WebKitDownload* download)
1497
MidoriBrowser* browser;
1500
browser = midori_browser_get_for_widget (button);
1502
switch (webkit_download_get_status (download))
1504
case WEBKIT_DOWNLOAD_STATUS_STARTED:
1505
webkit_download_cancel (download);
1506
g_object_set_data (G_OBJECT (gtk_widget_get_parent (button)),
1509
case WEBKIT_DOWNLOAD_STATUS_FINISHED:
1511
const gchar* uri = webkit_download_get_destination_uri (download);
1512
if (sokoke_show_uri (gtk_widget_get_screen (button),
1513
uri, gtk_get_current_event_time (), NULL))
1514
gtk_widget_destroy (gtk_widget_get_parent (button));
1517
case WEBKIT_DOWNLOAD_STATUS_CANCELLED:
1518
gtk_widget_destroy (gtk_widget_get_parent (button));
1523
buttons = gtk_container_get_children (GTK_CONTAINER (browser->transferbar));
1524
if (g_list_length (buttons) == 1)
1525
gtk_widget_hide (browser->transferbar_clear);
1526
g_list_free (buttons);
1530
midori_browser_add_download_item (MidoriBrowser* browser,
1531
WebKitDownload* download)
1536
GtkWidget* progress;
1540
box = gtk_hbox_new (FALSE, 0);
1541
/* icon = gtk_image_new_from_stock (STOCK_TRANSFER, GTK_ICON_SIZE_MENU);
1542
gtk_box_pack_start (GTK_BOX (box), icon, FALSE, FALSE, 0); */
1543
progress = gtk_progress_bar_new ();
1544
gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR (progress),
1545
PANGO_ELLIPSIZE_MIDDLE);
1546
if ((uri = webkit_download_get_destination_uri (download)))
1548
gchar* path = soup_uri_decode (uri);
1549
gchar* filename = g_strrstr (path, "/") + 1;
1550
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), filename);
1554
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress),
1555
webkit_download_get_suggested_filename (download));
1556
sokoke_widget_get_text_size (progress, "M", &width, NULL);
1557
gtk_widget_set_size_request (progress, width * 10, -1);
1558
/* Avoid a bug in WebKit */
1559
if (webkit_download_get_status (download) != WEBKIT_DOWNLOAD_STATUS_CREATED)
1560
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress),
1561
webkit_download_get_progress (download));
1562
gtk_box_pack_start (GTK_BOX (box), progress, FALSE, FALSE, 0);
1563
icon = gtk_image_new_from_stock (GTK_STOCK_CANCEL, GTK_ICON_SIZE_MENU);
1564
button = gtk_button_new ();
1565
gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
1566
gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
1567
gtk_container_add (GTK_CONTAINER (button), icon);
1568
gtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);
1569
gtk_widget_show_all (box);
1570
gtk_box_pack_start (GTK_BOX (browser->transferbar), box, FALSE, FALSE, 0);
1571
gtk_widget_show (browser->transferbar_clear);
1573
g_signal_connect (download, "notify::progress",
1574
G_CALLBACK (midori_browser_download_notify_progress_cb), progress);
1575
g_signal_connect (download, "notify::status",
1576
G_CALLBACK (midori_browser_download_notify_status_cb), button);
1577
g_signal_connect (button, "clicked",
1578
G_CALLBACK (midori_browser_download_button_clicked_cb), download);
1583
1425
midori_view_download_save_as_response_cb (GtkWidget* dialog,
1919
1741
GdkEventAny* event)
1921
1743
MidoriBrowser* browser = MIDORI_BROWSER (widget);
1923
GtkWidget* dialog = NULL;
1924
gboolean cancel = FALSE;
1926
children = gtk_container_get_children (GTK_CONTAINER (browser->transferbar));
1927
if (g_list_length (children) > 1)
1929
dialog = gtk_message_dialog_new (GTK_WINDOW (widget),
1930
GTK_DIALOG_DESTROY_WITH_PARENT,
1931
GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE,
1932
_("Some files are being downloaded"));
1933
gtk_window_set_title (GTK_WINDOW (dialog),
1934
_("Some files are being downloaded"));
1935
gtk_dialog_add_button (GTK_DIALOG (dialog),
1936
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
1937
gtk_dialog_add_button (GTK_DIALOG (dialog),
1938
_("_Quit Midori"), GTK_RESPONSE_ACCEPT);
1939
gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
1940
_("The transfers will be cancelled if Midori quits."));
1942
g_list_free (children);
1945
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_CANCEL)
1947
gtk_widget_destroy (dialog);
1744
return midori_transferbar_confirm_delete (MIDORI_TRANSFERBAR (browser->transferbar));
6758
6551
gtk_box_pack_start (GTK_BOX (browser->statusbar_contents),
6759
6552
browser->progressbar, FALSE, FALSE, 3);
6761
browser->transferbar = gtk_hbox_new (FALSE, 0);
6762
gtk_box_pack_start (GTK_BOX (browser->statusbar_contents),
6763
browser->transferbar, FALSE, FALSE, 3);
6554
browser->transferbar = g_object_new (MIDORI_TYPE_TRANSFERBAR, NULL);
6555
gtk_box_pack_start (GTK_BOX (browser->statusbar_contents), browser->transferbar, FALSE, FALSE, 3);
6556
gtk_toolbar_set_show_arrow (GTK_TOOLBAR (browser->transferbar), FALSE);
6764
6557
gtk_widget_show (browser->transferbar);
6765
browser->transferbar_clear = gtk_button_new_with_label (_("Clear All"));
6766
icon = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_MENU);
6767
gtk_button_set_image (GTK_BUTTON (browser->transferbar_clear), icon);
6768
g_signal_connect (browser->transferbar_clear, "clicked",
6769
G_CALLBACK (midori_browser_transferbar_clear_clicked_cb), browser);
6770
gtk_box_pack_end (GTK_BOX (browser->transferbar), browser->transferbar_clear,
6772
6559
g_signal_connect (browser->statusbar, "button-press-event",
6773
6560
G_CALLBACK (midori_browser_menu_button_press_event_cb), browser);