1
0
mirror of https://gitlab.gnome.org/GNOME/evince synced 2024-07-07 19:39:49 +00:00

message-area: Modernize access to private members

This commit is contained in:
Germán Poo-Caamaño 2018-11-09 01:32:12 -03:00
parent 09b70ca94a
commit 3381248472
2 changed files with 69 additions and 53 deletions

View File

@ -23,17 +23,14 @@
#include "ev-message-area.h"
#define EV_MESSAGE_AREA_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), EV_TYPE_MESSAGE_AREA, EvMessageAreaPrivate))
struct _EvMessageAreaPrivate {
typedef struct {
GtkWidget *main_box;
GtkWidget *image;
GtkWidget *label;
GtkWidget *secondary_label;
guint message_type : 3;
};
} EvMessageAreaPrivate;
enum {
PROP_0,
@ -51,7 +48,7 @@ static void ev_message_area_get_property (GObject *object,
GValue *value,
GParamSpec *pspec);
G_DEFINE_TYPE (EvMessageArea, ev_message_area, GTK_TYPE_INFO_BAR)
G_DEFINE_TYPE_WITH_PRIVATE (EvMessageArea, ev_message_area, GTK_TYPE_INFO_BAR)
static void
ev_message_area_class_init (EvMessageAreaClass *class)
@ -85,8 +82,6 @@ ev_message_area_class_init (EvMessageAreaClass *class)
GTK_TYPE_WIDGET,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
g_type_class_add_private (gobject_class, sizeof (EvMessageAreaPrivate));
}
static void
@ -94,45 +89,46 @@ ev_message_area_init (EvMessageArea *area)
{
GtkWidget *hbox, *vbox;
GtkWidget *content_area;
EvMessageAreaPrivate *priv;
area->priv = EV_MESSAGE_AREA_GET_PRIVATE (area);
priv = ev_message_area_get_instance_private (area);
area->priv->main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
priv->main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
area->priv->label = gtk_label_new (NULL);
gtk_label_set_use_markup (GTK_LABEL (area->priv->label), TRUE);
gtk_label_set_line_wrap (GTK_LABEL (area->priv->label), TRUE);
gtk_label_set_selectable (GTK_LABEL (area->priv->label), TRUE);
gtk_misc_set_alignment (GTK_MISC (area->priv->label), 0.0, 0.5);
gtk_widget_set_can_focus (area->priv->label, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), area->priv->label, TRUE, TRUE, 0);
gtk_widget_show (area->priv->label);
priv->label = gtk_label_new (NULL);
gtk_label_set_use_markup (GTK_LABEL (priv->label), TRUE);
gtk_label_set_line_wrap (GTK_LABEL (priv->label), TRUE);
gtk_label_set_selectable (GTK_LABEL (priv->label), TRUE);
gtk_misc_set_alignment (GTK_MISC (priv->label), 0.0, 0.5);
gtk_widget_set_can_focus (priv->label, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), priv->label, TRUE, TRUE, 0);
gtk_widget_show (priv->label);
area->priv->secondary_label = gtk_label_new (NULL);
gtk_label_set_use_markup (GTK_LABEL (area->priv->secondary_label), TRUE);
gtk_label_set_line_wrap (GTK_LABEL (area->priv->secondary_label), TRUE);
gtk_label_set_selectable (GTK_LABEL (area->priv->secondary_label), TRUE);
gtk_misc_set_alignment (GTK_MISC (area->priv->secondary_label), 0.0, 0.5);
gtk_widget_set_can_focus (area->priv->secondary_label, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), area->priv->secondary_label, TRUE, TRUE, 0);
priv->secondary_label = gtk_label_new (NULL);
gtk_label_set_use_markup (GTK_LABEL (priv->secondary_label), TRUE);
gtk_label_set_line_wrap (GTK_LABEL (priv->secondary_label), TRUE);
gtk_label_set_selectable (GTK_LABEL (priv->secondary_label), TRUE);
gtk_misc_set_alignment (GTK_MISC (priv->secondary_label), 0.0, 0.5);
gtk_widget_set_can_focus (priv->secondary_label, TRUE);
gtk_box_pack_start (GTK_BOX (vbox), priv->secondary_label, TRUE, TRUE, 0);
area->priv->image = gtk_image_new_from_icon_name (NULL, GTK_ICON_SIZE_DIALOG);
gtk_misc_set_alignment (GTK_MISC (area->priv->image), 0.5, 0.0);
gtk_box_pack_start (GTK_BOX (hbox), area->priv->image, FALSE, FALSE, 0);
gtk_widget_show (area->priv->image);
priv->image = gtk_image_new_from_icon_name (NULL, GTK_ICON_SIZE_DIALOG);
gtk_misc_set_alignment (GTK_MISC (priv->image), 0.5, 0.0);
gtk_box_pack_start (GTK_BOX (hbox), priv->image, FALSE, FALSE, 0);
gtk_widget_show (priv->image);
gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
gtk_widget_show (vbox);
gtk_box_pack_start (GTK_BOX (area->priv->main_box), hbox, TRUE, TRUE, 0);
gtk_box_pack_start (GTK_BOX (priv->main_box), hbox, TRUE, TRUE, 0);
gtk_widget_show (hbox);
content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (area));
gtk_container_add (GTK_CONTAINER (content_area), area->priv->main_box);
gtk_widget_show (area->priv->main_box);
gtk_container_add (GTK_CONTAINER (content_area), priv->main_box);
gtk_widget_show (priv->main_box);
}
static void
@ -141,6 +137,9 @@ ev_message_area_set_image_for_type (EvMessageArea *area,
{
const gchar *icon_name = NULL;
AtkObject *atk_obj;
EvMessageAreaPrivate *priv;
priv = ev_message_area_get_instance_private (area);
switch (type) {
case GTK_MESSAGE_INFO:
@ -163,7 +162,7 @@ ev_message_area_set_image_for_type (EvMessageArea *area,
}
if (icon_name)
gtk_image_set_from_icon_name (GTK_IMAGE (area->priv->image),
gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
icon_name,
GTK_ICON_SIZE_DIALOG);
@ -207,16 +206,19 @@ ev_message_area_get_property (GObject *object,
GParamSpec *pspec)
{
EvMessageArea *area = EV_MESSAGE_AREA (object);
EvMessageAreaPrivate *priv;
priv = ev_message_area_get_instance_private (area);
switch (prop_id) {
case PROP_TEXT:
g_value_set_string (value, gtk_label_get_label (GTK_LABEL (area->priv->label)));
g_value_set_string (value, gtk_label_get_label (GTK_LABEL (priv->label)));
break;
case PROP_SECONDARY_TEXT:
g_value_set_string (value, gtk_label_get_label (GTK_LABEL (area->priv->secondary_label)));
g_value_set_string (value, gtk_label_get_label (GTK_LABEL (priv->secondary_label)));
break;
case PROP_IMAGE:
g_value_set_object (value, area->priv->image);
g_value_set_object (value, priv->image);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@ -252,7 +254,10 @@ _ev_message_area_add_buttons_valist (EvMessageArea *area,
GtkWidget *
_ev_message_area_get_main_box (EvMessageArea *area)
{
return area->priv->main_box;
EvMessageAreaPrivate *priv;
priv = ev_message_area_get_instance_private (area);
return priv->main_box;
}
GtkWidget *
@ -285,17 +290,20 @@ ev_message_area_set_image (EvMessageArea *area,
GtkWidget *image)
{
GtkWidget *parent;
EvMessageAreaPrivate *priv;
priv = ev_message_area_get_instance_private (area);
g_return_if_fail (EV_IS_MESSAGE_AREA (area));
area->priv->message_type = GTK_MESSAGE_OTHER;
priv->message_type = GTK_MESSAGE_OTHER;
parent = gtk_widget_get_parent (area->priv->image);
parent = gtk_widget_get_parent (priv->image);
gtk_container_add (GTK_CONTAINER (parent), image);
gtk_container_remove (GTK_CONTAINER (parent), area->priv->image);
gtk_container_remove (GTK_CONTAINER (parent), priv->image);
gtk_box_reorder_child (GTK_BOX (parent), image, 0);
area->priv->image = image;
priv->image = image;
g_object_notify (G_OBJECT (area), "image");
}
@ -304,10 +312,14 @@ void
ev_message_area_set_image_from_icon_name (EvMessageArea *area,
const gchar *icon_name)
{
EvMessageAreaPrivate *priv;
g_return_if_fail (EV_IS_MESSAGE_AREA (area));
g_return_if_fail (icon_name != NULL);
gtk_image_set_from_icon_name (GTK_IMAGE (area->priv->image),
priv = ev_message_area_get_instance_private (area);
gtk_image_set_from_icon_name (GTK_IMAGE (priv->image),
icon_name,
GTK_ICON_SIZE_DIALOG);
}
@ -316,18 +328,22 @@ void
ev_message_area_set_text (EvMessageArea *area,
const gchar *str)
{
EvMessageAreaPrivate *priv;
g_return_if_fail (EV_IS_MESSAGE_AREA (area));
priv = ev_message_area_get_instance_private (area);
if (str) {
gchar *msg, *escaped;
escaped = g_markup_escape_text (str, -1);
msg = g_strdup_printf ("<b>%s</b>", escaped);
gtk_label_set_markup (GTK_LABEL (area->priv->label), msg);
gtk_label_set_markup (GTK_LABEL (priv->label), msg);
g_free (msg);
g_free (escaped);
} else {
gtk_label_set_markup (GTK_LABEL (area->priv->label), NULL);
gtk_label_set_markup (GTK_LABEL (priv->label), NULL);
}
g_object_notify (G_OBJECT (area), "text");
@ -337,18 +353,22 @@ void
ev_message_area_set_secondary_text (EvMessageArea *area,
const gchar *str)
{
EvMessageAreaPrivate *priv;
g_return_if_fail (EV_IS_MESSAGE_AREA (area));
priv = ev_message_area_get_instance_private (area);
if (str) {
gchar *msg;
msg = g_strdup_printf ("<small>%s</small>", str);
gtk_label_set_markup (GTK_LABEL (area->priv->secondary_label), msg);
gtk_label_set_markup (GTK_LABEL (priv->secondary_label), msg);
g_free (msg);
gtk_widget_show (area->priv->secondary_label);
gtk_widget_show (priv->secondary_label);
} else {
gtk_label_set_markup (GTK_LABEL (area->priv->secondary_label), NULL);
gtk_widget_hide (area->priv->secondary_label);
gtk_label_set_markup (GTK_LABEL (priv->secondary_label), NULL);
gtk_widget_hide (priv->secondary_label);
}
g_object_notify (G_OBJECT (area), "secondary-text");

View File

@ -35,13 +35,9 @@ G_BEGIN_DECLS
typedef struct _EvMessageArea EvMessageArea;
typedef struct _EvMessageAreaClass EvMessageAreaClass;
typedef struct _EvMessageAreaPrivate EvMessageAreaPrivate;
struct _EvMessageArea {
GtkInfoBar parent_instance;
/*< private >*/
EvMessageAreaPrivate *priv;
};
struct _EvMessageAreaClass {