From 8c8cb30cef329542a232b2dad2eae86e742d9b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Bouchaud=20=28yoz=29?= Date: Fri, 9 Dec 2016 22:30:41 +0100 Subject: [PATCH] e_ibar: make ibar external config --- src/modules/Makefile_ibar.mk | 2 ++ src/modules/ibar/config_descriptor.c | 45 ++++++++++++++++++++++++ src/modules/ibar/config_descriptor.h | 52 ++++++++++++++++++++++++++++ src/modules/ibar/e_mod_main.c | 32 +++-------------- src/modules/ibar/e_mod_main.h | 26 +------------- 5 files changed, 104 insertions(+), 53 deletions(-) create mode 100644 src/modules/ibar/config_descriptor.c create mode 100644 src/modules/ibar/config_descriptor.h diff --git a/src/modules/Makefile_ibar.mk b/src/modules/Makefile_ibar.mk index f808436e1..281cf7728 100644 --- a/src/modules/Makefile_ibar.mk +++ b/src/modules/Makefile_ibar.mk @@ -13,6 +13,8 @@ src_modules_ibar_module_la_LIBADD = $(MOD_LIBS) src_modules_ibar_module_la_CPPFLAGS = $(MOD_CPPFLAGS) src_modules_ibar_module_la_LDFLAGS = $(MOD_LDFLAGS) src_modules_ibar_module_la_SOURCES = src/modules/ibar/e_mod_main.c \ + src/modules/ibar/config_descriptor.c \ + src/modules/ibar/config_descriptor.h \ src/modules/ibar/e_mod_main.h \ src/modules/ibar/e_mod_config.c diff --git a/src/modules/ibar/config_descriptor.c b/src/modules/ibar/config_descriptor.c new file mode 100644 index 000000000..c185f5f1c --- /dev/null +++ b/src/modules/ibar/config_descriptor.c @@ -0,0 +1,45 @@ +#include +#include "config_descriptor.h" + + +static E_Config_DD *conf_edd = NULL; +static E_Config_DD *conf_item_edd = NULL; + +void +config_descriptor_init(void) +{ + conf_item_edd = E_CONFIG_DD_NEW("IBar_Config_Item", Config_Item); +#undef T +#undef D +#define T Config_Item +#define D conf_item_edd + E_CONFIG_VAL(D, T, id, STR); + E_CONFIG_VAL(D, T, dir, STR); + E_CONFIG_VAL(D, T, show_label, INT); + E_CONFIG_VAL(D, T, eap_label, INT); + E_CONFIG_VAL(D, T, lock_move, INT); + E_CONFIG_VAL(D, T, dont_add_nonorder, INT); + E_CONFIG_VAL(D, T, dont_track_launch, UCHAR); + E_CONFIG_VAL(D, T, dont_icon_menu_mouseover, UCHAR); + + conf_edd = E_CONFIG_DD_NEW("IBar_Config", Config); +#undef T +#undef D +#define T Config +#define D conf_edd + E_CONFIG_LIST(D, T, items, conf_item_edd); +} + +void +config_descriptor_shutdown(void) +{ + E_CONFIG_DD_FREE(conf_item_edd); + E_CONFIG_DD_FREE(conf_edd); +} + +E_Config_DD * +config_descriptor_get(void) +{ + return conf_edd; +} + diff --git a/src/modules/ibar/config_descriptor.h b/src/modules/ibar/config_descriptor.h new file mode 100644 index 000000000..2075c981c --- /dev/null +++ b/src/modules/ibar/config_descriptor.h @@ -0,0 +1,52 @@ +#ifndef IBAR_CONFIG_DESCRIPTOR_H +#define IBAR_CONFIG_DESCRIPTOR_H + + +#undef _Config +#undef Config +#undef _Config_Item +#undef Config_Item +#undef config_descriptor_init +#undef config_descriptor_shutdown +#undef config_descriptor_get + +#define _Config _Ibar_Config +#define Config Ibar_Config +#define _Config_Item _Ibar_Config_Item +#define Config_Item Ibar_Config_Item +#define config_descriptor_init ibar_config_descriptor_init +#define config_descriptor_shutdown ibar_config_descriptor_shutdown +#define config_descriptor_get ibar_config_descriptor_get + +typedef struct _Config Config; +typedef struct _Config_Item Config_Item; + +struct _Config +{ + /* saved * loaded config values */ + Eina_List *items; + /* just config state */ + E_Module *module; + E_Config_Dialog *config_dialog; + Eina_List *instances; + Eina_List *handlers; +}; + +struct _Config_Item +{ + const char *id; + const char *dir; + int show_label; + int eap_label; + int lock_move; + int dont_add_nonorder; + unsigned char dont_track_launch; + unsigned char dont_icon_menu_mouseover; +}; + +void config_descriptor_init(void); +void config_descriptor_shutdown(void); +E_Config_DD *config_descriptor_get(void); + + +#endif /* IBAR_CONFIG_DESCRIPTOR_H */ diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 6ecbe1495..31a04c141 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -141,9 +141,6 @@ static Eina_Bool _ibar_cb_out_hide_delay(void *data); static void _ibar_icon_menu_show(IBar_Icon *ic, Eina_Bool grab); static void _ibar_icon_menu_hide(IBar_Icon *ic, Eina_Bool grab); -static E_Config_DD *conf_edd = NULL; -static E_Config_DD *conf_item_edd = NULL; - static Eina_Hash *ibar_orders = NULL; static Eina_List *ibars = NULL; @@ -2770,28 +2767,8 @@ E_API E_Module_Api e_modapi = E_API void * e_modapi_init(E_Module *m) { - conf_item_edd = E_CONFIG_DD_NEW("IBar_Config_Item", Config_Item); -#undef T -#undef D -#define T Config_Item -#define D conf_item_edd - E_CONFIG_VAL(D, T, id, STR); - E_CONFIG_VAL(D, T, dir, STR); - E_CONFIG_VAL(D, T, show_label, INT); - E_CONFIG_VAL(D, T, eap_label, INT); - E_CONFIG_VAL(D, T, lock_move, INT); - E_CONFIG_VAL(D, T, dont_add_nonorder, INT); - E_CONFIG_VAL(D, T, dont_track_launch, UCHAR); - E_CONFIG_VAL(D, T, dont_icon_menu_mouseover, UCHAR); - - conf_edd = E_CONFIG_DD_NEW("IBar_Config", Config); -#undef T -#undef D -#define T Config -#define D conf_edd - E_CONFIG_LIST(D, T, items, conf_item_edd); - - ibar_config = e_config_domain_load("module.ibar", conf_edd); + config_descriptor_init(); + ibar_config = e_config_domain_load("module.ibar", config_descriptor_get()); if (!ibar_config) { @@ -2870,15 +2847,14 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED) ibar_config = NULL; eina_hash_free(ibar_orders); ibar_orders = NULL; - E_CONFIG_DD_FREE(conf_item_edd); - E_CONFIG_DD_FREE(conf_edd); + config_descriptor_shutdown(); return 1; } E_API int e_modapi_save(E_Module *m EINA_UNUSED) { - e_config_domain_save("module.ibar", conf_edd, ibar_config); + e_config_domain_save("module.ibar", config_descriptor_get(), ibar_config); return 1; } diff --git a/src/modules/ibar/e_mod_main.h b/src/modules/ibar/e_mod_main.h index 5f587e75b..4ab2747f4 100644 --- a/src/modules/ibar/e_mod_main.h +++ b/src/modules/ibar/e_mod_main.h @@ -1,31 +1,7 @@ #ifndef E_MOD_MAIN_H #define E_MOD_MAIN_H -typedef struct _Config Config; -typedef struct _Config_Item Config_Item; - -struct _Config -{ - /* saved * loaded config values */ - Eina_List *items; - /* just config state */ - E_Module *module; - E_Config_Dialog *config_dialog; - Eina_List *instances; - Eina_List *handlers; -}; - -struct _Config_Item -{ - const char *id; - const char *dir; - int show_label; - int eap_label; - int lock_move; - int dont_add_nonorder; - unsigned char dont_track_launch; - unsigned char dont_icon_menu_mouseover; -}; +#include "config_descriptor.h" E_API extern E_Module_Api e_modapi;