Commit 68eeed5c authored by Andy Hertzfeld's avatar Andy Hertzfeld

generalized toolbar icon themes to support any number, and reorganized


        generalized toolbar icon themes to support any number, and
	reorganized appearance preference panel to group the icon theme
	selectors together.  Also, added a cleaner version of the zoom icon.
parent a01189b6
2000-06-04 Andy Hertzfeld <andy@eazel.com>
* libnautilus-extensions/nautilus-global-preferences.c:
(global_preferences_create_dialog),
(global_preferences_register_for_ui):
reorganized the icon theming in the preferences dialog, combining toolbar and
icon themes into one section, and generalizing toolbar themes to support any
number of themes.
* libnautilus-extensions/nautilus-global-preferences.h:
generalized the toolbar icon theme preference from a boolean to a string,
changing its name to avoid confusion
* nautilus-widgets/nautilus-preferences-item.c:
(preferences_item_construct), (has_image_file), (add_icon_themes),
(preferences_item_create_icon_theme),
(preferences_item_create_toolbar_icon_theme):
added support for toolbar icon themes and made it more robust for icon themes
in general, by adding code to check that a candidate directory actually has
the required icons.
* nautilus-widgets/nautilus-preferences-item.h:
added a new item type for toolbar themes
* src/nautilus-window-toolbars.c: (setup_button),
(setup_toolbar_images), (nautilus_window_initialize_toolbars),
(nautilus_window_toolbar_remove_theme_callback):
generalized the toolbar icon switching code to support arbitrary themes instead
of just two.
* libnautilus-extensions/nautilus-link-set.c:
(get_link_set_document), (expand_uri), (nautilus_link_set_install),
(nautilus_link_set_remove):
added link set remove code, which hasn't been tested yet, but will be soon.
* icons/zoom.png:
cleaner version of magnifier icon
2000-06-04 Ian McKellar <yakk@yakk.net>
* nautilus-widgets/nautilus-preferences.c:
......
icons/zoom.png

1.09 KB | W: | H:

icons/zoom.png

898 Bytes | W: | H:

