boys and girls... animals and vegetables... pokemon and spatial anomolies
lend me your ears, for i come to break code, not to praise it! module api getting kicked about. 1. modapi calls for config and about are gone core module api call for about dialog gone (not needed anymore). use module .desktops for about info in description. config should go via the config panel calls to register stuff.... wherd... to... ma homieoes! SVN revision: 32231
This commit is contained in:
parent
9a4d68f63a
commit
6840a4f977
|
@ -26,8 +26,8 @@
|
|||
typedef Eet_Data_Descriptor E_Config_DD;
|
||||
|
||||
#else
|
||||
#ifndef E_CONFIG_H
|
||||
#define E_CONFIG_H
|
||||
#ifndef E_CONFIG_DATA_H
|
||||
#define E_CONFIG_DATA_H
|
||||
|
||||
EAPI E_Config_DD *e_config_descriptor_new(const char *name, int size);
|
||||
|
||||
|
|
|
@ -14,7 +14,6 @@ struct _E_Config_Dialog_Data
|
|||
{
|
||||
Evas_Object *o_avail, *o_loaded;
|
||||
Evas_Object *b_load, *b_unload;
|
||||
Evas_Object *b_about, *b_config;
|
||||
Evas_Object *o_desc;
|
||||
};
|
||||
|
||||
|
@ -34,8 +33,6 @@ static void _avail_list_cb_change (void *data, Evas_Object *obj);
|
|||
static void _loaded_list_cb_change (void *data, Evas_Object *obj);
|
||||
static void _btn_cb_unload (void *data, void *data2);
|
||||
static void _btn_cb_load (void *data, void *data2);
|
||||
static void _btn_cb_about (void *data, void *data2);
|
||||
static void _btn_cb_config (void *data, void *data2);
|
||||
static int _upd_hdl_cb (void *data, int type, void *event);
|
||||
|
||||
/* Hash callback Protos */
|
||||
|
@ -51,12 +48,6 @@ static Evas_Bool _modules_hash_cb_load (Evas_Hash *hash __UNUSED__,
|
|||
static Evas_Bool _modules_hash_cb_unload (Evas_Hash *hash __UNUSED__,
|
||||
const char *key __UNUSED__,
|
||||
void *data, void *fdata __UNUSED__);
|
||||
static Evas_Bool _modules_hash_cb_about (Evas_Hash *hash __UNUSED__,
|
||||
const char *key __UNUSED__,
|
||||
void *data, void *fdata __UNUSED__);
|
||||
static Evas_Bool _modules_hash_cb_config (Evas_Hash *hash __UNUSED__,
|
||||
const char *key __UNUSED__,
|
||||
void *data, void *fdata __UNUSED__);
|
||||
|
||||
static Evas_Hash *modules = NULL;
|
||||
static Evas_List *modules_list = NULL;
|
||||
|
@ -172,18 +163,6 @@ _basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
|||
_fill_loaded_list(cfdata);
|
||||
e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 1, 1, 1);
|
||||
|
||||
ow = e_widget_button_add(evas, _("About"), NULL, _btn_cb_about,
|
||||
NULL, NULL);
|
||||
cfdata->b_about = ow;
|
||||
e_widget_disabled_set(ow, 1);
|
||||
e_widget_frametable_object_append(of, ow, 0, 1, 1, 1, 1, 0, 0, 0);
|
||||
|
||||
ow = e_widget_button_add(evas, _("Configure"), NULL, _btn_cb_config,
|
||||
NULL, NULL);
|
||||
cfdata->b_config = ow;
|
||||
e_widget_disabled_set(ow, 1);
|
||||
e_widget_frametable_object_append(of, ow, 1, 1, 1, 1, 1, 0, 0, 0);
|
||||
|
||||
ow = e_widget_button_add(evas, _("Unload Module"), NULL, _btn_cb_unload,
|
||||
cfdata, NULL);
|
||||
cfdata->b_unload = ow;
|
||||
|
@ -401,8 +380,6 @@ _avail_list_cb_change(void *data, Evas_Object *obj)
|
|||
/* Unselect all in loaded list & disable buttons */
|
||||
e_widget_ilist_unselect(cfdata->o_loaded);
|
||||
e_widget_disabled_set(cfdata->b_unload, 1);
|
||||
e_widget_disabled_set(cfdata->b_about, 1);
|
||||
e_widget_disabled_set(cfdata->b_config, 1);
|
||||
|
||||
/* Make sure something is selected, else disable the load button */
|
||||
if (e_widget_ilist_selected_count_get(cfdata->o_avail) <= 0)
|
||||
|
@ -448,8 +425,6 @@ _loaded_list_cb_change(void *data, Evas_Object *obj)
|
|||
/* Unselect all in avail list & disable buttons */
|
||||
e_widget_ilist_unselect(cfdata->o_avail);
|
||||
e_widget_disabled_set(cfdata->b_load, 1);
|
||||
e_widget_disabled_set(cfdata->b_about, 1);
|
||||
e_widget_disabled_set(cfdata->b_config, 1);
|
||||
|
||||
/* Make sure something is selected, else disable the buttons */
|
||||
c = e_widget_ilist_selected_count_get(cfdata->o_loaded);
|
||||
|
@ -476,17 +451,6 @@ _loaded_list_cb_change(void *data, Evas_Object *obj)
|
|||
else
|
||||
e_widget_textblock_markup_set(cfdata->o_desc, "Description: Unavailable.");
|
||||
module->selected = 1;
|
||||
if (c == 1)
|
||||
{
|
||||
mod = e_module_find(module->short_name);
|
||||
if (mod)
|
||||
{
|
||||
if (mod->func.about)
|
||||
e_widget_disabled_set(cfdata->b_about, 0);
|
||||
if (mod->func.config)
|
||||
e_widget_disabled_set(cfdata->b_config, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (l) evas_list_free(l);
|
||||
e_widget_disabled_set(cfdata->b_unload, 0);
|
||||
|
@ -506,8 +470,6 @@ _btn_cb_unload(void *data, void *data2)
|
|||
evas_hash_foreach(modules, _modules_hash_cb_unsel, NULL);
|
||||
e_widget_ilist_unselect(cfdata->o_loaded);
|
||||
e_widget_disabled_set(cfdata->b_unload, 1);
|
||||
e_widget_disabled_set(cfdata->b_about, 1);
|
||||
e_widget_disabled_set(cfdata->b_config, 1);
|
||||
|
||||
_fill_avail_list(cfdata);
|
||||
_fill_loaded_list(cfdata);
|
||||
|
@ -532,18 +494,6 @@ _btn_cb_load(void *data, void *data2)
|
|||
_fill_loaded_list(cfdata);
|
||||
}
|
||||
|
||||
static void
|
||||
_btn_cb_about(void *data, void *data2)
|
||||
{
|
||||
evas_hash_foreach(modules, _modules_hash_cb_about, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_btn_cb_config(void *data, void *data2)
|
||||
{
|
||||
evas_hash_foreach(modules, _modules_hash_cb_config, NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
_upd_hdl_cb(void *data, int type, void *event)
|
||||
{
|
||||
|
@ -623,33 +573,3 @@ _modules_hash_cb_unload(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
|||
module->enabled = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static Evas_Bool
|
||||
_modules_hash_cb_about(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
||||
void *data, void *fdata __UNUSED__)
|
||||
{
|
||||
CFModule *module = NULL;
|
||||
E_Module *mod = NULL;
|
||||
|
||||
module = data;
|
||||
if ((!module) || (!module->selected)) return 1;
|
||||
mod = e_module_find(module->short_name);
|
||||
if ((!mod) || (!mod->func.about)) return 1;
|
||||
mod->func.about(mod);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static Evas_Bool
|
||||
_modules_hash_cb_config(Evas_Hash *hash __UNUSED__, const char *key __UNUSED__,
|
||||
void *data, void *fdata __UNUSED__)
|
||||
{
|
||||
CFModule *module = NULL;
|
||||
E_Module *mod = NULL;
|
||||
|
||||
module = data;
|
||||
if ((!module) || (!module->selected)) return 1;
|
||||
mod = e_module_find(module->short_name);
|
||||
if ((!mod) || (!mod->func.config)) return 1;
|
||||
mod->func.config(mod);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -129,20 +129,11 @@ e_module_new(const char *name)
|
|||
m->func.init = dlsym(m->handle, "e_modapi_init");
|
||||
m->func.shutdown = dlsym(m->handle, "e_modapi_shutdown");
|
||||
m->func.save = dlsym(m->handle, "e_modapi_save");
|
||||
m->func.about = dlsym(m->handle, "e_modapi_about");
|
||||
m->func.config = dlsym(m->handle, "e_modapi_config");
|
||||
|
||||
if ((!m->func.init) ||
|
||||
(!m->func.shutdown) ||
|
||||
(!m->func.save) ||
|
||||
(!m->func.about) ||
|
||||
(!m->api) ||
|
||||
|
||||
/*
|
||||
* this is to more forcibly catch old/bad modules. will go - eventually,
|
||||
* but for now is a good check to have
|
||||
*/
|
||||
(dlsym(m->handle, "e_modapi_info"))
|
||||
(!m->api)
|
||||
)
|
||||
{
|
||||
snprintf(body, sizeof(body), _("There was an error loading module named: %s<br>"
|
||||
|
@ -156,8 +147,6 @@ e_module_new(const char *name)
|
|||
m->func.init = NULL;
|
||||
m->func.shutdown = NULL;
|
||||
m->func.save = NULL;
|
||||
m->func.about = NULL;
|
||||
m->func.config = NULL;
|
||||
|
||||
dlclose(m->handle);
|
||||
m->handle = NULL;
|
||||
|
@ -178,8 +167,6 @@ e_module_new(const char *name)
|
|||
m->func.init = NULL;
|
||||
m->func.shutdown = NULL;
|
||||
m->func.save = NULL;
|
||||
m->func.about = NULL;
|
||||
m->func.config = NULL;
|
||||
dlclose(m->handle);
|
||||
m->handle = NULL;
|
||||
m->error = 1;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
|
||||
#define E_MODULE_API_VERSION 6
|
||||
#define E_MODULE_API_VERSION 7
|
||||
|
||||
typedef struct _E_Module E_Module;
|
||||
typedef struct _E_Module_Api E_Module_Api;
|
||||
|
@ -38,8 +38,6 @@ struct _E_Module
|
|||
void * (*init) (E_Module *m);
|
||||
int (*shutdown) (E_Module *m);
|
||||
int (*save) (E_Module *m);
|
||||
int (*about) (E_Module *m);
|
||||
int (*config) (E_Module *m);
|
||||
} func;
|
||||
|
||||
unsigned char enabled : 1;
|
||||
|
@ -68,7 +66,6 @@ EAPI int e_module_enabled_get(E_Module *m);
|
|||
EAPI int e_module_save_all(void);
|
||||
EAPI E_Module *e_module_find(const char *name);
|
||||
EAPI Evas_List *e_module_list(void);
|
||||
EAPI void e_module_dialog_show(E_Module *m, const char *title, const char *body);
|
||||
EAPI void e_module_delayed_set(E_Module *m, int delayed);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -17,8 +17,8 @@ static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Dat
|
|||
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
|
||||
|
||||
void
|
||||
_config_battery_module(void)
|
||||
EAPI E_Config_Dialog *
|
||||
e_int_config_battery_module(E_Container *con, const char *params __UNUSED__)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
@ -34,7 +34,7 @@ _config_battery_module(void)
|
|||
v->advanced.create_widgets = _advanced_create_widgets;
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/e-module-battery.edj", e_module_dir_get(battery_config->module));
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
cfd = e_config_dialog_new(con,
|
||||
_("Battery Monitor Configuration"),
|
||||
"E", "_e_mod_battery_config_dialog",
|
||||
buf, 0, v, NULL);
|
||||
|
|
|
@ -1440,12 +1440,19 @@ e_modapi_init(E_Module *m)
|
|||
battery_config->module = m;
|
||||
|
||||
e_gadcon_provider_register(&_gadcon_class);
|
||||
|
||||
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "enlightenment/advanced");
|
||||
e_configure_registry_item_add("advanced/battery", 100, _("Battery Meter"), NULL, "enlightenment/battery", e_int_config_battery_module);
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_shutdown(E_Module *m)
|
||||
{
|
||||
e_configure_registry_item_del("advanced/battery");
|
||||
e_configure_registry_category_del("advanced");
|
||||
|
||||
e_gadcon_provider_unregister(&_gadcon_class);
|
||||
|
||||
if (battery_config->config_dialog)
|
||||
|
@ -1471,18 +1478,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m, _("Enlightenment Battery Module"),
|
||||
_("A basic battery meter that uses either"
|
||||
"<hilight>ACPI</hilight> or <hilight>APM</hilight><br>"
|
||||
"on Linux to monitor your battery and AC power adaptor<br>"
|
||||
"status. This will work under Linux and FreeBSD and is only<br>"
|
||||
"as accurate as your BIOS or kernel drivers."));
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -65,10 +65,9 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
void _config_battery_module(void);
|
||||
EAPI E_Config_Dialog *e_int_config_battery_module(E_Container *con, const char *params __UNUSED__);
|
||||
|
||||
void _battery_config_updated(void);
|
||||
extern Config *battery_config;
|
||||
|
||||
|
|
|
@ -151,11 +151,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m, _("Enlightenment Clock Module"),
|
||||
_("A simple module to give E17 a clock."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -78,15 +78,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Conf Module"),
|
||||
_("A module for displaying a configuration panel."));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* action callback */
|
||||
static void
|
||||
_e_mod_action_conf_cb(E_Object *obj, const char *params)
|
||||
|
|
|
@ -16,6 +16,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -68,12 +68,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Applications"),
|
||||
_("Configuration dialog for applications."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -59,12 +59,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Borders"),
|
||||
_("Configuration dialog for borders."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Client List Menu"),
|
||||
_("Configuration dialog for client list menu."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Colors"),
|
||||
_("Configuration dialog for colors."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Desk"),
|
||||
_("Configuration dialog for desk."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -16,6 +16,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Screen Lock"),
|
||||
_("Configuration dialog for screen lock."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,5 @@ EAPI extern E_Module_Api e_modapi;
|
|||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Virtual Desktops"),
|
||||
_("Configuration dialog for virtual desktops."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -10,12 +10,10 @@
|
|||
#undef E_TYPEDEFS
|
||||
#include "e_int_config_desks.h"
|
||||
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -54,12 +54,3 @@ e_modapi_save(E_Module *m)
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
e_module_dialog_show(m,
|
||||
_("Enlightenment Configuration Module - Dialogs"),
|
||||
_("Configuration dialog for dialogs."));
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -10,12 +10,10 @@
|
|||
#undef E_TYPEDEFS
|
||||
#include "e_int_config_dialogs.h"
|
||||
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue