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:
Carsten Haitzler 2005-01-17 08:54:37 +00:00
parent 876e0b361e
commit ffa49a8e02
8 changed files with 326 additions and 12 deletions

1
TODO
View File

@ -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>

View File

@ -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;
}

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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();

View File

@ -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);
}
}

View File

@ -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;
}