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>
|
2007-05-09 Jens Granseuer <jensgr@gmx.net>
|
||||||
|
|
||||||
* appearance-themes.c: (themes_init):
|
* appearance-themes.c: (themes_init):
|
||||||
|
|
|
@ -23,7 +23,9 @@ gnome_appearance_properties_SOURCES = \
|
||||||
gnome-wp-utils.c \
|
gnome-wp-utils.c \
|
||||||
gnome-wp-utils.h \
|
gnome-wp-utils.h \
|
||||||
gnome-wp-xml.c \
|
gnome-wp-xml.c \
|
||||||
gnome-wp-xml.h
|
gnome-wp-xml.h \
|
||||||
|
wp-cellrenderer.c \
|
||||||
|
wp-cellrenderer.h
|
||||||
|
|
||||||
gnome_appearance_properties_LDADD = \
|
gnome_appearance_properties_LDADD = \
|
||||||
$(GNOMECC_CAPPLETS_LIBS) \
|
$(GNOMECC_CAPPLETS_LIBS) \
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "gnome-wp-item.h"
|
#include "gnome-wp-item.h"
|
||||||
#include "gnome-wp-utils.h"
|
#include "gnome-wp-utils.h"
|
||||||
#include "gnome-wp-xml.h"
|
#include "gnome-wp-xml.h"
|
||||||
|
#include "wp-cellrenderer.h"
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <gconf/gconf-client.h>
|
#include <gconf/gconf-client.h>
|
||||||
|
@ -57,7 +58,9 @@ static GtkTargetEntry drop_types[] = {
|
||||||
{ "property/bgimage", 0, TARGET_BGIMAGE },
|
{ "property/bgimage", 0, TARGET_BGIMAGE },
|
||||||
/* { "x-special/gnome-reset-background", 0, TARGET_BACKGROUND_RESET }*/
|
/* { "x-special/gnome-reset-background", 0, TARGET_BACKGROUND_RESET }*/
|
||||||
};
|
};
|
||||||
|
static GnomeWPItem *
|
||||||
|
get_selected_item (AppearanceData *data,
|
||||||
|
GtkTreeIter *iter);
|
||||||
static void
|
static void
|
||||||
scroll_to_item (AppearanceData *data,
|
scroll_to_item (AppearanceData *data,
|
||||||
GnomeWPItem * item)
|
GnomeWPItem * item)
|
||||||
|
@ -71,17 +74,48 @@ scroll_to_item (AppearanceData *data,
|
||||||
|
|
||||||
path = gtk_tree_row_reference_get_path (item->rowref);
|
path = gtk_tree_row_reference_get_path (item->rowref);
|
||||||
|
|
||||||
gtk_tree_view_set_cursor (data->wp_tree, path, NULL, FALSE);
|
gtk_icon_view_select_path (data->wp_view, path);
|
||||||
gtk_tree_view_scroll_to_cell (data->wp_tree, path, NULL, TRUE, 0.5, 0.0);
|
gtk_icon_view_scroll_to_path (data->wp_view, path, TRUE, 0.5, 0.0);
|
||||||
gtk_tree_path_free (path);
|
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
|
static void
|
||||||
wp_props_load_wallpaper (gchar *key,
|
wp_props_load_wallpaper (gchar *key,
|
||||||
GnomeWPItem *item,
|
GnomeWPItem *item,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
|
@ -89,16 +123,14 @@ wp_props_load_wallpaper (gchar *key,
|
||||||
if (item->deleted == TRUE)
|
if (item->deleted == TRUE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
model = gtk_tree_view_get_model (data->wp_tree);
|
gtk_list_store_append (GTK_LIST_STORE (data->wp_model), &iter);
|
||||||
|
|
||||||
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
|
|
||||||
|
|
||||||
pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs);
|
pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs);
|
||||||
gnome_wp_item_update_description (item);
|
gnome_wp_item_update_description (item);
|
||||||
|
|
||||||
if (pixbuf != NULL)
|
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,
|
0, pixbuf,
|
||||||
1, item->description,
|
1, item->description,
|
||||||
2, item->filename,
|
2, item->filename,
|
||||||
|
@ -107,14 +139,14 @@ wp_props_load_wallpaper (gchar *key,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter,
|
||||||
1, item->description,
|
1, item->description,
|
||||||
2, item->filename,
|
2, item->filename,
|
||||||
-1);
|
-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
path = gtk_tree_model_get_path (model, &iter);
|
path = gtk_tree_model_get_path (data->wp_model, &iter);
|
||||||
item->rowref = gtk_tree_row_reference_new (model, path);
|
item->rowref = gtk_tree_row_reference_new (data->wp_model, path);
|
||||||
gtk_tree_path_free (path);
|
gtk_tree_path_free (path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,23 +271,13 @@ wp_option_menu_set (AppearanceData *data,
|
||||||
static void
|
static void
|
||||||
wp_set_sensitivities (AppearanceData *data)
|
wp_set_sensitivities (AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
GnomeWPItem *item;
|
GnomeWPItem *item;
|
||||||
gchar *wpfile;
|
|
||||||
gchar *filename = NULL;
|
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))
|
if (item != NULL)
|
||||||
{
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &wpfile, -1);
|
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, wpfile);
|
|
||||||
filename = item->filename;
|
filename = item->filename;
|
||||||
g_free (wpfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!gconf_client_key_is_writable (data->client, WP_OPTIONS_KEY, NULL)
|
if (!gconf_client_key_is_writable (data->client, WP_OPTIONS_KEY, NULL)
|
||||||
|| (filename && !strcmp (filename, "(none)")))
|
|| (filename && !strcmp (filename, "(none)")))
|
||||||
|
@ -288,23 +310,11 @@ static void
|
||||||
wp_scale_type_changed (GtkComboBox *combobox,
|
wp_scale_type_changed (GtkComboBox *combobox,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GnomeWPItem *item = NULL;
|
GnomeWPItem *item;
|
||||||
GdkPixbuf *pixbuf;
|
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkTreeModel *model;
|
GdkPixbuf *pixbuf;
|
||||||
GtkTreeSelection *selection;
|
|
||||||
gchar *wpfile;
|
|
||||||
|
|
||||||
selection = gtk_tree_view_get_selection (data->wp_tree);
|
item = get_selected_item (data, &iter);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -332,7 +342,7 @@ wp_scale_type_changed (GtkComboBox *combobox,
|
||||||
}
|
}
|
||||||
|
|
||||||
pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs);
|
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,
|
&iter,
|
||||||
0, pixbuf,
|
0, pixbuf,
|
||||||
-1);
|
-1);
|
||||||
|
@ -345,23 +355,11 @@ static void
|
||||||
wp_shade_type_changed (GtkWidget *combobox,
|
wp_shade_type_changed (GtkWidget *combobox,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GnomeWPItem *item = NULL;
|
GnomeWPItem *item;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
gchar *wpfile;
|
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
|
|
||||||
selection = gtk_tree_view_get_selection (data->wp_tree);
|
item = get_selected_item (data, &iter);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -386,7 +384,7 @@ wp_shade_type_changed (GtkWidget *combobox,
|
||||||
}
|
}
|
||||||
|
|
||||||
pixbuf = gnome_wp_item_get_thumbnail (item, data->wp_thumbs);
|
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,
|
0, pixbuf,
|
||||||
-1);
|
-1);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
|
@ -398,22 +396,9 @@ static void
|
||||||
wp_color_changed (AppearanceData *data,
|
wp_color_changed (AppearanceData *data,
|
||||||
gboolean update)
|
gboolean update)
|
||||||
{
|
{
|
||||||
GnomeWPItem *item = NULL;
|
GnomeWPItem *item;
|
||||||
GtkTreeIter iter;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
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))
|
|
||||||
{
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &wpfile, -1);
|
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, wpfile);
|
|
||||||
|
|
||||||
g_free (wpfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
return;
|
return;
|
||||||
|
@ -457,31 +442,23 @@ wp_scolor_changed (GtkWidget *widget,
|
||||||
static void
|
static void
|
||||||
wp_remove_wallpaper (GtkWidget *widget,
|
wp_remove_wallpaper (GtkWidget *widget,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
|
||||||
GtkTreeIter iter;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
|
|
||||||
selection = gtk_tree_view_get_selection (data->wp_tree);
|
|
||||||
|
|
||||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
|
||||||
{
|
{
|
||||||
GnomeWPItem *item;
|
GnomeWPItem *item;
|
||||||
gchar *wpfile;
|
GtkTreeIter iter;
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &wpfile, -1);
|
item = get_selected_item (data, &iter);
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, wpfile);
|
if (item)
|
||||||
|
{
|
||||||
item->deleted = TRUE;
|
item->deleted = TRUE;
|
||||||
g_free (wpfile);
|
|
||||||
|
|
||||||
if (gtk_list_store_remove (GTK_LIST_STORE (model), &iter))
|
if (gtk_list_store_remove (GTK_LIST_STORE (data->wp_model), &iter))
|
||||||
path = gtk_tree_model_get_path (model, &iter);
|
path = gtk_tree_model_get_path (data->wp_model, &iter);
|
||||||
else
|
else
|
||||||
path = gtk_tree_path_new_first ();
|
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);
|
gtk_tree_path_free (path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -490,30 +467,18 @@ static void
|
||||||
wp_uri_changed (const gchar *uri,
|
wp_uri_changed (const gchar *uri,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeSelection * selection;
|
GnomeWPItem *item, *selected;
|
||||||
GtkTreeModel * model;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
GnomeWPItem * item;
|
|
||||||
gchar * selected;
|
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, uri);
|
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 (selected != NULL && strcmp (selected->filename, uri) != 0)
|
||||||
|
|
||||||
if (gtk_tree_selection_get_selected (selection, &model, &iter))
|
|
||||||
{
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &selected, -1);
|
|
||||||
|
|
||||||
if (strcmp (selected, uri) != 0)
|
|
||||||
{
|
{
|
||||||
if (item == NULL)
|
if (item == NULL)
|
||||||
item = wp_add_image (data, uri);
|
item = wp_add_image (data, uri);
|
||||||
|
|
||||||
scroll_to_item (data, item);
|
scroll_to_item (data, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (selected);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -541,12 +506,8 @@ wp_options_changed (GConfClient *client, guint id,
|
||||||
GConfEntry *entry,
|
GConfEntry *entry,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeSelection *selection;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
GnomeWPItem *item;
|
GnomeWPItem *item;
|
||||||
const gchar *option;
|
const gchar *option;
|
||||||
gchar *wpfile;
|
|
||||||
|
|
||||||
option = gconf_value_get_string (entry->value);
|
option = gconf_value_get_string (entry->value);
|
||||||
|
|
||||||
|
@ -561,13 +522,7 @@ wp_options_changed (GConfClient *client, guint id,
|
||||||
return;
|
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))
|
|
||||||
{
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &wpfile, -1);
|
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, wpfile);
|
|
||||||
|
|
||||||
if (item != NULL)
|
if (item != NULL)
|
||||||
{
|
{
|
||||||
|
@ -575,9 +530,6 @@ wp_options_changed (GConfClient *client, guint id,
|
||||||
item->options = g_strdup (option);
|
item->options = g_strdup (option);
|
||||||
wp_option_menu_set (data, item->options, FALSE);
|
wp_option_menu_set (data, item->options, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (wpfile);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -585,21 +537,11 @@ wp_shading_changed (GConfClient *client, guint id,
|
||||||
GConfEntry *entry,
|
GConfEntry *entry,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeSelection *selection;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeIter iter;
|
|
||||||
GnomeWPItem *item;
|
GnomeWPItem *item;
|
||||||
gchar *wpfile;
|
|
||||||
|
|
||||||
wp_set_sensitivities (data);
|
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))
|
|
||||||
{
|
|
||||||
gtk_tree_model_get (model, &iter, 2, &wpfile, -1);
|
|
||||||
|
|
||||||
item = g_hash_table_lookup (data->wp_hash, wpfile);
|
|
||||||
|
|
||||||
if (item != NULL)
|
if (item != NULL)
|
||||||
{
|
{
|
||||||
|
@ -607,9 +549,6 @@ wp_shading_changed (GConfClient *client, guint id,
|
||||||
item->shade_type = g_strdup (gconf_value_get_string (entry->value));
|
item->shade_type = g_strdup (gconf_value_get_string (entry->value));
|
||||||
wp_option_menu_set (data, item->shade_type, TRUE);
|
wp_option_menu_set (data, item->shade_type, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (wpfile);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -651,21 +590,13 @@ wp_color2_changed (GConfClient *client, guint id,
|
||||||
static gboolean
|
static gboolean
|
||||||
wp_props_wp_set (AppearanceData *data)
|
wp_props_wp_set (AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
GnomeWPItem *item;
|
GnomeWPItem *item;
|
||||||
GConfChangeSet *cs;
|
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 ();
|
cs = gconf_change_set_new ();
|
||||||
|
|
||||||
if (!strcmp (item->filename, "(none)"))
|
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_client_commit_change_set (data->client, cs, TRUE, NULL);
|
||||||
|
|
||||||
gconf_change_set_unref (cs);
|
gconf_change_set_unref (cs);
|
||||||
|
|
||||||
g_free (wpfile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -707,17 +636,12 @@ static void
|
||||||
wp_props_wp_selected (GtkTreeSelection *selection,
|
wp_props_wp_selected (GtkTreeSelection *selection,
|
||||||
AppearanceData *data)
|
AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
|
||||||
GtkTreeModel *model;
|
|
||||||
GnomeWPItem *item;
|
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);
|
wp_set_sensitivities (data);
|
||||||
|
|
||||||
if (strcmp (item->filename, "(none)") != 0)
|
if (strcmp (item->filename, "(none)") != 0)
|
||||||
|
@ -729,8 +653,6 @@ wp_props_wp_selected (GtkTreeSelection *selection,
|
||||||
item->pcolor);
|
item->pcolor);
|
||||||
gtk_color_button_set_color (GTK_COLOR_BUTTON (data->wp_scpicker),
|
gtk_color_button_set_color (GTK_COLOR_BUTTON (data->wp_scpicker),
|
||||||
item->scolor);
|
item->scolor);
|
||||||
|
|
||||||
g_free (wpfile);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -974,9 +896,7 @@ void
|
||||||
desktop_init (AppearanceData *data)
|
desktop_init (AppearanceData *data)
|
||||||
{
|
{
|
||||||
GtkWidget *add_button;
|
GtkWidget *add_button;
|
||||||
GtkTreeViewColumn *column;
|
GValue val = {0,};
|
||||||
GtkCellRenderer *renderer;
|
|
||||||
GtkTreeSelection *selection;
|
|
||||||
GtkFileFilter *filter;
|
GtkFileFilter *filter;
|
||||||
|
|
||||||
data->wp_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
data->wp_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||||
|
@ -1016,37 +936,38 @@ desktop_init (AppearanceData *data)
|
||||||
g_signal_connect_after (G_OBJECT (glade_xml_get_widget (data->xml, "appearance_window")), "delete-event",
|
g_signal_connect_after (G_OBJECT (glade_xml_get_widget (data->xml, "appearance_window")), "delete-event",
|
||||||
G_CALLBACK (wp_tree_delete_event), data);
|
G_CALLBACK (wp_tree_delete_event), data);
|
||||||
|
|
||||||
data->wp_tree = GTK_TREE_VIEW (glade_xml_get_widget (data->xml, "wp_tree"));
|
data->wp_view = GTK_ICON_VIEW (glade_xml_get_widget (data->xml, "wp_view"));
|
||||||
gtk_tree_view_set_model (data->wp_tree, data->wp_model);
|
gtk_icon_view_set_model (data->wp_view, GTK_TREE_MODEL (data->wp_model));
|
||||||
|
|
||||||
column = gtk_tree_view_column_new ();
|
gtk_cell_layout_clear (GTK_CELL_LAYOUT (data->wp_view));
|
||||||
renderer = gtk_cell_renderer_pixbuf_new ();
|
|
||||||
gtk_tree_view_column_pack_start (column, renderer, FALSE);
|
data->wp_cell = cell_renderer_wallpaper_new ();
|
||||||
gtk_tree_view_column_set_attributes (column, renderer,
|
|
||||||
|
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,
|
"pixbuf", 0,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
gtk_tree_view_append_column (data->wp_tree, column);
|
|
||||||
|
|
||||||
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (data->wp_model), 2,
|
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (data->wp_model), 2,
|
||||||
(GtkTreeIterCompareFunc) wp_list_sort,
|
(GtkTreeIterCompareFunc) wp_list_sort,
|
||||||
data, NULL);
|
data, NULL);
|
||||||
|
|
||||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (data->wp_model),
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (data->wp_model),
|
||||||
2, GTK_SORT_ASCENDING);
|
2, GTK_SORT_ASCENDING);
|
||||||
|
/*
|
||||||
gtk_drag_dest_set (GTK_WIDGET (data->wp_tree), GTK_DEST_DEFAULT_ALL, drop_types,
|
gtk_drag_dest_set (GTK_WIDGET (data->wp_tree), GTK_DEST_DEFAULT_ALL, drop_types,
|
||||||
sizeof (drop_types) / sizeof (drop_types[0]),
|
sizeof (drop_types) / sizeof (drop_types[0]),
|
||||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||||
g_signal_connect (G_OBJECT (data->wp_tree), "drag_data_received",
|
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");
|
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);
|
g_idle_add (wp_load_stuffs, data);
|
||||||
|
|
||||||
selection = gtk_tree_view_get_selection (data->wp_tree);
|
g_signal_connect (G_OBJECT (data->wp_view), "selection-changed",
|
||||||
g_signal_connect (G_OBJECT (selection), "changed",
|
|
||||||
G_CALLBACK (wp_props_wp_selected), data);
|
G_CALLBACK (wp_props_wp_selected), data);
|
||||||
|
|
||||||
wp_set_sensitivities (data);
|
wp_set_sensitivities (data);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -37,8 +37,9 @@ typedef struct {
|
||||||
GHashTable *wp_hash;
|
GHashTable *wp_hash;
|
||||||
GnomeThumbnailFactory *wp_thumbs;
|
GnomeThumbnailFactory *wp_thumbs;
|
||||||
gboolean wp_update_gconf;
|
gboolean wp_update_gconf;
|
||||||
GtkTreeView *wp_tree;
|
GtkIconView *wp_view;
|
||||||
GtkTreeModel *wp_model;
|
GtkTreeModel *wp_model;
|
||||||
|
GtkCellRenderer *wp_cell;
|
||||||
GtkWidget *wp_scpicker;
|
GtkWidget *wp_scpicker;
|
||||||
GtkWidget *wp_pcpicker;
|
GtkWidget *wp_pcpicker;
|
||||||
GtkWidget *wp_style_menu;
|
GtkWidget *wp_style_menu;
|
||||||
|
|
|
@ -197,7 +197,7 @@ static void collect_save_options (GdkPixbuf * pixbuf,
|
||||||
(*vals)[count] = NULL;
|
(*vals)[count] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define LIST_IMAGE_WIDTH 64
|
#define LIST_IMAGE_WIDTH 128
|
||||||
|
|
||||||
GdkPixbuf * gnome_wp_item_get_thumbnail (GnomeWPItem * item,
|
GdkPixbuf * gnome_wp_item_get_thumbnail (GnomeWPItem * item,
|
||||||
GnomeThumbnailFactory * thumbs) {
|
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