X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-message-area.c;h=2c4be7533e778abf4fe715c674fd2f8f10e31fd9;hb=64f2cca8898d08f2b8c549d98a9c5869f7035e3f;hp=93e227d5b17d3b5bff5b8af3937aa76ec3afb093;hpb=c37e94332ad3d4a33a38a29f9557b7838f955f10;p=evince.git diff --git a/shell/ev-message-area.c b/shell/ev-message-area.c index 93e227d5..2c4be753 100644 --- a/shell/ev-message-area.c +++ b/shell/ev-message-area.c @@ -18,15 +18,10 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#include -#include -#include -#include -#include -#include +#include #include "ev-message-area.h" @@ -34,6 +29,7 @@ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), EV_TYPE_MESSAGE_AREA, EvMessageAreaPrivate)) struct _EvMessageAreaPrivate { + GtkWidget *main_box; GtkWidget *image; GtkWidget *label; GtkWidget *secondary_label; @@ -43,7 +39,6 @@ struct _EvMessageAreaPrivate { enum { PROP_0, - PROP_MESSAGE_TYPE, PROP_TEXT, PROP_SECONDARY_TEXT, PROP_IMAGE @@ -58,7 +53,7 @@ static void ev_message_area_get_property (GObject *object, GValue *value, GParamSpec *pspec); -G_DEFINE_TYPE (EvMessageArea, ev_message_area, GEDIT_TYPE_MESSAGE_AREA) +G_DEFINE_TYPE (EvMessageArea, ev_message_area, GTK_TYPE_INFO_BAR) static void ev_message_area_class_init (EvMessageAreaClass *class) @@ -68,14 +63,6 @@ ev_message_area_class_init (EvMessageAreaClass *class) gobject_class->set_property = ev_message_area_set_property; gobject_class->get_property = ev_message_area_get_property; - g_object_class_install_property (gobject_class, - PROP_MESSAGE_TYPE, - g_param_spec_enum ("message-type", - "Message Type", - "The type of message", - GTK_TYPE_MESSAGE_TYPE, - GTK_MESSAGE_INFO, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property (gobject_class, PROP_TEXT, g_param_spec_string ("text", @@ -105,27 +92,30 @@ static void ev_message_area_init (EvMessageArea *area) { GtkWidget *hbox, *vbox; - + GtkWidget *content_area; + area->priv = EV_MESSAGE_AREA_GET_PRIVATE (area); + area->priv->main_box = gtk_vbox_new (FALSE, 12); + hbox = gtk_hbox_new (FALSE, 12); vbox = gtk_vbox_new (FALSE, 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_FLAGS (area->priv->label, GTK_CAN_FOCUS); + 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); - + 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_FLAGS (area->priv->secondary_label, GTK_CAN_FOCUS); + gtk_widget_set_can_focus (area->priv->secondary_label, TRUE); gtk_box_pack_start (GTK_BOX (vbox), area->priv->secondary_label, TRUE, TRUE, 0); area->priv->image = gtk_image_new_from_stock (NULL, GTK_ICON_SIZE_DIALOG); @@ -136,8 +126,12 @@ ev_message_area_init (EvMessageArea *area) gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); - gedit_message_area_set_contents (GEDIT_MESSAGE_AREA (area), hbox); + gtk_box_pack_start (GTK_BOX (area->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); } static void @@ -192,10 +186,6 @@ ev_message_area_set_property (GObject *object, EvMessageArea *area = EV_MESSAGE_AREA (object); switch (prop_id) { - case PROP_MESSAGE_TYPE: - area->priv->message_type = g_value_get_enum (value); - ev_message_area_set_image_for_type (area, area->priv->message_type); - break; case PROP_TEXT: ev_message_area_set_text (area, g_value_get_string (value)); break; @@ -220,9 +210,6 @@ ev_message_area_get_property (GObject *object, EvMessageArea *area = EV_MESSAGE_AREA (object); switch (prop_id) { - case PROP_MESSAGE_TYPE: - g_value_set_enum (value, (GtkMessageType) area->priv->message_type); - break; case PROP_TEXT: g_value_set_string (value, gtk_label_get_label (GTK_LABEL (area->priv->label))); break; @@ -238,6 +225,37 @@ ev_message_area_get_property (GObject *object, } } +void +_ev_message_area_add_buttons_valist (EvMessageArea *area, + const gchar *first_button_text, + va_list args) +{ + const gchar* text; + gint response_id; + + if (first_button_text == NULL) + return; + + text = first_button_text; + response_id = va_arg (args, gint); + + while (text != NULL) { + gtk_info_bar_add_button (GTK_INFO_BAR (area), text, response_id); + + text = va_arg (args, gchar*); + if (text == NULL) + break; + + response_id = va_arg (args, int); + } +} + +GtkWidget * +_ev_message_area_get_main_box (EvMessageArea *area) +{ + return area->priv->main_box; +} + GtkWidget * ev_message_area_new (GtkMessageType type, const gchar *text, @@ -250,13 +268,13 @@ ev_message_area_new (GtkMessageType type, "message-type", type, "text", text, NULL); + ev_message_area_set_image_for_type (EV_MESSAGE_AREA (widget), type); if (first_button_text) { va_list args; - + va_start (args, first_button_text); - gedit_message_area_add_buttons_valist (GEDIT_MESSAGE_AREA (widget), - first_button_text, - args); + _ev_message_area_add_buttons_valist (EV_MESSAGE_AREA (widget), + first_button_text, args); va_end (args); } @@ -273,7 +291,7 @@ ev_message_area_set_image (EvMessageArea *area, area->priv->message_type = GTK_MESSAGE_OTHER; - parent = area->priv->image->parent; + parent = gtk_widget_get_parent (area->priv->image); gtk_container_add (GTK_CONTAINER (parent), image); gtk_container_remove (GTK_CONTAINER (parent), area->priv->image); gtk_box_reorder_child (GTK_BOX (parent), image, 0); @@ -283,6 +301,18 @@ ev_message_area_set_image (EvMessageArea *area, g_object_notify (G_OBJECT (area), "image"); } +void +ev_message_area_set_image_from_stock (EvMessageArea *area, + const gchar *stock_id) +{ + g_return_if_fail (EV_IS_MESSAGE_AREA (area)); + g_return_if_fail (stock_id != NULL); + + gtk_image_set_from_stock (GTK_IMAGE (area->priv->image), + stock_id, + GTK_ICON_SIZE_DIALOG); +} + void ev_message_area_set_text (EvMessageArea *area, const gchar *str)