diff --git a/src/modules/ibar/Makefile.am b/src/modules/ibar/Makefile.am
index b4ca79935..4dbeb5f58 100644
--- a/src/modules/ibar/Makefile.am
+++ b/src/modules/ibar/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/ibar/e_mod_config.c b/src/modules/ibar/e_mod_config.c
new file mode 100644
index 000000000..d108436b1
--- /dev/null
+++ b/src/modules/ibar/e_mod_config.c
@@ -0,0 +1,248 @@
+#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
+{
+ IBar *ibar;
+
+ /* 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);
+
+IBar *ib = NULL;
+
+void e_int_config_ibar(E_Container *con, IBar *ibar)
+{
+ E_Config_Dialog *cfd;
+ E_Config_Dialog_View v;
+
+ ib = ibar;
+
+ /* 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, _("IBar Module"), NULL, 0, &v, ibar);
+}
+
+static void _fill_data(CFData *cfdata)
+{
+ cfdata->follower = ib->conf->follower;
+ cfdata->width = ib->conf->width;
+ if (cfdata->width == IBAR_WIDTH_AUTO) {
+ cfdata->method = 1;
+ } else {
+ cfdata->method = 0;
+ }
+
+ cfdata->iconsize = ib->conf->iconsize;
+ if (cfdata->iconsize<=8) cfdata->icon_method = ICONSIZE_MICROSCOPIC;
+ if ((cfdata->iconsize > 8) && (cfdata->iconsize <=12)) cfdata->icon_method = ICONSIZE_TINY;
+ if ((cfdata->iconsize > 12) && (cfdata->iconsize <=16)) cfdata->icon_method = ICONSIZE_VERYSMALL;
+ if ((cfdata->iconsize > 16) && (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->iconsize <=40)) cfdata->icon_method = ICONSIZE_LARGE;
+ if ((cfdata->iconsize > 40) && (cfdata->iconsize <=48)) cfdata->icon_method = ICONSIZE_VERYLARGE;
+ if ((cfdata->iconsize > 48) && (cfdata->iconsize <=58)) cfdata->icon_method = ICONSIZE_EXTLARGE;
+ if ((cfdata->iconsize > 58) && (cfdata->iconsize <=64)) cfdata->icon_method = ICONSIZE_HUGE;
+ if ((cfdata->iconsize > 64) && (cfdata->iconsize <=96)) cfdata->icon_method = ICONSIZE_ENORMOUS;
+ if ((cfdata->iconsize > 96) && (cfdata->iconsize <=128)) cfdata->icon_method = ICONSIZE_GIGANTIC;
+
+ 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);
+ _fill_data(cfdata);
+ 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;
+
+ 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, _("Microscopic"), ICONSIZE_MICROSCOPIC, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Tiny"), ICONSIZE_TINY, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Very Small"), ICONSIZE_VERYSMALL, rg);
+ e_widget_framelist_object_append(of, ob);
+ 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);
+ ob = e_widget_radio_add(evas, _("Very Large"), ICONSIZE_VERYLARGE, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Exteremely Large"), ICONSIZE_EXTLARGE, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Huge"), ICONSIZE_HUGE, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Enormous"), ICONSIZE_ENORMOUS, rg);
+ e_widget_framelist_object_append(of, ob);
+ ob = e_widget_radio_add(evas, _("Gigantic"), ICONSIZE_GIGANTIC, 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 = IBAR_WIDTH_FIXED;
+ } else {
+ cfdata->width = IBAR_WIDTH_AUTO;
+ }
+ ib->conf->width = cfdata->width;
+
+ if (cfdata->icon_method == ICONSIZE_MICROSCOPIC) ib->conf->iconsize = 8;
+ if (cfdata->icon_method == ICONSIZE_TINY) ib->conf->iconsize = 12;
+ if (cfdata->icon_method == ICONSIZE_VERYSMALL) ib->conf->iconsize = 16;
+ 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;
+ if (cfdata->icon_method == ICONSIZE_VERYLARGE) ib->conf->iconsize = 48;
+ if (cfdata->icon_method == ICONSIZE_EXTLARGE) ib->conf->iconsize = 56;
+ if (cfdata->icon_method == ICONSIZE_HUGE) ib->conf->iconsize = 64;
+ if (cfdata->icon_method == ICONSIZE_ENORMOUS) ib->conf->iconsize = 96;
+ if (cfdata->icon_method == ICONSIZE_GIGANTIC) ib->conf->iconsize = 128;
+
+ e_border_button_bindings_grab_all();
+ e_config_save_queue();
+
+ _ibar_bar_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;
+
+ 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 = IBAR_WIDTH_FIXED;
+ } else {
+ cfdata->width = IBAR_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();
+
+ _ibar_bar_cb_config_updated(ib);
+ return 1;
+}
+
+
diff --git a/src/modules/ibar/e_mod_config.h b/src/modules/ibar/e_mod_config.h
new file mode 100644
index 000000000..affa663cb
--- /dev/null
+++ b/src/modules/ibar/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_ibar(E_Container *con, IBar *ibar);
+#endif
+#endif
diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c
index 26b1e6ef0..78117d030 100644
--- a/src/modules/ibar/e_mod_main.c
+++ b/src/modules/ibar/e_mod_main.c
@@ -3,6 +3,7 @@
*/
#include "e.h"
#include "e_mod_main.h"
+#include "e_mod_config.h"
/* TODO List:
*
@@ -83,35 +84,26 @@ static void _ibar_icon_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, v
static void _ibar_icon_cb_mouse_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
-static void _ibar_bar_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi);
#if 0
static void _ibar_icon_reorder_before(IBar_Icon *ic, IBar_Icon *before);
#endif
-static void _ibar_bar_iconsize_change(IBar_Bar *ibb);
-static void _ibar_bar_cb_iconsize_microscopic(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_tiny(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_very_small(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_small(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_medium(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_large(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_very_large(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_extremely_large(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_huge(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_enormous(void *data, E_Menu *m, E_Menu_Item *mi);
-static void _ibar_bar_cb_iconsize_gigantic(void *data, E_Menu *m, E_Menu_Item *mi);
static void _ibar_bar_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi);
static void _ibar_bar_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
-
+static void _ibar_bar_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
static void _ibar_drag_cb_intercept_move(void *data, Evas_Object *o, Evas_Coord x, Evas_Coord y);
static void _ibar_drag_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_Coord h);
+/* Config Updated Function Protos */
+static void _ibar_bar_cb_width_auto(void *data);
+static void _ibar_bar_cb_follower(void *data);
+static void _ibar_bar_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,
- "IBar"
+ "IBar"
};
void *
@@ -162,7 +154,7 @@ e_modapi_info(E_Module *m)
int
e_modapi_about(E_Module *m)
{
- e_module_dialog_show(_("Enlightenment IBar Module"),
+ e_module_dialog_show(_("Enlightenment IBar Module"),
_("This is the IBar Application Launcher bar module for Enlightenment.
"
"It is a first example module and is being used to flesh out several
"
"interfaces in Enlightenment 0.17.0. It is under heavy development,
"
@@ -217,7 +209,7 @@ _ibar_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);
-
+
_ibar_config_menu_new(ib);
if (ib->conf->appdir[0] != '/')
@@ -270,14 +262,9 @@ _ibar_new()
/* Menu */
_ibar_bar_menu_new(ibb);
- /* Add main menu to bar 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, _ibar_bar_cb_menu_configure, ibb);
mi = e_menu_item_new(ib->config_menu);
e_menu_item_label_set(mi, con->name);
@@ -306,8 +293,6 @@ _ibar_free(IBar *ib)
if (ib->conf->appdir) evas_stringshare_del(ib->conf->appdir);
e_app_change_callback_del(_ibar_app_change, ib);
- 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->bars);
free(ib->conf);
@@ -341,7 +326,7 @@ _ibar_app_change(void *data, E_App *a, E_App_Change ch)
for (ll = ib->apps->subapps; ll; ll = ll->next)
{
E_App *a2;
-
+
a2 = ll->data;
ic = _ibar_icon_find(ibb, a2);
if (ic) _ibar_icon_reorder_after(ic, NULL);
@@ -403,7 +388,7 @@ _ibar_app_change(void *data, E_App *a, E_App_Change ch)
if (e_app_is_parent(ib->apps, a))
{
IBar_Icon *ic;
-
+
ic = _ibar_icon_find(ibb, a);
if (ic)
{
@@ -436,7 +421,7 @@ _ibar_app_change(void *data, E_App *a, E_App_Change ch)
if (a->startup_notify)
{
IBar_Icon *ic;
-
+
ic = _ibar_icon_find(ibb, a);
if (ic)
{
@@ -613,7 +598,7 @@ _ibar_bar_free(IBar_Bar *ibb)
ibb->drag_object = NULL;
if (ibb->drag_object_overlay) evas_object_del(ibb->drag_object_overlay);
ibb->drag_object_overlay = NULL;
-
+
e_gadman_client_save(ibb->gmc);
e_object_del(E_OBJECT(ibb->gmc));
@@ -641,13 +626,29 @@ _ibar_bar_menu_new(IBar_Bar *ibb)
if (ibb->conf->enabled) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _ibar_bar_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, _ibar_bar_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, _ibar_bar_cb_menu_edit, ibb);
}
+static void
+_ibar_bar_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ IBar_Bar *ibb;
+ E_Config_Dialog *cfd;
+
+ ibb = data;
+ if (!ibb) return;
+ e_int_config_ibar(ibb->con, ibb->ibar);
+}
+
static void
_ibar_bar_enable(IBar_Bar *ibb)
{
@@ -674,7 +675,7 @@ static IBar_Icon *
_ibar_icon_new(IBar_Bar *ibb, E_App *a)
{
IBar_Icon *ic;
-// char *str;
+ // char *str;
Evas_Object *o;
Evas_Coord w, h;
@@ -823,114 +824,9 @@ void
_ibar_config_menu_new(IBar *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 == IBAR_WIDTH_AUTO) e_menu_item_toggle_set(mi, 1);
- e_menu_item_callback_set(mi, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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, _ibar_bar_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);
}
#if 0
@@ -1309,8 +1205,8 @@ _ibar_icon_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info
{
drag_x = ev->output.x;
drag_y = ev->output.y;
- drag_start = 1;
- drag = 0;
+ drag_start = 1;
+ drag = 0;
}
}
@@ -1345,7 +1241,7 @@ _ibar_icon_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_info
dx = ev->cur.output.x - drag_x;
dy = ev->cur.output.y - drag_y;
- if (((dx * dx) + (dy * dy)) >
+ if (((dx * dx) + (dy * dy)) >
(e_config->drag_resist * e_config->drag_resist))
{
E_Drag *d;
@@ -1688,7 +1584,7 @@ _ibar_bar_cb_drop(void *data, const char *type, void *event)
"does not have a matching application file.
"
"
"
"The icon cannot be added to IBar."
- ));
+ ));
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
e_dialog_button_focus_num(dia, 1);
e_win_centered_set(dia->win, 1);
@@ -1750,40 +1646,65 @@ _ibar_bar_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->box_object, 0, 0);
- edje_object_part_swallow(ibb->bar_object, "items", ibb->box_object);
+ edje_extern_object_min_size_set(ibb->box_object, 0, 0);
+ edje_object_part_swallow(ibb->bar_object, "items", ibb->box_object);
- evas_object_move(ibb->bar_object, ibb->x, ibb->y);
- if (ibb->overlay_object)
- evas_object_move(ibb->overlay_object, ibb->x, ibb->y);
- evas_object_resize(ibb->bar_object, ibb->w, ibb->h);
- if (ibb->overlay_object)
- evas_object_resize(ibb->overlay_object, ibb->w, ibb->h);
+ evas_object_move(ibb->bar_object, ibb->x, ibb->y);
+ if (ibb->overlay_object)
+ evas_object_move(ibb->overlay_object, ibb->x, ibb->y);
+ evas_object_resize(ibb->bar_object, ibb->w, ibb->h);
+ if (ibb->overlay_object)
+ evas_object_resize(ibb->overlay_object, ibb->w, ibb->h);
- _ibar_bar_follower_reset(ibb);
- _ibar_bar_timer_handle(ibb);
+ _ibar_bar_follower_reset(ibb);
+ _ibar_bar_timer_handle(ibb);
- e_drop_handler_geometry_set(ibb->drop_handler,
- ibb->x + ibb->bar_inset.l, ibb->y + ibb->bar_inset.t,
- ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r),
- ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b));
- break;
+ e_drop_handler_geometry_set(ibb->drop_handler,
+ ibb->x + ibb->bar_inset.l, ibb->y + ibb->bar_inset.t,
+ ibb->w - (ibb->bar_inset.l + ibb->bar_inset.r),
+ ibb->h - (ibb->bar_inset.t + ibb->bar_inset.b));
+ break;
case E_GADMAN_CHANGE_EDGE:
- _ibar_bar_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc));
- break;
+ _ibar_bar_edge_change(ibb, e_gadman_client_edge_get(ibb->gmc));
+ break;
case E_GADMAN_CHANGE_RAISE:
case E_GADMAN_CHANGE_ZONE:
/* FIXME
* Must we do something here?
*/
- break;
+ break;
+ }
+}
+
+void
+_ibar_bar_cb_config_updated(void *data)
+{
+ /* Call Any Needed Funcs To Let Module Handle Config Changes */
+ _ibar_bar_cb_follower(data);
+ _ibar_bar_cb_width_auto(data);
+ _ibar_bar_cb_iconsize_change(data);
+}
+
+static void
+_ibar_bar_cb_width_auto(void *data)
+{
+ IBar *ib;
+ IBar_Bar *ibb;
+ Evas_List *l;
+
+ ib = data;
+ for (l = ib->bars; l; l = l->next)
+ {
+ ibb = l->data;
+ _ibar_bar_update_policy(ibb);
+ _ibar_bar_frame_resize(ibb);
}
}
static void
-_ibar_bar_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi)
+_ibar_bar_cb_follower(void *data)
{
IBar *ib;
IBar_Bar *ibb;
@@ -1791,43 +1712,9 @@ _ibar_bar_cb_width_auto(void *data, E_Menu *m, E_Menu_Item *mi)
Evas_List *l;
ib = data;
- enabled = e_menu_item_toggle_get(mi);
- if ((enabled) && (ib->conf->width == IBAR_WIDTH_FIXED))
+ enabled = ib->conf->follower;
+ if (enabled)
{
- ib->conf->width = IBAR_WIDTH_AUTO;
- for (l = ib->bars; l; l = l->next)
- {
- ibb = l->data;
- _ibar_bar_update_policy(ibb);
- _ibar_bar_frame_resize(ibb);
- }
- }
- else if (!(enabled) && (ib->conf->width == IBAR_WIDTH_AUTO))
- {
- ib->conf->width = IBAR_WIDTH_FIXED;
- for (l = ib->bars; l; l = l->next)
- {
- ibb = l->data;
- _ibar_bar_update_policy(ibb);
- _ibar_bar_frame_resize(ibb);
- }
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- IBar_Bar *ibb;
- unsigned char enabled;
- Evas_List *l;
-
- ib = data;
- enabled = e_menu_item_toggle_get(mi);
- if ((enabled) && (!ib->conf->follower))
- {
- ib->conf->follower = 1;
for (l = ib->bars; l; l = l->next)
{
Evas_Object *o;
@@ -1846,9 +1733,8 @@ _ibar_bar_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi)
evas_object_show(o);
}
}
- else if (!(enabled) && (ib->conf->follower))
+ else if (!enabled)
{
- ib->conf->follower = 0;
for (l = ib->bars; l; l = l->next)
{
ibb = l->data;
@@ -1857,237 +1743,47 @@ _ibar_bar_cb_follower(void *data, E_Menu *m, E_Menu_Item *mi)
ibb->overlay_object = NULL;
}
}
- e_config_save_queue();
}
static void
-_ibar_bar_iconsize_change(IBar_Bar *ibb)
-{
- Evas_List *l;
-
- e_box_freeze(ibb->box_object);
- for (l = ibb->icons; l; l = l->next)
- {
- IBar_Icon *ic;
- Evas_Object *o;
- Evas_Coord w, h;
-
- ic = l->data;
- o = ic->icon_object;
-
- evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
- edje_object_part_swallow(ic->bg_object, "item", o);
-
- w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
- h = ibb->ibar->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 */
- w, h, /* min */
- w, h /* max */
- );
- }
- e_box_thaw(ibb->box_object);
- _ibar_bar_frame_resize(ibb);
-}
-
-static void
-_ibar_bar_cb_iconsize_microscopic(void *data, E_Menu *m, E_Menu_Item *mi)
+_ibar_bar_cb_iconsize_change(void *data)
{
IBar *ib;
- Evas_List *l;
+ Evas_List *l, *ll;
ib = data;
- ib->conf->iconsize = 8;
for (l = ib->bars; l; l = l->next)
{
IBar_Bar *ibb;
ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
+
+ e_box_freeze(ibb->box_object);
+ for (ll = ibb->icons; ll; ll = ll->next)
+ {
+ IBar_Icon *ic;
+ Evas_Object *o;
+ Evas_Coord w, h;
+
+ ic = ll->data;
+ o = ic->icon_object;
+
+ evas_object_resize(o, ibb->ibar->conf->iconsize, ibb->ibar->conf->iconsize);
+ edje_object_part_swallow(ic->bg_object, "item", o);
+
+ w = ibb->ibar->conf->iconsize + ibb->icon_inset.l + ibb->icon_inset.r;
+ h = ibb->ibar->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 */
+ w, h, /* min */
+ w, h /* max */
+ );
+ }
+ e_box_thaw(ibb->box_object);
+ _ibar_bar_frame_resize(ibb);
}
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_tiny(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 12;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_very_small(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 16;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_small(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 24;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_medium(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 32;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_large(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 40;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_very_large(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 48;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_extremely_large(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 56;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_huge(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 64;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_enormous(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 96;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
-}
-
-static void
-_ibar_bar_cb_iconsize_gigantic(void *data, E_Menu *m, E_Menu_Item *mi)
-{
- IBar *ib;
- Evas_List *l;
-
- ib = data;
- ib->conf->iconsize = 128;
- for (l = ib->bars; l; l = l->next)
- {
- IBar_Bar *ibb;
-
- ibb = l->data;
- _ibar_bar_iconsize_change(ibb);
- }
- e_config_save_queue();
}
static void
@@ -2099,11 +1795,11 @@ _ibar_bar_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))
- {
+ {
_ibar_bar_disable(ibb);
}
else if ((!ibb->conf->enabled) && (enabled))
- {
+ {
_ibar_bar_enable(ibb);
}
}
diff --git a/src/modules/ibar/e_mod_main.h b/src/modules/ibar/e_mod_main.h
index 291946706..5d91e2360 100644
--- a/src/modules/ibar/e_mod_main.h
+++ b/src/modules/ibar/e_mod_main.h
@@ -97,4 +97,8 @@ 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 _ibar_bar_cb_config_updated(void *data);
+//EAPI void _ibar_bar_cb_width_auto(void *data);
+//EAPI void _ibar_bar_cb_iconsize_change(void *data);
+
#endif