nice little overhaul of module related stuff. moduels now finally RELY on
module.eap files being installed - and using the e_apps api to load them and ask for a name. Also icon is expected to be in this file too and i have removed the info func call from modules as well as config_menu, module menus, and other cruft in moduel structs. this also means revving the module api version and saving users from a "if i recompile it will work" thing. :) moduels need serious updates, not just a recompile for this. your modules WILL break. SVN revision: 23045
20
TODO
|
@ -48,14 +48,15 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
* finish complete netwm support
|
||||
* add a "taskbar" module
|
||||
* add cpu load module
|
||||
* add a way to access "all" apps app dir
|
||||
* add a way to access "all" apps app dir (and dnd from it into ibar etc.)
|
||||
* add setup/install wizard to seed eap files etc. etc.
|
||||
* support color classes
|
||||
* support color classes (gui config etc. etc.)
|
||||
* add clientinfo pane/popdown for borders
|
||||
* gui config dialogs for all config
|
||||
* make it possible to disable border buttons/actions (tell theme what is
|
||||
disabled)
|
||||
* shelf gui config needs a basic mode that is simpler.
|
||||
* shelf gui config needs a basic mode that is simpler and current becomes
|
||||
"advanced" mode.
|
||||
* ibar should support creating and deleting bar dirs
|
||||
* ibar labels need to be selected (name, generic, etc.)
|
||||
]]]
|
||||
|
@ -65,6 +66,7 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
CLEANUPS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* ipc is a mess. overgrown. hard to work with. what to do? remove?
|
||||
* EAP cache files can be hit and miss and have problems. move things to be
|
||||
explicit reloads.
|
||||
* winlist should support place for window "screenshot" in list as well as
|
||||
|
@ -73,8 +75,6 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
per desktop (with stick windows considered to live on the "current" desk
|
||||
when winlist starts)
|
||||
* make it easy for modules to hook into ipc and extend it for themselves
|
||||
* module api needs to move label and icon to data file (.eap file?), not api
|
||||
* allow object paranoia to be a runtime option too
|
||||
]]]
|
||||
|
||||
[[[
|
||||
|
@ -82,6 +82,8 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
"NICE TO HAVE" FEATURES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* option to allow flipping desktops to wrap at virtual desktop grid edges
|
||||
* window menu with raise/lower for windows (obviously missing currently)
|
||||
* ibox should have options "Show from this desktop", "Show from all desktops",
|
||||
"show from zones", "show from this zone", etc. Similarly to those, that are
|
||||
in winlist.
|
||||
|
@ -90,11 +92,6 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
* switch to desktop of a new window if it opens on another desktop than the
|
||||
current one
|
||||
* emit signal to submenu entries if they have a submenu shown for them or not
|
||||
* tip/hint/suggestion dialog
|
||||
* add tooltips
|
||||
* add locale and encoding fields to eapp files (to launch eapp in that
|
||||
locale+encoding)
|
||||
* add input method selector stuff to eapp - same as locale
|
||||
* setup configs for gnome and kde (as options) if they are installed (eg
|
||||
run gnome-settings-daemon).
|
||||
* check engine can work on a given screen before using it
|
||||
|
@ -102,8 +99,6 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
* add "osd" subsystem for things like volume controls on keybboards, etc.
|
||||
that overlay the screen
|
||||
* file icons on the desktop (people ask for it) - xdnd for these
|
||||
* a "togglelist" widget (a scrollable list of items where u toggle
|
||||
each of them on or off - much like ilist, but with a checkbox)
|
||||
* "disable this gadget" menu option on gadcon clients
|
||||
* improve drag/resize of gadget items
|
||||
* pager should be able to be configured to control more than the current zone
|
||||
|
@ -117,4 +112,3 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
|
||||
* optimize clock theme (speed/cpu) (rotation in edje??? or evas???)
|
||||
]]]
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "config.h"
|
||||
|
||||
#define USE_IPC
|
||||
/* #define OBJECT_PARANOIA_CHECK */
|
||||
/* #define OBJECT_CHECK */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
|
|
@ -264,7 +264,6 @@ _e_gadget_free(E_Gadget *gad)
|
|||
}
|
||||
|
||||
evas_list_free(gad->faces);
|
||||
gad->module->config_menu = NULL;
|
||||
e_object_unref(E_OBJECT(gad->module));
|
||||
if (gad->name) evas_stringshare_del(gad->name);
|
||||
free(gad);
|
||||
|
|
|
@ -250,17 +250,24 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
cm = l->data;
|
||||
if (cm)
|
||||
{
|
||||
E_App *a;
|
||||
|
||||
cm->state = MOD_UNLOADED;
|
||||
m = e_module_find(cm->name);
|
||||
if (m)
|
||||
{
|
||||
if (m->enabled) cm->state = MOD_ENABLED;
|
||||
}
|
||||
/* This Fails if module author names icon something else */
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", cm->path);
|
||||
oc = e_icon_add(evas);
|
||||
e_icon_file_set(oc, buf);
|
||||
e_widget_ilist_append(ilist, oc, cm->name, NULL, NULL, NULL);
|
||||
snprintf(buf, sizeof(buf), "%s/module.eap", cm->path);
|
||||
|
||||
a = e_app_new(buf, 0);
|
||||
if (a)
|
||||
{
|
||||
oc = edje_object_add(evas);
|
||||
edje_object_file_set(oc, buf, "icon");
|
||||
e_widget_ilist_append(ilist, oc, a->name, NULL, NULL, NULL);
|
||||
e_object_unref(E_OBJECT(a));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -444,179 +444,3 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
|
||||
return o;
|
||||
}
|
||||
|
||||
/************* raster original code ********************/
|
||||
#if 0
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
Evas_List *l, *l2;
|
||||
E_Config_Gadcon *cf_gc, *cf_gc2;
|
||||
E_Config_Gadcon_Client *cf_gcc, *cf_gcc2;
|
||||
int i, ok = 0;
|
||||
char buf[256];
|
||||
|
||||
cfdata->gc->config_dialog = cfd;
|
||||
for (l = e_config->gadcons; l; l = l->next)
|
||||
{
|
||||
cf_gc = l->data;
|
||||
if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
|
||||
(!strcmp(cf_gc->id, cfdata->gc->id)))
|
||||
{
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ok) return 1;
|
||||
for (l = cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
cf_gcc = l->data;
|
||||
if (!cf_gcc->name) continue;
|
||||
if (!strcmp(cf_gcc->name, cfdata->cname))
|
||||
{
|
||||
if (!cfdata->enabled)
|
||||
{
|
||||
/* remove from list */
|
||||
cf_gc->clients = evas_list_remove_list(cf_gc->clients, l);
|
||||
if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
|
||||
if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
|
||||
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
|
||||
free(cf_gcc);
|
||||
goto savedone;
|
||||
}
|
||||
return 1; /* Apply was OK */
|
||||
}
|
||||
}
|
||||
snprintf(buf, sizeof(buf), "default");
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
ok = 1;
|
||||
for (l = e_config->gadcons; l; l = l->next)
|
||||
{
|
||||
cf_gc2 = l->data;
|
||||
for (l2 = cf_gc2->clients; l2; l2 = l2->next)
|
||||
{
|
||||
cf_gcc2 = l2->data;
|
||||
if ((!cf_gcc2->name) || (!cf_gcc2->id)) continue;
|
||||
if ((!strcmp(cf_gcc2->name, cfdata->cname)) && (!strcmp(cf_gcc2->id, buf)))
|
||||
{
|
||||
ok = 0;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ok) break;
|
||||
done:
|
||||
snprintf(buf, sizeof(buf), "other-%i", i);
|
||||
}
|
||||
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
|
||||
cf_gcc->name = evas_stringshare_add(cfdata->cname);
|
||||
cf_gcc->id = evas_stringshare_add(buf);
|
||||
cf_gcc->geom.res = 800;
|
||||
cf_gcc->geom.size = 80;
|
||||
cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size;
|
||||
cf_gcc->autoscroll = 0;
|
||||
cf_gcc->resizable = 0;
|
||||
cf_gc->clients = evas_list_append(cf_gc->clients, cf_gcc);
|
||||
savedone:
|
||||
e_gadcon_unpopulate(cfdata->gc);
|
||||
e_gadcon_populate(cfdata->gc);
|
||||
e_config_save_queue();
|
||||
return 1; /* Apply was OK */
|
||||
}
|
||||
static void
|
||||
_cb_select(void *data)
|
||||
{
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
Evas_List *l;
|
||||
E_Config_Gadcon *cf_gc;
|
||||
E_Config_Gadcon_Client *cf_gcc;
|
||||
int ok = 0, enabled = 0;
|
||||
|
||||
cfdata = data;
|
||||
e_widget_disabled_set(cfdata->o_enabled, 0);
|
||||
e_widget_disabled_set(cfdata->o_disabled, 0);
|
||||
for (l = e_config->gadcons; l; l = l->next)
|
||||
{
|
||||
cf_gc = l->data;
|
||||
if ((!strcmp(cf_gc->name, cfdata->gc->name)) &&
|
||||
(!strcmp(cf_gc->id, cfdata->gc->id)))
|
||||
{
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ok) return;
|
||||
for (l = cf_gc->clients; l; l = l->next)
|
||||
{
|
||||
cf_gcc = l->data;
|
||||
if (!cf_gcc->name) continue;
|
||||
if (!strcmp(cf_gcc->name, cfdata->cname))
|
||||
{
|
||||
enabled = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
e_widget_radio_toggle_set(cfdata->o_enabled, enabled);
|
||||
e_widget_radio_toggle_set(cfdata->o_disabled, 1 - enabled);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
/* generate the core widget layout for a basic dialog */
|
||||
Evas_Object *o, *o2, *of, *ob, *oi, *oj;
|
||||
E_Radio_Group *rg;
|
||||
Evas_Coord wmw, wmh;
|
||||
Evas_List *styles, *l;
|
||||
int sel, n;
|
||||
|
||||
/* FIXME: this is just raw config now - it needs UI improvments */
|
||||
o = e_widget_list_add(evas, 0, 1);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Available Items"), 0);
|
||||
|
||||
oi = e_widget_ilist_add(evas, 24, 24, &(cfdata->cname));
|
||||
|
||||
for (l = e_gadcon_provider_list(); l; l = l->next)
|
||||
{
|
||||
E_Gadcon_Client_Class *cc;
|
||||
char *label;
|
||||
Evas_Object *icon;
|
||||
|
||||
cc = l->data;
|
||||
icon = NULL;
|
||||
label = NULL;
|
||||
if (cc->func.label) label = cc->func.label();
|
||||
if (!label) label = cc->name;
|
||||
if (cc->func.icon) icon = cc->func.icon(evas);
|
||||
e_widget_ilist_append(oi, icon, label, _cb_select, cfdata, cc->name);
|
||||
}
|
||||
|
||||
e_widget_ilist_go(oi);
|
||||
|
||||
e_widget_min_size_get(oi, &wmw, &wmh);
|
||||
if (wmw < 200) wmw = 200;
|
||||
e_widget_min_size_set(oi, wmw, 250);
|
||||
|
||||
e_widget_framelist_object_append(of, oi);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Status"), 0);
|
||||
|
||||
rg = e_widget_radio_group_new(&(cfdata->enabled));
|
||||
ob = e_widget_radio_add(evas, _("Enabled"), 1, rg);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
cfdata->o_enabled = ob;
|
||||
ob = e_widget_radio_add(evas, _("Disabled"), 0, rg);
|
||||
e_widget_disabled_set(ob, 1);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
cfdata->o_disabled = ob;
|
||||
|
||||
e_widget_list_object_append(o, of, 0, 0, 0.0);
|
||||
|
||||
return o;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -11,9 +11,7 @@ struct _Main_Data
|
|||
E_Menu *apps;
|
||||
E_Menu *desktops;
|
||||
E_Menu *clients;
|
||||
// E_Menu *modules;
|
||||
E_Menu *gadgets;
|
||||
// E_Menu *themes;
|
||||
E_Menu *config;
|
||||
E_Menu *lost_clients;
|
||||
};
|
||||
|
@ -46,12 +44,10 @@ static void _e_int_menus_desktops_pre_cb (void *data, E_Menu *m);
|
|||
static void _e_int_menus_desktops_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_gadgets_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_themes_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_themes_edit_mode_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_themes_about (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_lost_clients_free_hook (void *obj);
|
||||
static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_lost_clients_pre_cb (void *data, E_Menu *m);
|
||||
static void _e_int_menus_lost_clients_free_hook(void *obj);
|
||||
static void _e_int_menus_lost_clients_item_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_augmentation_add (E_Menu *m, Evas_List *augmentation);
|
||||
static void _e_int_menus_augmentation_del (E_Menu *m, Evas_List *augmentation);
|
||||
|
||||
|
@ -90,20 +86,6 @@ e_int_menus_main_new(void)
|
|||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
/* Modules menu MUST go. it's inconsistsent with the dialog - it displays only
|
||||
* loaded modules, dialog displays everything so u can load and unload etc.
|
||||
* it's BAD to have 2 UI's and each be inconsistent with the other. use the
|
||||
* dialog. this code will go soon.
|
||||
*/
|
||||
/*
|
||||
subm = e_module_menu_new();
|
||||
dat->modules = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Modules"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/modules");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
*/
|
||||
|
||||
subm = e_int_menus_desktops_new();
|
||||
dat->desktops = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
|
@ -132,18 +114,6 @@ e_int_menus_main_new(void)
|
|||
e_util_menu_item_edje_icon_set(mi, "enlightenment/gadgets");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
/* We have a config dialog for this - this menu was a hack nayway to start
|
||||
* with
|
||||
*/
|
||||
/*
|
||||
subm = e_int_menus_themes_new();
|
||||
dat->themes = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("Themes"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/themes");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
*/
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
|
@ -253,18 +223,6 @@ e_int_menus_gadgets_new(void)
|
|||
return m;
|
||||
}
|
||||
|
||||
/*
|
||||
EAPI E_Menu *
|
||||
e_int_menus_themes_new(void)
|
||||
{
|
||||
E_Menu *m;
|
||||
|
||||
m = e_menu_new();
|
||||
e_menu_pre_activate_callback_set(m, _e_int_menus_themes_pre_cb, NULL);
|
||||
return m;
|
||||
}
|
||||
*/
|
||||
|
||||
EAPI E_Menu *
|
||||
e_int_menus_lost_clients_new(void)
|
||||
{
|
||||
|
@ -355,11 +313,9 @@ _e_int_menus_main_del_hook(void *obj)
|
|||
if (dat)
|
||||
{
|
||||
e_object_del(E_OBJECT(dat->apps));
|
||||
// e_object_del(E_OBJECT(dat->modules));
|
||||
e_object_del(E_OBJECT(dat->desktops));
|
||||
e_object_del(E_OBJECT(dat->clients));
|
||||
e_object_del(E_OBJECT(dat->gadgets));
|
||||
// e_object_del(E_OBJECT(dat->themes));
|
||||
e_object_del(E_OBJECT(dat->config));
|
||||
e_object_del(E_OBJECT(dat->lost_clients));
|
||||
free(dat);
|
||||
|
@ -831,135 +787,6 @@ _e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
/* FIXME:
|
||||
*
|
||||
* Remove this later, keep for fast theme switching now.
|
||||
*/
|
||||
/*
|
||||
static void
|
||||
_e_int_menus_themes_pre_cb(void *data, E_Menu *m)
|
||||
{
|
||||
E_Menu_Item *mi;
|
||||
E_Menu *root;
|
||||
|
||||
e_menu_pre_activate_callback_set(m, NULL, NULL);
|
||||
root = e_menu_root_get(m);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("About This Theme"));
|
||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/theme");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_themes_about, NULL);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
if ((root) && (root->zone))
|
||||
{
|
||||
char buf[4096];
|
||||
char *homedir;
|
||||
|
||||
homedir = e_user_homedir_get();
|
||||
if (homedir)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "%s/.e/e/themes", homedir);
|
||||
free(homedir);
|
||||
}
|
||||
|
||||
if (ecore_file_is_dir(buf))
|
||||
{
|
||||
Ecore_List *themes;
|
||||
|
||||
themes = ecore_file_ls(buf);
|
||||
if (themes)
|
||||
{
|
||||
char *theme, *deftheme = NULL;
|
||||
char fulltheme[PATH_MAX];
|
||||
Evas_Object *o;
|
||||
Ecore_Evas *eebuf;
|
||||
Evas *evasbuf;
|
||||
Evas_List *l;
|
||||
|
||||
for (l = e_config->themes; l; l = l->next)
|
||||
{
|
||||
E_Config_Theme *et;
|
||||
|
||||
et = l->data;
|
||||
if (!strcmp(et->category, "theme")) deftheme = et->file;
|
||||
}
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (((deftheme) && (!strcmp("default", deftheme))) ||
|
||||
(!deftheme))
|
||||
e_menu_item_toggle_set(mi, 1);
|
||||
e_menu_item_label_set(mi, "default");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL);
|
||||
|
||||
eebuf = ecore_evas_buffer_new(1, 1);
|
||||
evasbuf = ecore_evas_get(eebuf);
|
||||
o = edje_object_add(evasbuf);
|
||||
|
||||
while ((theme = ecore_list_next(themes)))
|
||||
{
|
||||
snprintf(fulltheme, sizeof(fulltheme), "%s/%s", buf, theme);
|
||||
if (ecore_file_is_dir(fulltheme)) continue;
|
||||
|
||||
if(edje_object_file_set(o, fulltheme, "widgets/border/default/border"))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_radio_set(mi, 1);
|
||||
e_menu_item_radio_group_set(mi, 1);
|
||||
if (deftheme)
|
||||
{
|
||||
if (!strcmp(theme, deftheme))
|
||||
e_menu_item_toggle_set(mi, 1);
|
||||
}
|
||||
e_menu_item_label_set(mi, theme);
|
||||
e_menu_item_callback_set(mi, _e_int_menus_themes_edit_mode_cb, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
evas_object_del(o);
|
||||
ecore_evas_free(eebuf);
|
||||
ecore_list_destroy(themes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_themes_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Config_Theme *et;
|
||||
Evas_List *l;
|
||||
E_Action *a;
|
||||
|
||||
for (l = e_config->themes; l; l = l->next)
|
||||
{
|
||||
et = l->data;
|
||||
if (!strcmp(et->category, "theme"))
|
||||
{
|
||||
e_config->themes = evas_list_remove_list(e_config->themes, l);
|
||||
evas_stringshare_del(et->category);
|
||||
evas_stringshare_del(et->file);
|
||||
E_FREE(et);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
et = E_NEW(E_Config_Theme, 1);
|
||||
et->category = evas_stringshare_add("theme");
|
||||
et->file = evas_stringshare_add(mi->label);
|
||||
e_config->themes = evas_list_append(e_config->themes, et);
|
||||
|
||||
e_config_save_queue();
|
||||
|
||||
a = e_action_find("restart");
|
||||
if ((a) && (a->func.go)) a->func.go(NULL, NULL);
|
||||
}
|
||||
*/
|
||||
|
||||
static void
|
||||
_e_int_menus_lost_clients_pre_cb(void *data, E_Menu *m)
|
||||
|
|
|
@ -130,16 +130,19 @@ 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.info = dlsym(m->handle, "e_modapi_info");
|
||||
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.info) ||
|
||||
(!m->func.about) ||
|
||||
(!m->api)
|
||||
(!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"))
|
||||
|
||||
)
|
||||
{
|
||||
snprintf(body, sizeof(body), _("There was an error loading module named: %s<br>"
|
||||
|
@ -153,7 +156,6 @@ e_module_new(const char *name)
|
|||
m->func.init = NULL;
|
||||
m->func.shutdown = NULL;
|
||||
m->func.save = NULL;
|
||||
m->func.info = NULL;
|
||||
m->func.about = NULL;
|
||||
m->func.config = NULL;
|
||||
|
||||
|
@ -176,7 +178,6 @@ e_module_new(const char *name)
|
|||
m->func.init = NULL;
|
||||
m->func.shutdown = NULL;
|
||||
m->func.save = NULL;
|
||||
m->func.info = NULL;
|
||||
m->func.about = NULL;
|
||||
m->func.config = NULL;
|
||||
dlclose(m->handle);
|
||||
|
@ -205,8 +206,6 @@ init_done:
|
|||
}
|
||||
}
|
||||
}
|
||||
if (m->func.info)
|
||||
m->func.info(m);
|
||||
for (l = e_config->modules; l; l = l->next)
|
||||
{
|
||||
E_Config_Module *em;
|
||||
|
@ -356,53 +355,6 @@ e_module_list(void)
|
|||
return _e_modules;
|
||||
}
|
||||
|
||||
EAPI E_Menu *
|
||||
e_module_menu_new(void)
|
||||
{
|
||||
E_Menu *m, *subm;
|
||||
E_Menu_Item *mi;
|
||||
Evas_List *l;
|
||||
Module_Menu_Data *dat;
|
||||
int mod_count = 0;
|
||||
|
||||
dat = calloc(1, sizeof(Module_Menu_Data));
|
||||
m = e_menu_new();
|
||||
e_object_data_set(E_OBJECT(m), dat);
|
||||
e_object_free_attach_func_set(E_OBJECT(m), _e_module_menu_free);
|
||||
for (l = _e_modules; l; l = l->next)
|
||||
{
|
||||
E_Module *mod;
|
||||
|
||||
mod = l->data;
|
||||
mi = e_menu_item_new(m);
|
||||
if ((mod->api) && (mod->api->name))
|
||||
e_menu_item_label_set(mi, mod->api->name);
|
||||
else e_menu_item_label_set(mi, mod->name);
|
||||
if (mod->edje_icon_file)
|
||||
{
|
||||
if (mod->edje_icon_key)
|
||||
e_menu_item_icon_edje_set(mi, mod->edje_icon_file, mod->edje_icon_key);
|
||||
else
|
||||
e_menu_item_icon_edje_set(mi, mod->edje_icon_file, "icon");
|
||||
}
|
||||
else if (mod->icon_file)
|
||||
e_menu_item_icon_file_set(mi, mod->icon_file);
|
||||
subm = _e_module_control_menu_new(mod);
|
||||
if (subm)
|
||||
{
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
dat->submenus = evas_list_append(dat->submenus, subm);
|
||||
}
|
||||
++mod_count;
|
||||
}
|
||||
if (mod_count == 0)
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, _("(No Loaded Modules)"));
|
||||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_module_dialog_show(const char *title, const char *body)
|
||||
{
|
||||
|
@ -455,9 +407,6 @@ _e_module_free(E_Module *m)
|
|||
if (m->dir) evas_stringshare_del(m->dir);
|
||||
if (m->handle) dlclose(m->handle);
|
||||
_e_modules = evas_list_remove(_e_modules, m);
|
||||
if (m->icon_file) free(m->icon_file);
|
||||
if (m->edje_icon_file) free(m->edje_icon_file);
|
||||
if (m->edje_icon_key) free(m->edje_icon_key);
|
||||
free(m);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*/
|
||||
#ifdef E_TYPEDEFS
|
||||
|
||||
#define E_MODULE_API_VERSION 2
|
||||
#define E_MODULE_API_VERSION 3
|
||||
|
||||
typedef struct _E_Module E_Module;
|
||||
typedef struct _E_Module_Api E_Module_Api;
|
||||
|
@ -28,7 +28,6 @@ struct _E_Module
|
|||
void * (*init) (E_Module *m);
|
||||
int (*shutdown) (E_Module *m);
|
||||
int (*save) (E_Module *m);
|
||||
int (*info) (E_Module *m);
|
||||
int (*about) (E_Module *m);
|
||||
int (*config) (E_Module *m);
|
||||
} func;
|
||||
|
@ -38,14 +37,6 @@ struct _E_Module
|
|||
|
||||
/* the module is allowed to modify these */
|
||||
void *data;
|
||||
E_Menu *config_menu;
|
||||
|
||||
/* modify these but only set them up when the info func is called */
|
||||
/* e_module will free them when the module is freed. */
|
||||
/* note you will need to malloc (strdup) these fields due to the free */
|
||||
char *icon_file;
|
||||
char *edje_icon_file;
|
||||
char *edje_icon_key;
|
||||
};
|
||||
|
||||
struct _E_Module_Api
|
||||
|
@ -66,7 +57,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 E_Menu *e_module_menu_new(void);
|
||||
EAPI void e_module_dialog_show(const char *title, const char *body);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3,17 +3,6 @@
|
|||
*/
|
||||
#include "e.h"
|
||||
|
||||
/* TODO List:
|
||||
*
|
||||
* * fix a lot of parts of e17's code to use e_object_del NOT e_object_unref.
|
||||
* there is a subtle difference. unref means u had a reference and you stop
|
||||
* referencing the object - thats ALL. if you created it and now literally
|
||||
* want to destroy it - del is the way to go. there is a separate handler for
|
||||
* this so on del it can go and clean up objects that may reference this one
|
||||
* etc.
|
||||
*
|
||||
*/
|
||||
|
||||
/* yes - i know. glibc specific... but i like being able to do my own */
|
||||
/* backtraces! NB: you need CFLAGS="-rdynamic -g" LDFLAGS="-rdynamic -g" */
|
||||
#ifdef OBJECT_PARANOIA_CHECK
|
||||
|
|
|
@ -6,15 +6,12 @@
|
|||
/* Object safety/debugging checks */
|
||||
/* */
|
||||
/* OBJECT_PARANOIA_CHECK is paranoid and checkes pointers and traps segv's */
|
||||
/* incase they dont work... very paranoid and slow. NB for backtrace to */
|
||||
/* in case they dont work... very paranoid and slow. NB for backtrace to */
|
||||
/* work you need gcc, glibc and you need to compile with compile options of */
|
||||
/* -g -rdynamic and link with them too */
|
||||
/* OBJECT_CHECK is a simple null pointer and magic number check with no */
|
||||
/* debug output */
|
||||
|
||||
/* #define OBJECT_PARANOIA_CHECK */
|
||||
/* #define OBJECT_CHECK */
|
||||
|
||||
#ifndef __GLIBC__
|
||||
# ifdef OBJECT_PARANOIA_CHECK
|
||||
# warning "Your system doesn't have glibc. Paranoid object checking disabled."
|
||||
|
|
|
@ -4,8 +4,7 @@ MODULE = battery
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -1424,16 +1424,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -63,7 +63,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
|
|
Before Width: | Height: | Size: 1.4 KiB |
|
@ -4,8 +4,7 @@ MODULE = clock
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -143,16 +143,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -9,7 +9,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
|
|
|
@ -4,8 +4,7 @@ MODULE = cpufreq
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -933,16 +933,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
|
|
Before Width: | Height: | Size: 985 B |
|
@ -4,21 +4,8 @@ MODULE = dropshadow
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png \
|
||||
menu_icon_close.png \
|
||||
menu_icon_dark.png \
|
||||
menu_icon_far.png \
|
||||
menu_icon_fuzzy.png \
|
||||
menu_icon_light.png \
|
||||
menu_icon_medium.png \
|
||||
menu_icon_sharp.png \
|
||||
menu_icon_underneath.png \
|
||||
menu_icon_very_dark.png \
|
||||
menu_icon_very_far.png \
|
||||
menu_icon_very_fuzzy.png \
|
||||
menu_icon_very_light.png \
|
||||
menu_icon_very_sharp.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
# the module .so file
|
||||
|
|
|
@ -151,16 +151,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
Before Width: | Height: | Size: 671 B |
Before Width: | Height: | Size: 578 B |
Before Width: | Height: | Size: 713 B |
Before Width: | Height: | Size: 624 B |
Before Width: | Height: | Size: 518 B |
Before Width: | Height: | Size: 604 B |
Before Width: | Height: | Size: 528 B |
Before Width: | Height: | Size: 539 B |
Before Width: | Height: | Size: 604 B |
Before Width: | Height: | Size: 728 B |
Before Width: | Height: | Size: 640 B |
Before Width: | Height: | Size: 456 B |
Before Width: | Height: | Size: 281 B |
Before Width: | Height: | Size: 1.8 KiB |
|
@ -4,8 +4,7 @@ MODULE = ibar
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -1333,16 +1333,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
Before Width: | Height: | Size: 581 B |
|
@ -4,8 +4,7 @@ MODULE = ibox
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -1263,16 +1263,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -29,7 +29,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
void _ibox_config_update(void);
|
||||
|
|
|
@ -3,8 +3,7 @@ MODULE = itray
|
|||
|
||||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module_icon.png
|
||||
files_DATA =
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
Before Width: | Height: | Size: 688 B |
|
@ -4,8 +4,7 @@ MODULE = pager
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -1822,16 +1822,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -46,7 +46,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
void _pager_cb_config_updated(void);
|
||||
|
|
|
@ -4,8 +4,7 @@ MODULE = start
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -249,16 +249,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
@ -268,3 +258,4 @@ e_modapi_about(E_Module *m)
|
|||
}
|
||||
/**/
|
||||
/***************************************************************************/
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
|
||||
#endif
|
||||
|
|
Before Width: | Height: | Size: 2.5 KiB |
|
@ -4,8 +4,7 @@ MODULE = temperature
|
|||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module.eap \
|
||||
module_icon.png
|
||||
module.eap
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
|
|
|
@ -443,16 +443,6 @@ e_modapi_save(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_info(E_Module *m)
|
||||
{
|
||||
char buf[4096];
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/module_icon.png", e_module_dir_get(m));
|
||||
m->icon_file = strdup(buf);
|
||||
return 1;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
|
|
|
@ -33,7 +33,6 @@ 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_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
|
|
Before Width: | Height: | Size: 706 B |