more gadman work

SVN revision: 13005
This commit is contained in:
Carsten Haitzler 2005-01-18 15:40:54 +00:00
parent b9f1ca813c
commit ec993d1e3b
4 changed files with 338 additions and 42 deletions

View File

@ -16,6 +16,50 @@ images {
group {
name: "gadman/control";
parts {
part {
name: "hclip";
mouse_events: 0;
type: RECT;
description {
state: "default" 0.0;
visible : 1;
rel1 {
relative: 0.0 0.0;
offset: -80 -80;
}
rel2 {
relative: 1.0 1.0;
offset: 79 79;
}
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
visible : 0;
}
}
part {
name: "vclip";
mouse_events: 0;
type: RECT;
description {
state: "default" 0.0;
visible : 1;
rel1 {
relative: 0.0 0.0;
offset: -80 -80;
}
rel2 {
relative: 1.0 1.0;
offset: 79 79;
}
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
visible : 0;
}
}
part {
name: "indicator";
mouse_events: 0;
@ -27,6 +71,11 @@ group {
normal: "e17_gadman_indicator.png";
}
}
description {
state: "disabled" 0.0;
inherit: "default" 0.0;
visible: 0;
}
}
part {
name: "overlay";
@ -556,6 +605,7 @@ group {
part {
name: "h1";
mouse_events: 1;
clip_to: "hclip";
description {
state: "default" 0.0;
align: 1.0 0.5;
@ -614,6 +664,7 @@ group {
part {
name: "h2";
mouse_events: 1;
clip_to: "hclip";
description {
state: "default" 0.0;
align: 0.0 0.5;
@ -672,6 +723,7 @@ group {
part {
name: "v1";
mouse_events: 1;
clip_to: "vclip";
description {
state: "default" 0.0;
align: 0.5 1.0;
@ -730,6 +782,7 @@ group {
part {
name: "v2";
mouse_events: 1;
clip_to: "vclip";
description {
state: "default" 0.0;
align: 0.5 0.0;
@ -787,6 +840,60 @@ group {
}
}
programs {
program {
name: "api_hsize_on";
signal: "hsize";
source: "on";
action: STATE_SET "default" 0.0;
target: "hclip";
}
program {
name: "api_hsize_off";
signal: "hsize";
source: "off";
action: STATE_SET "disabled" 0.0;
target: "hclip";
}
program {
name: "api_vsize_on";
signal: "vsize";
source: "on";
action: STATE_SET "default" 0.0;
target: "vclip";
}
program {
name: "api_vsize_off";
signal: "vsize";
source: "off";
action: STATE_SET "disabled" 0.0;
target: "vclip";
}
program {
name: "api_move_on";
signal: "move";
source: "on";
action: STATE_SET "default" 0.0;
target: "indicator";
}
program {
name: "api_move_off";
signal: "move";
source: "off";
action: STATE_SET "disabled" 0.0;
target: "indicator";
}
/*
program {
name: "api_active";
signal: "active";
source: "";
}
program {
name: "api_inactive";
signal: "inactive";
source: "";
}
*/
program {
name: "mv_down";
signal: "mouse,down,1";

View File

@ -3,9 +3,15 @@
*/
#include "e.h"
/* FIXME: display resize handles ONLY if can be resizded in that dir */
/* FIXME: display move indicator ONLY if it can be moved in either dir */
/* FIXME: emit signal on mouse in/out to event object */
/* FIXME: corner case if module is sized to full screen... cant stop edit or */
/* re-enter edit mode (cant access root menu) */
/* FIXME: handle edge move/changes */
/* FIXME: handle move resist */
/* FIXME: handle resize resist */
/* FIXME: handle drag from zone to zone */
/* FIXME: handle save */
/* FIXME: handle load */
/* local subsystem functions */
static void _e_gadman_free(E_Gadman *gm);
@ -15,6 +21,7 @@ static void _e_gadman_client_edit_end(E_Gadman_Client *gmc);
static void _e_gadman_client_down_store(E_Gadman_Client *gmc);
static int _e_gadman_client_is_being_modified(E_Gadman_Client *gmc);
static void _e_gadman_client_geometry_to_align(E_Gadman_Client *gmc);
static void _e_gadman_client_aspect_enforce(E_Gadman_Client *gmc, double cx, double cy, int use_horiz);
static void _e_gadman_client_geometry_apply(E_Gadman_Client *gmc);
static void _e_gadman_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_info);
@ -42,10 +49,12 @@ static void _e_gadman_cb_menu_end(void *data, E_Menu *m);
static void _e_gadman_cb_half_width(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_full_width(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_auto_width(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_center_horiz(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_half_height(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_full_height(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_auto_height(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_gadman_cb_center_vert(void *data, E_Menu *m, E_Menu_Item *mi);
/* externally accessible functions */
@ -72,29 +81,6 @@ e_gadman_new(E_Container *con)
return gm;
}
E_Gadman_Client *
e_gadman_client_new(E_Gadman *gm)
{
E_Gadman_Client *gmc;
E_OBJECT_CHECK_RETURN(gm, NULL);
gmc = E_OBJECT_ALLOC(E_Gadman_Client, _e_gadman_client_free);
if (!gmc) return NULL;
gmc->gadman = gm;
gmc->policy = E_GADMAN_POLICY_ANYWHERE | E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
gmc->zone = e_zone_current_get(gm->container);
gmc->minw = 1;
gmc->minh = 1;
gmc->maxw = 0;
gmc->maxh = 0;
gmc->ax = 0.0;
gmc->ay = 1.0;
gmc->mina = 0.0;
gmc->maxa = 9999999.0;
gm->clients = evas_list_append(gm->clients, gmc);
return gmc;
}
void
e_gadman_mode_set(E_Gadman *gm, E_Gadman_Mode mode)
{
@ -122,6 +108,30 @@ e_gadman_mode_get(E_Gadman *gm)
return gm->mode;
}
E_Gadman_Client *
e_gadman_client_new(E_Gadman *gm)
{
E_Gadman_Client *gmc;
E_OBJECT_CHECK_RETURN(gm, NULL);
gmc = E_OBJECT_ALLOC(E_Gadman_Client, _e_gadman_client_free);
if (!gmc) return NULL;
gmc->gadman = gm;
gmc->policy = E_GADMAN_POLICY_ANYWHERE | E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
gmc->zone = e_zone_current_get(gm->container);
gmc->edge = E_GADMAN_EDGE_BOTTOM;
gmc->minw = 1;
gmc->minh = 1;
gmc->maxw = 0;
gmc->maxh = 0;
gmc->ax = 0.0;
gmc->ay = 1.0;
gmc->mina = 0.0;
gmc->maxa = 9999999.0;
gm->clients = evas_list_append(gm->clients, gmc);
return gmc;
}
void
e_gadman_client_save(E_Gadman_Client *gmc)
{
@ -129,6 +139,13 @@ e_gadman_client_save(E_Gadman_Client *gmc)
/* save all values */
}
void
e_gadman_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge)
{
E_OBJECT_CHECK(gmc);
gmc->edge = edge;
}
void
e_gadman_client_load(E_Gadman_Client *gmc)
{
@ -192,6 +209,14 @@ e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa)
gmc->maxa = maxa;
}
void
e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh)
{
E_OBJECT_CHECK(gmc);
gmc->autow = autow;
gmc->autoh = autoh;
}
void
e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
@ -223,6 +248,18 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
if (gmc->policy & E_GADMAN_POLICY_HSIZE)
{
if (gmc->autow > 0)
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, "Automatic Width");
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, gmc->use_autow);
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"),
"auto_width");
e_menu_item_callback_set(mi, _e_gadman_cb_auto_width, gmc);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
}
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, "Half Screen Width");
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"),
@ -242,12 +279,28 @@ e_gadman_client_menu_new(E_Gadman_Client *gmc)
"center_horiz");
e_menu_item_callback_set(mi, _e_gadman_cb_center_horiz, gmc);
}
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
if (((gmc->policy & E_GADMAN_POLICY_HSIZE) ||
(gmc->policy & E_GADMAN_POLICY_HMOVE)) &&
((gmc->policy & E_GADMAN_POLICY_VSIZE) ||
(gmc->policy & E_GADMAN_POLICY_VMOVE)))
{
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
}
if (gmc->policy & E_GADMAN_POLICY_VSIZE)
{
if (gmc->autoh > 0)
{
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, "Automatic Height");
e_menu_item_check_set(mi, 1);
e_menu_item_toggle_set(mi, gmc->use_autoh);
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"),
"auto_eight");
e_menu_item_callback_set(mi, _e_gadman_cb_auto_height, gmc);
mi = e_menu_item_new(m);
e_menu_item_separator_set(mi, 1);
}
mi = e_menu_item_new(m);
e_menu_item_label_set(mi, "Half Screen Height");
e_menu_item_icon_edje_set(mi, e_path_find(path_icons, "default.eet"),
@ -340,6 +393,20 @@ _e_gadman_client_edit_begin(E_Gadman_Client *gmc)
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_UP, _e_gadman_cb_mouse_up, gmc);
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_IN, _e_gadman_cb_mouse_in, gmc);
evas_object_event_callback_add(gmc->event_object, EVAS_CALLBACK_MOUSE_OUT, _e_gadman_cb_mouse_out, gmc);
if (gmc->policy & E_GADMAN_POLICY_HSIZE)
edje_object_signal_emit(gmc->control_object, "hsize", "on");
else
edje_object_signal_emit(gmc->control_object, "hsize", "off");
if (gmc->policy & E_GADMAN_POLICY_VSIZE)
edje_object_signal_emit(gmc->control_object, "vsize", "on");
else
edje_object_signal_emit(gmc->control_object, "vsize", "off");
if (gmc->policy & (E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE))
edje_object_signal_emit(gmc->control_object, "move", "on");
else
edje_object_signal_emit(gmc->control_object, "move", "off");
evas_object_show(gmc->event_object);
evas_object_show(gmc->control_object);
}
@ -386,6 +453,44 @@ _e_gadman_client_geometry_to_align(E_Gadman_Client *gmc)
gmc->ay = 0.0;
}
static void
_e_gadman_client_aspect_enforce(E_Gadman_Client *gmc, double cx, double cy, int use_horiz)
{
Evas_Coord neww, newh;
double aspect;
int change = 0;
if (gmc->h > 0)
aspect = (double)gmc->w / (double) gmc->h;
else
aspect = 0.0;
neww = gmc->w;
newh = gmc->h;
if (aspect > gmc->maxa)
{
if (use_horiz)
newh = gmc->w / gmc->maxa;
else
neww = gmc->h * gmc->mina;
change = 1;
}
else if (aspect < gmc->mina)
{
if (use_horiz)
newh = gmc->w / gmc->maxa;
else
neww = gmc->h * gmc->mina;
change = 1;
}
if (change)
{
gmc->x = gmc->x + ((gmc->w - neww) * cx);
gmc->y = gmc->y + ((gmc->h - newh) * cy);
gmc->w = neww;
gmc->h = newh;
}
}
static void
_e_gadman_client_geometry_apply(E_Gadman_Client *gmc)
{
@ -404,7 +509,7 @@ _e_gadman_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_in
gmc = data;
ev = event_info;
if (_e_gadman_client_is_being_modified(gmc)) return;
/* FIXME: how do we preent this if you donthave a right mouse button */
/* FIXME: how do we prevent this if you don't have a right mouse button */
/* maybe make this menu available in he modules menu? */
if (ev->button == 3)
{
@ -441,6 +546,7 @@ _e_gadman_cb_mouse_in(void *data, Evas *evas, Evas_Object *obj, void *event_info
gmc = data;
ev = event_info;
if (_e_gadman_client_is_being_modified(gmc)) return;
edje_object_signal_emit(gmc->control_object, "active", "");
}
static void
@ -452,6 +558,7 @@ _e_gadman_cb_mouse_out(void *data, Evas *evas, Evas_Object *obj, void *event_inf
gmc = data;
ev = event_info;
if (_e_gadman_client_is_being_modified(gmc)) return;
edje_object_signal_emit(gmc->control_object, "inactive", "");
}
static void
@ -485,8 +592,14 @@ _e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
gmc = data;
if (!gmc->moving) return;
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
gmc->x = gmc->down_store_x + (x - gmc->down_x);
gmc->y = gmc->down_store_y + (y - gmc->down_y);
if (gmc->policy & E_GADMAN_POLICY_HMOVE)
gmc->x = gmc->down_store_x + (x - gmc->down_x);
else
gmc->x = gmc->down_store_x;
if (gmc->policy & E_GADMAN_POLICY_VMOVE)
gmc->y = gmc->down_store_y + (y - gmc->down_y);
else
gmc->y = gmc->down_store_y;
gmc->w = gmc->down_store_w;
gmc->h = gmc->down_store_h;
if (gmc->x < gmc->zone->x)
@ -497,8 +610,6 @@ _e_gadman_cb_signal_move_go(void *data, Evas_Object *obj, const char *emission,
gmc->y = gmc->zone->y;
else if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
gmc->y = gmc->zone->y + gmc->zone->h - gmc->h;
/* FIXME: move resist */
/* FIXME: detect move from zone to zone */
_e_gadman_client_geometry_apply(gmc);
}
@ -510,6 +621,7 @@ _e_gadman_cb_signal_resize_left_start(void *data, Evas_Object *obj, const char *
gmc = data;
if (_e_gadman_client_is_being_modified(gmc)) return;
_e_gadman_client_down_store(gmc);
gmc->autow = 0;
gmc->resizing_l = 1;
}
@ -532,6 +644,7 @@ _e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emi
gmc = data;
if (!gmc->resizing_l) return;
if (!(gmc->policy & E_GADMAN_POLICY_HSIZE)) return;
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
gmc->x = gmc->down_store_x + (x - gmc->down_x);
gmc->y = gmc->down_store_y;
@ -564,6 +677,7 @@ _e_gadman_cb_signal_resize_left_go(void *data, Evas_Object *obj, const char *emi
gmc->w = gmc->maxw;
}
}
_e_gadman_client_aspect_enforce(gmc, 1.0, 0.5, 1);
_e_gadman_client_geometry_apply(gmc);
}
@ -575,6 +689,7 @@ _e_gadman_cb_signal_resize_right_start(void *data, Evas_Object *obj, const char
gmc = data;
if (_e_gadman_client_is_being_modified(gmc)) return;
_e_gadman_client_down_store(gmc);
gmc->autow = 0;
gmc->resizing_r = 1;
}
@ -597,6 +712,7 @@ _e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *em
gmc = data;
if (!gmc->resizing_r) return;
if (!(gmc->policy & E_GADMAN_POLICY_HSIZE)) return;
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
gmc->x = gmc->down_store_x;
gmc->y = gmc->down_store_y;
@ -625,6 +741,7 @@ _e_gadman_cb_signal_resize_right_go(void *data, Evas_Object *obj, const char *em
gmc->w = gmc->maxw;
}
}
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
_e_gadman_client_geometry_apply(gmc);
}
@ -636,6 +753,7 @@ _e_gadman_cb_signal_resize_up_start(void *data, Evas_Object *obj, const char *em
gmc = data;
if (_e_gadman_client_is_being_modified(gmc)) return;
_e_gadman_client_down_store(gmc);
gmc->autoh = 0;
gmc->resizing_u = 1;
}
@ -658,6 +776,7 @@ _e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emiss
gmc = data;
if (!gmc->resizing_u) return;
if (!(gmc->policy & E_GADMAN_POLICY_VSIZE)) return;
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
gmc->x = gmc->down_store_x;
gmc->y = gmc->down_store_y + (y - gmc->down_y);
@ -690,6 +809,7 @@ _e_gadman_cb_signal_resize_up_go(void *data, Evas_Object *obj, const char *emiss
gmc->h = gmc->maxh;
}
}
_e_gadman_client_aspect_enforce(gmc, 0.5, 1.0, 0);
_e_gadman_client_geometry_apply(gmc);
}
@ -701,6 +821,7 @@ _e_gadman_cb_signal_resize_down_start(void *data, Evas_Object *obj, const char *
gmc = data;
if (_e_gadman_client_is_being_modified(gmc)) return;
_e_gadman_client_down_store(gmc);
gmc->autoh = 0;
gmc->resizing_d = 1;
}
@ -723,6 +844,7 @@ _e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emi
gmc = data;
if (!gmc->resizing_d) return;
if (!(gmc->policy & E_GADMAN_POLICY_VSIZE)) return;
evas_pointer_canvas_xy_get(gmc->gadman->container->bg_evas, &x, &y);
gmc->x = gmc->down_store_x;
gmc->y = gmc->down_store_y;
@ -751,6 +873,7 @@ _e_gadman_cb_signal_resize_down_go(void *data, Evas_Object *obj, const char *emi
gmc->h = gmc->maxh;
}
}
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
_e_gadman_client_geometry_apply(gmc);
}
@ -776,6 +899,8 @@ _e_gadman_cb_half_width(void *data, E_Menu *m, E_Menu_Item *mi)
{
if (gmc->w > gmc->maxw) gmc->w = gmc->maxw;
}
gmc->autow = 0;
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
@ -794,6 +919,30 @@ _e_gadman_cb_full_width(void *data, E_Menu *m, E_Menu_Item *mi)
if (gmc->w > gmc->maxw) gmc->w = gmc->maxw;
}
gmc->x = gmc->zone->x + ((gmc->zone->w - gmc->w) / 2);
gmc->autow = 0;
_e_gadman_client_aspect_enforce(gmc, 0.0, 0.5, 1);
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
}
static void
_e_gadman_cb_auto_width(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadman_Client *gmc;
gmc = data;
if (e_menu_item_toggle_get(mi))
{
gmc->autow = 1;
gmc->w = gmc->autow;
if (gmc->w > gmc->zone->w)
gmc->w = gmc->zone->w;
if ((gmc->x + gmc->w) > (gmc->zone->x + gmc->zone->w))
gmc->x = (gmc->zone->x + gmc->zone->w) - gmc->w;
}
else
gmc->autow = 0;
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
@ -823,7 +972,8 @@ _e_gadman_cb_half_height(void *data, E_Menu *m, E_Menu_Item *mi)
{
if (gmc->h > gmc->maxh) gmc->h = gmc->maxh;
}
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) / 2);
gmc->autoh = 0;
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
@ -842,11 +992,36 @@ _e_gadman_cb_full_height(void *data, E_Menu *m, E_Menu_Item *mi)
if (gmc->h > gmc->maxh) gmc->h = gmc->maxh;
}
gmc->y = gmc->zone->y + ((gmc->zone->h - gmc->h) / 2);
gmc->autoh = 0;
_e_gadman_client_aspect_enforce(gmc, 0.5, 0.0, 0);
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
}
static void
_e_gadman_cb_auto_height(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Gadman_Client *gmc;
gmc = data;
if (e_menu_item_toggle_get(mi))
{
gmc->autoh = 1;
gmc->h = gmc->autoh;
if (gmc->h > gmc->zone->h)
gmc->h = gmc->zone->h;
if ((gmc->y + gmc->h) > (gmc->zone->y + gmc->zone->h))
gmc->y = (gmc->zone->y + gmc->zone->h) - gmc->h;
}
else
gmc->autoh = 0;
_e_gadman_client_geometry_apply(gmc);
_e_gadman_client_geometry_to_align(gmc);
e_gadman_client_save(gmc);
}
static void
_e_gadman_cb_center_vert(void *data, E_Menu *m, E_Menu_Item *mi)
{

View File

@ -5,10 +5,6 @@ typedef enum _E_Gadman_Policy
/* type */
E_GADMAN_POLICY_ANYWHERE = 0,
E_GADMAN_POLICY_EDGES = 1,
E_GADMAN_POLICY_LEFT_EDGE = 2,
E_GADMAN_POLICY_RIGHT_EDGE = 3,
E_GADMAN_POLICY_TOP_EDGE = 4,
E_GADMAN_POLICY_BOTTOM_EDGE = 5,
/* extra flags */
E_GADMAN_POLICY_FIXED_ZONE = 1 << 8,
E_GADMAN_POLICY_HSIZE = 1 << 9,
@ -20,9 +16,19 @@ 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_EDGE,
E_GADMAN_CHANGE_ZONE
} E_Gadman_Change;
typedef enum _E_Gadman_Edge
{
E_GADMAN_EDGE_LEFT,
E_GADMAN_EDGE_RIGHT,
E_GADMAN_EDGE_TOP,
E_GADMAN_EDGE_BOTTOM
} E_Gadman_Edge;
typedef enum _E_Gadman_Mode
{
E_GADMAN_MODE_NORMAL,
@ -59,12 +65,16 @@ struct _E_Gadman_Client
unsigned char resizing_r : 1;
unsigned char resizing_u : 1;
unsigned char resizing_d : 1;
E_Gadman_Edge edge;
char *domain;
E_Zone *zone;
int instance;
E_Gadman_Policy policy;
Evas_Coord x, y, w, h;
Evas_Coord minw, minh, maxw, maxh;
unsigned char use_autow : 1;
unsigned char use_autoh : 1;
Evas_Coord autow, autoh;
double ax, ay;
double mina, maxa;
void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change);
@ -73,11 +83,12 @@ struct _E_Gadman_Client
EAPI int e_gadman_init(void);
EAPI int e_gadman_shutdown(void);
EAPI E_Gadman *e_gadman_new(E_Container *con);
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_save(E_Gadman_Client *gmc);
EAPI void e_gadman_edge_set(E_Gadman_Client *gmc, E_Gadman_Edge edge);
EAPI void e_gadman_client_load(E_Gadman_Client *gmc);
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);
@ -86,6 +97,7 @@ EAPI void e_gadman_client_min_size_set(E_Gadman_Client *gmc, Evas_Co
EAPI void e_gadman_client_max_size_set(E_Gadman_Client *gmc, Evas_Coord maxw, Evas_Coord maxh);
EAPI void e_gadman_client_align_set(E_Gadman_Client *gmc, double xalign, double yalign);
EAPI void e_gadman_client_aspect_set(E_Gadman_Client *gmc, double mina, double maxa);
EAPI void e_gadman_client_auto_size_set(E_Gadman_Client *gmc, Evas_Coord autow, Evas_Coord autoh);
EAPI void e_gadman_client_geometry_get(E_Gadman_Client *gmc, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
EAPI void e_gadman_client_change_func_set(E_Gadman_Client *gmc, void (*func) (void *data, E_Gadman_Client *gmc, E_Gadman_Change change), void *data);
EAPI E_Menu *e_gadman_client_menu_new(E_Gadman_Client *gmc);

View File

@ -544,6 +544,8 @@ _e_main_screens_init(void)
gmc->w = 150;
gmc->h = 150;
e_gadman_client_min_size_set(gmc, 20, 20);
e_gadman_client_auto_size_set(gmc, 200, 50);
e_gadman_client_aspect_set(gmc, 4.0, 4.0);
}
}
free(roots);