More FDO icons work, now able to choose which one has precedence.

SVN revision: 39355
This commit is contained in:
Gustavo Sverzut Barbieri 2009-03-04 02:56:27 +00:00
parent b51d4787b9
commit cb629d5a56
17 changed files with 151 additions and 40 deletions

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 65838;
value "config_version" int: 65839;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_name" string: "Desktop %i, %i";
@ -693,6 +693,7 @@ group "E_Config" struct {
value "desk_flip_wrap" int: 0;
value "fullscreen_flip" int: 1;
value "icon_theme" string: "openmoko-standard";
value "icon_theme_overrides" uchar: 0;
value "desk_flip_animate_mode" int: 0;
value "desk_flip_animate_interpolation" int: 0;
value "desk_flip_animate_time" double: 0.2000000000000000111022302;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 65838;
value "config_version" int: 65839;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_background" string: "Light_Gradient.edj";
@ -1897,6 +1897,7 @@ group "E_Config" struct {
value "desk_flip_wrap" int: 0;
value "fullscreen_flip" int: 1;
value "icon_theme" string: "Tango";
value "icon_theme_overrides" uchar: 0;
value "desk_flip_animate_mode" int: 1;
value "desk_flip_animate_interpolation" int: 0;
value "desk_flip_animate_time" double: 0.2000000000000000111022302;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 65838;
value "config_version" int: 65839;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_background" string: "Dark_Gradient.edj";
@ -1961,6 +1961,7 @@ group "E_Config" struct {
value "desk_flip_wrap" int: 0;
value "fullscreen_flip" int: 1;
value "icon_theme" string: "Tango";
value "icon_theme_overrides" uchar: 0;
value "desk_flip_animate_mode" int: 1;
value "desk_flip_animate_interpolation" int: 0;
value "desk_flip_animate_time" double: 0.5000000000000000000000000;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 65838;
value "config_version" int: 65839;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_name" string: "Desktop %i, %i";
@ -1984,6 +1984,7 @@ group "E_Config" struct {
value "desk_flip_wrap" int: 0;
value "fullscreen_flip" int: 1;
value "icon_theme" string: "Tango";
value "icon_theme_overrides" uchar: 0;
value "desk_flip_animate_mode" int: 1;
value "desk_flip_animate_interpolation" int: 0;
value "desk_flip_animate_time" double: 0.2000000000000000111022302;

View File

@ -1,5 +1,5 @@
group "E_Config" struct {
value "config_version" int: 65838;
value "config_version" int: 65839;
value "show_splash" int: 1;
value "init_default_theme" string: "default.edj";
value "desktop_default_name" string: "Desktop %i, %i";
@ -1994,6 +1994,7 @@ group "E_Config" struct {
value "desk_flip_wrap" int: 0;
value "fullscreen_flip" int: 1;
value "icon_theme" string: "Tango";
value "icon_theme_overrides" uchar: 0;
value "desk_flip_animate_mode" int: 1;
value "desk_flip_animate_interpolation" int: 0;
value "desk_flip_animate_time" double: 0.2000000000000000111022302;

View File

@ -22643,6 +22643,37 @@ group { name: "e/icons/"NAME ; \
} \
}
#define ICONMIME(NAME, FILE, SIZE) ICON("mimetypes/"NAME, FILE, SIZE)
// FreeDesktop.Org Icons //
ICON("help-about","logo_black_128.png",64)
ICON("list-add","icon_add.png",64)
ICON("list-remove","icon_del.png",64)
ICON("preferences-desktop","icon_config.png",64)
ICON("preferences-desktop","icon_desktops.png",64)
ICON("preferences-desktop-theme","icon_theme.png",64)
ICON("preferences-desktop-wallpaper","icon_wallpaper.png",64)
ICON("preferences-plugin","icon_modules.png",64)
ICON("preferences-system","icon_configuration.png",64)
ICON("preferences-system-windows","icon_windows.png",64)
ICON("system-file-manager","icon_efm_folder.png",64)
ICON("system-run","icon_run.png",64)
ICON("user-home","icon_efm_home.png",64)
ICON("user-desktop","icon_efm_desktop.png",64)
ICON("user-bookmarks","icon_favorites.png",64)
ICON("computer","icon_efm_root.png", 64)
ICONMIME("inode/chardevice","icon_efm_file.png",128)
ICONMIME("inode/blockdevice","icon_efm_file.png",128)
ICONMIME("inode/directory-locked","icon_efm_file.png",128)
ICONMIME("inode/directory","icon_efm_folder.png",128)
ICONMIME("inode/fifo","icon_efm_file.png",128)
ICONMIME("inode/socket","icon_efm_file.png",128)
// Widget Icons //
ICON("enlightenment/check","icon_check.png",64)

View File

@ -613,6 +613,7 @@ e_config_init(void)
E_CONFIG_VAL(D, T, fullscreen_flip, INT);
E_CONFIG_VAL(D, T, icon_theme, STR);
E_CONFIG_VAL(D, T, icon_theme_overrides, UCHAR);
E_CONFIG_VAL(D, T, desk_flip_animate_mode, INT);
E_CONFIG_VAL(D, T, desk_flip_animate_interpolation, INT);
@ -881,6 +882,9 @@ e_config_load(void)
COPYVAL(fullscreen_flip);
IFCFGEND;
IFCFG(0x012f);
COPYVAL(icon_theme_overrides);
IFCFGEND;
e_config->config_version = E_CONFIG_FILE_VERSION;
_e_config_free(tcfg);
}
@ -979,6 +983,7 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->border_raise_on_focus, 0, 1);
E_CONFIG_LIMIT(e_config->desk_flip_wrap, 0, 1);
E_CONFIG_LIMIT(e_config->fullscreen_flip, 0, 1);
E_CONFIG_LIMIT(e_config->icon_theme_overrides, 0, 1);
E_CONFIG_LIMIT(e_config->remember_internal_windows, 0, 1);
E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1);

View File

@ -35,7 +35,7 @@ typedef struct _E_Event_Config_Icon_Theme E_Event_Config_Icon_Theme;
/* increment this whenever a new set of config values are added but the users
* config doesn't need to be wiped - simply new values need to be put in
*/
#define E_CONFIG_FILE_GENERATION 0x012e
#define E_CONFIG_FILE_GENERATION 0x012f
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH << 16) | E_CONFIG_FILE_GENERATION)
#define E_EVAS_ENGINE_DEFAULT 0
@ -262,6 +262,7 @@ struct _E_Config
int fullscreen_flip; // GUI
const char *icon_theme; // GUI
Eina_Bool icon_theme_overrides; // GUI
int desk_flip_animate_mode; // GUI
int desk_flip_animate_interpolation; // GUI

