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
This commit is contained in:
parent
c1a597bb4d
commit
3a908d7a99
8 changed files with 552 additions and 526 deletions
|
@ -1,3 +1,14 @@
|
|||
2007-05-10 Denis Washington <denisw@svn.nome.org>
|
||||
|
||||
* 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 <jensgr@gmx.net>
|
||||
|
||||
* appearance-themes.c: (themes_init):
|
||||
|
|
|
@ -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) \
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "gnome-wp-item.h"
|
||||
#include "gnome-wp-utils.h"
|
||||
#include "gnome-wp-xml.h"
|
||||
#include "wp-cellrenderer.h"
|
||||
#include <glib/gi18n.h>
|
||||
#include <string.h>
|
||||
#include <gconf/gconf-client.h>
|
||||
|
@ -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);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
64
capplets/appearance/wp-cellrenderer.c
Normal file
64
capplets/appearance/wp-cellrenderer.c
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
#include "wp-cellrenderer.h"
|
||||
#include <glib.h>
|
||||
#include <gdk/gdk.h>
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
25
capplets/appearance/wp-cellrenderer.h
Normal file
25
capplets/appearance/wp-cellrenderer.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
#include <gtk/gtk.h>
|
||||
|
||||
#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
|
Loading…
Add table
Add a link
Reference in a new issue