/* * Sets the properties of the widget. This is used for both applying the * properties changed in the property editor, and also for loading. */ static void gb_gnome_icon_entry_set_properties (GtkWidget * widget, GbWidgetSetArgData * data) { gchar *title, *history_id; gint max_saved; title = gb_widget_input_string (data, Title); if (data->apply) { gtk_object_set_data_full (GTK_OBJECT (widget), Title, g_strdup (title), title ? g_free : NULL); gnome_icon_entry_set_browse_dialog_title (GNOME_ICON_ENTRY (widget), title && title[0] ? title : ""); } history_id = gb_widget_input_string (data, HistoryID); if (data->apply) gtk_object_set_data_full (GTK_OBJECT (widget), HistoryID, g_strdup (history_id), history_id ? g_free : NULL); max_saved = gb_widget_input_int (data, MaxSaved); if (data->apply) gtk_object_set_data (GTK_OBJECT (widget), MaxSaved, GINT_TO_POINTER (max_saved)); }
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); } }