move bar directory down 1 level so all "bar" dirs are in their own domain -

makes listing available bar dirs, managing them and so on much simpler and
cleaner. also add label popups to ibar (finally).


SVN revision: 22502
This commit is contained in:
Carsten Haitzler 2006-05-10 07:42:39 +00:00
parent edca280c36
commit 53f3e5dcd0
9 changed files with 118 additions and 28 deletions

6
TODO
View File

@ -52,7 +52,6 @@ Some of the things (in very short form) that need to be done to E17...
-------------------------------------------------------------------------------
* actions to make current zone different (warp mouse to there)
* titlebar/border expansion/gadget panel for modules to put window widgets in
* language packs: need to have a tool to load/setup a language pack (which
means .mo compiled files from a .po, an optional font and a config file that
specifies the locale and font) and then install the font(s) either as a user
@ -62,8 +61,6 @@ Some of the things (in very short form) that need to be done to E17...
* add a "taskbar" module
* add cpu load module
* add a way to access "all" apps app dir
* ibar need to support label pop-ups
* ibar should support subdirs with pop-up icons...
* add setup/install wizard to seed eap files etc. etc.
* support text and color classes
* add clientinfo pane/popdown for borders
@ -72,11 +69,8 @@ Some of the things (in very short form) that need to be done to E17...
* make it possible to disable border buttons/actions (tell theme what is
disabled)
* shelf gui config is ugly and badly arranged
* shelf needs a way to register a menu item appender for right click menu for
gadcon items
* pager should be able to be configured to control more than the current zone
(select which zone they control)
* ibar maybe should move bar dirs to subdirectories in "bar" to limit scope
* ibar should support creating and deleting bar dirs
]]]

Binary file not shown.

View File

