IBox Config Dialog :)

SVN revision: 18992
This commit is contained in:
Christopher Michael 2005-12-13 14:32:18 +00:00
parent 1a804fbd5b
commit 3a99c51598
5 changed files with 352 additions and 424 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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.<br>"
"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);
}

View File

@ -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