e-modules/engage: add bar automatically when new config is created

SVN revision: 58422
This commit is contained in:
Hannes Janetzek 2011-04-07 11:49:16 +00:00
parent 8cddebfef2
commit c0d8f1b61e
4 changed files with 110 additions and 142 deletions

View File

@ -220,43 +220,23 @@ ngi_new(Config_Item *cfg)
break;
}
}
#define HANDLE(_event, _cb) \
ng->handlers = eina_list_append(ng->handlers, ecore_event_handler_add(_event, _cb, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_X_EVENT_MOUSE_IN, _ngi_win_cb_mouse_in, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_X_EVENT_MOUSE_OUT, _ngi_win_cb_mouse_out, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_EVENT_MOUSE_BUTTON_DOWN, _ngi_win_cb_mouse_down, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_EVENT_MOUSE_BUTTON_UP, _ngi_win_cb_mouse_up, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_EVENT_MOUSE_WHEEL, _ngi_win_cb_mouse_wheel, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(ECORE_EVENT_MOUSE_MOVE, _ngi_win_cb_mouse_move, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_DESK_SHOW, _ngi_win_cb_desk_show, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_BORDER_PROPERTY, _ngi_win_cb_border_event, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_BORDER_MOVE, _ngi_win_cb_border_event, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_BORDER_RESIZE, _ngi_win_cb_border_event, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_BORDER_ADD, _ngi_win_cb_border_event, ng));
ng->handlers = eina_list_append
(ng->handlers, ecore_event_handler_add
(E_EVENT_BORDER_REMOVE, _ngi_win_cb_border_event, ng));
HANDLE(ECORE_X_EVENT_MOUSE_IN, _ngi_win_cb_mouse_in);
HANDLE(ECORE_X_EVENT_MOUSE_OUT, _ngi_win_cb_mouse_out);
HANDLE(ECORE_EVENT_MOUSE_BUTTON_DOWN, _ngi_win_cb_mouse_down);
HANDLE(ECORE_EVENT_MOUSE_BUTTON_UP, _ngi_win_cb_mouse_up);
HANDLE(ECORE_EVENT_MOUSE_WHEEL, _ngi_win_cb_mouse_wheel);
HANDLE(ECORE_EVENT_MOUSE_MOVE, _ngi_win_cb_mouse_move);
HANDLE(E_EVENT_DESK_SHOW, _ngi_win_cb_desk_show);
HANDLE(E_EVENT_BORDER_PROPERTY, _ngi_win_cb_border_event);
HANDLE(E_EVENT_BORDER_MOVE, _ngi_win_cb_border_event);
HANDLE(E_EVENT_BORDER_RESIZE, _ngi_win_cb_border_event);
HANDLE(E_EVENT_BORDER_ADD, _ngi_win_cb_border_event);
HANDLE(E_EVENT_BORDER_REMOVE, _ngi_win_cb_border_event);
#undef HANDLE
if (ng->cfg->autohide == AUTOHIDE_FULLSCREEN)
{
@ -1804,6 +1784,78 @@ _ngi_config_free()
ngi_config = NULL;
}
Config_Item *
ngi_bar_config_new(int container_num, int zone_num)
{
Config_Item *cfg;
Config_Box *cfg_box;
char buf[4096];
char tmp[4096];
FILE *f;
char *app_dir = "engage";
cfg = E_NEW(Config_Item, 1);
cfg->show_label = 1;
cfg->show_background = 1;
cfg->container = container_num;
cfg->zone = zone_num;
cfg->orient = E_GADCON_ORIENT_BOTTOM;
cfg->size = 36;
cfg->autohide = AUTOHIDE_FULLSCREEN;
cfg->autohide_show_urgent = 0;
cfg->hide_below_windows = 0;
cfg->zoom_duration = 0.3;
cfg->zoom_range = 1.5;
cfg->hide_timeout = 0.1;
cfg->zoomfactor = 2.0;
cfg->alpha = 255;
cfg->stacking = above_all;
cfg->mouse_over_anim = 1;
cfg->lock_deskswitch = 1;
cfg->ecomorph_features = 0;
cfg->boxes = NULL;
cfg_box = E_NEW(Config_Box, 1);
cfg_box->type = launcher;
cfg_box->launcher_app_dir = eina_stringshare_add(app_dir);
cfg_box->launcher_lock_dnd = 0;
cfg->boxes = eina_list_append(cfg->boxes, cfg_box);
cfg_box = E_NEW(Config_Box, 1);
cfg_box->type = taskbar;
cfg_box->taskbar_adv_bordermenu = 0;
cfg_box->taskbar_skip_dialogs = 0;
cfg_box->taskbar_show_iconified = 1;
cfg_box->taskbar_show_desktop = 0;
cfg_box->taskbar_append_right = 0;
cfg_box->taskbar_group_apps = 1;
cfg->boxes = eina_list_append(cfg->boxes, cfg_box);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s",
e_user_homedir_get(), app_dir);
if (!ecore_file_exists(buf))
{
ecore_file_mkdir(buf);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s/.order",
e_user_homedir_get(), app_dir);
f = fopen(buf, "w");
if (f)
{
snprintf(tmp, sizeof(tmp),
"xterm.desktop\n"
"firefox.desktop\n"
"gimp.desktop\n");
fwrite(tmp, sizeof(char), strlen(tmp), f);
fclose(f);
}
}
ngi_config->items = eina_list_append(ngi_config->items, cfg);
return cfg;
}
EAPI void *
e_modapi_init(E_Module *m)
{
@ -1870,6 +1922,8 @@ e_modapi_init(E_Module *m)
{
ngi_config = E_NEW(Config, 1);
ngi_config->version = (MOD_CONFIG_FILE_EPOCH << 16);
ngi_bar_new(0, 0);
}
ngi_config->cfd = NULL;
@ -1905,8 +1959,8 @@ e_modapi_init(E_Module *m)
e_module_delayed_set(m, 1);
_ngi_init_timer_cb(NULL);
maug = e_int_menus_menu_augmentation_add
("config/1", _e_mod_menu_add, NULL, NULL, NULL);
/* maug = e_int_menus_menu_augmentation_add
* ("config/1", _e_mod_menu_add, NULL, NULL, NULL); */
return m;
}

