121
123
const char *first_button_text,
131
char *escaped_message, *markup_text;
133
g_return_val_if_fail (message != NULL, NULL);
135
if (stock_id == NULL)
136
stock_id = GTK_STOCK_DIALOG_INFO;
138
d = gtk_dialog_new_with_buttons ("", parent, flags, NULL, NULL);
139
gtk_window_set_resizable (GTK_WINDOW (d), FALSE);
134
builder = _gtk_builder_new_from_resource ("message-dialog.ui");
135
dialog = _gtk_builder_get_widget (builder, "message_dialog");
136
gtk_window_set_title (GTK_WINDOW (dialog), "");
137
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
138
gtk_window_set_modal (GTK_WINDOW (dialog), (flags & GTK_DIALOG_MODAL));
139
gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), (flags & GTK_DIALOG_DESTROY_WITH_PARENT));
140
g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, builder);
140
142
if (flags & GTK_DIALOG_MODAL)
141
_gtk_dialog_add_to_window_group (GTK_DIALOG (d));
143
gtk_container_set_border_width (GTK_CONTAINER (d), 6);
144
gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (d))), 6);
145
gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))), 8);
147
/* Add label and image */
149
image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_DIALOG);
150
gtk_misc_set_alignment (GTK_MISC (image), 0.5, 0.0);
152
label = gtk_label_new ("");
154
escaped_message = g_markup_escape_text (message, -1);
155
if (secondary_message != NULL) {
156
char *escaped_secondary_message = g_markup_escape_text (secondary_message, -1);
157
markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
159
escaped_secondary_message);
160
g_free (escaped_secondary_message);
143
_gtk_dialog_add_to_window_group (GTK_DIALOG (dialog));
147
gtk_image_set_from_stock (GTK_IMAGE (_gtk_builder_get_widget (builder, "icon_image")),
149
GTK_ICON_SIZE_DIALOG);
151
/* set the message */
153
label = _gtk_builder_get_widget (builder, "message_label");
155
if (message != NULL) {
156
char *escaped_message;
158
escaped_message = g_markup_escape_text (message, -1);
159
if (secondary_message != NULL) {
160
char *escaped_secondary_message;
162
escaped_secondary_message = g_markup_escape_text (secondary_message, -1);
163
markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
165
escaped_secondary_message);
167
g_free (escaped_secondary_message);
170
markup_text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>", escaped_message);
172
g_free (escaped_message);
163
markup_text = g_strdup (escaped_message);
175
markup_text = g_markup_escape_text (secondary_message, -1);
164
177
gtk_label_set_markup (GTK_LABEL (label), markup_text);
165
178
g_free (markup_text);
166
g_free (escaped_message);
168
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
169
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
171
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 18);
172
gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
174
gtk_box_pack_start (GTK_BOX (hbox), image,
177
gtk_box_pack_start (GTK_BOX (hbox), label,
180
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (d))),
184
gtk_widget_show_all (hbox);
180
/* add the buttons */
188
182
if (first_button_text == NULL)
191
185
va_start (args, first_button_text);
421
get_themed_icon_pixbuf (GThemedIcon *icon,
423
GtkIconTheme *icon_theme)
426
GtkIconInfo *icon_info;
428
GError *error = NULL;
430
g_object_get (icon, "names", &icon_names, NULL);
432
if (icon_theme == NULL)
433
icon_theme = gtk_icon_theme_get_default ();
434
icon_info = gtk_icon_theme_choose_icon (icon_theme, (const char **)icon_names, size, 0);
435
if (icon_info == NULL)
436
icon_info = gtk_icon_theme_lookup_icon (icon_theme, "text-x-generic", size, GTK_ICON_LOOKUP_USE_BUILTIN);
438
pixbuf = gtk_icon_info_load_icon (icon_info, &error);
439
if (pixbuf == NULL) {
440
g_warning ("could not load icon pixbuf: %s\n", error->message);
441
g_clear_error (&error);
444
gtk_icon_info_free (icon_info);
445
g_strfreev (icon_names);
452
get_file_icon_pixbuf (GFileIcon *icon,
455
GdkPixbuf *pixbuf = NULL;
458
file = g_file_icon_get_file (icon);
462
filename = g_file_get_path (file);
463
if (filename != NULL)
464
pixbuf = gdk_pixbuf_new_from_file_at_size (filename, size, -1, NULL);
474
_g_icon_get_pixbuf (GIcon *icon,
485
if (G_IS_THEMED_ICON (icon))
486
pixbuf = get_themed_icon_pixbuf (G_THEMED_ICON (icon), size, theme);
487
else if (G_IS_FILE_ICON (icon))
488
pixbuf = get_file_icon_pixbuf (G_FILE_ICON (icon), size);
493
w = gdk_pixbuf_get_width (pixbuf);
494
h = gdk_pixbuf_get_height (pixbuf);
495
if (scale_keeping_ratio (&w, &h, size, size, FALSE)) {
498
scaled = gdk_pixbuf_scale_simple (pixbuf, w, h, GDK_INTERP_BILINEAR);
499
g_object_unref (pixbuf);
508
413
_gtk_dialog_add_to_window_group (GtkDialog *dialog)
426
_g_icon_get_pixbuf (GIcon *icon,
428
GtkIconTheme *icon_theme)
430
GdkPixbuf *pixbuf = NULL;
431
GtkIconInfo *icon_info;
433
if (icon_theme == NULL)
434
icon_theme = gtk_icon_theme_get_default ();
436
icon_info = gtk_icon_theme_lookup_by_gicon (icon_theme,
439
GTK_ICON_LOOKUP_USE_BUILTIN);
441
if (icon_info != NULL) {
442
GError *error = NULL;
444
pixbuf = gtk_icon_info_load_icon (icon_info, &error);
446
g_print ("%s\n", error->message);
447
g_error_free (error);
450
gtk_icon_info_free (icon_info);
521
458
get_mime_type_pixbuf (const char *mime_type,
523
460
GtkIconTheme *icon_theme)
1040
gimp_scale_entry_new (GtkWidget *parent_box,
1045
float step_increment,
1046
float page_increment,
1050
GtkWidget *spinbutton;
1054
adj = gtk_adjustment_new (value, lower, upper,
1055
step_increment, page_increment,
1058
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adj), page_increment, 0);
1059
gtk_spin_button_set_digits (GTK_SPIN_BUTTON (spinbutton), digits);
1060
gtk_entry_set_width_chars (GTK_ENTRY (spinbutton), 4);
1062
scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, GTK_ADJUSTMENT (adj));
1063
gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
1064
gtk_scale_set_digits (GTK_SCALE (scale), digits);
1066
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5);
1067
gtk_box_pack_start (GTK_BOX (hbox), scale, TRUE, TRUE, 0);
1068
gtk_box_pack_start (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0);
1070
gtk_box_pack_start (GTK_BOX (parent_box), hbox, TRUE, TRUE, 0);
1071
gtk_widget_show_all (hbox);
1074
gtk_label_set_mnemonic_widget (label, scale);
1076
return (GtkAdjustment *) adj;
1081
967
_gdk_rgba_shade (GdkRGBA *color,
1082
968
GdkRGBA *result,
1113
999
return _gdk_rgba_shade (color, result, 1.2);
1004
_gtk_widget_get_icon_theme (GtkWidget *widget)
1008
screen = gtk_widget_get_screen (widget);
1012
return gtk_icon_theme_get_for_screen (screen);
1017
_gtk_combo_box_add_image_sizes (GtkComboBox *combo_box,
1021
GtkListStore *list_store;
1025
list_store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
1027
for (i = 0; i < G_N_ELEMENTS (ImageSizeValues); i++) {
1031
gtk_list_store_append (list_store, &iter);
1033
if ((ImageSizeValues[i].width == active_width) && (ImageSizeValues[i].height == active_height))
1036
/* Translators: this is an image size, such as 1024 × 768 */
1037
name = g_strdup_printf (_("%d × %d"), ImageSizeValues[i].width, ImageSizeValues[i].height);
1038
gtk_list_store_set (list_store, &iter,
1044
gtk_combo_box_set_active (combo_box, active_index);
1049
_gtk_file_chooser_set_file_parent (GtkFileChooser *chooser,
1056
parent = g_file_get_parent (file);
1057
result = gtk_file_chooser_set_file (chooser, parent, error);
1060
g_object_unref (parent);