icons/zoom.png
icons/zoom.png
icons/zoom.png
icons/zoom.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -185,24 +185,23 @@ global_preferences_create_dialog (void)
NAUTILUS_PREFERENCES_ANTI_ALIASED_CANVAS,
NAUTILUS_PREFERENCE_ITEM_BOOLEAN);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Toolbar Icons");
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Icon Themes");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
1,
NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS,
NAUTILUS_PREFERENCE_ITEM_BOOLEAN);
NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_TOOLBAR_ICON_THEME);
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
1,
NAUTILUS_PREFERENCES_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_ICON_THEME);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Fonts");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
2,
NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY,
NAUTILUS_PREFERENCE_ITEM_FONT_FAMILY);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Icons");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
3,
NAUTILUS_PREFERENCES_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_ICON_THEME);
/*
* Tradeoffs
*/
......@@ -500,7 +499,7 @@ global_preferences_register_for_ui (void)
FALSE);
global_preferences_register_string_with_defaults (NAUTILUS_PREFERENCES_ICON_THEME,
"Select theme for icons",
"theme for file icons: ",
"default",
"default",
"default");
......@@ -512,11 +511,11 @@ global_preferences_register_for_ui (void)
"helvetica");
/* toolbar icons */
global_preferences_register_boolean_with_defaults (NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS,
"Use Eazel's toolbar icons",
FALSE,
FALSE,
FALSE);
global_preferences_register_string_with_defaults (NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME,
"theme for toolbar icons:",
"standard",
"standard",
"standard");
/*
* These dont have a UI (yet ? maybe in the advanced settings ?).
......
......@@ -62,7 +62,7 @@ BEGIN_GNOME_DECLS
#define NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY "directory-view/font_family"
/* themes */
#define NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS "preferences/eazel_toolbar_icons"
#define NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME "preferences/toolbar_icon_theme"
#define NAUTILUS_PREFERENCES_ICON_THEME "preferences/icon_theme"
enum
......
......@@ -69,6 +69,39 @@ create_new_link (const char *directory_path, const char *name, const char *image
return result > 0;
}
/* utility to return link set path */
static xmlDocPtr
get_link_set_document(const char* link_set_name)
{
char *link_set_path, *temp_str;
xmlDocPtr document;
temp_str = g_strdup_printf ("nautilus/linksets/%s.xml", link_set_name);
link_set_path = gnome_datadir_file (temp_str);
g_free (temp_str);
document = xmlParseFile (link_set_path);
g_free (link_set_path);
return document;
}
/* utility to expand the uri to deal with the home directory, etc. */
static char *
expand_uri(const char *uri)
{
char *full_uri, *home_in_uri_format;
if (uri[0] == '~') {
home_in_uri_format = gnome_vfs_escape_string (g_get_home_dir (), GNOME_VFS_URI_UNSAFE_PATH);
full_uri = g_strconcat ("file://", home_in_uri_format, uri + 1, NULL);
g_free (home_in_uri_format);
return full_uri;
}
return g_strdup(uri);
}
/* install a link set into the specified directory */
gboolean
......@@ -76,22 +109,18 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
{
xmlDocPtr document;
xmlNodePtr node;
char *temp_str, *link_set_path;
char *link_name, *image_name, *uri, *full_uri, *home_in_uri_format;
char *link_name, *image_name, *uri, *full_uri;
/* compose the path of the link set file */
temp_str = g_strdup_printf ("nautilus/linksets/%s.xml", link_set_name);
link_set_path = gnome_datadir_file (temp_str);
g_free (temp_str);
/* load and parse the link set document */
document = get_link_set_document(link_set_name);
/* load and parse the linkset xml file */
document = xmlParseFile (link_set_path);
g_free (link_set_path);
if (document == NULL) {
return FALSE;
}
/* loop through the entries, generating .link files */
/* loop through the entries, generating .link files, or incrementing the
reference count if it's already there */
for (node = nautilus_xml_get_children (xmlDocGetRootElement (document));
node != NULL; node = node->next) {
if (strcmp (node->name, "link") == 0) {
......@@ -100,16 +129,10 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
uri = xmlGetProp (node, "uri");
/* Expand special URIs */
full_uri = NULL;
if (uri[0] == '~') {
home_in_uri_format = gnome_vfs_escape_string
(g_get_home_dir (), GNOME_VFS_URI_UNSAFE_PATH);
full_uri = g_strconcat ("file://", home_in_uri_format, uri + 1, NULL);
g_free (home_in_uri_format);
uri = full_uri;
}
if (!create_new_link (directory_path, link_name, image_name, uri)) {
full_uri = expand_uri(uri);
/* create the link file */
if (!create_new_link (directory_path, link_name, image_name, full_uri)) {
g_free (full_uri);
xmlFreeDoc (document);
return FALSE;
......@@ -126,10 +149,31 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
}
/* remove a link set from the specified directory */
/* FIXME: Not implemented. */
#if 0
void
nautilus_link_set_remove (const char *directory_uri, const char *link_set_name)
nautilus_link_set_remove (const char *directory_path, const char *link_set_name)
{
xmlDocPtr document;
xmlNodePtr node;
char *link_name, *file_name;
document = get_link_set_document(link_set_name);
if (document == NULL)
return;
/* loop through the entries in the xml file, formulating the names of the link files and
deleting them or decrementing their reference count */
for (node = nautilus_xml_get_children (xmlDocGetRootElement (document));
node != NULL; node = node->next) {
if (strcmp (node->name, "link") == 0) {
link_name = xmlGetProp (node, "name");
/* formulate the link file path name */
file_name = g_strdup_printf ("%s/%s.link", directory_path, link_name);
/* delete the file */
unlink(file_name);
g_free(link_name);
}
}
xmlFreeDoc (document);
}
#endif
......@@ -25,6 +25,8 @@
#include <config.h>
#include "nautilus-preferences-item.h"
#include "nautilus-preferences.h"
#include <libnautilus-extensions/nautilus-file-utilities.h>
#include <libnautilus-extensions/nautilus-glib-extensions.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libgnomevfs/gnome-vfs.h>
......@@ -85,6 +87,8 @@ static void preferences_item_create_font_family (NautilusPreferenc
const NautilusPreference *prefrence);
static void preferences_item_create_icon_theme (NautilusPreferencesItem *item,
const NautilusPreference *preference);
static void preferences_item_create_toolbar_icon_theme (NautilusPreferencesItem *item,
const NautilusPreference *preference);
static void enum_radio_group_changed_callback (GtkWidget *button_group,
GtkWidget *button,
gpointer user_data);
......@@ -274,6 +278,10 @@ preferences_item_construct (NautilusPreferencesItem *item,
preferences_item_create_icon_theme (item, preference);
break;
case NAUTILUS_PREFERENCE_ITEM_TOOLBAR_ICON_THEME:
preferences_item_create_toolbar_icon_theme (item, preference);
break;
}
gtk_object_unref (GTK_OBJECT (preference));
......@@ -408,10 +416,50 @@ preferences_item_create_font_family (NautilusPreferencesItem *item,
(gpointer) item);
}
/* utility to determine if an image file exists in the candidate directory */
static const char *icon_file_name_suffixes[] =
{
".svg",
".SVG",
".png",
".PNG"
};
static gboolean
has_image_file(const char *directory_uri, const char *dir_name, const char *required_file)
{
char *temp_str, *base_uri;
int index;
GnomeVFSResult result;
GnomeVFSFileInfo *file_info;
file_info = gnome_vfs_file_info_new ();
temp_str = nautilus_make_path(directory_uri, dir_name);
base_uri = nautilus_make_path(temp_str, required_file);
g_free(temp_str);
for (index = 0; index < NAUTILUS_N_ELEMENTS (icon_file_name_suffixes); index++) {
temp_str = g_strconcat (base_uri, icon_file_name_suffixes[index], NULL);
result = gnome_vfs_get_file_info (temp_str, file_info, 0, NULL);
g_free(temp_str);
if (result == GNOME_VFS_OK) {
g_free(base_uri);
gnome_vfs_file_info_unref (file_info);
return TRUE;
}
}
gnome_vfs_file_info_unref (file_info);
g_free(base_uri);
return FALSE;
}
/* add available icon themes to the theme list by iterating through the
nautilus icons directory, looking for sub-directories */
static void
add_icon_themes(NautilusStringList *theme_list)
add_icon_themes(NautilusStringList *theme_list, char *required_file)
{
char *directory_uri;
GnomeVFSResult result;
......@@ -433,7 +481,8 @@ add_icon_themes(NautilusStringList *theme_list)
while (current_file_info != NULL) {
if ((current_file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY) &&
(current_file_info->name[0] != '.'))
nautilus_string_list_insert (theme_list, current_file_info->name);
if (has_image_file(directory_uri, current_file_info->name, required_file))
nautilus_string_list_insert (theme_list, current_file_info->name);
current_file_info = gnome_vfs_directory_list_next(list);
}
......@@ -465,7 +514,7 @@ preferences_item_create_icon_theme (NautilusPreferencesItem *item,
theme_list = nautilus_string_list_new ();
nautilus_string_list_insert (theme_list, "default");
add_icon_themes(theme_list);
add_icon_themes(theme_list, "i-directory");
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (item->details->child), theme_list);
......@@ -487,6 +536,52 @@ preferences_item_create_icon_theme (NautilusPreferencesItem *item,
}
static void
preferences_item_create_toolbar_icon_theme (NautilusPreferencesItem *item,
const NautilusPreference *preference)
{
char *description;
char *current_value;
NautilusStringList *theme_list;
g_assert (item != NULL);
g_assert (preference != NULL);
g_assert (item->details->preference_name != NULL);
description = nautilus_preference_get_description (preference);
g_assert (description != NULL);
item->details->child = nautilus_string_picker_new ();
nautilus_string_picker_set_title_label (NAUTILUS_STRING_PICKER (item->details->child), description);
g_free (description);
theme_list = nautilus_string_list_new ();
nautilus_string_list_insert (theme_list, "standard");
add_icon_themes(theme_list, "Up");
nautilus_string_picker_set_string_list (NAUTILUS_STRING_PICKER (item->details->child), theme_list);
current_value = nautilus_preferences_get (item->details->preference_name, "standard");
g_assert (current_value != NULL);
g_assert (nautilus_string_list_contains (theme_list, current_value));
nautilus_string_picker_set_text (NAUTILUS_STRING_PICKER (item->details->child), current_value);
g_free (current_value);
nautilus_string_list_free (theme_list);
gtk_signal_connect (GTK_OBJECT (item->details->child),
"changed",
GTK_SIGNAL_FUNC (text_item_changed_callback),
(gpointer) item);
}
/* NautilusPreferencesItem public methods */
GtkWidget *
nautilus_preferences_item_new (const gchar *preference_name,
......
......@@ -67,6 +67,7 @@ typedef enum
NAUTILUS_PREFERENCE_ITEM_BOOLEAN,
NAUTILUS_PREFERENCE_ITEM_ENUM,
NAUTILUS_PREFERENCE_ITEM_FONT_FAMILY,
NAUTILUS_PREFERENCE_ITEM_TOOLBAR_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_ICON_THEME
} NautilusPreferencesItemType;
......
......@@ -185,24 +185,23 @@ global_preferences_create_dialog (void)
NAUTILUS_PREFERENCES_ANTI_ALIASED_CANVAS,
NAUTILUS_PREFERENCE_ITEM_BOOLEAN);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Toolbar Icons");
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Icon Themes");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
1,
NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS,
NAUTILUS_PREFERENCE_ITEM_BOOLEAN);
NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_TOOLBAR_ICON_THEME);
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
1,
NAUTILUS_PREFERENCES_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_ICON_THEME);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Fonts");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
2,
NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY,
NAUTILUS_PREFERENCE_ITEM_FONT_FAMILY);
nautilus_preferences_pane_add_group (NAUTILUS_PREFERENCES_PANE (appearance_pane), "Icons");
nautilus_preferences_pane_add_item_to_nth_group (NAUTILUS_PREFERENCES_PANE (appearance_pane),
3,
NAUTILUS_PREFERENCES_ICON_THEME,
NAUTILUS_PREFERENCE_ITEM_ICON_THEME);
/*
* Tradeoffs
*/
......@@ -500,7 +499,7 @@ global_preferences_register_for_ui (void)
FALSE);
global_preferences_register_string_with_defaults (NAUTILUS_PREFERENCES_ICON_THEME,
"Select theme for icons",
"theme for file icons: ",
"default",
"default",
"default");
......@@ -512,11 +511,11 @@ global_preferences_register_for_ui (void)
"helvetica");
/* toolbar icons */
global_preferences_register_boolean_with_defaults (NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS,
"Use Eazel's toolbar icons",
FALSE,
FALSE,
FALSE);
global_preferences_register_string_with_defaults (NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME,
"theme for toolbar icons:",
"standard",
"standard",
"standard");
/*
* These dont have a UI (yet ? maybe in the advanced settings ?).
......
......@@ -62,7 +62,7 @@ BEGIN_GNOME_DECLS
#define NAUTILUS_PREFERENCES_DIRECTORY_VIEW_FONT_FAMILY "directory-view/font_family"
/* themes */
#define NAUTILUS_PREFERENCES_EAZEL_TOOLBAR_ICONS "preferences/eazel_toolbar_icons"
#define NAUTILUS_PREFERENCES_TOOLBAR_ICON_THEME "preferences/toolbar_icon_theme"
#define NAUTILUS_PREFERENCES_ICON_THEME "preferences/icon_theme"
enum
......
......@@ -69,6 +69,39 @@ create_new_link (const char *directory_path, const char *name, const char *image
return result > 0;
}
/* utility to return link set path */
static xmlDocPtr
get_link_set_document(const char* link_set_name)
{
char *link_set_path, *temp_str;
xmlDocPtr document;
temp_str = g_strdup_printf ("nautilus/linksets/%s.xml", link_set_name);
link_set_path = gnome_datadir_file (temp_str);
g_free (temp_str);
document = xmlParseFile (link_set_path);
g_free (link_set_path);
return document;
}
/* utility to expand the uri to deal with the home directory, etc. */
static char *
expand_uri(const char *uri)
{
char *full_uri, *home_in_uri_format;
if (uri[0] == '~') {
home_in_uri_format = gnome_vfs_escape_string (g_get_home_dir (), GNOME_VFS_URI_UNSAFE_PATH);
full_uri = g_strconcat ("file://", home_in_uri_format, uri + 1, NULL);
g_free (home_in_uri_format);
return full_uri;
}
return g_strdup(uri);
}
/* install a link set into the specified directory */
gboolean
......@@ -76,22 +109,18 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
{
xmlDocPtr document;
xmlNodePtr node;
char *temp_str, *link_set_path;
char *link_name, *image_name, *uri, *full_uri, *home_in_uri_format;
char *link_name, *image_name, *uri, *full_uri;
/* compose the path of the link set file */
temp_str = g_strdup_printf ("nautilus/linksets/%s.xml", link_set_name);
link_set_path = gnome_datadir_file (temp_str);
g_free (temp_str);
/* load and parse the link set document */
document = get_link_set_document(link_set_name);
/* load and parse the linkset xml file */
document = xmlParseFile (link_set_path);
g_free (link_set_path);
if (document == NULL) {
return FALSE;
}
/* loop through the entries, generating .link files */
/* loop through the entries, generating .link files, or incrementing the
reference count if it's already there */
for (node = nautilus_xml_get_children (xmlDocGetRootElement (document));
node != NULL; node = node->next) {
if (strcmp (node->name, "link") == 0) {
......@@ -100,16 +129,10 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
uri = xmlGetProp (node, "uri");
/* Expand special URIs */
full_uri = NULL;
if (uri[0] == '~') {
home_in_uri_format = gnome_vfs_escape_string
(g_get_home_dir (), GNOME_VFS_URI_UNSAFE_PATH);
full_uri = g_strconcat ("file://", home_in_uri_format, uri + 1, NULL);
g_free (home_in_uri_format);
uri = full_uri;
}
if (!create_new_link (directory_path, link_name, image_name, uri)) {
full_uri = expand_uri(uri);
/* create the link file */
if (!create_new_link (directory_path, link_name, image_name, full_uri)) {
g_free (full_uri);
xmlFreeDoc (document);
return FALSE;
......@@ -126,10 +149,31 @@ nautilus_link_set_install (const char *directory_path, const char *link_set_name
}
/* remove a link set from the specified directory */
/* FIXME: Not implemented. */
#if 0
void
nautilus_link_set_remove (const char *directory_uri, const char *link_set_name)
nautilus_link_set_remove (const char *directory_path, const char *link_set_name)
{
xmlDocPtr document;
xmlNodePtr node;
char *link_name, *file_name;
document = get_link_set_document(link_set_name);
if (document == NULL)
return;
/* loop through the entries in the xml file, formulating the names of the link files and
deleting them or decrementing their reference count */
for (node = nautilus_xml_get_children (xmlDocGetRootElement (document));
node != NULL; node = node->next) {
if (strcmp (node->name, "link") == 0) {
link_name = xmlGetProp (node, "name");
/* formulate the link file path name */
file_name = g_strdup_printf ("%s/%s.link", directory_path, link_name);
/* delete the file */
unlink(file_name);
g_free(link_name);
}
}
xmlFreeDoc (document);
}
#endif
......@@ -25,6 +25,8 @@
#include <config.h>
#include "nautilus-preferences-item.h"
#include "nautilus-preferences.h"
#include <libnautilus-extensions/nautilus-file-utilities.h>
#include <libnautilus-extensions/nautilus-glib-extensions.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libgnomevfs/gnome-vfs.h>
......@@ -85,6 +87,8 @@ static void preferences_item_create_font_family (NautilusPreferenc
const NautilusPreference *prefrence);
static void preferences_item_create_icon_theme (NautilusPreferencesItem *item,
const NautilusPreference *preference);
static void preferences_item_create_toolbar_icon_theme (NautilusPreferencesItem *item,
const NautilusPreference *preference);
static void enum_radio_group_changed_callback (GtkWidget *button_group,
GtkWidget *button,
gpointer user_data);
......@@ -274,6 +278,10 @@ preferences_item_construct (NautilusPreferencesItem *item,
preferences_item_create_icon_theme (item, preference);
break;
case NAUTILUS_PREFERENCE_ITEM_TOOLBAR_ICON_THEME:
preferences_item_create_toolbar_icon_theme (item, preference);
break;
}
gtk_object_unref (GTK_OBJECT (preference));
......@@ -408,10 +416,50 @@ preferences_item_create_font_family (NautilusPreferencesItem *item,
(gpointer) item);
}
/* utility to determine if an image file exists in the candidate directory */
static const char *icon_file_name_suffixes[] =
{
".svg",
".SVG",
".png",
".PNG"
};
static gboolean
has_image_file(const char *directory_uri, const char *dir_name, const char *required_file)
{
char *temp_str, *base_uri;
int index;
GnomeVFSResult result;
GnomeVFSFileInfo *file_info;
file_info = gnome_vfs_file_info_new ();
temp_str = nautilus_make_path(directory_uri, dir_name);
base_uri = nautilus_make_path(temp_str, required_file);
g_free(temp_str);
for (index = 0; index < NAUTILUS_N_ELEMENTS (icon_file_name_suffixes); index++) {
temp_str = g_strconcat (base_uri, icon_file_name_suffixes[index], NULL);
result = gnome_vfs_get_file_info (temp_str, file_info, 0, NULL);
g_free(temp_str);
if (result == GNOME_VFS_OK) {
g_free(base_uri);
gnome_vfs_file_info_unref (file_info);
return TRUE;
}
}
gnome_vfs_file_info_unref (file_info);
g_free(base_uri);
return FALSE;
}
/* add available icon themes to the theme list by iterating through the
nautilus icons directory, looking for sub-directories */
static void
add_icon_themes(NautilusStringList *theme_list)
add_icon_themes(NautilusStringList *theme_list, char *required_file)
{
char *directory_uri;
GnomeVFSResult result;
......@@ -433,7 +481,8 @@ add_icon_themes(NautilusStringList *theme_list)
while (current_file_info != NULL) {
if ((current_file_info->type == GNOME_VFS_FILE_TYPE_DIRECTORY) &&
(current_file_info->name[0] != '.'))
nautilus_string_list_insert (theme_list, current_file_info->name);
if (has_image_file(directory_uri, current_file_info->name, required_file))
nautilus_string_list_insert (theme_list, current_file_info->name);
current_file_info = gnome_vfs_directory_list_next(list);
}
......@@ -465,7 +514,7 @@ preferences_item_create_icon_theme (NautilusPreferencesItem *item,
theme_list = nautilus_string_list_new ();
nautilus_string_list_insert (theme_list, "default");