static void panel_properties_dialog_setup_icon_chooser (PanelPropertiesDialog *dialog, GtkBuilder *gui) { char *custom_icon; dialog->icon_align = PANEL_GTK_BUILDER_GET (gui, "icon_align"); g_return_if_fail (dialog->icon_align != NULL); dialog->icon_chooser = panel_icon_chooser_new (NULL); panel_icon_chooser_set_fallback_icon_name (PANEL_ICON_CHOOSER (dialog->icon_chooser), PANEL_ICON_DRAWER); gtk_widget_show (dialog->icon_chooser); gtk_container_add (GTK_CONTAINER (dialog->icon_align), dialog->icon_chooser); dialog->icon_label = PANEL_GTK_BUILDER_GET (gui, "icon_label"); g_return_if_fail (dialog->icon_label != NULL); custom_icon = panel_profile_get_attached_custom_icon (dialog->toplevel); panel_icon_chooser_set_icon (PANEL_ICON_CHOOSER (dialog->icon_chooser), custom_icon); g_free (custom_icon); g_signal_connect (dialog->icon_chooser, "changed", G_CALLBACK (panel_properties_dialog_icon_changed), dialog); if (!panel_profile_is_writable_attached_custom_icon (dialog->toplevel)) { gtk_widget_set_sensitive (dialog->icon_chooser, FALSE); gtk_widget_set_sensitive (dialog->icon_label, FALSE); if (panel_toplevel_get_is_attached (dialog->toplevel)) gtk_widget_show (dialog->writability_warn_general); } }
static void panel_properties_dialog_setup_icon_entry (PanelPropertiesDialog *dialog, GladeXML *gui) { char *custom_icon; dialog->icon_align = glade_xml_get_widget (gui, "icon_align"); g_return_if_fail (dialog->icon_align != NULL); dialog->icon_entry = glade_xml_get_widget (gui, "icon_entry"); g_return_if_fail (dialog->icon_entry != NULL); dialog->icon_label = glade_xml_get_widget (gui, "icon_label"); g_return_if_fail (dialog->icon_label != NULL); dialog->icon_theme_dir = NULL; custom_icon = panel_profile_get_attached_custom_icon (dialog->toplevel); if (custom_icon != NULL && ! g_path_is_absolute (custom_icon)) { /* if the icon is not absolute path name it comes from the theme, and as such we wish to store the theme directory where it comes from. See bug #119209 */ char *icon; icon = panel_find_icon (gtk_icon_theme_get_default (), custom_icon, 48); if (icon != NULL) dialog->icon_theme_dir = g_path_get_dirname (icon); g_free (custom_icon); custom_icon = icon; } gnome_icon_entry_set_filename (GNOME_ICON_ENTRY (dialog->icon_entry), custom_icon); g_free (custom_icon); if (dialog->icon_theme_dir == NULL) { /* use the default pixmap directory as the standard icon_theme_dir, * since the standard directory is themed */ g_object_get (G_OBJECT (dialog->icon_entry), "pixmap_subdir", &(dialog->icon_theme_dir), NULL); } g_signal_connect_swapped (dialog->icon_entry, "changed", G_CALLBACK (panel_properties_dialog_icon_changed), dialog); if (!panel_profile_is_writable_attached_custom_icon (dialog->toplevel)) { gtk_widget_set_sensitive (dialog->icon_entry, FALSE); gtk_widget_set_sensitive (dialog->icon_label, FALSE); gtk_widget_show (dialog->writability_warn_general); } }