View File

@ -1820,14 +1820,51 @@ _e_fm2_icon_mime_size_normalize(const E_Fm2_Icon *ic)
return e_util_icon_size_normalize(_e_fm2_icon_w_get(ic->sd));
}
static Evas_Object *
_e_fm2_icon_mime_fdo_get(Evas *evas, const E_Fm2_Icon *ic, const char **type_ret)
{
const char *icon;
unsigned int size;
size = _e_fm2_icon_mime_size_normalize(ic);
icon = efreet_mime_type_icon_get(ic->info.mime, e_config->icon_theme, size);
if (icon) return _e_fm2_icon_explicit_get(evas, ic, icon, type_ret);
return NULL;
}
static Evas_Object *
_e_fm2_icon_mime_theme_get(Evas *evas, const E_Fm2_Icon *ic, const char **type_ret)
{
char buf[1024];
const char *file;
if (snprintf(buf, sizeof(buf), "e/icons/mimetypes/%s", ic->info.mime) >= sizeof(buf))
return NULL;
file = e_theme_edje_file_get("base/theme/icons", buf);
if (file && file[0])
{
Evas_Object *obj = edje_object_add(evas);
if (!obj) return NULL;
if (!edje_object_file_set(obj, file, buf))
{
evas_object_del(obj);
return NULL;
}
return obj;
}
return NULL;
}
/**
* Use mime type information to set icon.
*/
static Evas_Object *
_e_fm2_icon_mime_get(Evas *evas, const E_Fm2_Icon *ic, void (*gen_func) (void *data, Evas_Object *obj, void *event_info), void *data, int force_gen, const char **type_ret)
{
Evas_Object *o;
const char *icon;
unsigned int size;
icon = _e_fm2_icon_mime_type_special_match(ic);
if (icon)
@ -1849,9 +1886,19 @@ _e_fm2_icon_mime_get(Evas *evas, const E_Fm2_Icon *ic, void (*gen_func) (void *d
return _e_fm2_icon_explicit_get(evas, ic, icon, type_ret);
}
size = _e_fm2_icon_mime_size_normalize(ic);
icon = efreet_mime_type_icon_get(ic->info.mime, e_config->icon_theme, size);
if (icon) return _e_fm2_icon_explicit_get(evas, ic, icon, type_ret);
if (e_config->icon_theme_overrides)
o = _e_fm2_icon_mime_fdo_get(evas, ic, type_ret);
else
o = _e_fm2_icon_mime_theme_get(evas, ic, type_ret);
if (o) return o;
if (!e_config->icon_theme_overrides)
o = _e_fm2_icon_mime_fdo_get(evas, ic, type_ret);
else
o = _e_fm2_icon_mime_theme_get(evas, ic, type_ret);
if (o) return o;
/* XXX REMOVE/DEPRECATED below here */
icon = e_fm_mime_icon_get(ic->info.mime);

View File

@ -124,7 +124,7 @@ e_int_menus_main_new(void)
dat->desktops = subm;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Desktop"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
e_util_menu_item_fdo_icon_set(mi, "preferences-desktop");
e_menu_item_submenu_set(mi, subm);
subm = e_int_menus_clients_new();
@ -132,7 +132,7 @@ e_int_menus_main_new(void)
dat->clients = subm;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Windows"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/windows");
e_util_menu_item_fdo_icon_set(mi, "preferences-system-windows");
e_menu_item_submenu_set(mi, subm);
/*
subm = e_int_menus_lost_clients_new();
@ -162,12 +162,12 @@ e_int_menus_main_new(void)
mi = e_menu_item_new(subm);
e_menu_item_label_set(mi, _("About"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/about");
e_util_menu_item_fdo_icon_set(mi, "help-about");
e_menu_item_callback_set(mi, _e_int_menus_main_about, NULL);
mi = e_menu_item_new(subm);
e_menu_item_label_set(mi, _("Theme"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/themes");
e_util_menu_item_fdo_icon_set(mi, "preferences-desktop-theme");
e_menu_item_callback_set(mi, _e_int_menus_themes_about, NULL);
l = eina_hash_find(_e_int_menus_augmentation, "main/5");
@ -202,7 +202,7 @@ e_int_menus_main_new(void)
dat->config = subm;
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Settings"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
e_util_menu_item_fdo_icon_set(mi, "preferences-system");
e_menu_item_submenu_set(mi, subm);
l = eina_hash_find(_e_int_menus_augmentation, "main/9");
@ -490,14 +490,7 @@ _e_int_menus_apps_scan(E_Menu *m, Efreet_Menu *menu)
if (entry->icon[0] == '/')
e_menu_item_icon_file_set(mi, entry->icon);
else
{
char *file;
file = efreet_icon_path_find(e_config->icon_theme,
entry->icon, 24);
e_menu_item_icon_file_set(mi, file);
E_FREE(file);
}
e_util_menu_item_fdo_icon_set(mi, entry->icon);
}
if (entry->type == EFREET_MENU_ENTRY_SEPARATOR)
e_menu_item_separator_set(mi, 1);
@ -652,7 +645,7 @@ _e_int_menus_virtuals_pre_cb(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Configure Virtual Desktops"));
e_util_menu_item_edje_icon_set(mi, "widget/config");
e_util_menu_item_fdo_icon_set(mi, "preferences-desktop");
e_menu_item_callback_set(mi, _e_int_menus_desk_item_cb, NULL);
}
}
@ -719,7 +712,7 @@ _e_int_menus_config_pre_cb(void *data, E_Menu *m)
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Modules"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/modules");
e_util_menu_item_fdo_icon_set(mi, "preferences-plugin");
e_menu_item_callback_set(mi, _e_int_menus_module_item_cb, NULL);
}
@ -1388,14 +1381,14 @@ _e_int_menus_shelves_pre_cb(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Add A Shelf"));
e_util_menu_item_edje_icon_set(mi, "widget/add");
e_util_menu_item_fdo_icon_set(mi, "list-add");
e_menu_item_callback_set(mi, _e_int_menus_shelves_add_cb, NULL);
if (shelves)
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Delete A Shelf"));
e_util_menu_item_edje_icon_set(mi, "widget/del");
e_util_menu_item_fdo_icon_set(mi, "list-remove");
e_menu_item_callback_set(mi, _e_int_menus_shelves_del_cb, NULL);
}
}

View File

@ -410,8 +410,8 @@ e_util_icon_size_normalize(unsigned int desired)
return 256; /* largest know size? */
}
EAPI int
e_util_menu_item_fdo_icon_set(E_Menu_Item *mi, const char *icon)
static int
_e_util_menu_item_fdo_icon_set_internal(E_Menu_Item *mi, const char *icon)
{
char *path = NULL;
unsigned int size;
@ -425,6 +425,23 @@ e_util_menu_item_fdo_icon_set(E_Menu_Item *mi, const char *icon)
return 1;
}
EAPI int
e_util_menu_item_fdo_icon_set(E_Menu_Item *mi, const char *icon)
{
if (e_config->icon_theme_overrides)
{
if (_e_util_menu_item_fdo_icon_set_internal(mi, icon))
return 1;
return e_util_menu_item_edje_icon_set(mi, icon);
}
else
{
if (e_util_menu_item_edje_icon_set(mi, icon))
return 1;
return _e_util_menu_item_fdo_icon_set_internal(mi, icon);
}
}
EAPI E_Container *
e_util_container_window_find(Ecore_X_Window win)
{

View File

@ -209,6 +209,6 @@ _e_mod_menu_add(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Settings Panel"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/configuration");
e_util_menu_item_fdo_icon_set(mi, "preferences-system");
e_menu_item_callback_set(mi, _e_mod_conf_cb, NULL);
}

