From 33fabb2aa9455ee5e74b0d09087d960cb7164043 Mon Sep 17 00:00:00 2001 From: codewarrior Date: Sun, 1 May 2005 01:48:43 +0000 Subject: [PATCH] Added root menu entry for theme selection (until stuff is done properly via config / settings). Menu is built based on .edj themes present in ~/.e/e/themes for now. Themes in $PREFIX/share/enlightenment/data/themes are not taken into consideration at this stage. SVN revision: 14520 --- data/icons/default.edc | 63 +++++++++++++++ data/icons/images/Makefile.am | 2 + data/icons/images/theme_0.png | Bin 0 -> 1342 bytes data/icons/images/theme_glow_0.png | Bin 0 -> 1301 bytes src/bin/e_int_menus.c | 122 +++++++++++++++++++++++++++++ src/bin/e_int_menus.h | 1 + 6 files changed, 188 insertions(+) create mode 100644 data/icons/images/theme_0.png create mode 100644 data/icons/images/theme_glow_0.png diff --git a/data/icons/default.edc b/data/icons/default.edc index 13c935868..a2c5d334a 100644 --- a/data/icons/default.edc +++ b/data/icons/default.edc @@ -7,6 +7,9 @@ images { image: "reset_button_0.png" LOSSY 90; image: "reset_button_glow_0.png" LOSSY 90; + + image: "theme_0.png" LOSSY 90; + image: "theme_glow_0.png" LOSSY 90; image: "windows.png" LOSSY 90; @@ -200,6 +203,66 @@ collections { } } } + group { + name: "theme"; + max: 64 64; + parts { + part { + name: "theme_button"; + mouse_events: 0; + description { + state: "default" 0.0; + aspect: 1.0 1.0; + max: 64 64; + image { + normal: "theme_0.png"; + } + } + } + part { + name: "theme_button_glow"; + mouse_events: 0; + description { + state: "default" 0.0; + visible: 0; + rel1 { + to: "theme_button"; + } + rel2 { + to: "theme_button"; + } + color: 255 255 255 0; + image { + normal: "theme_glow_0.png"; + } + } + description { + state: "hilited" 0.0; + inherit: "default" 0.0; + visible: 1; + color: 255 255 255 255; + } + } + } + programs { + program { + name: "theme_button_in"; + signal: "active"; + source: ""; + action: STATE_SET "hilited" 0.0; + transition: LINEAR 0.5; + target: "theme_button_glow"; + } + program { + name: "theme_button_out"; + signal: "passive"; + source: ""; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.5; + target: "theme_button_glow"; + } + } + } group { name: "windows"; max: 64 64; diff --git a/data/icons/images/Makefile.am b/data/icons/images/Makefile.am index 8c8e8f88d..553d10669 100644 --- a/data/icons/images/Makefile.am +++ b/data/icons/images/Makefile.am @@ -6,6 +6,8 @@ power_button_0.png \ power_button_glow_0.png \ reset_button_0.png \ reset_button_glow_0.png \ +theme_0.png \ +theme_glow_0.png \ windows.png \ module.png \ favorites.png \ diff --git a/data/icons/images/theme_0.png b/data/icons/images/theme_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e0fa8c91d23eba19afa841c0c03842e9052eed76 GIT binary patch literal 1342 zcmV-E1;P4>P)r~F000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGfi2wi#i2*ms%dG$a00(qQO+^RQ1pxsMFkbkHeEg5|uCBkQe}E8F@UjK=6)3?BX5(>l$ zfFAoB>WfOn1*g?NX*+oJUsb1O5~uCZs5gxFHR(jQf!Dw>a3cMTH4IAHXEg^%k6X}o z`X3#r*8A#%g9G-P`$IQr*{y-DW%mjRUgJ1z8ufZe_|Yxj?!?ziU1U#&}MUK#UPj@1K(|Df&QIHPX7V_Aa{-Lb5ZRv&Sb zp0>kXE6@wk1^-VBFD7NYZgd&g1h$_&c=$(FCc*E2{^=g@2zUY<$~@3bY7Q{X!l_HO zT1_+k9uELOtyWuD4v?0V$i7VDCv%ajtOHP#iBR#Aas=Z-k*ll&um-#@8EQpz-5CHF zORlmGKn2(W)XdnC&PM@YBDqQ&fPcTdHp8#3vBhUR`QfiUU@xADwL|0U??%W~Djwi@ zoy?M})Iy+7cx;XE+>eo53g6eH8%M6vn*$ts47vJ+{bn=3A?$&!W!plongMd<2)Q!c zS9D>>RWS=Qoib9jLH)Gr<{?+E|U^sR7{C@9VAzK%?I1yK&6- zHR;CjiqrteD!EEE5vtWbUl6(KOsxp5tgJi$Gljs5Y6Mq)1siN~_=}*Mn~relZE9-= zv3YXyjiUtSG4+^q_@kxcAx{G3WvUwi%tU6u?&2e=S)z6pvuPjB7_2< zAYqc*RCwHOECqxDXJyGyV%yc;vB7r$q$a&p2B5d<9&o|sF0-Xr9S)V|Mvyo1B)d=` zEIj}b)A5&przL#L?*Vsi-Tp`T%Zq?@(y0MR@>VE_ON>9ged$7iW4qPeCM%@gr*o3zm`e zHYos9tc6-TNKr=8+b9xcD|(oUbHJpv zgDkvUc^(yj!VDpktJiC1>1?iEuuh`0OZAHV|2iMRF>>$b5dZ)H07*qoM6N<$f)=uH AWB>pF literal 0 HcmV?d00001 diff --git a/data/icons/images/theme_glow_0.png b/data/icons/images/theme_glow_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e061bd91e1a746251bb0287e82bcc40628403fef GIT binary patch literal 1301 zcmV+w1?u{VP)r~F000JJOGiWiVgP9X z#xJl4cmMzZ32;bRa{vGfi2wi#i2*ms%dG$a00(qQO+^RQ1pxsQIl)tGga7~l9dt!l zbVF}#ZDnqB07G(RVRU6=Aa`kWXdqN*WgtgMO;GP-C2jx!1bRtCK~#9!?VG=E+eQ?} zKayp(QPse3mI?+mWb@!Hqq`ZIG}zwtFZ2({76cGb6#Wl^qCozIEcMVyLx%z#G@P<@ zFlrz$oWLYvCZTMp1K-6bijql*KTdKUKpgpWBJX{9@9ury9V?`h3i-*H5~LDy9X-kd zU>tMg3P1&@0ySV$%4$rVA^;czBj6esN;%2{gi6GC2dD$zN$EsDC;|X&d;s{sm6Smq zAk+-QYCyf+ZeL)541<6_PELLV&P6qn-jEvroATxff}nH&eBTFnESH~v&*BPX3V`YR zb^U|m_;A?|FI<{`n>IOCAT#o^vT=v0r!&4XP z%~0Lz_1N3no4858-~XcP_d`RXbu<96_Z8jiKJ2${p9O3K3S%tFT&j`jZzIW{w2``u z>hG%ex*r}Ym?sPY9wOSMB(K1>$s>gNNZ%z3J`z@xP zCx%z^GCm5xgapl}W>*BD*=&a0cnOKSZ=9}xX?H#V%M5tSNWES!6olHmAGfx)N&%tB zX}E^{au+{Yid@+aKvf1p%}+K{7?+4#*$#jMd@B)ZLr2LA05FqW*$zMhcm(_)*H_Z` zGyu#cS5^YxI1Y~E&~CR6fy1l@){_`=RR{n!ldD>BZ`Dq6Rh$c0O0KFl_K{%%F%JFZ@>oH(r1vX~-h-q;blmewt>Q>$9bWlo7 z9Hy?*>BQCy8{ppCzYP9Jec66tok6J=C?SG_0Q@QCXEewN=LI0|hJ zk_Rnn`fVtsI6gWCV4wyZA01DXT4w1{idRR|&w6!4rf=VjiZ+BOYzt+4EakT7bqxIq z&`@tK4s96(e|!0JqCm*^eR{p#OW-fyAK(=5YK998C0(R5CazFN&7L$!k93wMi&1zH z+1c62+y%yxYx9ka$%Vn2_3ClM$jl_Jc5Omtu zT!hd7RK!izHWZ$<8%qPB!MV3&D7WouU)kVS01A`weFk8B-+RCcx4X<%Vs$uCn43aA z%1m~nL0EYJQf8aq10RflZ}odXuh)Ac{N-K5xUtdgKZ^0EQqPxoW>i}Pzdi^4HH`aY z_&P>(`$2v`muPml7A_!0odN^kEw`H}Mln3c+#qqiE&%8^`xf|5u7?HyCI~CHMJCZi zAl?2-jQ3&yFvIwj+9Z`kM&k4O?G9%Eu-2jQhy}kdS_c4@Vy8>d;Vg4=S%$aEBt()J zKe2XTL3Vg5yv+*$?Q4POd8K89lZ3ZvB+XXzBx?t0@42YIN5fkk3BDKoOthemes = subm; + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Themes")); + e_menu_item_icon_edje_set(mi, + e_path_find(path_icons, "default.edj"), + "theme"); + e_menu_item_submenu_set(mi, subm); mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); @@ -191,6 +203,16 @@ e_int_menus_gadgets_new(void) return m; } +E_Menu * +e_int_menus_themes_new(void) +{ + E_Menu *m; + + m = e_menu_new(); + e_menu_pre_activate_callback_set(m, _e_int_menus_themes_pre_cb, NULL); + return m; +} + /* local subsystem functions */ static void _e_int_menus_main_del_hook(void *obj) @@ -207,6 +229,7 @@ _e_int_menus_main_del_hook(void *obj) e_object_del(E_OBJECT(dat->desktops)); e_object_del(E_OBJECT(dat->clients)); e_object_del(E_OBJECT(dat->gadgets)); + e_object_del(E_OBJECT(dat->themes)); free(dat); } } @@ -541,3 +564,102 @@ _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi) else e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL); } + +static void +_e_int_menus_themes_pre_cb(void *data, E_Menu *m) +{ + E_Menu_Item *mi; + E_Menu *root; + + e_menu_pre_activate_callback_set(m, NULL, NULL); + root = e_menu_root_get(m); + if ((root) && (root->zone)) + { + char buf[4096]; + char *homedir; + + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("Choose Theme")); + + mi = e_menu_item_new(m); + e_menu_item_separator_set(mi, 1); + + homedir = e_user_homedir_get(); + if (homedir) + { + snprintf(buf, sizeof(buf), "%s/.e/e/themes", homedir); + free(homedir); + } + + if(ecore_file_exists(buf) && ecore_file_is_dir(buf)) + { + Ecore_List *themes; + char *theme, *deftheme; + + themes = ecore_file_ls(buf); + theme = E_NEW(char, strlen(buf) + strlen("/default.edj") + 1); + snprintf(theme, strlen(buf) + strlen("/default.edj") + 1, "%s/default.edj", buf); + + if(ecore_file_exists("/home/hisham/.e/e/themes/default.edj")) + deftheme = ecore_file_readlink("/home/hisham/.e/e/themes/default.edj"); + if(deftheme) + { + char *s; + if((s = strrchr(deftheme, '/'))) + deftheme = s + 1; + } + + while((theme = ecore_list_next(themes))) + { + if(ecore_file_is_dir(theme) || !strrchr(theme,'.')) + continue; + if(!strncmp(strrchr(theme,'.'), ".edj", 4)) + { + mi = e_menu_item_new(m); + e_menu_item_radio_set(mi, 1); + if(deftheme) { + if(!strcmp(theme, deftheme)) + e_menu_item_toggle_set(mi, 1); + } + *(strrchr(theme,'.')) = '\0'; + e_menu_item_label_set(mi, _(theme)); + e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL); + } + } + } + } + else + { + mi = e_menu_item_new(m); + e_menu_item_label_set(mi, _("(Unused)")); + e_menu_item_callback_set(mi, NULL, NULL); + } +} + +static void +_e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi) +{ + char *theme; + char *homedir; + char buf[4096]; + + homedir = e_user_homedir_get(); + if (homedir) + { + snprintf(buf, sizeof(buf), "%s/.e/e/themes/default.edj", homedir); + theme = E_NEW(char, 4096); + snprintf(theme, 4096, "%s/.e/e/themes/%s.edj", homedir, mi->label); + free(homedir); + } + else + return; + + ecore_file_unlink(buf); + if(!symlink(theme, buf)) + { + printf("RESTART ON!\n"); + restart = 1; + ecore_main_loop_quit(); + } + +} diff --git a/src/bin/e_int_menus.h b/src/bin/e_int_menus.h index 0283d0586..9a4607abe 100644 --- a/src/bin/e_int_menus.h +++ b/src/bin/e_int_menus.h @@ -12,6 +12,7 @@ EAPI E_Menu *e_int_menus_clients_new(void); EAPI E_Menu *e_int_menus_apps_new(char *dir); EAPI E_Menu *e_int_menus_favorite_apps_new(void); EAPI E_Menu *e_int_menus_gadgets_new(void); +EAPI E_Menu *e_int_menus_themes_new(void); #endif #endif