summaryrefslogtreecommitdiff
path: root/lib/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'lib/widgets')
-rw-r--r--lib/widgets/ephy-download-widget.c159
-rw-r--r--lib/widgets/ephy-download-widget.h27
2 files changed, 80 insertions, 106 deletions
diff --git a/lib/widgets/ephy-download-widget.c b/lib/widgets/ephy-download-widget.c
index 77cb30dd9..687212b66 100644
--- a/lib/widgets/ephy-download-widget.c
+++ b/lib/widgets/ephy-download-widget.c
@@ -31,13 +31,10 @@
#include <glib/gi18n.h>
#include <webkit2/webkit2.h>
-G_DEFINE_TYPE (EphyDownloadWidget, ephy_download_widget, GTK_TYPE_GRID)
-
-#define DOWNLOAD_WIDGET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), EPHY_TYPE_DOWNLOAD_WIDGET, EphyDownloadWidgetPrivate))
-
-struct _EphyDownloadWidgetPrivate
+struct _EphyDownloadWidget
{
+ GtkGrid parent_instance;
+
EphyDownload *download;
GtkWidget *filename;
@@ -47,6 +44,8 @@ struct _EphyDownloadWidgetPrivate
GtkWidget *action_button;
};
+G_DEFINE_TYPE (EphyDownloadWidget, ephy_download_widget, GTK_TYPE_GRID)
+
enum
{
PROP_0,
@@ -137,13 +136,13 @@ update_download_icon (EphyDownloadWidget *widget)
GIcon *icon;
const char *content_type;
- content_type = ephy_download_get_content_type (widget->priv->download);
+ content_type = ephy_download_get_content_type (widget->download);
if (content_type)
icon = g_content_type_get_icon (content_type);
else
icon = g_icon_new_for_string ("package-x-generic", NULL);
- gtk_image_set_from_gicon (GTK_IMAGE (widget->priv->icon), icon, GTK_ICON_SIZE_DIALOG);
+ gtk_image_set_from_gicon (GTK_IMAGE (widget->icon), icon, GTK_ICON_SIZE_DIALOG);
g_object_unref (icon);
}
@@ -153,12 +152,12 @@ update_download_destination (EphyDownloadWidget *widget)
char *dest;
char *markup;
- dest = get_destination_basename_from_download (widget->priv->download);
+ dest = get_destination_basename_from_download (widget->download);
if (!dest)
return;
markup = g_markup_printf_escaped ("<b>%s</b>", dest);
g_free (dest);
- gtk_label_set_markup (GTK_LABEL (widget->priv->filename), markup);
+ gtk_label_set_markup (GTK_LABEL (widget->filename), markup);
g_free (markup);
}
@@ -169,7 +168,7 @@ update_status_label (EphyDownloadWidget *widget,
char *markup;
markup = g_markup_printf_escaped ("<span size='small'>%s</span>", download_label);
- gtk_label_set_markup (GTK_LABEL (widget->priv->status), markup);
+ gtk_label_set_markup (GTK_LABEL (widget->status), markup);
g_free (markup);
}
@@ -209,11 +208,11 @@ download_progress_cb (WebKitDownload *download,
g_free (total);
g_free (remaining);
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget->priv->progress),
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget->progress),
progress);
} else if (received_length > 0) {
download_label = g_format_size (received_length);
- gtk_progress_bar_pulse (GTK_PROGRESS_BAR (widget->priv->progress));
+ gtk_progress_bar_pulse (GTK_PROGRESS_BAR (widget->progress));
}
if (download_label) {
@@ -226,9 +225,9 @@ static void
download_finished_cb (EphyDownload *download,
EphyDownloadWidget *widget)
{
- gtk_widget_hide (widget->priv->progress);
+ gtk_widget_hide (widget->progress);
update_status_label (widget, _("Finished"));
- gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->priv->action_button))),
+ gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->action_button))),
"folder-open-symbolic",
GTK_ICON_SIZE_MENU);
}
@@ -242,12 +241,12 @@ download_failed_cb (EphyDownload *download,
g_signal_handlers_disconnect_by_func (download, download_progress_cb, widget);
- gtk_widget_hide (widget->priv->progress);
+ gtk_widget_hide (widget->progress);
error_msg = g_strdup_printf (_("Error downloading: %s"), error->message);
update_status_label (widget, error_msg);
g_free (error_msg);
- gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->priv->action_button))),
+ gtk_image_set_from_icon_name (GTK_IMAGE (gtk_button_get_image (GTK_BUTTON (widget->action_button))),
"list-remove-symbolic",
GTK_ICON_SIZE_MENU);
}
@@ -263,25 +262,25 @@ download_content_type_changed_cb (EphyDownload *download,
static void
widget_action_button_clicked_cb (EphyDownloadWidget *widget)
{
- if (ephy_download_is_active (widget->priv->download)) {
+ if (ephy_download_is_active (widget->download)) {
WebKitDownload *download;
- download = ephy_download_get_webkit_download (widget->priv->download);
+ download = ephy_download_get_webkit_download (widget->download);
g_signal_handlers_disconnect_matched (download, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, widget);
- g_signal_handlers_disconnect_matched (widget->priv->download, G_SIGNAL_MATCH_DATA, 0, 0,
+ g_signal_handlers_disconnect_matched (widget->download, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, widget);
update_status_label (widget, _("Cancelling…"));
- gtk_widget_set_sensitive (widget->priv->action_button, FALSE);
+ gtk_widget_set_sensitive (widget->action_button, FALSE);
- ephy_download_cancel (widget->priv->download);
- } else if (ephy_download_failed (widget->priv->download, NULL)) {
+ ephy_download_cancel (widget->download);
+ } else if (ephy_download_failed (widget->download, NULL)) {
EphyDownloadsManager *manager;
manager = ephy_embed_shell_get_downloads_manager (ephy_embed_shell_get_default ());
- ephy_downloads_manager_remove_download (manager, widget->priv->download);
+ ephy_downloads_manager_remove_download (manager, widget->download);
} else {
- ephy_download_do_download_action (widget->priv->download,
+ ephy_download_do_download_action (widget->download,
EPHY_DOWNLOAD_ACTION_BROWSE_TO);
}
}
@@ -325,7 +324,7 @@ ephy_download_widget_set_property (GObject *object,
switch (property_id) {
case PROP_DOWNLOAD:
- widget->priv->download = g_value_dup_object (value);
+ widget->download = g_value_dup_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -342,15 +341,15 @@ ephy_download_widget_dispose (GObject *object)
widget = EPHY_DOWNLOAD_WIDGET (object);
- if (widget->priv->download != NULL) {
- WebKitDownload *download = ephy_download_get_webkit_download (widget->priv->download);
+ if (widget->download != NULL) {
+ WebKitDownload *download = ephy_download_get_webkit_download (widget->download);
g_signal_handlers_disconnect_matched (download, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, widget);
- g_signal_handlers_disconnect_matched (widget->priv->download, G_SIGNAL_MATCH_DATA, 0, 0,
+ g_signal_handlers_disconnect_matched (widget->download, G_SIGNAL_MATCH_DATA, 0, 0,
NULL, NULL, widget);
- g_object_unref (widget->priv->download);
- widget->priv->download = NULL;
+ g_object_unref (widget->download);
+ widget->download = NULL;
}
G_OBJECT_CLASS (ephy_download_widget_parent_class)->dispose (object);
@@ -360,7 +359,6 @@ static void
ephy_download_widget_constructed (GObject *object)
{
EphyDownloadWidget *widget = EPHY_DOWNLOAD_WIDGET (object);
- EphyDownloadWidgetPrivate *priv = widget->priv;
WebKitDownload *download;
const char *action_icon_name = NULL;
GError *error = NULL;
@@ -370,82 +368,82 @@ ephy_download_widget_constructed (GObject *object)
gtk_widget_set_margin_start (GTK_WIDGET (widget), 5);
gtk_widget_set_margin_end (GTK_WIDGET (widget), 5);
- priv->icon = gtk_image_new ();
- gtk_widget_set_margin_end (priv->icon, 10);
+ widget->icon = gtk_image_new ();
+ gtk_widget_set_margin_end (widget->icon, 10);
update_download_icon (widget);
- gtk_grid_attach (GTK_GRID (widget), priv->icon, 0, 0, 1, 3);
- gtk_widget_show (priv->icon);
-
- priv->filename = gtk_label_new (NULL);
- gtk_widget_set_valign (priv->filename, GTK_ALIGN_CENTER);
- gtk_widget_set_margin_bottom (priv->filename, 6);
- gtk_label_set_xalign (GTK_LABEL (priv->filename), 0);
- gtk_label_set_max_width_chars (GTK_LABEL (priv->filename), 30);
- gtk_label_set_ellipsize (GTK_LABEL (priv->filename), PANGO_ELLIPSIZE_END);
+ gtk_grid_attach (GTK_GRID (widget), widget->icon, 0, 0, 1, 3);
+ gtk_widget_show (widget->icon);
+
+ widget->filename = gtk_label_new (NULL);
+ gtk_widget_set_valign (widget->filename, GTK_ALIGN_CENTER);
+ gtk_widget_set_margin_bottom (widget->filename, 6);
+ gtk_label_set_xalign (GTK_LABEL (widget->filename), 0);
+ gtk_label_set_max_width_chars (GTK_LABEL (widget->filename), 30);
+ gtk_label_set_ellipsize (GTK_LABEL (widget->filename), PANGO_ELLIPSIZE_END);
update_download_destination (widget);
- gtk_grid_attach (GTK_GRID (widget), priv->filename, 1, 0, 1, 1);
- gtk_widget_show (priv->filename);
-
- priv->progress = gtk_progress_bar_new ();
- gtk_widget_set_valign (priv->progress, GTK_ALIGN_CENTER);
- gtk_widget_set_margin_start (priv->progress, 2);
- gtk_widget_set_margin_bottom (priv->progress, 4);
- gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (priv->progress), 0.05);
- gtk_grid_attach (GTK_GRID (widget), priv->progress, 1, 1, 1, 1);
- if (ephy_download_is_active (priv->download))
- gtk_widget_show (priv->progress);
-
- priv->status = gtk_label_new (NULL);
- gtk_widget_set_valign (priv->status, GTK_ALIGN_CENTER);
- gtk_label_set_xalign (GTK_LABEL (priv->status), 0);
- g_object_set (priv->status, "width-request", 260, NULL);
- gtk_label_set_max_width_chars (GTK_LABEL (priv->status), 30);
- gtk_label_set_ellipsize (GTK_LABEL (priv->status), PANGO_ELLIPSIZE_END);
- if (ephy_download_failed (priv->download, &error)) {
+ gtk_grid_attach (GTK_GRID (widget), widget->filename, 1, 0, 1, 1);
+ gtk_widget_show (widget->filename);
+
+ widget->progress = gtk_progress_bar_new ();
+ gtk_widget_set_valign (widget->progress, GTK_ALIGN_CENTER);
+ gtk_widget_set_margin_start (widget->progress, 2);
+ gtk_widget_set_margin_bottom (widget->progress, 4);
+ gtk_progress_bar_set_pulse_step (GTK_PROGRESS_BAR (widget->progress), 0.05);
+ gtk_grid_attach (GTK_GRID (widget), widget->progress, 1, 1, 1, 1);
+ if (ephy_download_is_active (widget->download))
+ gtk_widget_show (widget->progress);
+
+ widget->status = gtk_label_new (NULL);
+ gtk_widget_set_valign (widget->status, GTK_ALIGN_CENTER);
+ gtk_label_set_xalign (GTK_LABEL (widget->status), 0);
+ g_object_set (widget->status, "width-request", 260, NULL);
+ gtk_label_set_max_width_chars (GTK_LABEL (widget->status), 30);
+ gtk_label_set_ellipsize (GTK_LABEL (widget->status), PANGO_ELLIPSIZE_END);
+ if (ephy_download_failed (widget->download, &error)) {
char *error_msg;
error_msg = g_strdup_printf (_("Error downloading: %s"), error->message);
update_status_label (widget, error_msg);
g_free (error_msg);
- } else if (ephy_download_succeeded (priv->download)) {
+ } else if (ephy_download_succeeded (widget->download)) {
update_status_label (widget, _("Finished"));
} else {
update_status_label (widget, _("Starting…"));
}
- gtk_grid_attach (GTK_GRID (widget), priv->status, 1, 2, 1, 1);
- gtk_widget_show (priv->status);
+ gtk_grid_attach (GTK_GRID (widget), widget->status, 1, 2, 1, 1);
+ gtk_widget_show (widget->status);
- if (ephy_download_succeeded (priv->download))
+ if (ephy_download_succeeded (widget->download))
action_icon_name = "folder-open-symbolic";
- else if (ephy_download_failed (priv->download, NULL))
+ else if (ephy_download_failed (widget->download, NULL))
action_icon_name = "list-remove-symbolic";
else
action_icon_name = "window-close-symbolic";
- priv->action_button = gtk_button_new_from_icon_name (action_icon_name, GTK_ICON_SIZE_MENU);
- g_signal_connect_swapped (priv->action_button, "clicked",
+ widget->action_button = gtk_button_new_from_icon_name (action_icon_name, GTK_ICON_SIZE_MENU);
+ g_signal_connect_swapped (widget->action_button, "clicked",
G_CALLBACK (widget_action_button_clicked_cb),
widget);
- gtk_widget_set_valign (priv->action_button, GTK_ALIGN_CENTER);
- gtk_widget_set_margin_start (priv->action_button, 10);
- gtk_style_context_add_class (gtk_widget_get_style_context (priv->action_button),
+ gtk_widget_set_valign (widget->action_button, GTK_ALIGN_CENTER);
+ gtk_widget_set_margin_start (widget->action_button, 10);
+ gtk_style_context_add_class (gtk_widget_get_style_context (widget->action_button),
"download-circular-button");
- gtk_grid_attach (GTK_GRID (widget), priv->action_button, 3, 0, 1, 3);
- gtk_widget_show (priv->action_button);
+ gtk_grid_attach (GTK_GRID (widget), widget->action_button, 3, 0, 1, 3);
+ gtk_widget_show (widget->action_button);
- download = ephy_download_get_webkit_download (priv->download);
+ download = ephy_download_get_webkit_download (widget->download);
g_signal_connect (download, "notify::estimated-progress",
G_CALLBACK (download_progress_cb),
widget);
g_signal_connect (download, "notify::destination",
G_CALLBACK (download_destination_changed_cb),
widget);
- g_signal_connect (priv->download, "completed",
+ g_signal_connect (widget->download, "completed",
G_CALLBACK (download_finished_cb),
widget);
- g_signal_connect (priv->download, "error",
+ g_signal_connect (widget->download, "error",
G_CALLBACK (download_failed_cb),
widget);
- g_signal_connect (priv->download, "notify::content-type",
+ g_signal_connect (widget->download, "notify::content-type",
G_CALLBACK (download_content_type_changed_cb),
widget);
}
@@ -455,8 +453,6 @@ ephy_download_widget_class_init (EphyDownloadWidgetClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (EphyDownloadWidgetPrivate));
-
object_class->constructed = ephy_download_widget_constructed;
object_class->get_property = ephy_download_widget_get_property;
object_class->set_property = ephy_download_widget_set_property;
@@ -480,7 +476,6 @@ ephy_download_widget_class_init (EphyDownloadWidgetClass *klass)
static void
ephy_download_widget_init (EphyDownloadWidget *widget)
{
- widget->priv = DOWNLOAD_WIDGET_PRIVATE (widget);
}
/**
@@ -495,7 +490,7 @@ EphyDownload *
ephy_download_widget_get_download (EphyDownloadWidget *widget)
{
g_return_val_if_fail (EPHY_IS_DOWNLOAD_WIDGET (widget), NULL);
- return widget->priv->download;
+ return widget->download;
}
/**
diff --git a/lib/widgets/ephy-download-widget.h b/lib/widgets/ephy-download-widget.h
index bf1335b08..0cd3a35c5 100644
--- a/lib/widgets/ephy-download-widget.h
+++ b/lib/widgets/ephy-download-widget.h
@@ -28,30 +28,9 @@
G_BEGIN_DECLS
-#define EPHY_TYPE_DOWNLOAD_WIDGET ephy_download_widget_get_type()
-#define EPHY_DOWNLOAD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EPHY_TYPE_DOWNLOAD_WIDGET, EphyDownloadWidget))
-#define EPHY_DOWNLOAD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EPHY_TYPE_DOWNLOAD_WIDGET, EphyDownloadWidgetClass))
-#define EPHY_IS_DOWNLOAD_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EPHY_TYPE_DOWNLOAD_WIDGET))
-#define EPHY_IS_DOWNLOAD_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EPHY_TYPE_DOWNLOAD_WIDGET))
-#define EPHY_DOWNLOAD_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EPHY_TYPE_DOWNLOAD_WIDGET, EphyDownloadWidgetClass))
-
-typedef struct _EphyDownloadWidget EphyDownloadWidget;
-typedef struct _EphyDownloadWidgetClass EphyDownloadWidgetClass;
-typedef struct _EphyDownloadWidgetPrivate EphyDownloadWidgetPrivate;
-
-struct _EphyDownloadWidget
-{
- GtkGrid parent;
-
- EphyDownloadWidgetPrivate *priv;
-};
-
-struct _EphyDownloadWidgetClass
-{
- GtkGridClass parent_class;
-};
-
-GType ephy_download_widget_get_type (void) G_GNUC_CONST;
+#define EPHY_TYPE_DOWNLOAD_WIDGET ephy_download_widget_get_type()
+
+G_DECLARE_FINAL_TYPE (EphyDownloadWidget, ephy_download_widget, EPHY, DOWNLOAD_WIDGET, GtkGrid)
GtkWidget *ephy_download_widget_new (EphyDownload *ephy_download);