View File

@ -15,10 +15,11 @@ struct _E_Config_Dialog_Data
{
E_Config_Dialog *cfd;
Eina_List *icon_themes;
int state;
char *themename;
int overrides;
struct {
Evas_Object *list;
Evas_Object *checkbox;
} gui;
Ecore_Idler *fill_icon_themes_delayed;
};
@ -68,6 +69,8 @@ _create_data(E_Config_Dialog *cfd)
else
cfdata->themename = NULL;
cfdata->overrides = e_config->icon_theme_overrides;
return cfdata;
}
@ -85,6 +88,9 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
static int
_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
if ((Eina_Bool)cfdata->overrides != e_config->icon_theme_overrides)
return 1;
if ((!cfdata->themename) && (!e_config->icon_theme))
return 0;
@ -98,12 +104,16 @@ static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
E_Event_Config_Icon_Theme *ev;
const char *s;
if (!_basic_check_changed(cfd, cfdata))
return 1;
s = eina_stringshare_add(cfdata->themename);
eina_stringshare_del(e_config->icon_theme);
e_config->icon_theme = eina_stringshare_add(cfdata->themename);
e_config->icon_theme = s;
e_config->icon_theme_overrides = !!cfdata->overrides;
e_config_save_queue();
@ -178,7 +188,7 @@ _fill_icon_themes(void *data)
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *ilist, *of;
Evas_Object *o, *ilist, *of, *checkbox;
struct _fill_icon_themes_data *d;
o = e_widget_list_add(evas, 0, 0);
@ -186,11 +196,13 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
ilist = e_widget_ilist_add(evas, 24, 24, &(cfdata->themename));
cfdata->gui.list = ilist;
cfdata->state = -1;
e_widget_min_size_set(ilist, 200, 240);
e_widget_framelist_object_append(of, ilist);
checkbox = e_widget_check_add(evas, _("Icon theme overrides general theme"), &(cfdata->overrides));
e_widget_framelist_object_append(of, checkbox);
e_widget_list_object_append(o, of, 1, 1, 0.5);
e_dialog_resizable_set(cfd->dia, 1);

