diff --git a/src/modules/ibox/Makefile.am b/src/modules/ibox/Makefile.am index 6f0b845a5..8cab540b3 100644 --- a/src/modules/ibox/Makefile.am +++ b/src/modules/ibox/Makefile.am @@ -20,7 +20,9 @@ INCLUDES = -I. \ pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH) pkg_LTLIBRARIES = module.la module_la_SOURCES = e_mod_main.c \ - e_mod_main.h + e_mod_main.h \ + e_mod_config.c \ + e_mod_config.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/ibox/e_mod_config.c b/src/modules/ibox/e_mod_config.c new file mode 100644 index 000000000..a157ccf9c --- /dev/null +++ b/src/modules/ibox/e_mod_config.c @@ -0,0 +1,224 @@ +#include "e.h" +#include "e_mod_main.h" +#include "config.h" + +typedef struct _cfdata CFData; +typedef struct _Cfg_File_Data Cfg_File_Data; + +#define ICONSIZE_MICROSCOPIC 8 +#define ICONSIZE_TINY 12 +#define ICONSIZE_VERYSMALL 16 +#define ICONSIZE_SMALL 24 +#define ICONSIZE_MEDIUM 32 +#define ICONSIZE_LARGE 40 +#define ICONSIZE_VERYLARGE 48 +#define ICONSIZE_EXTLARGE 56 +#define ICONSIZE_HUGE 64 +#define ICONSIZE_ENORMOUS 96 +#define ICONSIZE_GIGANTIC 128 + +struct _cfdata +{ + IBox *ibox; + + /* Basic Config */ + int method; + int icon_method; + + int follower; + int width; + int iconsize; + + /* Advanced Config */ + double follow_speed; + double autoscroll_speed; +}; + +struct _Cfg_File_Data +{ + E_Config_Dialog *cfd; + char *file; +}; + +/* Protos */ +static Evas_Object *_create_widgets(E_Config_Dialog *cfd, Evas *evas, Config *cfdata); +static void *_create_data(E_Config_Dialog *cfd); +static void _free_data(E_Config_Dialog *cfd, CFData *cfdata); +static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); +static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata); +static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata); +static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata); + +IBox *ib = NULL; + +void e_int_config_ibox(E_Container *con, IBox *ibox) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View v; + + ib = ibox; + + /* Dialog Methods */ + v.create_cfdata = _create_data; + v.free_cfdata = _free_data; + v.basic.apply_cfdata = _basic_apply_data; + v.basic.create_widgets = _basic_create_widgets; + v.advanced.apply_cfdata = _advanced_apply_data; + v.advanced.create_widgets = _advanced_create_widgets; + + /* Create The Dialog */ + cfd = e_config_dialog_new(con, _("IBox Module"), NULL, 0, &v, ibox); +} + +static void _fill_data(CFData *cfdata) +{ + cfdata->follower = ib->conf->follower; + cfdata->width = ib->conf->width; + if (cfdata->width == IBOX_WIDTH_AUTO) + { + cfdata->method = 1; + } + else + { + cfdata->method = 0; + } + + cfdata->iconsize = ib->conf->iconsize; + if (cfdata->iconsize <=24) cfdata->icon_method = ICONSIZE_SMALL; + if ((cfdata->iconsize > 24) && (cfdata->iconsize <=32)) cfdata->icon_method = ICONSIZE_MEDIUM; + if (cfdata->iconsize > 32) cfdata->icon_method = ICONSIZE_LARGE; + + cfdata->follow_speed = ib->conf->follow_speed; + cfdata->autoscroll_speed = ib->conf->autoscroll_speed; +} + +static void *_create_data(E_Config_Dialog *cfd) +{ + CFData *cfdata; + + cfdata = E_NEW(CFData, 1); + return cfdata; +} + +static void _free_data(E_Config_Dialog *cfd, CFData *cfdata) +{ + free(cfdata); +} + +static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) +{ + Evas_Object *o, *of, *ob; + E_Radio_Group *rg; + + _fill_data(cfdata); + o = e_widget_list_add(evas, 0, 0); + of = e_widget_framelist_add(evas, _("General Settings"), 0); + ob = e_widget_check_add(evas, _("Follower"), &(cfdata->follower)); + e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->method)); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Icon Size"), 0); + rg = e_widget_radio_group_new(&(cfdata->icon_method)); + + ob = e_widget_radio_add(evas, _("Small"), ICONSIZE_SMALL, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Medium"), ICONSIZE_MEDIUM, rg); + e_widget_framelist_object_append(of, ob); + ob = e_widget_radio_add(evas, _("Large"), ICONSIZE_LARGE, rg); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + return o; +} + +static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata) +{ + e_border_button_bindings_ungrab_all(); + ib->conf->follower = cfdata->follower; + + if (cfdata->method == 0) + { + cfdata->width = IBOX_WIDTH_FIXED; + } + else + { + cfdata->width = IBOX_WIDTH_AUTO; + } + ib->conf->width = cfdata->width; + + if (cfdata->icon_method == ICONSIZE_SMALL) ib->conf->iconsize = 24; + if (cfdata->icon_method == ICONSIZE_MEDIUM) ib->conf->iconsize = 32; + if (cfdata->icon_method == ICONSIZE_LARGE) ib->conf->iconsize = 40; + + e_border_button_bindings_grab_all(); + e_config_save_queue(); + + _ibox_box_cb_config_updated(ib); + return 1; +} + +static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) +{ + Evas_Object *o, *of, *ob, *ot; + E_Radio_Group *rg; + + _fill_data(cfdata); + o = e_widget_list_add(evas, 0, 0); + of = e_widget_framelist_add(evas, _("General Settings"), 0); + ob = e_widget_check_add(evas, _("Follower"), &(cfdata->follower)); + e_widget_framelist_object_append(of, ob); + ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->method)); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Icon Settings"), 0); + ob = e_widget_label_add(evas, _("Icon Size:")); + e_widget_framelist_object_append(of, ob); + ob = e_widget_slider_add(evas, 1, 0, _("%1.0f pixels"), 8, 128, 1, 0, NULL, &(cfdata->iconsize), 200); + e_widget_framelist_object_append(of, ob); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + /* Advanced Options */ + of = e_widget_framelist_add(evas, _("Advanced Settings"), 0); + ob = e_widget_label_add(evas, _("Follow Speed:")); + e_widget_framelist_object_append(of, ob); + ob = e_widget_slider_add(evas, 1, 0, _("%1.2f"), 0.01, 1.0, 0.01, 0, &(cfdata->follow_speed), NULL,200); + e_widget_framelist_object_append(of, ob); + + ob = e_widget_label_add(evas, _("Autoscroll Speed:")); + e_widget_framelist_object_append(of, ob); + ob = e_widget_slider_add(evas, 1, 0, _("%1.2f"), 0.01, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200); + e_widget_framelist_object_append(of, ob); + + e_widget_list_object_append(o, of, 1, 1, 0.5); + return o; +} + +static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata) +{ + e_border_button_bindings_ungrab_all(); + ib->conf->follower = cfdata->follower; + + if (cfdata->method == 0) + { + cfdata->width = IBOX_WIDTH_FIXED; + } + else + { + cfdata->width = IBOX_WIDTH_AUTO; + } + ib->conf->width = cfdata->width; + + ib->conf->iconsize = cfdata->iconsize; + + ib->conf->follow_speed = cfdata->follow_speed; + ib->conf->autoscroll_speed = cfdata->autoscroll_speed; + + e_border_button_bindings_grab_all(); + e_config_save_queue(); + + _ibox_box_cb_config_updated(ib); + return 1; +} diff --git a/src/modules/ibox/e_mod_config.h b/src/modules/ibox/e_mod_config.h new file mode 100644 index 000000000..eb9548715 --- /dev/null +++ b/src/modules/ibox/e_mod_config.h @@ -0,0 +1,8 @@ +#ifdef E_TYPEDEFS +#else +#ifndef E_MOD_CONFIG_H +#define E_MOD_CONFIG_H +#include "e_mod_main.h" +EAPI void e_int_config_ibox(E_Container *con, IBox *ibox); +#endif +#endif diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 2c8f5e991..8b1f24b24 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -75,30 +75,20 @@ static void _ibox_icon_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, voi static void _ibox_icon_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _ibox_icon_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info); -static void _ibox_box_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_iconsize_change(IBox_Box *ibb); -static void _ibox_box_cb_iconsize_microscopic(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_tiny(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_very_small(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_small(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_medium(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_large(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_very_large(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_extremely_large(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_huge(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_enormous(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_iconsize_gigantic(void *data, E_Menu *m, E_Menu_Item *mi); - static void _ibox_box_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi); static void _ibox_box_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi); +static void _ibox_box_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi); -static void _ibox_box_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi); +/* Config Updated Function Protos */ +static void _ibox_box_cb_width_auto(void *data); +static void _ibox_box_cb_follower(void *data); +static void _ibox_box_cb_iconsize_change(void *data); /* public module routines. all modules must have these */ -E_Module_Api e_modapi = +E_Module_Api e_modapi = { E_MODULE_API_VERSION, - "IBox" + "IBox" }; void * @@ -149,7 +139,7 @@ e_modapi_info(E_Module *m) int e_modapi_about(E_Module *m) { - e_module_dialog_show(_("Enlightenment IBox Module"), + e_module_dialog_show(_("Enlightenment IBox Module"), _("This is the IBox Iconified Application module for Enlightenment.
" "It will hold minimized applications")); return 1; @@ -199,7 +189,7 @@ _ibox_new() E_CONFIG_LIMIT(ib->conf->autoscroll_speed, 0.01, 1.0); E_CONFIG_LIMIT(ib->conf->iconsize, 2, 400); E_CONFIG_LIMIT(ib->conf->width, -2, -1); - + _ibox_config_menu_new(ib); managers = e_manager_list(); @@ -235,13 +225,9 @@ _ibox_new() _ibox_box_menu_new(ibb); /* Add main menu to box menu */ - mi = e_menu_item_new(ibb->menu); - e_menu_item_label_set(mi, _("Options")); - e_menu_item_submenu_set(mi, ib->config_menu_options); - - mi = e_menu_item_new(ibb->menu); - e_menu_item_label_set(mi, _("Size")); - e_menu_item_submenu_set(mi, ib->config_menu_size); + mi = e_menu_item_new(ib->config_menu); + e_menu_item_label_set(mi, _("Config Dialog")); + e_menu_item_callback_set(mi, _ibox_box_cb_menu_configure, ibb); mi = e_menu_item_new(ib->config_menu); e_menu_item_label_set(mi, con->name); @@ -258,7 +244,7 @@ _ibox_new() } static void -_ibox_free(IBox *ib) + _ibox_free(IBox *ib) { E_CONFIG_DD_FREE(conf_edd); E_CONFIG_DD_FREE(conf_box_edd); @@ -266,8 +252,6 @@ _ibox_free(IBox *ib) while (ib->boxes) _ibox_box_free(ib->boxes->data); - e_object_del(E_OBJECT(ib->config_menu_options)); - e_object_del(E_OBJECT(ib->config_menu_size)); e_object_del(E_OBJECT(ib->config_menu)); evas_list_free(ib->conf->boxes); free(ib->conf); @@ -332,12 +316,12 @@ _ibox_box_new(IBox *ib, E_Container *con) edje_object_part_swallow(ibb->box_object, "items", o); evas_object_show(o); - ibb->ev_handler_border_iconify = - ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, _ibox_box_cb_event_border_iconify, ibb); - ibb->ev_handler_border_uniconify = - ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, _ibox_box_cb_event_border_uniconify, ibb); - ibb->ev_handler_border_remove = - ecore_event_handler_add(E_EVENT_BORDER_REMOVE, _ibox_box_cb_event_border_remove, ibb); + ibb->ev_handler_border_iconify = + ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, _ibox_box_cb_event_border_iconify, ibb); + ibb->ev_handler_border_uniconify = + ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, _ibox_box_cb_event_border_uniconify, ibb); + ibb->ev_handler_border_remove = + ecore_event_handler_add(E_EVENT_BORDER_REMOVE, _ibox_box_cb_event_border_remove, ibb); bl = e_container_border_list_first(ibb->con); while ((bd = e_container_border_list_next(bl))) @@ -415,7 +399,7 @@ _ibox_box_free(IBox_Box *ibb) ecore_event_handler_del(ibb->ev_handler_border_iconify); ecore_event_handler_del(ibb->ev_handler_border_uniconify); ecore_event_handler_del(ibb->ev_handler_border_remove); - + while (ibb->icons) _ibox_icon_free(ibb->icons->data); @@ -453,13 +437,29 @@ _ibox_box_menu_new(IBox_Box *ibb) if (ibb->conf->enabled) e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, _ibox_box_cb_menu_enabled, ibb); */ - + + /* Config */ + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, _("Config Dialog")); + e_menu_item_callback_set(mi, _ibox_box_cb_menu_configure, ibb); + /* Edit */ mi = e_menu_item_new(mn); e_menu_item_label_set(mi, _("Edit Mode")); e_menu_item_callback_set(mi, _ibox_box_cb_menu_edit, ibb); } +static void +_ibox_box_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi) +{ + IBox_Box *ibb; + E_Config_Dialog *cfd; + + ibb = (IBox_Box *)data; + if (!ibb) return; + e_int_config_ibox(ibb->con, ibb->ibox); +} + static void _ibox_box_enable(IBox_Box *ibb) { @@ -592,114 +592,9 @@ void _ibox_config_menu_new(IBox *ib) { E_Menu *mn; - E_Menu_Item *mi; mn = e_menu_new(); ib->config_menu = mn; - - mn = e_menu_new(); - ib->config_menu_options = mn; - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Auto fit icons")); - e_menu_item_check_set(mi, 1); - if (ib->conf->width == IBOX_WIDTH_AUTO) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_width_auto, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Follower")); - e_menu_item_check_set(mi, 1); - if (ib->conf->follower) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_follower, ib); - - mn = e_menu_new(); - ib->config_menu_size = mn; - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Microscopic")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 8) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_microscopic, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Tiny")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 12) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_tiny, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Very Small")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 16) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_very_small, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Small")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 24) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_small, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Medium")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 32) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_medium, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Large")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 40) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_large, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Very Large")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 48) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_very_large, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Extremely Large")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 56) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_extremely_large, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Huge")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 64) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_huge, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Enormous")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 96) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_enormous, ib); - - mi = e_menu_item_new(mn); - e_menu_item_label_set(mi, _("Gigantic")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - if (ib->conf->iconsize == 128) e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _ibox_box_cb_iconsize_gigantic, ib); - - /* Submenus */ - mi = e_menu_item_new(ib->config_menu); - e_menu_item_label_set(mi, _("Options")); - e_menu_item_submenu_set(mi, ib->config_menu_options); - - mi = e_menu_item_new(ib->config_menu); - e_menu_item_label_set(mi, _("Size")); - e_menu_item_submenu_set(mi, ib->config_menu_size); } static void @@ -749,7 +644,7 @@ _ibox_box_frame_resize(IBox_Box *ibb) (e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM)) { /* w is the width of the box */ - e_gadman_client_resize(ibb->gmc, ibb->w, bh); + e_gadman_client_resize(ibb->gmc, bw, bh); //ibb->w } } } @@ -1139,7 +1034,7 @@ _ibox_box_cb_animator(void *data) e_box_align_set(ibb->item_object, ibb->align, 0.5); else e_box_align_set(ibb->item_object, 0.5, 0.5); - + if (ibb->overlay_object) { evas_object_geometry_get(ibb->item_object, &x, &y, &w, &h); @@ -1157,7 +1052,7 @@ _ibox_box_cb_animator(void *data) e_box_align_set(ibb->item_object, 0.5, ibb->align); else e_box_align_set(ibb->item_object, 0.5, 0.5); - + if (ibb->overlay_object) { evas_object_geometry_get(ibb->item_object, &x, &y, &w, &h); @@ -1233,292 +1128,85 @@ _ibox_box_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change switch (change) { case E_GADMAN_CHANGE_MOVE_RESIZE: - e_gadman_client_geometry_get(ibb->gmc, &ibb->x, &ibb->y, &ibb->w, &ibb->h); + e_gadman_client_geometry_get(ibb->gmc, &ibb->x, &ibb->y, &ibb->w, &ibb->h); - edje_extern_object_min_size_set(ibb->item_object, 0, 0); - edje_object_part_swallow(ibb->box_object, "items", ibb->item_object); + edje_extern_object_min_size_set(ibb->item_object, 0, 0); + edje_object_part_swallow(ibb->box_object, "items", ibb->item_object); - evas_object_move(ibb->box_object, ibb->x, ibb->y); - if (ibb->overlay_object) - evas_object_move(ibb->overlay_object, ibb->x, ibb->y); - evas_object_resize(ibb->box_object, ibb->w, ibb->h); - if (ibb->overlay_object) - evas_object_resize(ibb->overlay_object, ibb->w, ibb->h); + evas_object_move(ibb->box_object, ibb->x, ibb->y); + if (ibb->overlay_object) + evas_object_move(ibb->overlay_object, ibb->x, ibb->y); + evas_object_resize(ibb->box_object, ibb->w, ibb->h); + if (ibb->overlay_object) + evas_object_resize(ibb->overlay_object, ibb->w, ibb->h); - _ibox_box_follower_reset(ibb); - _ibox_box_timer_handle(ibb); + _ibox_box_follower_reset(ibb); + _ibox_box_timer_handle(ibb); - break; + break; case E_GADMAN_CHANGE_EDGE: - _ibox_box_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc)); - break; + _ibox_box_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc)); + break; case E_GADMAN_CHANGE_RAISE: case E_GADMAN_CHANGE_ZONE: /* Ignore */ - break; + break; } } static void -_ibox_box_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi) +_ibox_box_cb_width_auto(void *data) { IBox *ib; IBox_Box *ibb; - unsigned char enabled; Evas_List *l; - ib = data; - enabled = e_menu_item_toggle_get(mi); - if ((enabled) && (ib->conf->width == IBOX_WIDTH_FIXED)) + ib = (IBox *)data; + for (l = ib->boxes; l; l = l->next) { - ib->conf->width = IBOX_WIDTH_AUTO; - for (l = ib->boxes; l; l = l->next) + ibb = l->data; + _ibox_box_update_policy(ibb); + _ibox_box_frame_resize(ibb); + } +} + +static void +_ibox_box_cb_iconsize_change(void *data) +{ + IBox *ib; + IBox_Box *ibb; + Evas_List *l, *ll; + + ib = (IBox *)data; + for (l = ib->boxes; l; l = l->next) + { + ibb = l->data; + + e_box_freeze(ibb->item_object); + for (ll = ibb->icons; ll; ll = ll->next) { - ibb = l->data; - _ibox_box_update_policy(ibb); - _ibox_box_frame_resize(ibb); + IBox_Icon *ic; + Evas_Object *o; + Evas_Coord bw, bh; + + ic = ll->data; + o = ic->icon_object; + evas_object_resize(o, ibb->ibox->conf->iconsize, ibb->ibox->conf->iconsize); + edje_object_part_swallow(ic->bg_object, "item", o); + + bw = ibb->ibox->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r; + bh = ibb->ibox->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b; + e_box_pack_options_set(ic->bg_object, + 1, 1, /* fill */ + 0, 0, /* expand */ + 0.5, 0.5, /* align */ + bw, bh, /* min */ + bw, bh /* max */ + ); } + e_box_thaw(ibb->item_object); + _ibox_box_frame_resize(ibb); } - else if (!(enabled) && (ib->conf->width == IBOX_WIDTH_AUTO)) - { - ib->conf->width = IBOX_WIDTH_FIXED; - for (l = ib->boxes; l; l = l->next) - { - ibb = l->data; - _ibox_box_update_policy(ibb); - _ibox_box_frame_resize(ibb); - } - } - e_config_save_queue(); -} - -static void -_ibox_box_iconsize_change(IBox_Box *ibb) -{ - Evas_List *l; - - e_box_freeze(ibb->item_object); - for (l = ibb->icons; l; l = l->next) - { - IBox_Icon *ic; - Evas_Object *o; - Evas_Coord bw, bh; - - ic = l->data; - o = ic->icon_object; - evas_object_resize(o, ibb->ibox->conf->iconsize, ibb->ibox->conf->iconsize); - edje_object_part_swallow(ic->bg_object, "item", o); - - bw = ibb->ibox->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r; - bh = ibb->ibox->conf->iconsize + ibb->icon_inset.t + ibb->icon_inset.b; - e_box_pack_options_set(ic->bg_object, - 1, 1, /* fill */ - 0, 0, /* expand */ - 0.5, 0.5, /* align */ - bw, bh, /* min */ - bw, bh /* max */ - ); - } - e_box_thaw(ibb->item_object); - _ibox_box_frame_resize(ibb); -} - -static void -_ibox_box_cb_iconsize_microscopic(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 8; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_tiny(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 12; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_very_small(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 16; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_small(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 24; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_medium(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 32; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_large(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 40; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_very_large(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 48; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_extremely_large(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 56; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_huge(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 64; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_enormous(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 96; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); -} - -static void -_ibox_box_cb_iconsize_gigantic(void *data, E_Menu *m, E_Menu_Item *mi) -{ - IBox *ib; - Evas_List *l; - - ib = data; - ib->conf->iconsize = 128; - for (l = ib->boxes; l; l = l->next) - { - IBox_Box *ibb; - - ibb = l->data; - _ibox_box_iconsize_change(ibb); - } - e_config_save_queue(); } static void @@ -1530,11 +1218,11 @@ _ibox_box_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi) ibb = data; enabled = e_menu_item_toggle_get(mi); if ((ibb->conf->enabled) && (!enabled)) - { + { _ibox_box_disable(ibb); } else if ((!ibb->conf->enabled) && (enabled)) - { + { _ibox_box_enable(ibb); } } @@ -1549,18 +1237,17 @@ _ibox_box_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi) } static void -_ibox_box_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi) +_ibox_box_cb_follower(void *data) { IBox *ib; IBox_Box *ibb; unsigned char enabled; Evas_List *l; - ib = data; - enabled = e_menu_item_toggle_get(mi); - if ((enabled) && (!ib->conf->follower)) + ib = (IBox *)data; + enabled = ib->conf->follower; + if (enabled) { - ib->conf->follower = 1; for (l = ib->boxes; l; l = l->next) { Evas_Object *o; @@ -1573,13 +1260,12 @@ _ibox_box_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi) e_theme_edje_object_set(o, "base/theme/modules/ibox", "modules/ibox/follower"); edje_object_signal_emit(o, "set_orientation", _ibox_main_orientation[e_gadman_client_edge_get(ibb->gmc)]); - edje_object_message_signal_process(o); + edje_object_message_signal_process(o); evas_object_show(o); } } - else if (!(enabled) && (ib->conf->follower)) + else if (!enabled) { - ib->conf->follower = 0; for (l = ib->boxes; l; l = l->next) { ibb = l->data; @@ -1588,5 +1274,13 @@ _ibox_box_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi) ibb->overlay_object = NULL; } } - e_config_save_queue(); +} + +void +_ibox_box_cb_config_updated(void *data) +{ + /* Call Any Needed Funcs To Let Module Handle Config Changes */ + _ibox_box_cb_follower(data); + _ibox_box_cb_width_auto(data); + _ibox_box_cb_iconsize_change(data); } diff --git a/src/modules/ibox/e_mod_main.h b/src/modules/ibox/e_mod_main.h index 51ddea2a7..4ab748248 100644 --- a/src/modules/ibox/e_mod_main.h +++ b/src/modules/ibox/e_mod_main.h @@ -32,8 +32,6 @@ struct _IBox { Evas_List *boxes; E_Menu *config_menu; - E_Menu *config_menu_options; - E_Menu *config_menu_size; Config *conf; }; @@ -94,4 +92,6 @@ EAPI int e_modapi_save (E_Module *m); EAPI int e_modapi_info (E_Module *m); EAPI int e_modapi_about (E_Module *m); +EAPI void _ibox_box_cb_config_updated(void *data); + #endif