249
panel_properties_dialog_icon_changed (PanelPropertiesDialog *dialog,
250
GnomeIconEntry *entry)
244
panel_properties_dialog_icon_changed (PanelIconChooser *chooser,
246
PanelPropertiesDialog *dialog)
252
const char *icon = NULL;
255
icon = gnome_icon_entry_get_filename (entry);
257
/* Strip dir from the icon path if in the icon
258
* theme directory. See bug #119209
260
if (icon && g_path_is_absolute (icon)) {
263
dir = g_path_get_dirname (icon);
265
if (dir && dialog->icon_theme_dir && strcmp (dir, dialog->icon_theme_dir) == 0)
266
icon = freeme = g_path_get_basename (icon);
271
248
panel_profile_set_attached_custom_icon (dialog->toplevel, icon);
277
panel_properties_dialog_setup_icon_entry (PanelPropertiesDialog *dialog,
252
panel_properties_dialog_setup_icon_chooser (PanelPropertiesDialog *dialog,
280
255
char *custom_icon;
282
257
dialog->icon_align = PANEL_GTK_BUILDER_GET (gui, "icon_align");
283
258
g_return_if_fail (dialog->icon_align != NULL);
285
dialog->icon_entry = gnome_icon_entry_new ("panel-drawer-icon",
287
gtk_widget_show (dialog->icon_entry);
260
dialog->icon_chooser = panel_icon_chooser_new (NULL);
261
panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (dialog->icon_chooser),
263
gtk_widget_show (dialog->icon_chooser);
288
264
gtk_container_add (GTK_CONTAINER (dialog->icon_align),
265
dialog->icon_chooser);
291
267
dialog->icon_label = PANEL_GTK_BUILDER_GET (gui, "icon_label");
292
268
g_return_if_fail (dialog->icon_label != NULL);
294
dialog->icon_theme_dir = NULL;
295
270
custom_icon = panel_profile_get_attached_custom_icon (dialog->toplevel);
296
if (custom_icon != NULL &&
297
! g_path_is_absolute (custom_icon)) {
298
/* if the icon is not absolute path name it comes from the
299
theme, and as such we wish to store the theme directory
300
where it comes from. See bug #119209 */
303
icon = panel_find_icon (gtk_icon_theme_get_default (),
306
dialog->icon_theme_dir = g_path_get_dirname (icon);
308
g_free (custom_icon);
311
gnome_icon_entry_set_filename (GNOME_ICON_ENTRY (dialog->icon_entry), custom_icon);
271
panel_icon_chooser_set_icon (PANEL_ICON_CHOOSER (dialog->icon_chooser),
312
273
g_free (custom_icon);
314
if (dialog->icon_theme_dir == NULL) {
315
/* use the default pixmap directory as the standard icon_theme_dir,
316
* since the standard directory is themed */
317
g_object_get (G_OBJECT (dialog->icon_entry), "pixmap_subdir",
318
&(dialog->icon_theme_dir), NULL);
321
g_signal_connect_swapped (dialog->icon_entry, "changed",
322
G_CALLBACK (panel_properties_dialog_icon_changed), dialog);
275
g_signal_connect (dialog->icon_chooser, "changed",
276
G_CALLBACK (panel_properties_dialog_icon_changed), dialog);
324
278
if (!panel_profile_is_writable_attached_custom_icon (dialog->toplevel)) {
325
gtk_widget_set_sensitive (dialog->icon_entry, FALSE);
279
gtk_widget_set_sensitive (dialog->icon_chooser, FALSE);
326
280
gtk_widget_set_sensitive (dialog->icon_label, FALSE);
327
281
gtk_widget_show (dialog->writability_warn_general);
419
panel_properties_dialog_chooser_preview_update (GtkFileChooser *file_chooser,
425
gboolean have_preview;
427
preview = GTK_WIDGET (data);
428
filename = gtk_file_chooser_get_preview_filename (file_chooser);
430
if (filename == NULL)
433
pixbuf = gdk_pixbuf_new_from_file_at_size (filename, 128, 128, NULL);
434
have_preview = (pixbuf != NULL);
437
gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf);
439
g_object_unref (pixbuf);
441
gtk_file_chooser_set_preview_widget_active (file_chooser,
446
373
panel_properties_dialog_setup_image_chooser (PanelPropertiesDialog *dialog,
449
GtkFileFilter *filter;
450
GtkWidget *chooser_preview;
453
378
dialog->image_chooser = PANEL_GTK_BUILDER_GET (gui, "image_chooser");
455
filter = gtk_file_filter_new ();
456
gtk_file_filter_add_pixbuf_formats (filter);
457
gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog->image_chooser),
460
chooser_preview = gtk_image_new ();
461
gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (dialog->image_chooser),
463
g_signal_connect (dialog->image_chooser, "update-preview",
464
G_CALLBACK (panel_properties_dialog_chooser_preview_update),
379
panel_gtk_file_chooser_add_image_preview (GTK_FILE_CHOOSER (dialog->image_chooser));
467
381
image = panel_profile_get_background_image (dialog->toplevel);
988
902
panel_properties_dialog_setup_orientation_combo (dialog, gui);
989
903
panel_properties_dialog_setup_size_spin (dialog, gui);
990
panel_properties_dialog_setup_icon_entry (dialog, gui);
904
panel_properties_dialog_setup_icon_chooser (dialog, gui);
991
905
panel_properties_dialog_setup_expand_toggle (dialog, gui);
992
906
panel_properties_dialog_setup_autohide_toggle (dialog, gui);
993
907
panel_properties_dialog_setup_hidebuttons_toggle (dialog, gui);