View File

@ -82,6 +82,6 @@ _e_mod_menu_add(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Theme"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/themes");
e_util_menu_item_fdo_icon_set(mi, "preferences-desktop-theme");
e_menu_item_callback_set(mi, _e_mod_run_cb, NULL);
}

View File

@ -94,6 +94,6 @@ _e_mod_menu_add(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Wallpaper"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/background");
e_util_menu_item_fdo_icon_set(mi, "preferences-desktop-wallpaper");
e_menu_item_callback_set(mi, _e_mod_run_cb, NULL);
}

View File

@ -126,6 +126,6 @@ _e_mod_menu_add(void *data, E_Menu *m)
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Run Command"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/run");
e_util_menu_item_fdo_icon_set(mi, "system-run");
e_menu_item_callback_set(mi, _e_mod_run_cb, NULL);
}

View File

@ -335,7 +335,7 @@ _e_mod_menu_generate(void *data, E_Menu *m)
/* Favorites */
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Favorites"));
e_util_menu_item_fdo_icon_set(mi, "folder-bookmarks");
e_util_menu_item_fdo_icon_set(mi, "user-bookmarks");
e_menu_item_callback_set(mi, _e_mod_menu_virtual_cb, "favorites");
/* Trash */
@ -390,7 +390,7 @@ _e_mod_menu_add(void *data, E_Menu *m)
#ifdef ENABLE_FILES
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, _("Files"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/fileman");
e_util_menu_item_fdo_icon_set(mi, "system-file-manager");
sub = e_menu_new();
e_menu_item_submenu_set(mi, sub);
e_menu_pre_activate_callback_set(sub, _e_mod_menu_generate, NULL);