34
34
#include <glib-object.h>
35
35
#include <gtk/gtk.h>
38
EOG_ERROR_MESSAGE_AREA_NO_BUTTONS = 0,
39
EOG_ERROR_MESSAGE_AREA_CANCEL_BUTTON = 1 << 0,
40
EOG_ERROR_MESSAGE_AREA_RELOAD_BUTTON = 1 << 1,
41
EOG_ERROR_MESSAGE_AREA_SAVEAS_BUTTON = 1 << 2
42
} EogErrorMessageAreaButtons;
38
45
set_message_area_text_and_icon (GtkInfoBar *message_area,
39
46
const gchar *icon_stock_id,
99
106
static GtkWidget *
100
create_error_message_area (const gchar *primary_text,
101
const gchar *secondary_text,
102
gboolean recoverable)
107
create_error_message_area (const gchar *primary_text,
108
const gchar *secondary_text,
109
EogErrorMessageAreaButtons buttons)
104
111
GtkWidget *message_area;
107
message_area = gtk_info_bar_new_with_buttons (_("_Retry"),
111
message_area = gtk_info_bar_new ();
113
/* create a new message area */
114
message_area = gtk_info_bar_new ();
116
/* add requested buttons to the message area */
117
if (buttons & EOG_ERROR_MESSAGE_AREA_CANCEL_BUTTON)
118
gtk_info_bar_add_button (GTK_INFO_BAR (message_area),
120
EOG_ERROR_MESSAGE_AREA_RESPONSE_CANCEL);
122
if (buttons & EOG_ERROR_MESSAGE_AREA_RELOAD_BUTTON)
123
gtk_info_bar_add_button (GTK_INFO_BAR (message_area),
125
EOG_ERROR_MESSAGE_AREA_RESPONSE_RELOAD);
127
if (buttons & EOG_ERROR_MESSAGE_AREA_SAVEAS_BUTTON)
128
gtk_info_bar_add_button (GTK_INFO_BAR (message_area),
130
EOG_ERROR_MESSAGE_AREA_RESPONSE_SAVEAS);
132
/* set message type */
113
133
gtk_info_bar_set_message_type (GTK_INFO_BAR (message_area),
114
134
GTK_MESSAGE_ERROR);
136
/* set text and icon */
116
137
set_message_area_text_and_icon (GTK_INFO_BAR (message_area),
117
138
GTK_STOCK_DIALOG_ERROR,
155
176
message_area = create_error_message_area (error_message,
178
EOG_ERROR_MESSAGE_AREA_CANCEL_BUTTON);
180
g_free (pango_escaped_caption);
181
g_free (error_message);
182
g_free (message_details);
188
* eog_image_save_error_message_area_new: (skip):
194
* Returns: (transfer full): a new #GtkInfoBar
197
eog_image_save_error_message_area_new (const gchar *caption,
200
GtkWidget *message_area;
201
gchar *error_message = NULL;
202
gchar *message_details = NULL;
203
gchar *pango_escaped_caption = NULL;
205
g_return_val_if_fail (caption != NULL, NULL);
206
g_return_val_if_fail (error != NULL, NULL);
208
/* Escape the caption string with respect to pango markup.
209
This is necessary because otherwise characters like "&" will
210
be interpreted as the beginning of a pango entity inside
211
the message area GtkLabel. */
212
pango_escaped_caption = g_markup_escape_text (caption, -1);
213
error_message = g_strdup_printf (_("Could not save image '%s'."),
214
pango_escaped_caption);
216
message_details = g_strdup (error->message);
218
message_area = create_error_message_area (error_message,
220
EOG_ERROR_MESSAGE_AREA_CANCEL_BUTTON |
221
EOG_ERROR_MESSAGE_AREA_SAVEAS_BUTTON);
159
223
g_free (pango_escaped_caption);
160
224
g_free (error_message);