View File

@ -311,6 +311,7 @@ void ngi_mouse_in (Ng *ng);
void ngi_mouse_out (Ng *ng);
Ngi_Item * ngi_item_at_position_get (Ng *ng);
void ngi_bar_lock (Ng *ng, int lock);
Config_Item *ngi_bar_config_new (int container_num, int zone_num);
void ngi_win_show (Ngi_Win *win);
void ngi_win_hide (Ngi_Win *win);

View File

@ -228,7 +228,6 @@ _cb_add(void *data, void *data2)
E_Config_Dialog_Data *cfdata = (E_Config_Dialog_Data *)data;
Config_Item *cfg;
Config_Box *cfg_box;
E_Container *con;
E_Zone *zone;
@ -238,73 +237,7 @@ _cb_add(void *data, void *data2)
con = e_container_current_get(e_manager_current_get());
zone = e_zone_current_get(con);
cfg = E_NEW(Config_Item, 1);
cfg->show_label = 1;
cfg->show_background = 1;
cfg->container = con->num;
cfg->zone = zone->num;
cfg->orient = E_GADCON_ORIENT_BOTTOM;
cfg->size = 36;
cfg->autohide = AUTOHIDE_FULLSCREEN;
cfg->autohide_show_urgent = 0;
cfg->hide_below_windows = 0;
cfg->zoom_duration = 0.3;
cfg->zoom_range = 1.5;
cfg->hide_timeout = 0.1;
cfg->zoomfactor = 2.0;
cfg->alpha = 255;
cfg->stacking = above_all;
cfg->mouse_over_anim = 1;
cfg->lock_deskswitch = 1;
cfg->ecomorph_features = 0;
cfg->boxes = NULL;
cfg_box = E_NEW(Config_Box, 1);
cfg_box->type = launcher;
cfg_box->launcher_app_dir = eina_stringshare_add("default");
cfg_box->launcher_lock_dnd = 0;
cfg->boxes = eina_list_append(cfg->boxes, cfg_box);
cfg_box = E_NEW(Config_Box, 1);
cfg_box->type = taskbar;
cfg_box->taskbar_adv_bordermenu = 0;
cfg_box->taskbar_skip_dialogs = 0;
cfg_box->taskbar_show_iconified = 1;
cfg_box->taskbar_show_desktop = 0;
cfg_box->taskbar_append_right = 0;
cfg_box->taskbar_group_apps = 1;
cfg->boxes = eina_list_append(cfg->boxes, cfg_box);
ngi_config->items = eina_list_append(ngi_config->items, cfg);
e_config_domain_save("module.ng", ngi_conf_edd, ngi_config);
char buf[4096];
char tmp[4096];
FILE *f;
char *app_dir = "default";
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s",
e_user_homedir_get(), app_dir);
if (!ecore_file_exists(buf))
{
ecore_file_mkdir(buf);
snprintf(buf, sizeof(buf), "%s/.e/e/applications/bar/%s/.order",
e_user_homedir_get(), app_dir);
f = fopen(buf, "w");
if (f)
{
/* Populate this .order file with some defaults */
snprintf(tmp, sizeof(tmp), "xterm.desktop\n" "sylpheed.desktop\n"
"firefox.desktop\n" "openoffice.desktop\n" "xchat.desktop\n"
"gimp.desktop\n" "xmms.desktop\n");
fwrite(tmp, sizeof(char), strlen(tmp), f);
fclose(f);
}
}
cfg = ngi_bar_config_new(con->num, zone->num);
ngi_new(cfg);

