forked from enlightenment/enlightenment
some more gadman stuff - innocuous for now. hooked in soem gadman
enable/disable edit mode and fixed a stakcign issue with new windows vs. menus. SVN revision: 12997
This commit is contained in:
parent
876e0b361e
commit
ffa49a8e02
1
TODO
1
TODO
|
@ -40,6 +40,7 @@ ISSUES:
|
|||
* e_apps polling/updates is broken
|
||||
* objects need object types to check the right obj type is passed
|
||||
* check on delete all app files/dirs then add all back then pop up menu (segv)
|
||||
* border show/hide needs to show from top down and hide from bottom up
|
||||
|
||||
<add more issues as they are found>
|
||||
|
||||
|
|
|
@ -6,6 +6,25 @@
|
|||
/* local subsystem functions */
|
||||
static void _e_gadman_free(E_Gadman *gm);
|
||||
static void _e_gadman_client_free(E_Gadman_Client *gmc);
|
||||
static void _e_gadman_client_edit_begin(E_Gadman_Client *gmc);
|
||||
static void _e_gadman_client_edit_end(E_Gadman_Client *gmc);
|
||||
|
||||
|
||||
static void _e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
static void _e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||
|
||||
/* externally accessible functions */
|
||||
int
|
||||
|
@ -41,6 +60,7 @@ e_gadman_client_new(E_Gadman *gm)
|
|||
if (!gmc) return NULL;
|
||||
gmc->gadman = gm;
|
||||
gmc->policy = E_GADMAN_POLICY_ANYWHERE;
|
||||
gmc->zone = e_zone_current_get(gm->container);
|
||||
gmc->minw = 1;
|
||||
gmc->minh = 1;
|
||||
gmc->maxw = 0;
|
||||
|
@ -53,6 +73,48 @@ e_gadman_client_new(E_Gadman *gm)
|
|||
return gmc;
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode)
|
||||
{
|
||||
Evas_List *l;
|
||||
|
||||
E_OBJECT_CHECK(gm);
|
||||
if (gm->mode == mode) return;
|
||||
gm->mode = mode;
|
||||
if (gm->mode == E_GADMAN_MODE_EDIT)
|
||||
{
|
||||
for (l = gm->clients; l; l = l->next)
|
||||
_e_gadman_client_edit_begin(l->data);
|
||||
}
|
||||
else if (gm->mode == E_GADMAN_MODE_NORMAL)
|
||||
{
|
||||
for (l = gm->clients; l; l = l->next)
|
||||
_e_gadman_client_edit_end(l->data);
|
||||
}
|
||||
}
|
||||
|
||||
E_Gadman_Mode
|
||||
e_gadman_mode_get(E_Gadman *gm)
|
||||
{
|
||||
E_OBJECT_CHECK_RETURN(gm, E_GADMAN_MODE_NORMAL);
|
||||
return gm->mode;
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance)
|
||||
{
|
||||
E_OBJECT_CHECK(gmc);
|
||||
/* cave all values */
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance)
|
||||
{
|
||||
E_OBJECT_CHECK(gmc);
|
||||
/* load all the vales */
|
||||
/* implement all the values */
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance)
|
||||
{
|
||||
|
@ -63,15 +125,10 @@ e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance)
|
|||
}
|
||||
|
||||
void
|
||||
e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance)
|
||||
{
|
||||
E_OBJECT_CHECK(gmc);
|
||||
}
|
||||
|
||||
void
|
||||
e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance)
|
||||
e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone)
|
||||
{
|
||||
E_OBJECT_CHECK(gmc);
|
||||
gmc->zone = zone;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -145,3 +202,174 @@ _e_gadman_client_free(E_Gadman_Client *gmc)
|
|||
if (gmc->domain) free(gmc->domain);
|
||||
free(gmc);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_client_edit_begin(E_Gadman_Client *gmc)
|
||||
{
|
||||
gmc->control_object = edje_object_add(gmc->gadman->container->bg_evas);
|
||||
evas_object_layer_set(gmc->control_object, 100);
|
||||
evas_object_move(gmc->control_object, gmc->x, gmc->y);
|
||||
evas_object_resize(gmc->control_object, gmc->w, gmc->h);
|
||||
edje_object_file_set(gmc->control_object,
|
||||
/* FIXME: "default.eet" needs to come from conf */
|
||||
e_path_find(path_themes, "default.eet"),
|
||||
"gadman/control");
|
||||
edje_object_signal_callback_add(gmc->control_object, "move_start", "*",
|
||||
_e_gadman_cb_signal_move_start, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "move_stop", "*",
|
||||
_e_gadman_cb_signal_move_stop, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "move_go", "*",
|
||||
_e_gadman_cb_signal_move_go, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_start", "left",
|
||||
_e_gadman_cb_signal_resize_left_start, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "left",
|
||||
_e_gadman_cb_signal_resize_left_stop, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_go", "left",
|
||||
_e_gadman_cb_signal_resize_left_go, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_start", "right",
|
||||
_e_gadman_cb_signal_resize_right_start, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "right",
|
||||
_e_gadman_cb_signal_resize_right_stop, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_go", "right",
|
||||
_e_gadman_cb_signal_resize_right_go, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_start", "up",
|
||||
_e_gadman_cb_signal_resize_up_start, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "up",
|
||||
_e_gadman_cb_signal_resize_up_stop, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_go", "up",
|
||||
_e_gadman_cb_signal_resize_up_go, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_start", "down",
|
||||
_e_gadman_cb_signal_resize_down_start, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_stop", "down",
|
||||
_e_gadman_cb_signal_resize_down_stop, gmc);
|
||||
edje_object_signal_callback_add(gmc->control_object, "resize_go", "down",
|
||||
_e_gadman_cb_signal_resize_down_go, gmc);
|
||||
evas_object_show(gmc->control_object);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_client_edit_end(E_Gadman_Client *gmc)
|
||||
{
|
||||
evas_object_del(gmc->control_object);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_move_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_move_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_left_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_right_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_up_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_down_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emission, const char *source)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = data;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,9 +20,15 @@ typedef enum _E_Gadman_Policy
|
|||
typedef enum _E_Gadman_Change
|
||||
{
|
||||
E_GADMAN_CHANGE_MOVE,
|
||||
E_GADMAN_CHANGE_RESIZE,
|
||||
E_GADMAN_CHANGE_RESIZE
|
||||
} E_Gadman_Change;
|
||||
|
||||
typedef enum _E_Gadman_Mode
|
||||
{
|
||||
E_GADMAN_MODE_NORMAL,
|
||||
E_GADMAN_MODE_EDIT
|
||||
} E_Gadman_Mode;
|
||||
|
||||
typedef struct _E_Gadman E_Gadman;
|
||||
typedef struct _E_Gadman_Client E_Gadman_Client;
|
||||
|
||||
|
@ -35,6 +41,7 @@ struct _E_Gadman
|
|||
E_Object e_obj_inherit;
|
||||
E_Container *container;
|
||||
Evas_List *clients;
|
||||
E_Gadman_Mode mode;
|
||||
};
|
||||
|
||||
struct _E_Gadman_Client
|
||||
|
@ -44,6 +51,7 @@ struct _E_Gadman_Client
|
|||
|
||||
Evas_Object *control_object;
|
||||
char *domain;
|
||||
E_Zone *zone;
|
||||
int instance;
|
||||
E_Gadman_Policy policy;
|
||||
Evas_Coord x, y, w, h;
|
||||
|
@ -56,11 +64,14 @@ struct _E_Gadman_Client
|
|||
|
||||
EAPI int e_gadman_init(void);
|
||||
EAPI int e_gadman_shutdown(void);
|
||||
EAPI void e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode);
|
||||
EAPI E_Gadman_Mode e_gadman_mode_get(E_Gadman *gm);
|
||||
EAPI E_Gadman *e_gadman_new(E_Container *con);
|
||||
EAPI E_Gadman_Client *e_gadman_client_new(E_Gadman *gm);
|
||||
EAPI void e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance);
|
||||
EAPI void e_gadman_client_save(E_Gadman_Client *gmc, char *domain, int instance);
|
||||
EAPI void e_gadman_client_load(E_Gadman_Client *gmc, char *domain, int instance);
|
||||
EAPI void e_gadman_client_domain_set(E_Gadman_Client *gmc, char *domain, int instance);
|
||||
EAPI void e_gadman_client_zone_set(E_Gadman_Client *gmc, E_Zone *zone);
|
||||
EAPI void e_gadman_client_policy_set(E_Gadman_Client *gmc, E_Gadman_Policy pol);
|
||||
EAPI void e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Coord minw, Evas_Coord minh);
|
||||
EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh);
|
||||
|
|
|
@ -12,6 +12,7 @@ struct _Main_Data
|
|||
E_Menu *desktops;
|
||||
E_Menu *clients;
|
||||
E_Menu *modules;
|
||||
E_Menu *gadgets;
|
||||
};
|
||||
|
||||
/* local subsystem functions */
|
||||
|
@ -33,6 +34,8 @@ static void _e_int_menus_desktops_row_add_cb (void *data, E_Menu *m, E_Menu_Item
|
|||
static void _e_int_menus_desktops_row_del_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_desktops_col_add_cb (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _e_int_menus_desktops_col_del_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);
|
||||
|
||||
/* externally accessible functions */
|
||||
E_Menu *
|
||||
|
@ -83,6 +86,14 @@ e_int_menus_main_new(void)
|
|||
"windows");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
subm = e_int_menus_gadgets_new();
|
||||
dat->gadgets = subm;
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, "Gadgets");
|
||||
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"),
|
||||
"gadgets");
|
||||
e_menu_item_submenu_set(mi, subm);
|
||||
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_separator_set(mi, 1);
|
||||
|
||||
|
@ -133,7 +144,6 @@ e_int_menus_desktops_new(void)
|
|||
e_menu_pre_activate_callback_set(m, _e_int_menus_desktops_pre_cb, NULL);
|
||||
return m;
|
||||
}
|
||||
|
||||
|
||||
E_Menu *
|
||||
e_int_menus_favorite_apps_new(void)
|
||||
|
@ -163,6 +173,16 @@ e_int_menus_clients_new(void)
|
|||
return m;
|
||||
}
|
||||
|
||||
E_Menu *
|
||||
e_int_menus_gadgets_new(void)
|
||||
{
|
||||
E_Menu *m;
|
||||
|
||||
m = e_menu_new();
|
||||
e_menu_pre_activate_callback_set(m, _e_int_menus_gadgets_pre_cb, NULL);
|
||||
return m;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_e_int_menus_main_del_hook(void *obj)
|
||||
|
@ -178,6 +198,7 @@ _e_int_menus_main_del_hook(void *obj)
|
|||
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));
|
||||
free(dat);
|
||||
}
|
||||
}
|
||||
|
@ -481,3 +502,42 @@ _e_int_menus_clients_item_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_border_raise(bd);
|
||||
e_border_focus_set(bd, 1, 1);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_gadgets_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);
|
||||
if ((root) && (root->zone))
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_check_set(mi, 1);
|
||||
if (e_gadman_mode_get(root->zone->container->gadman) == E_GADMAN_MODE_EDIT)
|
||||
e_menu_item_toggle_set(mi, 1);
|
||||
else
|
||||
e_menu_item_toggle_set(mi, 0);
|
||||
e_menu_item_label_set(mi, "Edit Mode");
|
||||
e_menu_item_callback_set(mi, _e_int_menus_gadgets_edit_mode_cb, root->zone->container->gadman);
|
||||
}
|
||||
else
|
||||
{
|
||||
mi = e_menu_item_new(m);
|
||||
e_menu_item_label_set(mi, "(Unused)");
|
||||
e_menu_item_callback_set(mi, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_int_menus_gadgets_edit_mode_cb(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
E_Gadman *gm;
|
||||
|
||||
gm = data;
|
||||
if (e_menu_item_toggle_get(mi))
|
||||
e_gadman_mode_set(gm, E_GADMAN_MODE_EDIT);
|
||||
else
|
||||
e_gadman_mode_set(gm, E_GADMAN_MODE_NORMAL);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ EAPI E_Menu *e_int_menus_desktops_new(void);
|
|||
EAPI E_Menu *e_int_menus_clients_new(void);
|
||||
EAPI E_Menu *e_int_menus_apps_new(char *dir);
|
||||
EAPI E_Menu *e_int_menus_favorite_apps_new(void);
|
||||
EAPI E_Menu *e_int_menus_gadgets_new(void);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -534,6 +534,16 @@ _e_main_screens_init(void)
|
|||
i);
|
||||
return 0;
|
||||
}
|
||||
/* FIXME: testing... */
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
gmc = e_gadman_client_new(con->gadman);
|
||||
gmc->x = 100;
|
||||
gmc->y = 100;
|
||||
gmc->w = 150;
|
||||
gmc->h = 150;
|
||||
}
|
||||
}
|
||||
free(roots);
|
||||
ecore_x_sync();
|
||||
|
|
|
@ -192,7 +192,11 @@ _e_manager_cb_window_show_request(void *data, int ev_type, void *ev)
|
|||
if (!e_border_find_by_client_window(e->win))
|
||||
{
|
||||
bd = e_border_new(con, e->win, 0);
|
||||
if (bd) e_border_show(bd);
|
||||
if (bd)
|
||||
{
|
||||
e_border_raise(bd);
|
||||
e_border_show(bd);
|
||||
}
|
||||
else ecore_x_window_show(e->win);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,7 +89,6 @@ e_zone_new(E_Container *con, int x, int y, int w, int h)
|
|||
e_zone_desk_count_set(zone,
|
||||
e_config->zone_desks_x_count,
|
||||
e_config->zone_desks_y_count);
|
||||
|
||||
return zone;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue