e_luncher: make external luncher config

This commit is contained in:
Michaël Bouchaud (yoz) 2016-12-09 22:29:39 +01:00
parent 6b42eb12e5
commit e694ba3942
5 changed files with 91 additions and 42 deletions

View File

@ -15,6 +15,8 @@ src_modules_luncher_module_la_LDFLAGS = $(MOD_LDFLAGS)
src_modules_luncher_module_la_SOURCES = src/modules/luncher/mod.c \
src/modules/luncher/luncher.h \
src/modules/luncher/bar.c \
src/modules/luncher/config_descriptor.c \
src/modules/luncher/config_descriptor.h \
src/modules/luncher/grid.c \
src/modules/luncher/config.c

View File

@ -0,0 +1,38 @@
#include <e.h>
#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("Luncher_Config_Item", Config_Item);
#undef T
#undef D
#define T Config_Item
#define D conf_item_edd
E_CONFIG_VAL(D, T, id, INT);
E_CONFIG_VAL(D, T, style, STR);
E_CONFIG_VAL(D, T, dir, STR);
conf_edd = E_CONFIG_DD_NEW("Luncher_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_edd);
E_CONFIG_DD_FREE(conf_item_edd);
}
E_Config_DD *
config_descriptor_get(void)
{
return conf_edd;
}

View File

@ -0,0 +1,45 @@
#ifndef LUNCHER_CONFIG_DESCRIPTOR_H
#define LUNCHER_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 _Luncher_Config
#define Config Luncher_Config
#define _Config_Item _Luncher_Config_Item
#define Config_Item Luncher_Config_Item
#define config_descriptor_init luncher_config_descriptor_init
#define config_descriptor_shutdown luncher_config_descriptor_shutdown
#define config_descriptor_get luncher_config_descriptor_get
typedef struct _Config Config;
typedef struct _Config_Item Config_Item;
struct _Config
{
Eina_List *items;
E_Module *module;
Evas_Object *config_dialog;
Evas_Object *slist;
Evas_Object *list;
Eina_Bool bar;
};
struct _Config_Item
{
int id;
Eina_Stringshare *style;
Eina_Stringshare *dir;
};
void config_descriptor_init(void);
void config_descriptor_shutdown(void);
E_Config_DD *config_descriptor_get(void);
#endif /* LUNCHER_CONFIG_DESCRIPTOR_H */

View File

@ -2,6 +2,7 @@
#define LUNCHER_H
#include "e.h"
#include "config_descriptor.h"
E_API extern E_Module_Api e_modapi;
@ -9,29 +10,9 @@ E_API void *e_modapi_init (E_Module *m);
E_API int e_modapi_shutdown (E_Module *m);
E_API int e_modapi_save (E_Module *m);
typedef struct _Config Config;
typedef struct _Config_Item Config_Item;
typedef struct _Instance Instance;
typedef struct _Icon Icon;
struct _Config
{
Eina_List *items;
E_Module *module;
Evas_Object *config_dialog;
Evas_Object *slist;
Evas_Object *list;
Eina_Bool bar;
};
struct _Config_Item
{
int id;
Eina_Stringshare *style;
Eina_Stringshare *dir;
};
struct _Instance
{
Evas_Object *o_main;

View File

@ -1,6 +1,4 @@
#include "luncher.h"
static E_Config_DD *conf_edd = NULL;
static E_Config_DD *conf_item_edd = NULL;
Eina_List *luncher_instances = NULL;
E_Module *module = NULL;
Config *luncher_config = NULL;
@ -8,23 +6,8 @@ Config *luncher_config = NULL;
EINTERN void
luncher_init(void)
{
conf_item_edd = E_CONFIG_DD_NEW("Luncher_Config_Item", Config_Item);
#undef T
#undef D
#define T Config_Item
#define D conf_item_edd
E_CONFIG_VAL(D, T, id, INT);
E_CONFIG_VAL(D, T, style, STR);
E_CONFIG_VAL(D, T, dir, STR);
conf_edd = E_CONFIG_DD_NEW("Luncher_Config", Config);
#undef T
#undef D
#define T Config
#define D conf_edd
E_CONFIG_LIST(D, T, items, conf_item_edd);
luncher_config = e_config_domain_load("module.luncher", conf_edd);
config_descriptor_init();
luncher_config = e_config_domain_load("module.luncher", config_descriptor_get());
if (!luncher_config)
{
@ -55,11 +38,11 @@ luncher_shutdown(void)
}
E_FREE(luncher_config);
}
E_CONFIG_DD_FREE(conf_edd);
E_CONFIG_DD_FREE(conf_item_edd);
e_gadget_type_del("Luncher Bar");
e_gadget_type_del("Luncher Grid");
config_descriptor_shutdown();
}
E_API E_Module_Api e_modapi =
@ -87,6 +70,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
E_API int
e_modapi_save(E_Module *m EINA_UNUSED)
{
e_config_domain_save("module.luncher", conf_edd, luncher_config);
e_config_domain_save("module.luncher", config_descriptor_get(), luncher_config);
return 1;
}