@ -194,6 +194,32 @@ group {
color: 0 0 0 0;
}
}
part {
name: "label";
type: TEXT;
effect: SOFT_SHADOW;
mouse_events: 0;
description {
state: "default" 0.0;
align: 0.5 0.5;
color: 255 255 255 0;
color3: 0 0 0 0;
text {
text: "Icon Name";
font: "Edje-Vera-Bold";
size: 10;
min: 1 1;
align: 0.5 0.5;
text_class: "module_normal";
}
}
description {
state: "visible" 0.0;
inherit: "default" 0.0;
color: 255 255 255 255;
color3: 0 0 0 42;
}
}
}
programs {
program {
@ -204,6 +230,14 @@ group {
target: "background";
after: "go_active2";
}
program {
name: "go_activeB";
signal: "label_active";
source: "";
action: STATE_SET "visible" 0.0;
transition: SINUSOIDAL 1.0;
target: "label";
}
program {
name: "go_active2";
signal: "";
@ -222,6 +256,14 @@ group {
target: "go_active2";
after: "go_passive2";
}
program {
name: "go_passiveB";
signal: "label_passive";
source: "";
action: STATE_SET "default" 0.0;
transition: SINUSOIDAL 2.0;
target: "label";
}
program {
name: "go_passive2";
signal: "";

View File

@ -242,23 +242,36 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
man = e_manager_current_get();
sizes = ecore_x_randr_screen_sizes_get(man->root, &n);
for (i = 0; i < n; i++)
if (!sizes)
{
if ((sizes[i].width == w) &&
(sizes[i].height == h))
e_util_dialog_show(_("Missing Features"),
_("Your X Display Server is missing support for<br>"
"The <hilight>XRandr</hilight> (X Resize and Rotate) extension.<br>"
"You cannot change screen resolutions without<br>"
"The support of this extension. It could also be<br>"
"That at the time <hilight>ecore</hilight> was built there<br>"
"was no XRandr support detected."));
}
else
{
for (i = 0; i < n; i++)
{
size = sizes[i];
int k, rr;
rates = ecore_x_randr_screen_refresh_rates_get(man->root, i, &rr);
for (k = 0; k < rr; k++)
if ((sizes[i].width == w) &&
(sizes[i].height == h))
{
if (rates[k].rate == r)
size = sizes[i];
int k, rr;
rates = ecore_x_randr_screen_refresh_rates_get(man->root, i, &rr);
for (k = 0; k < rr; k++)
{
rate = rates[k];
break;
}
if (rates[k].rate == r)
{
rate = rates[k];
break;
}
}
break;
}
break;
}
}

View File

@ -806,6 +806,7 @@ _e_main_dirs_init(void)
"%s/.e/e/applications/all",
"%s/.e/e/applications/favorite",
"%s/.e/e/applications/bar",
"%s/.e/e/applications/bar/default",
"%s/.e/e/applications/startup",
"%s/.e/e/applications/restart",
"%s/.e/e/applications/trash",
@ -835,7 +836,7 @@ _e_main_dirs_init(void)
/* err dont just disable it - replace it with a proper wizard tool */
/* outside e's main source to populate these directories from gnome/kde */
/* app menu data etc. */
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/.order", homedir);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/default/.order", homedir);
if (!ecore_file_exists(buf))
{
snprintf(buf, sizeof(buf),

View File

@ -724,6 +724,16 @@ _e_shelf_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
e_gadcon_edit_begin(es->gadcon);
}
static void
_e_shelf_cb_menu_contents(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Shelf *es;
es = data;
if (!es->gadcon->config_dialog)
e_int_gadcon_config(es->gadcon);
}
static void
_e_shelf_cb_menu_post(void *data, E_Menu *m)
{
@ -766,6 +776,11 @@ _e_shelf_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_inf
e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
e_menu_item_callback_set(mi, _e_shelf_cb_menu_edit, es);
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Configure Contents"));
e_util_menu_item_edje_icon_set(mi, "enlightenment/config");
e_menu_item_callback_set(mi, _e_shelf_cb_menu_contents, es);
e_gadcon_canvas_zone_geometry_get(es->gadcon, &cx, &cy, &cw, &ch);
e_menu_activate_mouse(mn,
e_util_zone_current_get(e_manager_current_get()),

View File

@ -7,6 +7,7 @@
struct _E_Config_Dialog_Data
{
char *dir;
int show_label;
};
/* Protos */
@ -46,6 +47,7 @@ _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata)
cfdata->dir = strdup(ci->dir);
else
cfdata->dir = strdup("");
cfdata->show_label = ci->show_label;
}
static void *
@ -71,19 +73,21 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ol;
Evas_Object *o, *of, *ol, *ob;
Ecore_List *dirs;
char *home, buf[4096], *file;
int selnum = -1;
o = e_widget_framelist_add(evas, _("Selected Bar Source"), 0);
o = e_widget_list_add(evas, 0, 0);
of = e_widget_framelist_add(evas, _("Selected Bar Source"), 0);
ol = e_widget_tlist_add(evas, &(cfdata->dir));
e_widget_min_size_set(ol, 160, 200);
e_widget_framelist_object_append(o, ol);
e_widget_min_size_set(ol, 160, 160);
e_widget_framelist_object_append(of, ol);
home = e_user_homedir_get();
snprintf(buf, sizeof(buf), "%s/.e/e/applications", home);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar", home);
dirs = ecore_file_ls(buf);
if (dirs)
@ -94,7 +98,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
while ((file = ecore_list_next(dirs)))
{
if (file[0] == '.') continue;
snprintf(buf, sizeof(buf), "%s/.e/e/applications/%s", home, file);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", home, file);
if (ecore_file_is_dir(buf))
{
e_widget_tlist_append(ol, file, NULL, NULL, file);
@ -109,6 +113,12 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
e_widget_tlist_go(ol);
if (selnum >= 0)
e_widget_tlist_selected_set(ol, selnum);
e_widget_list_object_append(o, of, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Show Icon Label"), &(cfdata->show_label));
e_widget_list_object_append(o, ob, 1, 1, 0.5);
return o;
}
@ -121,6 +131,7 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
if (ci->dir) evas_stringshare_del(ci->dir);
ci->dir = NULL;
if (cfdata->dir) ci->dir = evas_stringshare_add(cfdata->dir);
ci->show_label = cfdata->show_label;
_ibar_config_update();
e_config_save_queue();
return 1;

View File

@ -53,6 +53,7 @@ struct _IBar
int drop_before;
E_App *apps;
Evas_List *icons;
int show_label;
};
struct _IBar_Icon
@ -126,9 +127,10 @@ _gc_init(E_Gadcon *gc, char *name, char *id, char *style)
inst = E_NEW(Instance, 1);
ci = _ibar_config_item_get(id);
if (!ci->dir) ci->dir = evas_stringshare_add("bar");
if (!ci->dir) ci->dir = evas_stringshare_add("default");
inst->dir = evas_stringshare_add(ci->dir);
b = _ibar_new(gc->evas, ci->dir);
b->show_label = ci->show_label;
b->inst = inst;
inst->ibar = b;
o = b->o_box;
@ -249,7 +251,7 @@ _ibar_new(Evas *evas, char *dir)
homedir = e_user_homedir_get();
if (homedir)
{
snprintf(buf, sizeof(buf), "%s/.e/e/applications/%s", homedir, dir);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s", homedir, dir);
free(homedir);
}
}
@ -281,6 +283,7 @@ _ibar_fill(IBar *b)
Evas_List *l;
E_App *a;
if (!b->apps) return;
for (l = b->apps->subapps; l; l = l->next)
{
a = l->data;
@ -360,6 +363,7 @@ _ibar_config_item_get(char *id)
}
ci = E_NEW(Config_Item, 1);
ci->id = evas_stringshare_add(id);
ci->show_label = 1;
ibar_config->items = evas_list_append(ibar_config->items, ci);
return ci;
}
@ -403,6 +407,7 @@ _ibar_config_update(void)
_ibar_resize_handle(inst->ibar);
_gc_orient(inst->gcc);
}
inst->ibar->show_label = ci->show_label;
}
}
@ -450,6 +455,7 @@ _ibar_icon_new(IBar *b, E_App *a)
ic->o_holder = edje_object_add(evas_object_evas_get(b->o_box));
e_theme_edje_object_set(ic->o_holder, "base/theme/modules/ibar",
"modules/ibar/icon");
edje_object_part_text_set(ic->o_holder, "label", a->name);
evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_IN, _ibar_cb_icon_mouse_in, ic);
evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_OUT, _ibar_cb_icon_mouse_out, ic);
evas_object_event_callback_add(ic->o_holder, EVAS_CALLBACK_MOUSE_DOWN, _ibar_cb_icon_mouse_down, ic);
@ -462,6 +468,7 @@ _ibar_icon_new(IBar *b, E_App *a)
ic->o_holder2 = edje_object_add(evas_object_evas_get(b->o_box));
e_theme_edje_object_set(ic->o_holder2, "base/theme/modules/ibar",
"modules/ibar/icon_overlay");
edje_object_part_text_set(ic->o_holder2, "label", a->name);
evas_object_layer_set(ic->o_holder2, 9999);
evas_object_pass_events_set(ic->o_holder2, 1);
evas_object_show(ic->o_holder2);
@ -710,6 +717,8 @@ _ibar_cb_icon_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
ev = event_info;
ic = data;
_ibar_icon_signal_emit(ic, "active", "");
if (ic->ibar->show_label)
_ibar_icon_signal_emit(ic, "label_active", "");
}
static void
@ -721,6 +730,8 @@ _ibar_cb_icon_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
ev = event_info;
ic = data;
_ibar_icon_signal_emit(ic, "passive", "");
if (ic->ibar->show_label)
_ibar_icon_signal_emit(ic, "label_passive", "");
}
static void
@ -1137,6 +1148,7 @@ e_modapi_init(E_Module *m)
#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);
conf_edd = E_CONFIG_DD_NEW("IBar_Config", Config);
#undef T
@ -1155,7 +1167,8 @@ e_modapi_init(E_Module *m)
ci = E_NEW(Config_Item, 1);
ci->id = evas_stringshare_add("0");
ci->dir = evas_stringshare_add("bar");
ci->dir = evas_stringshare_add("default");
ci->show_label = 1;
ibar_config->items = evas_list_append(ibar_config->items, ci);
}

View File

@ -23,6 +23,7 @@ struct _Config_Item
{
char *id;
char *dir;
int show_label;
};
EAPI extern E_Module_Api e_modapi;