forked from enlightenment/enlightenment
add theme finder/class/category wrapper - handles finding theme files for
specific categories, and falling back if not found. it cant check specific parts in edjes though - maybe i should add that? :) SVN revision: 14278
This commit is contained in:
parent
3025cd4515
commit
f0b0f6f614
|
@ -45,7 +45,8 @@ e_table.h \
|
|||
e_layout.h \
|
||||
e_test.h \
|
||||
e_font.h \
|
||||
e_intl.h
|
||||
e_intl.h \
|
||||
e_theme.h
|
||||
|
||||
enlightenment_SOURCES = \
|
||||
e_main.c \
|
||||
|
@ -84,6 +85,7 @@ e_layout.c \
|
|||
e_test.c \
|
||||
e_font.c \
|
||||
e_intl.c \
|
||||
e_theme.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@
|
||||
|
|
|
@ -2625,8 +2625,7 @@ _e_border_eval(E_Border *bd)
|
|||
}
|
||||
o = edje_object_add(bd->bg_evas);
|
||||
bd->bg_object = o;
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
path = e_path_find(path_themes, "default.edj");
|
||||
path = e_theme_file_get("base/theme/borders");
|
||||
snprintf(buf, sizeof(buf), "widgets/border/%s/border",
|
||||
bd->client.border.name);
|
||||
ok = edje_object_file_set(o, path, buf);
|
||||
|
@ -3422,12 +3421,12 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y)
|
|||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Close"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_close, bd);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_themes, "default.edj"), "widgets/border/default/close");
|
||||
e_menu_item_icon_edje_set(mi, e_theme_file_get("base/theme/borders"), "widgets/border/default/close");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Iconify"));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_iconify, bd);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_themes, "default.edj"), "widgets/border/default/minimize");
|
||||
e_menu_item_icon_edje_set(mi, e_theme_file_get("base/theme/borders"), "widgets/border/default/minimize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
@ -3437,21 +3436,21 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y)
|
|||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, (bd->shaded ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_shade, bd);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_themes, "default.edj"), "widgets/border/default/shade");
|
||||
e_menu_item_icon_edje_set(mi, e_theme_file_get("base/theme/borders"), "widgets/border/default/shade");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Maximized"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_themes, "default.edj"), "widgets/border/default/maximize");
|
||||
e_menu_item_icon_edje_set(mi, e_theme_file_get("base/theme/borders"), "widgets/border/default/maximize");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Sticky"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, (bd->sticky ? 1 : 0));
|
||||
e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_themes, "default.edj"), "widgets/border/default/stick");
|
||||
e_menu_item_icon_edje_set(mi, e_theme_file_get("base/theme/borders"), "widgets/border/default/stick");
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
@ -3827,7 +3826,7 @@ _e_border_resize_begin(E_Border *bd)
|
|||
ecore_evas_show(resize_ee);
|
||||
|
||||
resize_obj = edje_object_add(ecore_evas_get(resize_ee));
|
||||
edje_object_file_set(resize_obj, e_path_find(path_themes, "default.edj"),
|
||||
edje_object_file_set(resize_obj, e_theme_file_get("base/theme/borders"),
|
||||
"widgets/border/default/resize");
|
||||
snprintf(buf, sizeof(buf), "9999x9999");
|
||||
edje_object_part_text_set(resize_obj, "text", buf);
|
||||
|
@ -3896,7 +3895,7 @@ _e_border_move_begin(E_Border *bd)
|
|||
ecore_evas_layer_set(move_ee, 999);
|
||||
|
||||
move_obj = edje_object_add(ecore_evas_get(move_ee));
|
||||
edje_object_file_set(move_obj, e_path_find(path_themes, "default.edj"),
|
||||
edje_object_file_set(move_obj, e_theme_file_get("base/theme/borders"),
|
||||
"widgets/border/default/move");
|
||||
snprintf(buf, sizeof(buf), "9999 9999");
|
||||
edje_object_part_text_set(move_obj, "text", buf);
|
||||
|
|
|
@ -79,8 +79,7 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
|
||||
o = edje_object_add(e);
|
||||
if (!edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/error"),
|
||||
"error/main"))
|
||||
|
||||
{
|
||||
|
@ -259,7 +258,7 @@ e_error_message_manager_show(E_Manager *man, char *title, char *txt)
|
|||
|
||||
snprintf(format, sizeof(format),
|
||||
"source='%s' font='%s' size=%d wrap=word",
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/error"),
|
||||
"fonts/Edje Vera", 10);
|
||||
text = evas_object_textblock_add(e);
|
||||
evas_object_color_set(text, 0, 0, 0, 255);
|
||||
|
|
|
@ -483,7 +483,8 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|||
e_menu_item_label_set(mi, _("Automatic Width"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, gmc->use_autow);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"auto_width");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_auto_width, gmc);
|
||||
mi = e_menu_item_new(m);
|
||||
|
@ -491,12 +492,14 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Half Screen Width"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"half_width");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_half_width, gmc);
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Full Screen Width"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"full_width");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_full_width, gmc);
|
||||
}
|
||||
|
@ -507,7 +510,8 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|||
seperator = 1;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Center Horizontally"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"center_horiz");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_center_horiz, gmc);
|
||||
}
|
||||
|
@ -526,20 +530,23 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|||
e_menu_item_label_set(mi, _("Automatic Height"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, gmc->use_autoh);
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
"auto_eight");
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"auto_height");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_auto_height, gmc);
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
}
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Half Screen Height"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"half_height");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_half_height, gmc);
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Full Screen Height"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"full_height");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_full_height, gmc);
|
||||
}
|
||||
|
@ -550,7 +557,8 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
|
|||
seperator = 1;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Center Vertically"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"center_vert");
|
||||
e_menu_item_callback_set(mi, _e_gadman_cb_center_vert, gmc);
|
||||
}
|
||||
|
@ -592,8 +600,7 @@ _e_gadman_client_edit_begin(E_Gadman_Client *gmc)
|
|||
evas_object_move(gmc->control_object, gmc->x, gmc->y);
|
||||
evas_object_resize(gmc->control_object, gmc->w, gmc->h);
|
||||
edje_object_file_set(gmc->control_object,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/gadman"),
|
||||
"gadman/control");
|
||||
edje_object_signal_callback_add(gmc->control_object, "move_start", "",
|
||||
_e_gadman_cb_signal_move_start, gmc);
|
||||
|
|
|
@ -35,3 +35,4 @@
|
|||
#include "e_layout.h"
|
||||
#include "e_font.h"
|
||||
#include "e_intl.h"
|
||||
#include "e_theme.h"
|
||||
|
|
|
@ -55,7 +55,8 @@ e_int_menus_main_new(void)
|
|||
dat->apps = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Favorite Applications"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"favorites");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -66,7 +67,8 @@ e_int_menus_main_new(void)
|
|||
dat->modules = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Modules"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"module");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -74,7 +76,8 @@ e_int_menus_main_new(void)
|
|||
dat->desktops = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Desktops"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"desktops");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -82,7 +85,8 @@ e_int_menus_main_new(void)
|
|||
dat->clients = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Windows"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"windows");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -90,7 +94,8 @@ e_int_menus_main_new(void)
|
|||
dat->gadgets = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Gadgets"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"gadgets");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
|
@ -99,7 +104,8 @@ e_int_menus_main_new(void)
|
|||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("About Enlightenment"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"e");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_about, NULL);
|
||||
|
||||
|
@ -108,13 +114,15 @@ e_int_menus_main_new(void)
|
|||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Restart Enlightement"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"reset");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_restart, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Exit Enlightenment"));
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.edj"),
|
||||
e_menu_item_icon_edje_set(mi,
|
||||
e_path_find(path_icons, "default.edj"),
|
||||
"power");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_main_exit, NULL);
|
||||
return m;
|
||||
|
|
|
@ -295,6 +295,13 @@ main(int argc, char **argv)
|
|||
_e_main_shutdown(-1);
|
||||
}
|
||||
_e_main_shutdown_push(e_app_shutdown);
|
||||
/* init theme system */
|
||||
if (!e_theme_init())
|
||||
{
|
||||
e_error_message_show(_("Enlightenment cannot set up its theme system."));
|
||||
_e_main_shutdown(-1);
|
||||
}
|
||||
_e_main_shutdown_push(e_theme_shutdown);
|
||||
|
||||
/* tell the error system that it can use gui dialogs now */
|
||||
e_error_gui_set(1);
|
||||
|
|
|
@ -808,8 +808,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
o = edje_object_add(mi->menu->evas);
|
||||
mi->separator_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/separator");
|
||||
evas_object_show(o);
|
||||
edje_object_size_min_calc(mi->separator_object, &ww, &hh);
|
||||
|
@ -827,8 +826,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
if ((mi->submenu) || (mi->submenu_pre_cb.func))
|
||||
{
|
||||
if (!edje_object_file_set(mi->bg_object,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/submenu_bg"))
|
||||
goto no_submenu_item;
|
||||
}
|
||||
|
@ -836,8 +834,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
{
|
||||
no_submenu_item:
|
||||
edje_object_file_set(mi->bg_object,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/item_bg");
|
||||
}
|
||||
evas_object_show(o);
|
||||
|
@ -855,8 +852,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
o = edje_object_add(mi->menu->evas);
|
||||
mi->toggle_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/check");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
evas_object_show(o);
|
||||
|
@ -870,8 +866,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
o = edje_object_add(mi->menu->evas);
|
||||
mi->toggle_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/radio");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
evas_object_show(o);
|
||||
|
@ -894,8 +889,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
|
||||
o = edje_object_add(mi->menu->evas);
|
||||
if (edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/icon"))
|
||||
{
|
||||
mi->icon_bg_object = o;
|
||||
|
@ -963,8 +957,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
o = edje_object_add(mi->menu->evas);
|
||||
mi->label_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/label");
|
||||
/* default label */
|
||||
edje_object_part_text_set(o, "label", mi->label);
|
||||
|
@ -988,8 +981,7 @@ _e_menu_item_realize(E_Menu_Item *mi)
|
|||
o = edje_object_add(mi->menu->evas);
|
||||
mi->submenu_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/submenu");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
evas_object_show(o);
|
||||
|
@ -1061,8 +1053,7 @@ _e_menu_realize(E_Menu *m)
|
|||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, m->cur.w, m->cur.h);
|
||||
ok = edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/menus"),
|
||||
"widgets/menu/default/background");
|
||||
if (ok)
|
||||
{
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#include "e.h"
|
||||
|
||||
/* local subsystem functions */
|
||||
typedef struct _E_Theme_Result E_Theme_Result;
|
||||
|
||||
struct _E_Theme_Result
|
||||
{
|
||||
unsigned char generated : 1;
|
||||
char *file;
|
||||
char *cache;
|
||||
};
|
||||
|
||||
static const char *_e_theme_file_get_internal(char *category, int recursion);
|
||||
|
||||
/* local subsystem globals */
|
||||
static Evas_Hash *mappings = NULL;
|
||||
|
||||
/* externally accessible functions */
|
||||
|
||||
int
|
||||
e_theme_init(void)
|
||||
{
|
||||
/* this is a fallback that is ALWAYS there */
|
||||
e_theme_file_set("base", "default.edj");
|
||||
/* now add more */
|
||||
/* FIXME: load these from a config */
|
||||
e_theme_file_set("base/theme", "default.edj");
|
||||
e_theme_file_set("base/theme/borders", "default.edj");
|
||||
e_theme_file_set("base/theme/menus", "default.edj");
|
||||
e_theme_file_set("base/theme/background", "default.edj");
|
||||
e_theme_file_set("base/theme/error", "default.edj");
|
||||
e_theme_file_set("base/theme/gadman", "default.edj");
|
||||
e_theme_file_set("base/theme/icons", "default.edj");
|
||||
e_theme_file_set("base/theme/cursors", "default.edj");
|
||||
e_theme_file_set("base/theme/modules", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/pager", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/ibar", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/clock", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/battery", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/cpufreq", "default.edj");
|
||||
e_theme_file_set("base/theme/modules/temperature", "default.edj");
|
||||
/* FIXME: need to not just load, but save TO the config too */
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
e_theme_shutdown(void)
|
||||
{
|
||||
/* FIXME; clear out mappings hash */
|
||||
return 1;
|
||||
}
|
||||
|
||||
const char *
|
||||
e_theme_file_get(char *category)
|
||||
{
|
||||
return _e_theme_file_get_internal(category, 0);
|
||||
}
|
||||
|
||||
void
|
||||
e_theme_file_set(char *category, char *file)
|
||||
{
|
||||
E_Theme_Result *res;
|
||||
|
||||
res = evas_hash_find(mappings, category);
|
||||
if (res)
|
||||
{
|
||||
mappings = evas_hash_del(mappings, category, res);
|
||||
free(res->file);
|
||||
free(res);
|
||||
}
|
||||
res = calloc(1, sizeof(E_Theme_Result));
|
||||
res->file = strdup(file);
|
||||
mappings = evas_hash_add(mappings, category, res);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
||||
static const char *
|
||||
_e_theme_file_get_internal(char *category, int recursion)
|
||||
{
|
||||
const char *str;
|
||||
E_Theme_Result *res;
|
||||
|
||||
if (strlen(category) == 0) return NULL;
|
||||
res = evas_hash_find(mappings, category);
|
||||
if (!res)
|
||||
{
|
||||
char buf[256];
|
||||
char *p;
|
||||
|
||||
strncpy(buf, category, sizeof(buf) - 1);
|
||||
buf[sizeof(buf) - 1] = 0;
|
||||
p = strrchr(buf, '/');
|
||||
if (p)
|
||||
{
|
||||
*p = 0;
|
||||
return
|
||||
_e_theme_file_get_internal(buf, recursion + 1);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
str = res->cache;
|
||||
if (!str)
|
||||
{
|
||||
str = res->file;
|
||||
if (str[0] != '/')
|
||||
str = e_path_find(path_themes, str);
|
||||
if (str)
|
||||
res->cache = strdup(str);
|
||||
}
|
||||
return str;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_THEME_H
|
||||
#define E_THEME_H
|
||||
|
||||
EAPI int e_theme_init(void);
|
||||
EAPI int e_theme_shutdown(void);
|
||||
|
||||
EAPI const char *e_theme_file_get(char *category);
|
||||
EAPI void e_theme_file_set(char *category, char *file);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -493,8 +493,7 @@ _battery_face_new(E_Container *con)
|
|||
ef->bat_object = o;
|
||||
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/battery"),
|
||||
"modules/battery/main");
|
||||
evas_object_show(o);
|
||||
|
||||
|
|
|
@ -221,8 +221,7 @@ _clock_face_new(E_Container *con)
|
|||
face->clock_object = o;
|
||||
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/clock"),
|
||||
"modules/clock/main");
|
||||
evas_object_show(o);
|
||||
|
||||
|
|
|
@ -742,7 +742,7 @@ _cpufreq_face_new(E_Container *con, Cpufreq *owner)
|
|||
o = edje_object_add(con->bg_evas);
|
||||
ef->freq_object = o;
|
||||
edje_object_file_set(o,
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/cpufreq"),
|
||||
"modules/cpufreq/main");
|
||||
edje_object_signal_callback_add(o, "next_governor", "governor", _cpufreq_face_cb_set_governor, owner);
|
||||
edje_object_signal_callback_add(o, "increase_frequency", "frequency", _cpufreq_face_cb_set_frequency, owner);
|
||||
|
|
|
@ -428,8 +428,7 @@ _ibar_bar_new(IBar *ib, E_Container *con)
|
|||
o = edje_object_add(ibb->evas);
|
||||
ibb->bar_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/ibar"),
|
||||
"modules/ibar/main");
|
||||
evas_object_show(o);
|
||||
|
||||
|
@ -437,8 +436,7 @@ _ibar_bar_new(IBar *ib, E_Container *con)
|
|||
ibb->overlay_object = o;
|
||||
evas_object_layer_set(o, 1);
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/ibar"),
|
||||
"modules/ibar/follower");
|
||||
evas_object_show(o);
|
||||
|
||||
|
@ -613,8 +611,7 @@ _ibar_icon_new(IBar_Bar *ibb, E_App *a)
|
|||
evas_object_intercept_move_callback_add(o, _ibar_icon_cb_intercept_move, ic);
|
||||
evas_object_intercept_resize_callback_add(o, _ibar_icon_cb_intercept_resize, ic);
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/ibar"),
|
||||
"modules/ibar/icon");
|
||||
evas_object_show(o);
|
||||
|
||||
|
@ -632,8 +629,7 @@ _ibar_icon_new(IBar_Bar *ibb, E_App *a)
|
|||
evas_object_intercept_move_callback_add(o, _ibar_icon_cb_intercept_move, ic);
|
||||
evas_object_intercept_resize_callback_add(o, _ibar_icon_cb_intercept_resize, ic);
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/ibar"),
|
||||
"modules/ibar/icon_overlay");
|
||||
evas_object_show(o);
|
||||
|
||||
|
|
|
@ -330,8 +330,7 @@ _pager_face_new(E_Zone *zone)
|
|||
o = edje_object_add(face->evas);
|
||||
face->pager_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/pager"),
|
||||
"modules/pager/main");
|
||||
evas_object_show(o);
|
||||
|
||||
|
@ -512,8 +511,7 @@ _pager_desk_new(Pager_Face *face, E_Desk *desk, int xpos, int ypos)
|
|||
o = edje_object_add(face->evas);
|
||||
pd->desk_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/pager"),
|
||||
"modules/pager/desk");
|
||||
e_table_pack(face->table_object, o, xpos, ypos, 1, 1);
|
||||
e_table_pack_options_set(o, 1, 1, 1, 1, 0.5, 0.5, 0, 0, -1, -1);
|
||||
|
@ -592,8 +590,7 @@ _pager_window_new(Pager_Desk *pd, E_Border *border)
|
|||
o = edje_object_add(pd->face->evas);
|
||||
pw->window_object = o;
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/pager"),
|
||||
"modules/pager/window");
|
||||
if (visible) evas_object_show(o);
|
||||
e_layout_pack(pd->layout_object, pw->window_object);
|
||||
|
|
|
@ -636,8 +636,7 @@ _temperature_face_new(E_Container *con)
|
|||
ef->temp_object = o;
|
||||
|
||||
edje_object_file_set(o,
|
||||
/* FIXME: "default.edj" needs to come from conf */
|
||||
e_path_find(path_themes, "default.edj"),
|
||||
e_theme_file_get("base/theme/modules/temperature"),
|
||||
"modules/temperature/main");
|
||||
evas_object_show(o);
|
||||
|
||||
|
|
Loading…
Reference in New Issue