enlightenment/src/modules/wizard/e_mod_main.c

110 lines
3.0 KiB
C

#include "e_wizard.h"
/* actual module specifics */
E_Module *wiz_module = NULL;
/*
* These are the currently planned wizard pages:
*
* o == interactive
* . == automatic (no gui - none implemented currently)
*
* * = done
* - = code here, but disabled in build
*
* --- THE LIST
* o *ask for language (default selection is current locale).
* o *ask for initial profile
* o *find XDG app menus/repositories and list them let user choose which
* one(s) are to be used.
* o -ask for ibar initial app set
* o -ask if user wants desktop icons or not (enable fwin module but seed it
* with default config icons on desktop and favorites).
* o -ask click to focus or sloppy
* . *take some of current config (language, fileman, profile) and load
* load profile, apply language to it and save, restart e.
*
* why are some disabled? profiels take care of this and do a better job
* at collecting all the things together. for example illume makes no sense
* with pointer focus and ibar icons/desktop makes no sense.
*/
/* module setup */
EAPI E_Module_Api e_modapi =
{
E_MODULE_API_VERSION,
"Wizard"
};
static int
_cb_sort_files(char *f1, char *f2)
{
return strcmp(f1, f2);
}
EAPI void *
e_modapi_init(E_Module *m)
{
Eina_List *files;
char buf[PATH_MAX];
char *file;
wiz_module = m;
e_wizard_init();
e_config->scale.use_dpi = 0;
e_config->scale.use_custom = 1;
e_config->scale.factor = 1.2;
e_scale_update();
snprintf(buf, sizeof(buf), "%s/%s", e_module_dir_get(m), MODULE_ARCH);
files = ecore_file_ls(buf);
files = eina_list_sort(files, 0, (Eina_Compare_Cb)_cb_sort_files);
EINA_LIST_FREE(files, file)
{
if ((!strncmp(file, "page_", 5)) && (eina_str_has_extension(file, ".so")))
{
void *handle;
snprintf(buf, sizeof(buf), "%s/%s/%s",
e_module_dir_get(m), MODULE_ARCH, file);
handle = dlopen(buf, RTLD_NOW | RTLD_GLOBAL);
if (handle)
e_wizard_page_add(handle,
dlsym(handle, "wizard_page_init"),
dlsym(handle, "wizard_page_shutdown"),
dlsym(handle, "wizard_page_show"),
dlsym(handle, "wizard_page_hide"),
dlsym(handle, "wizard_page_apply"));
else
{
// if its an executable...
// XXX
// else...
printf("%s\n", dlerror());
}
}
free(file);
}
e_wizard_go();
return m;
}
EAPI int
e_modapi_shutdown(E_Module *m __UNUSED__)
{
e_wizard_shutdown();
wiz_module = NULL;
// FIXME: wrong place
// e_module_disable(m); /* disable - on restart this won't be loaded now */
// e_sys_action_do(E_SYS_RESTART, NULL); /* restart e - cleanly try settings */
return 1;
}
EAPI int
e_modapi_save(E_Module *m __UNUSED__)
{
return 1;
}