View File

@ -54,38 +54,21 @@ ngi_taskbar_new(Ng *ng, Config_Box *cfg)
_cb_drop_leave, _cb_drop_end,
drop, 3, 0, 0, 0, 0);
h = ecore_event_handler_add(E_EVENT_BORDER_ADD, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
#define HANDLE(_event, _cb) \
box->handlers = eina_list_append(box->handlers, ecore_event_handler_add(_event, _cb, box));
h = ecore_event_handler_add(E_EVENT_BORDER_REMOVE, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_ICONIFY, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_UNICONIFY, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_PROPERTY, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_ZONE_SET, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_URGENT_CHANGE, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_FOCUS_IN, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_BORDER_FOCUS_OUT, _cb_border_event, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
h = ecore_event_handler_add(E_EVENT_DESK_SHOW, _cb_desk_show, box);
if (h) box->handlers = eina_list_append(box->handlers, h);
HANDLE(E_EVENT_BORDER_ADD, _cb_border_event);
HANDLE(E_EVENT_BORDER_REMOVE, _cb_border_event);
HANDLE(E_EVENT_BORDER_ICONIFY, _cb_border_event);
HANDLE(E_EVENT_BORDER_UNICONIFY, _cb_border_event);
HANDLE(E_EVENT_BORDER_ICON_CHANGE, _cb_border_event);
HANDLE(E_EVENT_BORDER_PROPERTY, _cb_border_event);
HANDLE(E_EVENT_BORDER_ZONE_SET, _cb_border_event);
HANDLE(E_EVENT_BORDER_URGENT_CHANGE, _cb_border_event);
HANDLE(E_EVENT_BORDER_FOCUS_IN, _cb_border_event);
HANDLE(E_EVENT_BORDER_FOCUS_OUT, _cb_border_event);
HANDLE(E_EVENT_DESK_SHOW, _cb_desk_show);
#undef HANDLE
bl = e_container_border_list_first(box->ng->zone->container);
@ -114,9 +97,6 @@ ngi_taskbar_remove(Ngi_Box *box)
static int
_border_check(Ngi_Box *box, E_Border *bd)
{
/* if (box->cfg->taskbar_show_desktop && bd->desk != e_desk_current_get(box->ng->zone))
* return 0; */
if (box->ng->zone != bd->zone)
return 0;