From bd26872690322d5051892c648a280e94c48ecaa9 Mon Sep 17 00:00:00 2001 From: sebastid Date: Tue, 6 Sep 2005 05:19:15 +0000 Subject: [PATCH] Merge desktopname into pager SVN revision: 16614 --- configure.in | 1 - data/themes/Makefile.am | 1 - data/themes/default.edc | 1 - data/themes/default_desktopname.edc | 149 ----------- src/bin/e_config.c | 4 - src/modules/Makefile.am | 1 - src/modules/desktopname/.cvsignore | 6 - src/modules/desktopname/Makefile.am | 27 -- src/modules/desktopname/e_mod_main.c | 301 --------------------- src/modules/desktopname/e_mod_main.h | 28 -- src/modules/desktopname/module_icon.png | Bin 1374 -> 0 bytes src/modules/pager/e_mod_main.c | 336 ++++++++++++++++++------ src/modules/pager/e_mod_main.h | 10 + 13 files changed, 269 insertions(+), 596 deletions(-) delete mode 100644 data/themes/default_desktopname.edc delete mode 100644 src/modules/desktopname/.cvsignore delete mode 100644 src/modules/desktopname/Makefile.am delete mode 100644 src/modules/desktopname/e_mod_main.c delete mode 100644 src/modules/desktopname/e_mod_main.h delete mode 100644 src/modules/desktopname/module_icon.png diff --git a/configure.in b/configure.in index a0c62fff7..b388dd811 100644 --- a/configure.in +++ b/configure.in @@ -266,7 +266,6 @@ src/modules/temperature/Makefile src/modules/cpufreq/Makefile src/modules/ibox/Makefile src/modules/start/Makefile -src/modules/desktopname/Makefile src/modules/randr/Makefile src/preload/Makefile data/Makefile diff --git a/data/themes/Makefile.am b/data/themes/Makefile.am index c61d7018c..d973fa67d 100644 --- a/data/themes/Makefile.am +++ b/data/themes/Makefile.am @@ -32,7 +32,6 @@ default_start.edc \ default_winlist.edc \ default_transitions.edc \ default_dialog.edc \ -default_desktopname.edc \ default_icons.edc \ default_pointer.edc \ default_randr.edc diff --git a/data/themes/default.edc b/data/themes/default.edc index be4ccc865..09920d0ea 100644 --- a/data/themes/default.edc +++ b/data/themes/default.edc @@ -40,7 +40,6 @@ collections { #include "default_winlist.edc" #include "default_transitions.edc" #include "default_dialog.edc" -#include "default_desktopname.edc" #include "default_icons.edc" #include "default_randr.edc" #include "default_pointer.edc" diff --git a/data/themes/default_desktopname.edc b/data/themes/default_desktopname.edc deleted file mode 100644 index 67cba2ee4..000000000 --- a/data/themes/default_desktopname.edc +++ /dev/null @@ -1,149 +0,0 @@ -images { - image: "e17_menu_bg.png" COMP; - image: "e17_ibar_bg_h.png" COMP; - image: "e17_ibar_over_h.png" COMP; - image: "e17_menu_bg.png" COMP; - image: "e17_menu_bg_border.png" COMP; -} - -group { - name: "widgets/desktop/main"; - parts { - part { - name: "base"; - mouse_events: 0; - type: RECT; - description { - state: "default" 0.0; - rel1 { - relative: 0.0 1.0; - offset: 1 0; - to_y: "base2"; - } - rel2 { - relative: 1.0 1.0; - offset: -2 -2; - } - color: 221 221 221 255; - } - } - part { - name: "base2"; - mouse_events: 0; - description { - state: "default" 0.0; - max: 99999 48; - align: 0.5 0.0; - rel1 { - relative: 0.0 0.0; - offset: 1 1; - } - rel2 { - relative: 1.0 1.0; - offset: -2 -2; - } - image { - normal: "e17_menu_bg.png"; - } - fill { - smooth: 0; - } - } - } - part { - name: "base3"; - mouse_events: 0; - description { - state: "default" 0.0; - rel1 { - relative: 0.0 0.0; - offset: 0 0; - } - rel2 { - relative: 1.0 1.0; - offset: -1 -1; - } - image { - normal: "e17_menu_bg_border.png"; - border: 1 1 1 1; - middle: 0; - } - fill { - smooth: 0; - } - } - } - part { - name: "title_bg"; - description { - state: "default" 0.0; - rel1 { - to: "title_overlay"; - } - rel2 { - to: "title_overlay"; - } - image { - normal: "e17_ibar_bg_h.png"; - border: 6 6 6 6; - } - fill { - smooth: 0; - } - } - } - part { - name: "text"; - type: TEXT; - effect: SOFT_SHADOW; - mouse_events: 0; - description { - state: "default" 0.0; - align: 0.5 0.0; - rel1 { - relative: 0.0 0.0; - offset: 26 24; - } - rel2 { - relative: 1.0 1.0; - offset: -26 -24; - } - color: 0 0 0 255; - color3: 0 0 0 22; - text { - text: "Title goes here"; - font: "Edje Vera Bold"; - size: 12; - min: 1 1; - align: 0.5 0.5; - } - } - } - part { - name: "title_overlay"; - mouse_events: 0; - description { - state: "default" 0.0; - align: 0.5 1.0; - rel1 { - relative: 0.0 0.0; - offset: 16 -7; - to_y: "text"; - } - rel2 { - relative: 1.0 1.0; - offset: -17 6; - to_y: "text"; - } - image { - normal: "e17_ibar_over_h.png"; - border: 13 13 13 13; - middle: 0; - } - fill { - smooth: 0; - } - } - } - } -} diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 092a33ed9..c33d73f0e 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -466,10 +466,6 @@ e_config_init(void) em->enabled = 1; e_config->modules = evas_list_append(e_config->modules, em); em = E_NEW(E_Config_Module, 1); - em->name = strdup("desktopname"); - em->enabled = 1; - e_config->modules = evas_list_append(e_config->modules, em); - em = E_NEW(E_Config_Module, 1); em->name = strdup("randr"); em->enabled = 1; e_config->modules = evas_list_append(e_config->modules, em); diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am index 5dea785db..94535e89c 100644 --- a/src/modules/Makefile.am +++ b/src/modules/Makefile.am @@ -10,5 +10,4 @@ temperature \ cpufreq \ ibox \ start \ -desktopname \ randr diff --git a/src/modules/desktopname/.cvsignore b/src/modules/desktopname/.cvsignore deleted file mode 100644 index 60ebc832f..000000000 --- a/src/modules/desktopname/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -.deps -.libs -Makefile -Makefile.in -*.lo -module.la diff --git a/src/modules/desktopname/Makefile.am b/src/modules/desktopname/Makefile.am deleted file mode 100644 index f6295f3de..000000000 --- a/src/modules/desktopname/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in -MODULE = desktopname - -# data files for the module -filesdir = $(libdir)/enlightenment/modules/$(MODULE) -files_DATA = \ -module_icon.png - -EXTRA_DIST = $(files_DATA) - -# the module .so file -INCLUDES = -I. \ - -I$(top_srcdir) \ - -I$(includedir) \ - -I$(top_srcdir)$(MODULE) \ - -I$(top_srcdir)/src/bin \ - -I$(top_srcdir)/src/lib \ - -I$(top_srcdir)/src/modules \ - @e_cflags@ -pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH) -pkg_LTLIBRARIES = module.la -module_la_SOURCES = e_mod_main.c \ - e_mod_main.h -module_la_LIBADD = @e_libs@ @dlopen_libs@ -module_la_LDFLAGS = -module -avoid-version -module_la_DEPENDENCIES = $(top_builddir)/config.h - diff --git a/src/modules/desktopname/e_mod_main.c b/src/modules/desktopname/e_mod_main.c deleted file mode 100644 index 9911d8de1..000000000 --- a/src/modules/desktopname/e_mod_main.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 - */ -#include "e.h" -#include "e_mod_main.h" -#include "e_int_menus.h" - -static DesktopName *_dn_new(void); -static E_Menu *_dn_config_menu_new(DesktopName *dn); -static void _dn_free(DesktopName *dn); -static int _dn_cb_event_desk_show(void *data, int type, void *event); -static int _dn_popup_timeout_cb(void *data); - -static void _dn_config_speed_set(DesktopName *dn, double speed); -static void _dn_menu_cb_speed_very_slow(void *data, E_Menu *m, E_Menu_Item *mi); -static void _dn_menu_cb_speed_slow(void *data, E_Menu *m, E_Menu_Item *mi); -static void _dn_menu_cb_speed_normal(void *data, E_Menu *m, E_Menu_Item *mi); -static void _dn_menu_cb_speed_fast(void *data, E_Menu *m, E_Menu_Item *mi); -static void _dn_menu_cb_speed_very_fast(void *data, E_Menu *m, E_Menu_Item *mi); - -static Ecore_Timer *timeout_timer = NULL; - - void * -e_modapi_init(E_Module *m) -{ - DesktopName *dn; - - if (m->api->version < E_MODULE_API_VERSION) - { - e_error_dialog_show(_("Module API Error"), - _("Error initializing Module: desktop\n" - "It requires a minimum module API version of: %i.\n" - "The module API advertized by Enlightenment is: %i.\n" - "Aborting module."), - E_MODULE_API_VERSION, - m->api->version); - return NULL; - } - - dn = _dn_new(); - m->config_menu = _dn_config_menu_new(dn); - return dn; -} - -int -e_modapi_shutdown(E_Module *m) -{ - DesktopName *dn; - dn = m->data; - if (dn) - { - if (m->config_menu) - { - e_menu_deactivate(m->config_menu); - e_object_del(E_OBJECT(m->config_menu)); - m->config_menu = NULL; - } - _dn_free(dn); - } - return 1; -} - -int -e_modapi_save(E_Module *m) -{ - DesktopName *dn; - dn = m->data; - e_config_domain_save("module.desktopname", dn->conf_edd, dn->conf); - return 1; -} - -int -e_modapi_info(E_Module *m) -{ - char buf[4096]; - - m->label = strdup(_("DesktopName")); - snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m)); - m->icon_file = strdup(buf); - return 1; -} - -int -e_modapi_about(E_Module *m) -{ - e_error_dialog_show(_("Enlightenment DesktopName Module"), - _("Experimental module for E17: display desktop name on screen.")); - return 1; -} - -static DesktopName * -_dn_new(void) -{ - DesktopName *dn; - - dn = E_NEW(DesktopName, 1); - if (!dn) return NULL; - - dn->conf_edd = E_CONFIG_DD_NEW("DesktopName_Config", Config); -#undef T -#undef D -#define T Config -#define D dn->conf_edd - E_CONFIG_VAL(D, T, speed, DOUBLE); - - dn->conf = e_config_domain_load("module.desktopname", dn->conf_edd); - if (!dn->conf) - { - dn->conf = E_NEW(Config, 1); - dn->conf->speed = 1.2; - } - E_CONFIG_LIMIT(dn->conf->speed, 0.2, 10.0); - - dn->ev_handler_desk_show = ecore_event_handler_add(E_EVENT_DESK_SHOW, - _dn_cb_event_desk_show, - dn); - return dn; -} - -static E_Menu * -_dn_config_menu_new(DesktopName *dn) -{ - E_Menu *mn; - E_Menu_Item *mi; - - mn = e_menu_new(); - if(!mn) return NULL; - - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Very Slow")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (dn->conf->speed == 6.0) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _dn_menu_cb_speed_very_slow, dn); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Slow")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (dn->conf->speed == 4.0) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _dn_menu_cb_speed_slow, dn); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Normal")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (dn->conf->speed == 1.2) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _dn_menu_cb_speed_normal, dn); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Fast")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (dn->conf->speed == 0.7) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _dn_menu_cb_speed_fast, dn); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Very Fast")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 1); - if (dn->conf->speed == 0.3) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _dn_menu_cb_speed_very_fast, dn); - - return mn; -} - -static void -_dn_free(DesktopName *dn) -{ - free(dn->conf); - E_CONFIG_DD_FREE(dn->conf_edd); - ecore_event_handler_del(dn->ev_handler_desk_show); - if (dn->obj) - { - evas_object_del(dn->obj); - dn->obj = NULL; - } - if (dn->popup) - { - e_object_del(E_OBJECT(dn->popup)); - dn->popup = NULL; - } - free(dn); -} - -static void -_dn_menu_cb_speed_very_slow(void *data, E_Menu *m, E_Menu_Item *mi) -{ - DesktopName *dn; - dn = data; - _dn_config_speed_set(dn, 6.0); -} - -static void -_dn_menu_cb_speed_slow(void *data, E_Menu *m, E_Menu_Item *mi) -{ - DesktopName *dn; - dn = data; - _dn_config_speed_set(dn, 4.0); -} - -static void -_dn_menu_cb_speed_normal(void *data, E_Menu *m, E_Menu_Item *mi) -{ - DesktopName *dn; - dn = data; - _dn_config_speed_set(dn, 1.2); -} - -static void -_dn_menu_cb_speed_fast(void *data, E_Menu *m, E_Menu_Item *mi) -{ - DesktopName *dn; - - dn = data; - _dn_config_speed_set(dn, 0.7); -} - -static void -_dn_menu_cb_speed_very_fast(void *data, E_Menu *m, E_Menu_Item *mi) -{ - DesktopName *dn; - - dn = data; - _dn_config_speed_set(dn, 0.3); -} - -static void -_dn_config_speed_set(DesktopName *dn, double speed) -{ - if (speed < 0.0) speed = 1.2; - dn->conf->speed = speed; -} - - static int -_dn_cb_event_desk_show(void *data, int type, void *event) -{ - DesktopName *dn; - E_Event_Desk_Show *ev; - E_Zone *zone; - - Evas_Coord ew, eh; - char buf[128]; - - dn = data; - ev = event; - zone = ev->desk->zone; - - if (timeout_timer) ecore_timer_del(timeout_timer); - - if (dn->popup) e_object_del(E_OBJECT(dn->popup)); - - dn->popup = e_popup_new(zone, 0, 0, 1, 1); - if (!dn->popup) return 1; - e_popup_layer_set(dn->popup, 255); - dn->obj = edje_object_add(dn->popup->evas); - e_theme_edje_object_set(dn->obj, "base/theme/desktop", - "widgets/desktop/main"); - snprintf(buf, sizeof(buf), ev->desk->name); - edje_object_part_text_set(dn->obj, "text", buf); - - - edje_object_size_min_calc(dn->obj, &ew, &eh); - - evas_object_move(dn->obj, 0, 0); - evas_object_resize(dn->obj, ew, eh); - evas_object_show(dn->obj); - edje_object_signal_emit(dn->obj, "active", ""); - e_popup_edje_bg_object_set(dn->popup, dn->obj); - e_popup_move_resize(dn->popup, - (zone->x - dn->popup->zone->x) + - ((zone->w - ew) / 2), - (zone->y - dn->popup->zone->y) + - ((zone->h - eh) / 2), - ew, eh); - e_popup_show(dn->popup); - - timeout_timer = ecore_timer_add(dn->conf->speed, _dn_popup_timeout_cb, dn); - return 1; -} - -static int -_dn_popup_timeout_cb(void *data) -{ - DesktopName *dn; - - dn = data; - if (dn->obj) - { - evas_object_del(dn->obj); - dn->obj = NULL; - } - if (dn->popup) - { - e_object_del(E_OBJECT(dn->popup)); - dn->popup = NULL; - } - timeout_timer = NULL; - return 0; -} diff --git a/src/modules/desktopname/e_mod_main.h b/src/modules/desktopname/e_mod_main.h deleted file mode 100644 index f35eff6d2..000000000 --- a/src/modules/desktopname/e_mod_main.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef E_MOD_MAIN_H -#define E_MOD_MAIN_H - -typedef struct _Config Config; -typedef struct _DesktopName DesktopName; - -struct _Config -{ - double speed; -}; - -struct _DesktopName -{ - E_Config_DD *conf_edd; - Config *conf; - E_Popup *popup; - Evas_Object *obj; - - Ecore_Event_Handler *ev_handler_desk_show; -}; - -EAPI void *e_modapi_init (E_Module *m); -EAPI int e_modapi_shutdown (E_Module *m); -EAPI int e_modapi_save (E_Module *m); -EAPI int e_modapi_info (E_Module *m); -EAPI int e_modapi_about (E_Module *m); - -#endif diff --git a/src/modules/desktopname/module_icon.png b/src/modules/desktopname/module_icon.png deleted file mode 100644 index 90f06cc1c3fd71a47cbe135ff7e0f59587505011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1374 zcmV-k1)=(hP)WFU8GbZ8({Xk{QrNlj4iWF>9@00hEGL_t(Y$HkRPZyVPY z$A3c(CGlmdl1oLFsOXW0)kT{=&^&+|=(61yumNwg%F6x<{TBWZ-uMI9h7lOBkpw8} z*s&6;qUe~CNs6LG&g0&B-MP054pqXfyeoQvgL^O-{D0^C=U@)}kB>D;?%cUEm!@gS z7{lV?qA8V102pHsLeTAY(OR>#Gq!CfX_^|P6tlCl%+1Y(*REaDZv*T}(rh;W zcJt=VF9DO!=Z$5ZvC&!+$1zEgV2q*BXrxLh83cj$eIF?$Po6ya3i$S1z|PK2P_0&1 zzJ7S0(0R?Q9fNT|k0ACSlB7Zq3rQGj!bB0onjlhCxBklV^75bG3F!5DKMV!~>h(Go zS0gUfQ%G|VB_JZSD~N{*Aq;+G5E1wxcoGi6H>_^`>bJLU-Lh`qzHO!fxk*we6n@y- z+vDOd>zte(LfVIT0D*({T@uG52x4TcvoMG-#gU59QHzCzgCi0D-~WA&6m$8m&;$=xN*Ze7trZ+o*f+>=?jZ%9Cb#>@ZX*Xaf&a;qVAb^ zf)^-#=Fiv*EIg!)X_o$}q!su$t7fFMeF{{26&ZTs^~*J3Iu0CPa4-EOy} zltlSOyl`q-ratJTY7veBG8zM(e*ctWvG`f0WdoKCC!r@?{BgB!N+WFZc!){Hm_g5zI^xY-5#Lrtb-Y#49vG$ zt*+xZrg&k=Iy|aEp+>I0M16CKjrsSuSYIKRFECduQK?i+9LLdcIF!xie&?HSzJ1m2 z_n$w0{CMI@Yy*>jcnO$4K0Y>%2%z7yS@J6#fx0G+oe*e z>~Cyr{5^^yuiNboo6Y7?7=~%q{ahxhfiTm|SyP*>0{jm6O{r8`Qc9&)u3Y*3>gwuW zq?A^grqpUR8jS{pLII_e8V-kpot>TU9zJ~d*ccN7L!b{FW%uc19~i&~UI0ZYr2z7^ zTJ2A3YilM=Q%fmDp-`Y&tx~Jin3M+Hss75Kk5RpG*IolY8qO g>n#B@75|^}FX-e%*u>H1<^TWy07*qoM6N<$f_fH`z5oCK diff --git a/src/modules/pager/e_mod_main.c b/src/modules/pager/e_mod_main.c index b8f9bae77..4f7473176 100644 --- a/src/modules/pager/e_mod_main.c +++ b/src/modules/pager/e_mod_main.c @@ -14,7 +14,8 @@ static Pager *_pager_new(); static void _pager_free(Pager *pager); static void _pager_config_menu_new(Pager *pager); -static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone); +static Pager_Face *_pager_face_new(Pager *pager, E_Zone *zone, Evas *evas); +static void _pager_face_events_init(Pager_Face *face); static void _pager_face_free(Pager_Face *face); static void _pager_face_menu_new(Pager_Face *face); static void _pager_face_enable(Pager_Face *face); @@ -74,6 +75,13 @@ static void _pager_face_cb_deskname_bottom(void *data, E_Menu *m, E_Menu_ static void _pager_face_cb_deskname_left(void *data, E_Menu *m, E_Menu_Item *mi); static void _pager_face_cb_deskname_right(void *data, E_Menu *m, E_Menu_Item *mi); static void _pager_face_deskname_position_change(Pager_Face *face); +static int _pager_popup_cb_timeout(void *data); + +static void _pager_menu_cb_speed_very_slow(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_speed_slow(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_speed_normal(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_speed_fast(void *data, E_Menu *m, E_Menu_Item *mi); +static void _pager_menu_cb_speed_very_fast(void *data, E_Menu *m, E_Menu_Item *mi); static int _pager_count; @@ -185,11 +193,14 @@ _pager_new() #define D _conf_edd E_CONFIG_LIST(D, T, faces, _conf_face_edd); E_CONFIG_VAL(D, T, deskname_pos, UINT); + E_CONFIG_VAL(D, T, speed, UINT); pager->conf = e_config_domain_load("module.pager", _conf_edd); if (!pager->conf) { pager->conf = E_NEW(Config, 1); + pager->conf->deskname_pos = PAGER_DESKNAME_NONE; + pager->conf->speed = 12; } _pager_config_menu_new(pager); @@ -215,10 +226,11 @@ _pager_new() { zone = l3->data; - face = _pager_face_new(pager, zone); + face = _pager_face_new(pager, zone, zone->container->bg_evas); if (face) { pager->faces = evas_list_append(pager->faces, face); + _pager_face_events_init(face); /* Config */ if (!cl) @@ -269,6 +281,8 @@ _pager_free(Pager *pager) e_object_del(E_OBJECT(l->data)); evas_list_free(pager->menus); e_object_del(E_OBJECT(pager->config_menu)); + e_object_del(E_OBJECT(pager->config_menu_deskname)); + e_object_del(E_OBJECT(pager->config_menu_speed)); evas_list_free(pager->conf->faces); free(pager->conf); @@ -330,14 +344,57 @@ _pager_config_menu_new(Pager *pager) e_menu_item_callback_set(mi, _pager_face_cb_deskname_right, pager); */ + mn = e_menu_new(); + pager->config_menu_speed = mn; + + /* Desktopname speed */ + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Very Slow")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (pager->conf->speed == 60) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_slow, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Slow")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (pager->conf->speed == 40) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_menu_cb_speed_slow, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Normal")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (pager->conf->speed == 12) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_menu_cb_speed_normal, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Fast")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (pager->conf->speed == 7) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_menu_cb_speed_fast, pager); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Very Fast")); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (pager->conf->speed == 3) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _pager_menu_cb_speed_very_fast, pager); + /* Submenus */ mi = e_menu_item_new(pager->config_menu); e_menu_item_label_set(mi, _("Desktop Name")); e_menu_item_submenu_set(mi, pager->config_menu_deskname); + + mi = e_menu_item_new(pager->config_menu); + e_menu_item_label_set(mi, _("Desktop Speed")); + e_menu_item_submenu_set(mi, pager->config_menu_speed); } static Pager_Face * -_pager_face_new(Pager *pager, E_Zone *zone) +_pager_face_new(Pager *pager, E_Zone *zone, Evas *evas) { Pager_Face *face; Evas_Object *o; @@ -349,57 +406,7 @@ _pager_face_new(Pager *pager, E_Zone *zone) face->pager = pager; /* store what evas we live in */ - face->evas = zone->container->bg_evas; - - /* set up event handles for when windows change and desktops */ - face->ev_handler_border_resize = - ecore_event_handler_add(E_EVENT_BORDER_RESIZE, - _pager_face_cb_event_border_resize, face); - face->ev_handler_border_move = - ecore_event_handler_add(E_EVENT_BORDER_MOVE, - _pager_face_cb_event_border_move, face); - face->ev_handler_border_add = - ecore_event_handler_add(E_EVENT_BORDER_ADD, - _pager_face_cb_event_border_add, face); - face->ev_handler_border_remove = - ecore_event_handler_add(E_EVENT_BORDER_REMOVE, - _pager_face_cb_event_border_remove, face); - face->ev_handler_border_iconify = - ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, - _pager_face_cb_event_border_iconify, face); - face->ev_handler_border_uniconify = - ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, - _pager_face_cb_event_border_uniconify, face); - face->ev_handler_border_stick = - ecore_event_handler_add(E_EVENT_BORDER_STICK, - _pager_face_cb_event_border_stick, face); - face->ev_handler_border_unstick = - ecore_event_handler_add(E_EVENT_BORDER_UNSTICK, - _pager_face_cb_event_border_unstick, face); - face->ev_handler_border_desk_set = - ecore_event_handler_add(E_EVENT_BORDER_DESK_SET, - _pager_face_cb_event_border_desk_set, face); - face->ev_handler_border_raise = - ecore_event_handler_add(E_EVENT_BORDER_RAISE, - _pager_face_cb_event_border_raise, face); - face->ev_handler_border_lower = - ecore_event_handler_add(E_EVENT_BORDER_LOWER, - _pager_face_cb_event_border_lower, face); - face->ev_handler_border_icon_change = - ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE, - _pager_face_cb_event_border_icon_change, face); - face->ev_handler_zone_desk_count_set = - ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET, - _pager_face_cb_event_zone_desk_count_set, face); - face->ev_handler_desk_show = - ecore_event_handler_add(E_EVENT_DESK_SHOW, - _pager_face_cb_event_desk_show, face); - face->ev_handler_desk_name_change = - ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE, - _pager_face_cb_event_desk_name_change, face); - face->ev_handler_container_resize = - ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE, - _pager_face_cb_event_container_resize, face); + face->evas = evas; /* the bg */ o = edje_object_add(face->evas); @@ -453,6 +460,60 @@ _pager_face_new(Pager *pager, E_Zone *zone) return face; } +static void +_pager_face_events_init(Pager_Face *face) +{ + /* set up event handles for when windows change and desktops */ + face->ev_handler_border_resize = + ecore_event_handler_add(E_EVENT_BORDER_RESIZE, + _pager_face_cb_event_border_resize, face); + face->ev_handler_border_move = + ecore_event_handler_add(E_EVENT_BORDER_MOVE, + _pager_face_cb_event_border_move, face); + face->ev_handler_border_add = + ecore_event_handler_add(E_EVENT_BORDER_ADD, + _pager_face_cb_event_border_add, face); + face->ev_handler_border_remove = + ecore_event_handler_add(E_EVENT_BORDER_REMOVE, + _pager_face_cb_event_border_remove, face); + face->ev_handler_border_iconify = + ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, + _pager_face_cb_event_border_iconify, face); + face->ev_handler_border_uniconify = + ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, + _pager_face_cb_event_border_uniconify, face); + face->ev_handler_border_stick = + ecore_event_handler_add(E_EVENT_BORDER_STICK, + _pager_face_cb_event_border_stick, face); + face->ev_handler_border_unstick = + ecore_event_handler_add(E_EVENT_BORDER_UNSTICK, + _pager_face_cb_event_border_unstick, face); + face->ev_handler_border_desk_set = + ecore_event_handler_add(E_EVENT_BORDER_DESK_SET, + _pager_face_cb_event_border_desk_set, face); + face->ev_handler_border_raise = + ecore_event_handler_add(E_EVENT_BORDER_RAISE, + _pager_face_cb_event_border_raise, face); + face->ev_handler_border_lower = + ecore_event_handler_add(E_EVENT_BORDER_LOWER, + _pager_face_cb_event_border_lower, face); + face->ev_handler_border_icon_change = + ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE, + _pager_face_cb_event_border_icon_change, face); + face->ev_handler_zone_desk_count_set = + ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET, + _pager_face_cb_event_zone_desk_count_set, face); + face->ev_handler_desk_show = + ecore_event_handler_add(E_EVENT_DESK_SHOW, + _pager_face_cb_event_desk_show, face); + face->ev_handler_desk_name_change = + ecore_event_handler_add(E_EVENT_DESK_NAME_CHANGE, + _pager_face_cb_event_desk_name_change, face); + face->ev_handler_container_resize = + ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE, + _pager_face_cb_event_container_resize, face); +} + void _pager_face_free(Pager_Face *face) { @@ -464,24 +525,41 @@ _pager_face_free(Pager_Face *face) e_drop_handler_del(face->drop_handler); _pager_face_zone_unset(face); - ecore_event_handler_del(face->ev_handler_border_resize); - ecore_event_handler_del(face->ev_handler_border_move); - ecore_event_handler_del(face->ev_handler_border_add); - ecore_event_handler_del(face->ev_handler_border_remove); - ecore_event_handler_del(face->ev_handler_border_iconify); - ecore_event_handler_del(face->ev_handler_border_uniconify); - ecore_event_handler_del(face->ev_handler_border_stick); - ecore_event_handler_del(face->ev_handler_border_unstick); - ecore_event_handler_del(face->ev_handler_border_desk_set); - ecore_event_handler_del(face->ev_handler_border_raise); - ecore_event_handler_del(face->ev_handler_border_lower); - ecore_event_handler_del(face->ev_handler_border_icon_change); - ecore_event_handler_del(face->ev_handler_zone_desk_count_set); - ecore_event_handler_del(face->ev_handler_desk_show); - ecore_event_handler_del(face->ev_handler_desk_name_change); - ecore_event_handler_del(face->ev_handler_container_resize); + if (face->ev_handler_border_resize) + ecore_event_handler_del(face->ev_handler_border_resize); + if (face->ev_handler_border_move) + ecore_event_handler_del(face->ev_handler_border_move); + if (face->ev_handler_border_add) + ecore_event_handler_del(face->ev_handler_border_add); + if (face->ev_handler_border_remove) + ecore_event_handler_del(face->ev_handler_border_remove); + if (face->ev_handler_border_iconify) + ecore_event_handler_del(face->ev_handler_border_iconify); + if (face->ev_handler_border_uniconify) + ecore_event_handler_del(face->ev_handler_border_uniconify); + if (face->ev_handler_border_stick) + ecore_event_handler_del(face->ev_handler_border_stick); + if (face->ev_handler_border_unstick) + ecore_event_handler_del(face->ev_handler_border_unstick); + if (face->ev_handler_border_desk_set) + ecore_event_handler_del(face->ev_handler_border_desk_set); + if (face->ev_handler_border_raise) + ecore_event_handler_del(face->ev_handler_border_raise); + if (face->ev_handler_border_lower) + ecore_event_handler_del(face->ev_handler_border_lower); + if (face->ev_handler_border_icon_change) + ecore_event_handler_del(face->ev_handler_border_icon_change); + if (face->ev_handler_zone_desk_count_set) + ecore_event_handler_del(face->ev_handler_zone_desk_count_set); + if (face->ev_handler_desk_show) + ecore_event_handler_del(face->ev_handler_desk_show); + if (face->ev_handler_desk_name_change) + ecore_event_handler_del(face->ev_handler_desk_name_change); + if (face->ev_handler_container_resize) + ecore_event_handler_del(face->ev_handler_container_resize); - e_object_del(E_OBJECT(face->menu)); + if (face->menu) + e_object_del(E_OBJECT(face->menu)); free(face->conf); free(face); @@ -513,6 +591,10 @@ _pager_face_menu_new(Pager_Face *face) mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Desktop Name")); e_menu_item_submenu_set(mi, face->pager->config_menu_deskname); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Desktop Speed")); + e_menu_item_submenu_set(mi, face->pager->config_menu_speed); } static void @@ -1303,11 +1385,68 @@ _pager_face_cb_event_desk_show(void *data, int type, void *event) face = data; ev = event; if (face->zone != ev->desk->zone) return 1; + desk = _pager_face_desk_find(face, ev->desk); - if (desk) _pager_face_desk_select(desk); + if (desk) + { + Pager_Popup *pp; + Evas_Coord w, h; + char buf[1024]; + + _pager_face_desk_select(desk); + + pp = E_NEW(Pager_Popup, 1); + if (!pp) return 1; + + /* Show popup */ + pp->popup = e_popup_new(face->zone, 0, 0, 1, 1); + if (!pp->popup) + { + free(pp); + return 1; + } + e_popup_layer_set(pp->popup, 999); + + /* FIXME, this doesn't resize nicely when the name is shown! */ + evas_object_geometry_get(face->pager_object, NULL, NULL, &w, &h); + w *= 3; + h *= 3; + + pp->face = _pager_face_new(face->pager, face->zone, pp->popup->evas); + evas_object_move(pp->face->pager_object, 0, 0); + evas_object_resize(pp->face->pager_object, w, h); + + snprintf(buf, sizeof(buf), desk->desk->name); + edje_object_part_text_set(pp->face->pager_object, "desktop_name", buf); + edje_object_signal_emit(pp->face->pager_object, "desktop_name,top", ""); + + e_popup_edje_bg_object_set(pp->popup, pp->face->pager_object); + e_popup_move_resize(pp->popup, + pp->popup->zone->x + ((pp->popup->zone->w - w) / 2), + pp->popup->zone->y + ((pp->popup->zone->h - h) / 2), + w, h); + e_popup_show(pp->popup); + + ecore_timer_add(face->pager->conf->speed / 10.0, _pager_popup_cb_timeout, pp); + } + return 1; } +static int +_pager_popup_cb_timeout(void *data) +{ + Pager_Popup *pp; + + pp = data; + + pp->face->pager->faces = evas_list_remove(pp->face->pager->faces, pp->face); + _pager_face_free(pp->face); + e_object_del(E_OBJECT(pp->popup)); + free(pp); + + return 0; +} static int _pager_face_cb_event_desk_name_change(void *data, int type, void *event) { @@ -1431,17 +1570,16 @@ _pager_desk_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info ev = event_info; desk = data; - for(l = desk->face->desks; l; l = l->next) + for (l = desk->face->desks; l; l = l->next) { Pager_Desk *pd; pd = l->data; if (pd->current) { - edje_object_part_text_set(pd->face->pager_object, "desktop_name", pd->desk->name); - break; + edje_object_part_text_set(pd->face->pager_object, "desktop_name", pd->desk->name); + break; } } - } static void @@ -1452,7 +1590,7 @@ _pager_desk_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_inf ev = event_info; pd = data; - if (ev->button == 3) + if ((ev->button == 3) && (pd->face->menu)) { e_menu_activate_mouse(pd->face->menu, pd->face->zone, ev->output.x, ev->output.y, 1, 1, @@ -1722,3 +1860,47 @@ _pager_face_deskname_position_change(Pager_Face *face) } } +static void +_pager_menu_cb_speed_very_slow(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + pager = data; + pager->conf->speed = 60; + e_config_save_queue(); +} + +static void +_pager_menu_cb_speed_slow(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + pager = data; + pager->conf->speed = 40; + e_config_save_queue(); +} + +static void +_pager_menu_cb_speed_normal(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + pager = data; + pager->conf->speed = 12; + e_config_save_queue(); +} + +static void +_pager_menu_cb_speed_fast(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + pager = data; + pager->conf->speed = 7; + e_config_save_queue(); +} + +static void +_pager_menu_cb_speed_very_fast(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Pager *pager; + pager = data; + pager->conf->speed = 3; + e_config_save_queue(); +} diff --git a/src/modules/pager/e_mod_main.h b/src/modules/pager/e_mod_main.h index 18b0f0a1b..f806f813a 100644 --- a/src/modules/pager/e_mod_main.h +++ b/src/modules/pager/e_mod_main.h @@ -10,6 +10,7 @@ typedef struct _Pager Pager; typedef struct _Pager_Face Pager_Face; typedef struct _Pager_Desk Pager_Desk; typedef struct _Pager_Win Pager_Win; +typedef struct _Pager_Popup Pager_Popup; #define PAGER_RESIZE_NONE 0 #define PAGER_RESIZE_HORZ 1 @@ -27,6 +28,8 @@ struct _Config Evas_List *faces; /* Position of desktop name */ unsigned int deskname_pos; + /* How the popup is shown on desk change */ + unsigned int speed; }; struct _Config_Face @@ -44,6 +47,7 @@ struct _Pager Evas_List *faces; E_Menu *config_menu; E_Menu *config_menu_deskname; + E_Menu *config_menu_speed; Evas_List *menus; Config *conf; @@ -116,6 +120,12 @@ struct _Pager_Win Evas_Object *icon_object; }; +struct _Pager_Popup +{ + E_Popup *popup; + Pager_Face *face; +}; + EAPI void *e_modapi_init (E_Module *module); EAPI int e_modapi_shutdown (E_Module *module); EAPI int e_modapi_save (E_Module *module);