static void color_button_clicked_cb (GtkWidget *colorbutton, AppearanceData *data) { GtkWidget *widget; GdkColor color; GString *scheme = g_string_new (NULL); gchar *colstr; gchar *old_scheme = NULL; gint i; for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i) { widget = appearance_capplet_get_widget (data, symbolic_names[i]); gtk_color_button_get_color (GTK_COLOR_BUTTON (widget), &color); colstr = gdk_color_to_string (&color); g_string_append_printf (scheme, "%s:%s\n", symbolic_names[i], colstr); g_free (colstr); } /* remove the last newline */ g_string_truncate (scheme, scheme->len - 1); /* verify that the scheme really has changed */ g_object_get (gtk_settings_get_default (), "gtk-color-scheme", &old_scheme, NULL); if (!mate_theme_color_scheme_equal (old_scheme, scheme->str)) { g_settings_set_string (data->interface_settings, COLOR_SCHEME_KEY, scheme->str); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), TRUE); } g_free (old_scheme); g_string_free (scheme, TRUE); }
static void show_handlebar (AppearanceData *data, gboolean show) { GtkWidget *handlebox = appearance_capplet_get_widget (data, "toolbar_handlebox"); GtkWidget *toolbar = appearance_capplet_get_widget (data, "toolbar_toolbar"); GtkWidget *align = appearance_capplet_get_widget (data, "toolbar_align"); g_object_ref (handlebox); g_object_ref (toolbar); if (gtk_bin_get_child (GTK_BIN (align))) gtk_container_remove (GTK_CONTAINER (align), gtk_bin_get_child (GTK_BIN (align))); if (gtk_bin_get_child (GTK_BIN (handlebox))) gtk_container_remove (GTK_CONTAINER (handlebox), gtk_bin_get_child (GTK_BIN (handlebox))); if (show) { gtk_container_add (GTK_CONTAINER (align), handlebox); gtk_container_add (GTK_CONTAINER (handlebox), toolbar); g_object_unref (handlebox); } else { gtk_container_add (GTK_CONTAINER (align), toolbar); } g_object_unref (toolbar); }
void theme_save_dialog_run (MateThemeMetaInfo *theme_info, AppearanceData *data) { GtkWidget *entry; GtkWidget *text_view; GtkTextBuffer *text_buffer; entry = appearance_capplet_get_widget (data, "save_dialog_entry"); text_view = appearance_capplet_get_widget (data, "save_dialog_textview"); if (data->theme_save_dialog == NULL) { data->theme_save_dialog = appearance_capplet_get_widget (data, "theme_save_dialog"); g_signal_connect (data->theme_save_dialog, "response", (GCallback) save_dialog_response, data); g_signal_connect (data->theme_save_dialog, "delete-event", (GCallback) gtk_true, NULL); g_signal_connect (entry, "changed", (GCallback) entry_text_changed, data); error_quark = g_quark_from_string ("mate-theme-save"); gtk_widget_set_size_request (text_view, 300, 100); } gtk_entry_set_text (GTK_ENTRY (entry), ""); entry_text_changed (GTK_EDITABLE (entry), data); gtk_widget_grab_focus (entry); text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); gtk_text_buffer_set_text (text_buffer, "", 0); g_object_set_data (G_OBJECT (data->theme_save_dialog), "meta-theme-info", theme_info); gtk_window_set_transient_for (GTK_WINDOW (data->theme_save_dialog), GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window"))); gtk_widget_show (data->theme_save_dialog); }
static void theme_custom_cb (GtkWidget *button, AppearanceData *data) { GtkWidget *w, *parent; w = appearance_capplet_get_widget (data, "theme_details"); parent = appearance_capplet_get_widget (data, "appearance_window"); gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (parent)); gtk_widget_show_all (w); }
static void set_toolbar_style (AppearanceData *data, const char *value) { static const GtkToolbarStyle gtk_toolbar_styles[] = { GTK_TOOLBAR_BOTH, GTK_TOOLBAR_BOTH_HORIZ, GTK_TOOLBAR_ICONS, GTK_TOOLBAR_TEXT }; int enum_val = gtk_combo_box_get_active((GtkComboBox *) appearance_capplet_get_widget (data, "toolbar_style_select")); gtk_toolbar_set_style (GTK_TOOLBAR (appearance_capplet_get_widget (data, "toolbar_toolbar")), gtk_toolbar_styles[enum_val]); }
static void save_dialog_response (GtkWidget *save_dialog, gint response_id, AppearanceData *data) { if (response_id == GTK_RESPONSE_OK) { GtkWidget *entry; GtkWidget *text_view; GtkTextBuffer *buffer; GtkTextIter start_iter; GtkTextIter end_iter; gchar *buffer_text; MateThemeMetaInfo *theme_info; gchar *theme_description = NULL; gchar *theme_name = NULL; gboolean save_background; gboolean save_notification; GError *error = NULL; entry = appearance_capplet_get_widget (data, "save_dialog_entry"); theme_name = escape_string_and_dup (gtk_entry_get_text (GTK_ENTRY (entry))); text_view = appearance_capplet_get_widget (data, "save_dialog_textview"); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view)); gtk_text_buffer_get_start_iter (buffer, &start_iter); gtk_text_buffer_get_end_iter (buffer, &end_iter); buffer_text = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE); theme_description = escape_string_and_dup (buffer_text); g_free (buffer_text); theme_info = (MateThemeMetaInfo *) g_object_get_data (G_OBJECT (save_dialog), "meta-theme-info"); save_background = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( appearance_capplet_get_widget (data, "save_background_checkbutton"))); save_notification = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON ( appearance_capplet_get_widget (data, "save_notification_checkbutton"))); if (save_theme_to_disk (theme_info, theme_name, theme_description, save_background, save_notification, &error)) { /* remove the custom theme */ GtkTreeIter iter; if (theme_find_in_model (GTK_TREE_MODEL (data->theme_store), "__custom__", &iter)) gtk_list_store_remove (data->theme_store, &iter); } g_free (theme_name); g_free (theme_description); g_clear_error (&error); } gtk_widget_hide (save_dialog); }
static void theme_drag_data_received_cb (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, AppearanceData *data) { gchar **uris; if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL)) return; uris = g_uri_list_extract_uris ((gchar *) gtk_selection_data_get_data (selection_data)); if (uris != NULL && uris[0] != NULL) { GFile *f = g_file_new_for_uri (uris[0]); mate_theme_install (f, GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window"))); g_object_unref (f); } g_strfreev (uris); }
static void wp_add_images (AppearanceData *data, GSList *images) { GdkWindow *window; GtkWidget *w; GdkCursor *cursor; MateWPItem *item; w = appearance_capplet_get_widget (data, "appearance_window"); window = gtk_widget_get_window (w); item = NULL; cursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_WATCH); gdk_window_set_cursor (window, cursor); gdk_cursor_unref (cursor); while (images != NULL) { gchar *uri = images->data; item = wp_add_image (data, uri); images = g_slist_remove (images, uri); g_free (uri); } gdk_window_set_cursor (window, NULL); if (item != NULL) { select_item (data, item, TRUE); } }
static void gtk_theme_changed (GSettings *settings, gchar *key, AppearanceData *data) { MateThemeInfo *theme = NULL; gchar *name; GtkSettings *gtksettings = gtk_settings_get_default (); name = g_settings_get_string (settings, key); if (name) { gchar *current; theme = mate_theme_info_find (name); /* Manually update GtkSettings to new gtk+ theme. * This will eventually happen anyway, but we need the * info for the color scheme updates already. */ g_object_get (gtksettings, "gtk-theme-name", ¤t, NULL); if (strcmp (current, name) != 0) { g_object_set (gtksettings, "gtk-theme-name", name, NULL); update_message_area (data); } g_free (current); check_color_schemes_enabled (gtksettings, data); update_color_buttons_from_settings (gtksettings, data); g_free (name); } gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "gtk_themes_delete"), theme_is_writable (theme)); }
static void set_have_icons (AppearanceData *data, gboolean value) { static const char *menu_item_names[] = { "menu_item_1", "menu_item_2", "menu_item_3", "menu_item_4", "menu_item_5", "cut", "copy", "paste", NULL }; const char **name; for (name = menu_item_names; *name != NULL; name++) { GtkImageMenuItem *item = GTK_IMAGE_MENU_ITEM (appearance_capplet_get_widget (data, *name)); GtkWidget *image; if (value) { image = g_object_get_data (G_OBJECT (item), "image"); if (image) { gtk_image_menu_item_set_image (item, image); g_object_unref (image); } } else { image = gtk_image_menu_item_get_image (item); g_object_set_data (G_OBJECT (item), "image", image); g_object_ref (image); gtk_image_menu_item_set_image (item, NULL); } } }
static void marco_titlebar_load_sensitivity (AppearanceData *data) { gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "window_title_font"), !g_settings_get_boolean (data->marco_settings, WINDOW_TITLE_USES_SYSTEM_KEY)); }
static void marco_titlebar_load_sensitivity (AppearanceData *data) { gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "window_title_font"), !mateconf_client_get_bool (data->client, WINDOW_TITLE_USES_SYSTEM_KEY, NULL)); }
static void main_window_response (GtkWidget *widget, gint response_id, AppearanceData *data) { if (response_id == GTK_RESPONSE_CLOSE || response_id == GTK_RESPONSE_DELETE_EVENT) { gtk_main_quit (); themes_shutdown (data); style_shutdown (data); desktop_shutdown (data); font_shutdown (data); support_shutdown (data); g_object_unref (data->thumb_factory); g_object_unref (data->settings); g_object_unref (data->wp_settings); g_object_unref (data->caja_settings); g_object_unref (data->interface_settings); g_object_unref (data->marco_settings); g_object_unref (data->mouse_settings); #ifdef HAVE_XFT2 g_object_unref (data->font_settings); #endif /* HAVE_XFT2 */ g_object_unref (data->ui); } else if (response_id == GTK_RESPONSE_HELP) { GtkNotebook *nb; gint pindex; nb = GTK_NOTEBOOK (appearance_capplet_get_widget (data, "main_notebook")); pindex = gtk_notebook_get_current_page (nb); switch (pindex) { case 0: /* theme */ capplet_help (GTK_WINDOW (widget), "goscustdesk-12"); break; case 1: /* background */ capplet_help (GTK_WINDOW (widget), "goscustdesk-7"); break; case 2: /* fonts */ capplet_help (GTK_WINDOW (widget), "goscustdesk-38"); break; case 3: /* interface */ capplet_help (GTK_WINDOW (widget), "goscustuserinter-2"); break; default: capplet_help (GTK_WINDOW (widget), "prefs-look-and-feel"); break; } } }
void wp_create_filechooser (AppearanceData *data) { const char *start_dir, *pictures = NULL; GtkFileFilter *filter; data->wp_filesel = GTK_FILE_CHOOSER ( gtk_file_chooser_dialog_new (_("Add Wallpaper"), GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL)); gtk_dialog_set_default_response (GTK_DIALOG (data->wp_filesel), GTK_RESPONSE_OK); gtk_file_chooser_set_select_multiple (data->wp_filesel, TRUE); gtk_file_chooser_set_use_preview_label (data->wp_filesel, FALSE); start_dir = g_get_home_dir (); if (g_file_test ("/usr/share/backgrounds", G_FILE_TEST_IS_DIR)) { gtk_file_chooser_add_shortcut_folder (data->wp_filesel, "/usr/share/backgrounds", NULL); start_dir = "/usr/share/backgrounds"; } pictures = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (pictures != NULL && g_file_test (pictures, G_FILE_TEST_IS_DIR)) { gtk_file_chooser_add_shortcut_folder (data->wp_filesel, pictures, NULL); start_dir = pictures; } gtk_file_chooser_set_current_folder (data->wp_filesel, start_dir); filter = gtk_file_filter_new (); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_filter_set_name (filter, _("Images")); gtk_file_chooser_add_filter (data->wp_filesel, filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (data->wp_filesel, filter); data->wp_image = gtk_image_new (); gtk_file_chooser_set_preview_widget (data->wp_filesel, data->wp_image); gtk_widget_set_size_request (data->wp_image, 128, -1); gtk_widget_show (data->wp_image); g_signal_connect (data->wp_filesel, "update-preview", (GCallback) wp_update_preview, data); }
static void entry_text_changed (GtkEditable *editable, AppearanceData *data) { const gchar *text; GtkWidget *button; text = gtk_entry_get_text (GTK_ENTRY (editable)); button = appearance_capplet_get_widget (data, "save_dialog_save_button"); gtk_widget_set_sensitive (button, text != NULL && text[0] != '\000'); }
static void theme_selection_changed_cb (GtkWidget *icon_view, AppearanceData *data) { GList *selection; MateThemeMetaInfo *theme = NULL; gboolean is_custom = FALSE; selection = gtk_icon_view_get_selected_items (GTK_ICON_VIEW (icon_view)); if (selection) { GtkTreeModel *model; GtkTreeIter iter; gchar *name; model = gtk_icon_view_get_model (GTK_ICON_VIEW (icon_view)); gtk_tree_model_get_iter (model, &iter, selection->data); gtk_tree_model_get (model, &iter, COL_NAME, &name, -1); is_custom = !strcmp (name, CUSTOM_THEME_NAME); if (is_custom) theme = data->theme_custom; else theme = mate_theme_meta_info_find (name); if (theme) { mate_meta_theme_set (theme); theme_message_area_update (data); } g_free (name); g_list_foreach (selection, (GFunc) gtk_tree_path_free, NULL); g_list_free (selection); } gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "theme_delete"), theme_is_writable (theme)); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "theme_save"), is_custom); }
static void check_color_schemes_enabled (GtkSettings *settings, AppearanceData *data) { gchar *theme = NULL; gchar *filename; GSList *symbolic_colors = NULL; gboolean enable_colors = FALSE; gint i; g_object_get (settings, "gtk-theme-name", &theme, NULL); filename = gtkrc_find_named (theme); g_free (theme); gtkrc_get_details (filename, NULL, &symbolic_colors); g_free (filename); for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i) { gboolean found; found = (g_slist_find_custom (symbolic_colors, symbolic_names[i], (GCompareFunc) strcmp) != NULL); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, symbolic_names[i]), found); enable_colors |= found; } g_slist_foreach (symbolic_colors, (GFunc) g_free, NULL); g_slist_free (symbolic_colors); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_table"), enable_colors); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), enable_colors); if (enable_colors) gtk_widget_hide (appearance_capplet_get_widget (data, "color_scheme_message_hbox")); else gtk_widget_show (appearance_capplet_get_widget (data, "color_scheme_message_hbox")); }
static void icon_theme_changed (GSettings *settings, gchar *key, AppearanceData *data) { MateThemeIconInfo *theme = NULL; gchar *name; name = g_settings_get_string (settings, key); if (name) { theme = mate_theme_icon_info_find (name); g_free (name); } gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "icon_themes_delete"), theme_is_writable (theme)); }
static void update_color_buttons_from_settings (GtkSettings *settings, AppearanceData *data) { gchar *scheme, *setting; scheme = g_settings_get_string (data->interface_settings, COLOR_SCHEME_KEY); g_object_get (settings, "gtk-color-scheme", &setting, NULL); if (scheme == NULL || strcmp (scheme, "") == 0) gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "color_scheme_defaults_button"), FALSE); g_free (scheme); update_color_buttons_from_string (setting, data); g_free (setting); }
static void update_color_buttons_from_string (const gchar *color_scheme, AppearanceData *data) { GdkColor colors[NUM_SYMBOLIC_COLORS]; GtkWidget *widget; gint i; if (!mate_theme_color_scheme_parse (color_scheme, colors)) return; /* now set all the buttons to the correct settings */ for (i = 0; i < NUM_SYMBOLIC_COLORS; ++i) { widget = appearance_capplet_get_widget (data, symbolic_names[i]); gtk_color_button_set_color (GTK_COLOR_BUTTON (widget), &colors[i]); } }
static void remove_from_treeview (const gchar *tv_name, const gchar *theme_name, AppearanceData *data) { GtkTreeView *treeview; GtkListStore *model; GtkTreeIter iter; treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name)); model = GTK_LIST_STORE ( gtk_tree_model_sort_get_model ( GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview)))); if (theme_find_in_model (GTK_TREE_MODEL (model), theme_name, &iter)) gtk_list_store_remove (model, &iter); }
static void wp_drag_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, AppearanceData *data) { if (info == TARGET_URI_LIST || info == TARGET_BGIMAGE) { GSList *realuris = NULL; gchar **uris; uris = g_uri_list_extract_uris ((gchar *) gtk_selection_data_get_data (selection_data)); if (uris != NULL) { GtkWidget *w; GdkWindow *window; GdkCursor *cursor; gchar **uri; w = appearance_capplet_get_widget (data, "appearance_window"); window = gtk_widget_get_window (w); cursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_WATCH); gdk_window_set_cursor (window, cursor); gdk_cursor_unref (cursor); for (uri = uris; *uri; ++uri) { GFile *f; f = g_file_new_for_uri (*uri); realuris = g_slist_append (realuris, g_file_get_path (f)); g_object_unref (f); } wp_add_images (data, realuris); gdk_window_set_cursor (window, NULL); g_strfreev (uris); } } }
static void cursor_theme_changed (GSettings *settings, gchar *key, AppearanceData *data) { MateThemeCursorInfo *theme = NULL; gchar *name; name = g_settings_get_string (settings, key); if (name) { theme = mate_theme_cursor_info_find (name); g_free (name); } update_cursor_size_scale (theme, data); gtk_widget_set_sensitive (appearance_capplet_get_widget (data, "cursor_themes_delete"), theme_is_writable (theme)); }
static void add_to_treeview (const gchar *tv_name, const gchar *theme_name, const gchar *theme_label, GdkPixbuf *theme_thumbnail, AppearanceData *data) { GtkTreeView *treeview; GtkListStore *model; treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name)); model = GTK_LIST_STORE ( gtk_tree_model_sort_get_model ( GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview)))); gtk_list_store_insert_with_values (model, NULL, 0, COL_LABEL, theme_label, COL_NAME, theme_name, COL_THUMBNAIL, theme_thumbnail, -1); }
static void theme_details_changed_cb (AppearanceData *data) { MateThemeMetaInfo *mateconf_theme; const MateThemeMetaInfo *selected; GtkIconView *icon_view; gboolean done = FALSE; /* load new state from mateconf */ mateconf_theme = theme_load_from_mateconf (data->client); /* check if it's our currently selected theme */ icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list")); selected = theme_get_selected (icon_view, data); if (!selected || !(done = theme_is_equal (selected, mateconf_theme))) { /* look for a matching metatheme */ GList *theme_list, *l; theme_list = mate_theme_meta_info_find_all (); for (l = theme_list; l; l = l->next) { MateThemeMetaInfo *info = l->data; if (theme_is_equal (mateconf_theme, info)) { theme_select_name (icon_view, info->name); done = TRUE; break; } } g_list_free (theme_list); } if (!done) /* didn't find a match, set or update custom */ theme_set_custom_from_theme (mateconf_theme, data); mate_theme_meta_info_free (mateconf_theme); }
static void update_in_treeview (const gchar *tv_name, const gchar *theme_name, const gchar *theme_label, AppearanceData *data) { GtkTreeView *treeview; GtkListStore *model; GtkTreeIter iter; treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name)); model = GTK_LIST_STORE ( gtk_tree_model_sort_get_model ( GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview)))); if (theme_find_in_model (GTK_TREE_MODEL (model), theme_name, &iter)) { gtk_list_store_set (model, &iter, COL_LABEL, theme_label, COL_NAME, theme_name, -1); } }
static void generic_theme_delete (const gchar *tv_name, ThemeType type, AppearanceData *data) { GtkTreeView *treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name)); GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); GtkTreeModel *model; GtkTreeIter iter; if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gchar *name; gtk_tree_model_get (model, &iter, COL_NAME, &name, -1); if (name != NULL && theme_delete (name, type)) { /* remove theme from the model, too */ GtkTreeIter child; GtkTreePath *path; path = gtk_tree_model_get_path (model, &iter); gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT (model), &child, &iter); gtk_list_store_remove (GTK_LIST_STORE ( gtk_tree_model_sort_get_model (GTK_TREE_MODEL_SORT (model))), &child); if (gtk_tree_model_get_iter (model, &iter, path) || theme_model_iter_last (model, &iter)) { gtk_tree_path_free (path); path = gtk_tree_model_get_path (model, &iter); gtk_tree_selection_select_path (selection, path); gtk_tree_view_scroll_to_cell (treeview, path, NULL, FALSE, 0, 0); } gtk_tree_path_free (path); } g_free (name); } }
static void update_thumbnail_in_treeview (const gchar *tv_name, const gchar *theme_name, GdkPixbuf *theme_thumbnail, AppearanceData *data) { GtkTreeView *treeview; GtkListStore *model; GtkTreeIter iter; if (theme_thumbnail == NULL) return; treeview = GTK_TREE_VIEW (appearance_capplet_get_widget (data, tv_name)); model = GTK_LIST_STORE ( gtk_tree_model_sort_get_model ( GTK_TREE_MODEL_SORT (gtk_tree_view_get_model (treeview)))); if (theme_find_in_model (GTK_TREE_MODEL (model), theme_name, &iter)) { gtk_list_store_set (model, &iter, COL_THUMBNAIL, theme_thumbnail, -1); } }
static void theme_delete_cb (GtkWidget *button, AppearanceData *data) { GtkIconView *icon_view = GTK_ICON_VIEW (appearance_capplet_get_widget (data, "theme_list")); GList *selected = gtk_icon_view_get_selected_items (icon_view); if (selected) { GtkTreePath *path = selected->data; GtkTreeModel *model = gtk_icon_view_get_model (icon_view); GtkTreeIter iter; gchar *name = NULL; if (gtk_tree_model_get_iter (model, &iter, path)) gtk_tree_model_get (model, &iter, COL_NAME, &name, -1); if (name != NULL && strcmp (name, data->theme_custom->name) && theme_delete (name, THEME_TYPE_META)) { /* remove theme from the model, too */ GtkTreeIter child; if (gtk_tree_model_iter_next (model, &iter) || theme_model_iter_last (model, &iter)) theme_select_iter (icon_view, &iter); gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_sort_convert_iter_to_child_iter ( GTK_TREE_MODEL_SORT (model), &child, &iter); gtk_list_store_remove (data->theme_store, &child); } g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); g_list_free (selected); g_free (name); } }
void font_init(AppearanceData* data) { GtkWidget* widget; data->font_details = NULL; data->font_groups = NULL; widget = appearance_capplet_get_widget(data, "application_font"); g_settings_bind (data->interface_settings, GTK_FONT_KEY, G_OBJECT (widget), "font-name", G_SETTINGS_BIND_DEFAULT); widget = appearance_capplet_get_widget (data, "document_font"); g_settings_bind (data->interface_settings, DOCUMENT_FONT_KEY, G_OBJECT (widget), "font-name", G_SETTINGS_BIND_DEFAULT); widget = appearance_capplet_get_widget (data, "desktop_font"); if (data->caja_settings) g_settings_bind (data->caja_settings, DESKTOP_FONT_KEY, G_OBJECT (widget), "font-name", G_SETTINGS_BIND_DEFAULT); else gtk_widget_set_sensitive (widget, FALSE); widget = appearance_capplet_get_widget (data, "window_title_font"); g_settings_bind (data->marco_settings, WINDOW_TITLE_FONT_KEY, G_OBJECT (widget), "font-name", G_SETTINGS_BIND_DEFAULT); widget = appearance_capplet_get_widget (data, "monospace_font"); g_settings_bind (data->interface_settings, MONOSPACE_FONT_KEY, G_OBJECT (widget), "font-name", G_SETTINGS_BIND_DEFAULT); g_signal_connect (data->marco_settings, "changed::" WINDOW_TITLE_USES_SYSTEM_KEY, G_CALLBACK (marco_changed), data); marco_titlebar_load_sensitivity(data); #ifdef HAVE_XFT2 setup_font_pair(appearance_capplet_get_widget(data, "monochrome_radio"), appearance_capplet_get_widget (data, "monochrome_sample"), ANTIALIAS_NONE, HINT_FULL); setup_font_pair(appearance_capplet_get_widget(data, "best_shapes_radio"), appearance_capplet_get_widget (data, "best_shapes_sample"), ANTIALIAS_GRAYSCALE, HINT_MEDIUM); setup_font_pair(appearance_capplet_get_widget(data, "best_contrast_radio"), appearance_capplet_get_widget (data, "best_contrast_sample"), ANTIALIAS_GRAYSCALE, HINT_FULL); setup_font_pair(appearance_capplet_get_widget(data, "subpixel_radio"), appearance_capplet_get_widget (data, "subpixel_sample"), ANTIALIAS_RGBA, HINT_FULL); font_render_load (data->font_settings); g_signal_connect (data->font_settings, "changed", G_CALLBACK (font_render_changed), NULL); g_signal_connect (appearance_capplet_get_widget (data, "details_button"), "clicked", G_CALLBACK (cb_show_details), data); #else /* !HAVE_XFT2 */ gtk_widget_hide (appearance_capplet_get_widget (data, "font_render_frame")); #endif /* HAVE_XFT2 */ }