From 3a908d7a9953b7079e6fc3946841ab8166378b0e Mon Sep 17 00:00:00 2001 From: Denis Washington Date: Thu, 10 May 2007 16:31:18 +0000 Subject: [PATCH] Replace the background treeview with an icon view that only shows the * appearance.h: * appearance-desktop.c: * appearance.glade: * gnome-wp-item.c: * Makefile.am: * wp-cellrenderer.[ch]: Replace the background treeview with an icon view that only shows the thumbnails. Tooltips are to be done. svn path=/trunk/; revision=7593 --- capplets/appearance/ChangeLog | 11 + capplets/appearance/Makefile.am | 4 +- capplets/appearance/appearance-desktop.c | 284 ++++------ capplets/appearance/appearance.glade | 685 ++++++++++++----------- capplets/appearance/appearance.h | 3 +- capplets/appearance/gnome-wp-item.c | 2 +- capplets/appearance/wp-cellrenderer.c | 64 +++ capplets/appearance/wp-cellrenderer.h | 25 + 8 files changed, 552 insertions(+), 526 deletions(-) create mode 100644 capplets/appearance/wp-cellrenderer.c create mode 100644 capplets/appearance/wp-cellrenderer.h diff --git a/capplets/appearance/ChangeLog b/capplets/appearance/ChangeLog index 36d7b12b7..a23bd72bf 100644 --- a/capplets/appearance/ChangeLog +++ b/capplets/appearance/ChangeLog @@ -1,3 +1,14 @@ +2007-05-10 Denis Washington + + * appearance.h: + * appearance-desktop.c: + * appearance.glade: + * gnome-wp-item.c: + * Makefile.am: + * wp-cellrenderer.[ch]: + Replace the background treeview with an icon view that only shows the + thumbnails. Tooltips are to be done. + 2007-05-09 Jens Granseuer * appearance-themes.c: (themes_init): diff --git a/capplets/appearance/Makefile.am b/capplets/appearance/Makefile.am index 341720364..3aa5dff6f 100644 --- a/capplets/appearance/Makefile.am +++ b/capplets/appearance/Makefile.am @@ -23,7 +23,9 @@ gnome_appearance_properties_SOURCES = \ gnome-wp-utils.c \ gnome-wp-utils.h \ gnome-wp-xml.c \ - gnome-wp-xml.h + gnome-wp-xml.h \ + wp-cellrenderer.c \ + wp-cellrenderer.h gnome_appearance_properties_LDADD = \ $(GNOMECC_CAPPLETS_LIBS) \ diff --git a/capplets/appearance/appearance-desktop.c b/capplets/appearance/appearance-desktop.c index 8e44102fc..708765735 100644 --- a/capplets/appearance/appearance-desktop.c +++ b/capplets/appearance/appearance-desktop.c @@ -24,6 +24,7 @@ #include "gnome-wp-item.h" #include "gnome-wp-utils.h" #include "gnome-wp-xml.h" +#include "wp-cellrenderer.h" #include #include #include @@ -57,7 +58,9 @@ static GtkTargetEntry drop_types[] = { { "property/bgimage", 0, TARGET_BGIMAGE }, /* { "x-special/gnome-reset-background", 0, TARGET_BACKGROUND_RESET }*/ }; - +static GnomeWPItem * +get_selected_item (AppearanceData *data, + GtkTreeIter *iter); static void scroll_to_item (AppearanceData *data, GnomeWPItem * item) @@ -71,17 +74,48 @@ scroll_to_item (AppearanceData *data, path = gtk_tree_row_reference_get_path (item->rowref); - gtk_tree_view_set_cursor (data->wp_tree, path, NULL, FALSE); - gtk_tree_view_scroll_to_cell (data->wp_tree, path, NULL, TRUE, 0.5, 0.0); + gtk_icon_view_select_path (data->wp_view, path); + gtk_icon_view_scroll_to_path (data->wp_view, path, TRUE, 0.5, 0.0); gtk_tree_path_free (path); } +static GnomeWPItem * +get_selected_item (AppearanceData *data, + GtkTreeIter *iter) +{ + GnomeWPItem *item = NULL; + GList *selected; + + selected = gtk_icon_view_get_selected_items (data->wp_view); + + if (selected != NULL) + { + GtkTreeIter sel_iter; + gchar *wpfile; + + gtk_tree_model_get_iter (data->wp_model, &sel_iter, + selected->data); + + if (iter) + *iter = sel_iter; + + gtk_tree_model_get (data->wp_model, &sel_iter, 2, &wpfile, -1); + + item = g_hash_table_lookup (data->wp_hash, wpfile); + g_free (wpfile); + } + + g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL); + g_list_free (selected); + + return item; +} + static void wp_props_load_wallpaper (gchar *key, GnomeWPItem *item, AppearanceData *data) { - GtkTreeModel *model; GtkTreeIter iter; GtkTreePath *path; GdkPixbuf *pixbuf; @@ -89,16 +123,14 @@ wp_props_load_wallpaper (gchar *key, if (item->deleted == TRUE) return; - model = gtk_tree_view_get_model (data->wp_tree); - - gtk_list_store_append (GTK_LIST_STORE (model), &iter); + gtk_list_store_append (GTK_LIST_STORE (data->wp_model), &iter); pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs); gnome_wp_item_update_description (item); if (pixbuf != NULL) { - gtk_list_store_set (GTK_LIST_STORE (model), &iter, + gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter, 0, pixbuf, 1, item->description, 2, item->filename, @@ -107,14 +139,14 @@ wp_props_load_wallpaper (gchar *key, } else { - gtk_list_store_set (GTK_LIST_STORE (model), &iter, + gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter, 1, item->description, 2, item->filename, -1); } - path = gtk_tree_model_get_path (model, &iter); - item->rowref = gtk_tree_row_reference_new (model, path); + path = gtk_tree_model_get_path (data->wp_model, &iter); + item->rowref = gtk_tree_row_reference_new (data->wp_model, path); gtk_tree_path_free (path); } @@ -239,23 +271,13 @@ wp_option_menu_set (AppearanceData *data, static void wp_set_sensitivities (AppearanceData *data) { - GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; GnomeWPItem *item; - gchar *wpfile; gchar *filename = NULL; - selection = gtk_tree_view_get_selection (data->wp_tree); + item = get_selected_item (data, NULL); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); + if (item != NULL) filename = item->filename; - g_free (wpfile); - } if (!gconf_client_key_is_writable (data->client, WP_OPTIONS_KEY, NULL) || (filename && !strcmp (filename, "(none)"))) @@ -288,23 +310,11 @@ static void wp_scale_type_changed (GtkComboBox *combobox, AppearanceData *data) { - GnomeWPItem *item = NULL; - GdkPixbuf *pixbuf; + GnomeWPItem *item; GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; - gchar *wpfile; + GdkPixbuf *pixbuf; - selection = gtk_tree_view_get_selection (data->wp_tree); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - - g_free (wpfile); - } + item = get_selected_item (data, &iter); if (item == NULL) return; @@ -332,7 +342,7 @@ wp_scale_type_changed (GtkComboBox *combobox, } pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs); - gtk_list_store_set (GTK_LIST_STORE (gtk_tree_view_get_model (data->wp_tree)), + gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter, 0, pixbuf, -1); @@ -345,23 +355,11 @@ static void wp_shade_type_changed (GtkWidget *combobox, AppearanceData *data) { - GnomeWPItem *item = NULL; + GnomeWPItem *item; GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; - gchar *wpfile; GdkPixbuf *pixbuf; - selection = gtk_tree_view_get_selection (data->wp_tree); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - - g_free (wpfile); - } + item = get_selected_item (data, &iter); if (item == NULL) return; @@ -386,7 +384,7 @@ wp_shade_type_changed (GtkWidget *combobox, } pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, + gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter, 0, pixbuf, -1); g_object_unref (pixbuf); @@ -398,22 +396,9 @@ static void wp_color_changed (AppearanceData *data, gboolean update) { - GnomeWPItem *item = NULL; - GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; - gchar *wpfile; + GnomeWPItem *item; - selection = gtk_tree_view_get_selection (data->wp_tree); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) - { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - - g_free (wpfile); - } + item = get_selected_item (data, NULL); if (item == NULL) return; @@ -458,30 +443,22 @@ static void wp_remove_wallpaper (GtkWidget *widget, AppearanceData *data) { + GnomeWPItem *item; GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; + GtkTreePath *path; - selection = gtk_tree_view_get_selection (data->wp_tree); + item = get_selected_item (data, &iter); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + if (item) { - GnomeWPItem *item; - gchar *wpfile; - GtkTreePath *path; - - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); item->deleted = TRUE; - g_free (wpfile); - if (gtk_list_store_remove (GTK_LIST_STORE (model), &iter)) - path = gtk_tree_model_get_path (model, &iter); + if (gtk_list_store_remove (GTK_LIST_STORE (data->wp_model), &iter)) + path = gtk_tree_model_get_path (data->wp_model, &iter); else path = gtk_tree_path_new_first (); - gtk_tree_view_set_cursor (data->wp_tree, path, NULL, FALSE); + gtk_icon_view_set_cursor (data->wp_view, path, NULL, FALSE); gtk_tree_path_free (path); } } @@ -490,29 +467,17 @@ static void wp_uri_changed (const gchar *uri, AppearanceData *data) { - GtkTreeSelection * selection; - GtkTreeModel * model; - GtkTreeIter iter; - GnomeWPItem * item; - gchar * selected; + GnomeWPItem *item, *selected; item = g_hash_table_lookup (data->wp_hash, uri); + selected = get_selected_item (data, NULL); - selection = gtk_tree_view_get_selection (data->wp_tree); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + if (selected != NULL && strcmp (selected->filename, uri) != 0) { - gtk_tree_model_get (model, &iter, 2, &selected, -1); + if (item == NULL) + item = wp_add_image (data, uri); - if (strcmp (selected, uri) != 0) - { - if (item == NULL) - item = wp_add_image (data, uri); - - scroll_to_item (data, item); - } - - g_free (selected); + scroll_to_item (data, item); } } @@ -541,12 +506,8 @@ wp_options_changed (GConfClient *client, guint id, GConfEntry *entry, AppearanceData *data) { - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreeIter iter; GnomeWPItem *item; const gchar *option; - gchar *wpfile; option = gconf_value_get_string (entry->value); @@ -561,22 +522,13 @@ wp_options_changed (GConfClient *client, guint id, return; } - selection = gtk_tree_view_get_selection (data->wp_tree); + item = get_selected_item (data, NULL); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + if (item != NULL) { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - - if (item != NULL) - { - g_free (item->options); - item->options = g_strdup (option); - wp_option_menu_set (data, item->options, FALSE); - } - - g_free (wpfile); + g_free (item->options); + item->options = g_strdup (option); + wp_option_menu_set (data, item->options, FALSE); } } @@ -585,30 +537,17 @@ wp_shading_changed (GConfClient *client, guint id, GConfEntry *entry, AppearanceData *data) { - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreeIter iter; GnomeWPItem *item; - gchar *wpfile; wp_set_sensitivities (data); - selection = gtk_tree_view_get_selection (data->wp_tree); + item = get_selected_item (data, NULL); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + if (item != NULL) { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - - if (item != NULL) - { - g_free (item->shade_type); - item->shade_type = g_strdup (gconf_value_get_string (entry->value)); - wp_option_menu_set (data, item->shade_type, TRUE); - } - - g_free (wpfile); + g_free (item->shade_type); + item->shade_type = g_strdup (gconf_value_get_string (entry->value)); + wp_option_menu_set (data, item->shade_type, TRUE); } } @@ -651,21 +590,13 @@ wp_color2_changed (GConfClient *client, guint id, static gboolean wp_props_wp_set (AppearanceData *data) { - GtkTreeIter iter; - GtkTreeModel *model; - GtkTreeSelection *selection; GnomeWPItem *item; GConfChangeSet *cs; - gchar *wpfile; - selection = gtk_tree_view_get_selection (data->wp_tree); + item = get_selected_item (data, NULL); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + if (item != NULL) { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - cs = gconf_change_set_new (); if (!strcmp (item->filename, "(none)")) @@ -696,8 +627,6 @@ wp_props_wp_set (AppearanceData *data) gconf_client_commit_change_set (data->client, cs, TRUE, NULL); gconf_change_set_unref (cs); - - g_free (wpfile); } return FALSE; @@ -707,17 +636,12 @@ static void wp_props_wp_selected (GtkTreeSelection *selection, AppearanceData *data) { - GtkTreeIter iter; - GtkTreeModel *model; GnomeWPItem *item; - gchar *wpfile; - if (gtk_tree_selection_get_selected (selection, &model, &iter)) + item = get_selected_item (data, NULL); + + if (item != NULL) { - gtk_tree_model_get (model, &iter, 2, &wpfile, -1); - - item = g_hash_table_lookup (data->wp_hash, wpfile); - wp_set_sensitivities (data); if (strcmp (item->filename, "(none)") != 0) @@ -729,8 +653,6 @@ wp_props_wp_selected (GtkTreeSelection *selection, item->pcolor); gtk_color_button_set_color (GTK_COLOR_BUTTON (data->wp_scpicker), item->scolor); - - g_free (wpfile); } else { @@ -974,9 +896,7 @@ void desktop_init (AppearanceData *data) { GtkWidget *add_button; - GtkTreeViewColumn *column; - GtkCellRenderer *renderer; - GtkTreeSelection *selection; + GValue val = {0,}; GtkFileFilter *filter; data->wp_hash = g_hash_table_new (g_str_hash, g_str_equal); @@ -1016,24 +936,25 @@ desktop_init (AppearanceData *data) g_signal_connect_after (G_OBJECT (glade_xml_get_widget (data->xml, "appearance_window")), "delete-event", G_CALLBACK (wp_tree_delete_event), data); - data->wp_tree = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, "wp_tree")); - gtk_tree_view_set_model (data->wp_tree, data->wp_model); + data->wp_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "wp_view")); + gtk_icon_view_set_model (data->wp_view, GTK_TREE_MODEL (data->wp_model)); - column = gtk_tree_view_column_new (); - renderer = gtk_cell_renderer_pixbuf_new (); - gtk_tree_view_column_pack_start (column, renderer, FALSE); - gtk_tree_view_column_set_attributes (column, renderer, - "pixbuf", 0, - NULL); + gtk_cell_layout_clear (GTK_CELL_LAYOUT (data->wp_view)); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_column_pack_start (column, renderer, FALSE); - gtk_tree_view_column_set_attributes (column, renderer, - "markup", 1, - NULL); - gtk_tree_view_column_set_spacing (column, 6); + data->wp_cell = cell_renderer_wallpaper_new (); - gtk_tree_view_append_column (data->wp_tree, column); + g_value_init (&val, G_TYPE_UINT); + g_value_set_uint (&val, 5); + + g_object_set_property (G_OBJECT (data->wp_cell), "xpad", &val); + g_object_set_property (G_OBJECT (data->wp_cell), "ypad", &val); + + gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->wp_view), + data->wp_cell, + TRUE); + gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->wp_view), data->wp_cell, + "pixbuf", 0, + NULL); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (data->wp_model), 2, (GtkTreeIterCompareFunc) wp_list_sort, @@ -1041,12 +962,12 @@ desktop_init (AppearanceData *data) gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (data->wp_model), 2, GTK_SORT_ASCENDING); - +/* gtk_drag_dest_set (GTK_WIDGET (data->wp_tree), GTK_DEST_DEFAULT_ALL, drop_types, sizeof (drop_types) / sizeof (drop_types[0]), GDK_ACTION_COPY | GDK_ACTION_MOVE); g_signal_connect (G_OBJECT (data->wp_tree), "drag_data_received", - G_CALLBACK (wp_dragged_image), data); + G_CALLBACK (wp_dragged_image), data);*/ data->wp_style_menu = glade_xml_get_widget (data->xml, "wp_style_menu"); @@ -1092,8 +1013,7 @@ desktop_init (AppearanceData *data) g_idle_add (wp_load_stuffs, data); - selection = gtk_tree_view_get_selection (data->wp_tree); - g_signal_connect (G_OBJECT (selection), "changed", + g_signal_connect (G_OBJECT (data->wp_view), "selection-changed", G_CALLBACK (wp_props_wp_selected), data); wp_set_sensitivities (data); diff --git a/capplets/appearance/appearance.glade b/capplets/appearance/appearance.glade index b78060ce0..f3171bdef 100644 --- a/capplets/appearance/appearance.glade +++ b/capplets/appearance/appearance.glade @@ -1,6 +1,6 @@ - + 5 @@ -93,15 +93,16 @@ - + True - + True True - _None + Sub_pixel (LCDs) True True + antialias_none_radio False @@ -109,11 +110,11 @@ - + True 5 - + True @@ -124,6 +125,8 @@ + 1 + 2 GTK_FILL @@ -166,16 +169,15 @@ - + True - + True True - Sub_pixel (LCDs) + _None True True - antialias_none_radio False @@ -183,11 +185,11 @@ - + True 5 - + True @@ -198,8 +200,6 @@ - 1 - 2 GTK_FILL @@ -234,45 +234,13 @@ 2 2 - + True - + True True - N_one - True - True - - - False - False - - - - - True - 5 - - - True - - - - - 1 - - - - - - - True - - - True - True - _Slight + _Full True True hint_none_radio @@ -283,11 +251,11 @@ - + True 5 - + True @@ -300,6 +268,9 @@ 1 2 + 1 + 2 + GTK_FILL GTK_FILL @@ -342,13 +313,13 @@ - + True - + True True - _Full + _Slight True True hint_none_radio @@ -359,11 +330,11 @@ - + True 5 - + True @@ -376,12 +347,41 @@ 1 2 - 1 - 2 - GTK_FILL GTK_FILL + + + True + + + True + True + N_one + True + True + + + False + False + + + + + True + 5 + + + True + + + + + 1 + + + + 1 @@ -415,46 +415,20 @@ 5 5 - + True - + True True - _RGB - True - True - - - - - True - gtk-missing-image - - - False - False - 5 - 1 - - - - - - - True - - - True - True - _BGR + VB_GR True True subpixel_rgb_radio - + True gtk-missing-image @@ -469,6 +443,9 @@ 1 2 + 1 + 2 + GTK_FILL GTK_FILL @@ -505,20 +482,20 @@ - + True - + True True - VB_GR + _BGR True True subpixel_rgb_radio - + True gtk-missing-image @@ -533,12 +510,35 @@ 1 2 - 1 - 2 - GTK_FILL GTK_FILL + + + True + + + True + True + _RGB + True + True + + + + + True + gtk-missing-image + + + False + False + 5 + 1 + + + + 1 @@ -740,53 +740,35 @@ 24 6 - + True 1 2 - 3 - 4 + 2 + 3 + GTK_EXPAND - + True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Cursor: - - - 3 - 4 - GTK_SHRINK | GTK_FILL - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Controls: - - - GTK_SHRINK | GTK_FILL - - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 0 - Window borders: + 1 + 2 1 2 - GTK_SHRINK | GTK_FILL - GTK_EXPAND + + + + + True + + + 1 + 2 @@ -804,35 +786,53 @@ - + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Window borders: - 1 - 2 - - - - - True - - - 1 - 2 1 2 + GTK_SHRINK | GTK_FILL + GTK_EXPAND - + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Controls: + + + GTK_SHRINK | GTK_FILL + + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Cursor: + + + 3 + 4 + GTK_SHRINK | GTK_FILL + + + + True 1 2 - 2 - 3 - GTK_EXPAND + 3 + 4 @@ -900,45 +900,53 @@ 12 12 - + True - True - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - #000000000000 - - - 3 - 4 - 1 - 2 - - GTK_EXPAND - - - - - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK 0 - Tooltips: + _Input boxes: + True - 2 - 3 1 2 GTK_FILL + - + + True + 0 + _Windows: + True + + + GTK_FILL + + + + + True True - 3 - 4 + 1 + 2 + 1 + 2 + + + + + + + True + True + + + 1 + 2 @@ -958,55 +966,47 @@ - + True True - 1 - 2 + 3 + 4 - + True - True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + Tooltips: - 1 - 2 + 2 + 3 + 1 + 2 + GTK_FILL + + + + + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + #000000000000 + + + 3 + 4 1 2 - - - - - - True - 0 - _Windows: - True - - - GTK_FILL - - - - - - True - 0 - _Input boxes: - True - - - 1 - 2 - GTK_FILL - + GTK_EXPAND @@ -1055,7 +1055,7 @@ <b>_Wallpaper</b> True True - wp_tree + wp_view False @@ -1097,14 +1097,17 @@ True True - GTK_POLICY_AUTOMATIC + GTK_POLICY_NEVER GTK_POLICY_AUTOMATIC GTK_SHADOW_IN - + True True - False + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + 0 + 3 + 3 @@ -1308,90 +1311,41 @@ 12 6 - - True - True - True - - - 1 - 2 - 1 - 2 - GTK_FILL - - - - - + True 0 - _Document font: - True - - - 1 - 2 - GTK_FILL - - - - - - True - True - True - - - 1 - 2 - 2 - 3 - GTK_FILL - - - - - - True - True - True - - - 1 - 2 - 3 - 4 - GTK_FILL - - - - - - True - True - True - - - 1 - 2 - 4 - 5 - GTK_FILL - - - - - - True - 0 - Des_ktop font: + _Application font: True GTK_JUSTIFY_RIGHT - 2 - 3 + GTK_FILL + + + + + + True + True + True + + + 1 + 2 + + + + + + True + 0 + _Fixed width font: + True + GTK_JUSTIFY_RIGHT + + + 4 + 5 GTK_FILL @@ -1412,22 +1366,22 @@ - + True 0 - _Fixed width font: + Des_ktop font: True GTK_JUSTIFY_RIGHT - 4 - 5 + 2 + 3 GTK_FILL - + True True True @@ -1435,18 +1389,67 @@ 1 2 + 4 + 5 + GTK_FILL - + True - 0 - _Application font: - True - GTK_JUSTIFY_RIGHT + True + True + 1 + 2 + 3 + 4 + GTK_FILL + + + + + + True + True + True + + + 1 + 2 + 2 + 3 + GTK_FILL + + + + + + True + 0 + _Document font: + True + + + 1 + 2 + GTK_FILL + + + + + + True + True + True + + + 1 + 2 + 1 + 2 GTK_FILL @@ -1484,14 +1487,14 @@ 12 6 - + True 6 - + True True - Sub_pixel smoothing (LCDs) + _Monochrome True True @@ -1501,10 +1504,42 @@ - + True - + + True + + + + + 1 + + + + + + + True + 6 + + + True + True + Best _shapes + True + True + + + False + False + + + + + True + + True @@ -1517,8 +1552,6 @@ 1 2 - 1 - 2 @@ -1558,14 +1591,14 @@ - + True 6 - + True True - Best _shapes + Sub_pixel smoothing (LCDs) True True @@ -1575,10 +1608,10 @@ - + True - + True @@ -1591,40 +1624,10 @@ 1 2 + 1 + 2 - - - True - 6 - - - True - True - _Monochrome - True - True - - - False - False - - - - - True - - - True - - - - - 1 - - - - diff --git a/capplets/appearance/appearance.h b/capplets/appearance/appearance.h index 7deb5b2e4..8b24af8d5 100644 --- a/capplets/appearance/appearance.h +++ b/capplets/appearance/appearance.h @@ -37,8 +37,9 @@ typedef struct { GHashTable *wp_hash; GnomeThumbnailFactory *wp_thumbs; gboolean wp_update_gconf; - GtkTreeView *wp_tree; + GtkIconView *wp_view; GtkTreeModel *wp_model; + GtkCellRenderer *wp_cell; GtkWidget *wp_scpicker; GtkWidget *wp_pcpicker; GtkWidget *wp_style_menu; diff --git a/capplets/appearance/gnome-wp-item.c b/capplets/appearance/gnome-wp-item.c index 5bc7d273a..aa0c7eb40 100644 --- a/capplets/appearance/gnome-wp-item.c +++ b/capplets/appearance/gnome-wp-item.c @@ -197,7 +197,7 @@ static void collect_save_options (GdkPixbuf * pixbuf, (*vals)[count] = NULL; } -#define LIST_IMAGE_WIDTH 64 +#define LIST_IMAGE_WIDTH 128 GdkPixbuf * gnome_wp_item_get_thumbnail (GnomeWPItem * item, GnomeThumbnailFactory * thumbs) { diff --git a/capplets/appearance/wp-cellrenderer.c b/capplets/appearance/wp-cellrenderer.c new file mode 100644 index 000000000..1392e5864 --- /dev/null +++ b/capplets/appearance/wp-cellrenderer.c @@ -0,0 +1,64 @@ + +#include "wp-cellrenderer.h" +#include +#include +#include + +static void cell_renderer_wallpaper_render (GtkCellRenderer *cell, + GdkWindow *window, + GtkWidget *widget, + GdkRectangle *background_area, + GdkRectangle *cell_area, + GdkRectangle *expose_area, + GtkCellRendererState flags); + +G_DEFINE_TYPE (CellRendererWallpaper, cell_renderer_wallpaper, GTK_TYPE_CELL_RENDERER_PIXBUF) + +static void +cell_renderer_wallpaper_class_init (CellRendererWallpaperClass *klass) +{ + GtkCellRendererClass *renderer_class; + + renderer_class = (GtkCellRendererClass *) klass; + renderer_class->render = cell_renderer_wallpaper_render; +} + +static void +cell_renderer_wallpaper_init (CellRendererWallpaper *renderer) +{ + +} + +GtkCellRenderer * +cell_renderer_wallpaper_new (void) +{ + return g_object_new (cell_renderer_wallpaper_get_type (), NULL); +} + +static void +cell_renderer_wallpaper_render (GtkCellRenderer *cell, + GdkWindow *window, + GtkWidget *widget, + GdkRectangle *background_area, + GdkRectangle *cell_area, + GdkRectangle *expose_area, + GtkCellRendererState flags) +{ + (* GTK_CELL_RENDERER_CLASS (cell_renderer_wallpaper_parent_class)->render) + (cell, window, widget, background_area, cell_area, expose_area, flags); + + if (flags && GTK_CELL_RENDERER_FOCUSED) + { + GdkGC *gc; + + gc = gdk_gc_new (GDK_DRAWABLE (window)); + + gdk_gc_set_foreground (gc, &widget->style->bg[GTK_STATE_SELECTED]); + gdk_gc_set_line_attributes (gc, 3, + GDK_LINE_SOLID, GDK_CAP_BUTT, GDK_JOIN_MITER); + + gdk_draw_rectangle (GDK_DRAWABLE (window), gc, FALSE, + background_area->x, background_area->y, + background_area->width, background_area->height); + } +} diff --git a/capplets/appearance/wp-cellrenderer.h b/capplets/appearance/wp-cellrenderer.h new file mode 100644 index 000000000..2bdc7510a --- /dev/null +++ b/capplets/appearance/wp-cellrenderer.h @@ -0,0 +1,25 @@ +#include + +#ifndef _WP_CELL_RENDERER_H +#define _WP_CELL_RENDERER_H + +G_BEGIN_DECLS + +typedef struct _CellRendererWallpaper CellRendererWallpaper; +typedef struct _CellRendererWallpaperClass CellRendererWallpaperClass; + +struct _CellRendererWallpaper +{ + GtkCellRendererPixbuf parent; +}; + +struct _CellRendererWallpaperClass +{ + GtkCellRendererPixbufClass parent; +}; + +GtkCellRenderer *cell_renderer_wallpaper_new (void); + +G_END_DECLS + +#endif