forked from enlightenment/enlightenment
well - skeleton work.. going to work on exebuf...
SVN revision: 18876
This commit is contained in:
parent
75506f8e41
commit
7104735aa4
|
@ -121,7 +121,8 @@ e_widget_slider.h \
|
||||||
e_int_config_window_manipulation.h \
|
e_int_config_window_manipulation.h \
|
||||||
e_int_config_window_display.h \
|
e_int_config_window_display.h \
|
||||||
e_int_config_background.h \
|
e_int_config_background.h \
|
||||||
e_deskpreview.h
|
e_deskpreview.h \
|
||||||
|
e_exebuf.h
|
||||||
|
|
||||||
enlightenment_src = \
|
enlightenment_src = \
|
||||||
e_user.c \
|
e_user.c \
|
||||||
|
@ -224,6 +225,7 @@ e_int_config_window_manipulation.c \
|
||||||
e_int_config_window_display.c \
|
e_int_config_window_display.c \
|
||||||
e_int_config_background.c \
|
e_int_config_background.c \
|
||||||
e_deskpreview.c \
|
e_deskpreview.c \
|
||||||
|
e_exebuf.c \
|
||||||
$(ENLIGHTENMENTHEADERS)
|
$(ENLIGHTENMENTHEADERS)
|
||||||
|
|
||||||
enlightenment_SOURCES = \
|
enlightenment_SOURCES = \
|
||||||
|
|
|
@ -0,0 +1,171 @@
|
||||||
|
/*
|
||||||
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||||
|
*/
|
||||||
|
#include "e.h"
|
||||||
|
|
||||||
|
/* local subsystem functions */
|
||||||
|
|
||||||
|
static int _e_exebuf_cb_key_down(void *data, int type, void *event);
|
||||||
|
static int _e_exebuf_cb_mouse_down(void *data, int type, void *event);
|
||||||
|
static int _e_exebuf_cb_mouse_up(void *data, int type, void *event);
|
||||||
|
static int _e_exebuf_cb_mouse_wheel(void *data, int type, void *event);
|
||||||
|
|
||||||
|
/* local subsystem globals */
|
||||||
|
static E_Popup *exebuf = NULL;
|
||||||
|
static Evas_Object *bg_object = NULL;
|
||||||
|
static Evas_List *handlers = NULL;
|
||||||
|
static Ecore_X_Window input_window = 0;
|
||||||
|
|
||||||
|
/* externally accessible functions */
|
||||||
|
int
|
||||||
|
e_exebuf_init(void)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_exebuf_shutdown(void)
|
||||||
|
{
|
||||||
|
e_exebuf_hide();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_exebuf_show(E_Zone *zone)
|
||||||
|
{
|
||||||
|
Evas_Object *o;
|
||||||
|
int x, y, w, h;
|
||||||
|
|
||||||
|
E_OBJECT_CHECK_RETURN(zone, 0);
|
||||||
|
E_OBJECT_TYPE_CHECK_RETURN(zone, E_ZONE_TYPE, 0);
|
||||||
|
|
||||||
|
if (exebuf) return 0;
|
||||||
|
|
||||||
|
input_window = ecore_x_window_input_new(zone->container->win, 0, 0, 1, 1);
|
||||||
|
ecore_x_window_show(input_window);
|
||||||
|
e_grabinput_get(input_window, 0, input_window);
|
||||||
|
|
||||||
|
x = zone->x + 20;
|
||||||
|
y = zone->y + 20 + ((zone->h - 20 - 20 - 20) / 2);
|
||||||
|
w = zone->w - 20 - 20;
|
||||||
|
h = 20;
|
||||||
|
|
||||||
|
exebuf = e_popup_new(zone, x, y, w, h);
|
||||||
|
if (!exebuf) return 0;
|
||||||
|
e_popup_layer_set(exebuf, 255);
|
||||||
|
evas_event_freeze(exebuf->evas);
|
||||||
|
o = edje_object_add(exebuf->evas);
|
||||||
|
bg_object = o;
|
||||||
|
e_theme_edje_object_set(o, "base/theme/exebuf",
|
||||||
|
"widgets/exebuf/main");
|
||||||
|
evas_object_move(o, 0, 0);
|
||||||
|
evas_object_resize(o, w, h);
|
||||||
|
evas_object_show(o);
|
||||||
|
e_popup_edje_bg_object_set(exebuf, o);
|
||||||
|
|
||||||
|
evas_event_thaw(exebuf->evas);
|
||||||
|
|
||||||
|
handlers = evas_list_append
|
||||||
|
(handlers, ecore_event_handler_add
|
||||||
|
(ECORE_X_EVENT_KEY_DOWN, _e_exebuf_cb_key_down, NULL));
|
||||||
|
handlers = evas_list_append
|
||||||
|
(handlers, ecore_event_handler_add
|
||||||
|
(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, _e_exebuf_cb_mouse_down, NULL));
|
||||||
|
handlers = evas_list_append
|
||||||
|
(handlers, ecore_event_handler_add
|
||||||
|
(ECORE_X_EVENT_MOUSE_BUTTON_UP, _e_exebuf_cb_mouse_up, NULL));
|
||||||
|
handlers = evas_list_append
|
||||||
|
(handlers, ecore_event_handler_add
|
||||||
|
(ECORE_X_EVENT_MOUSE_WHEEL, _e_exebuf_cb_mouse_wheel, NULL));
|
||||||
|
|
||||||
|
e_popup_show(exebuf);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
e_exebuf_hide(void)
|
||||||
|
{
|
||||||
|
if (!exebuf) return;
|
||||||
|
|
||||||
|
evas_event_freeze(exebuf->evas);
|
||||||
|
e_popup_hide(exebuf);
|
||||||
|
evas_object_del(bg_object);
|
||||||
|
bg_object = NULL;
|
||||||
|
evas_event_thaw(exebuf->evas);
|
||||||
|
e_object_del(E_OBJECT(exebuf));
|
||||||
|
exebuf = NULL;
|
||||||
|
while (handlers)
|
||||||
|
{
|
||||||
|
ecore_event_handler_del(handlers->data);
|
||||||
|
handlers = evas_list_remove_list(handlers, handlers);
|
||||||
|
}
|
||||||
|
ecore_x_window_del(input_window);
|
||||||
|
e_grabinput_release(input_window, input_window);
|
||||||
|
input_window = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* local subsystem functions */
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_exebuf_cb_key_down(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_X_Event_Key_Down *ev;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
if (ev->win != input_window) return 1;
|
||||||
|
if (!strcmp(ev->keysymbol, "Up"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
else if (!strcmp(ev->keysymbol, "Down"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
else if (!strcmp(ev->keysymbol, "Left"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
else if (!strcmp(ev->keysymbol, "Right"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
else if (!strcmp(ev->keysymbol, "Return"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
else if (!strcmp(ev->keysymbol, "Escape"))
|
||||||
|
e_exebuf_hide();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_exebuf_cb_mouse_down(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_X_Event_Mouse_Button_Down *ev;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
if (ev->win != input_window) return 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_exebuf_cb_mouse_up(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_X_Event_Mouse_Button_Up *ev;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
if (ev->win != input_window) return 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_e_exebuf_cb_mouse_wheel(void *data, int type, void *event)
|
||||||
|
{
|
||||||
|
Ecore_X_Event_Mouse_Wheel *ev;
|
||||||
|
|
||||||
|
ev = event;
|
||||||
|
if (ev->win != input_window) return 1;
|
||||||
|
if (ev->z < 0) /* up */
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = ev->z; i < 0; i++) e_exebuf_hide();
|
||||||
|
}
|
||||||
|
else if (ev->z > 0) /* down */
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = ev->z; i > 0; i--) e_exebuf_hide();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||||
|
*/
|
||||||
|
#ifdef E_TYPEDEFS
|
||||||
|
|
||||||
|
#else
|
||||||
|
#ifndef E_EXEBUF_H
|
||||||
|
#define E_EXEBUF_H
|
||||||
|
|
||||||
|
EAPI int e_exebuf_init(void);
|
||||||
|
EAPI int e_exebuf_shutdown(void);
|
||||||
|
|
||||||
|
EAPI int e_exebuf_show(E_Zone *zone);
|
||||||
|
EAPI void e_exebuf_hide(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
|
@ -102,3 +102,4 @@
|
||||||
#include "e_int_config_window_display.h"
|
#include "e_int_config_window_display.h"
|
||||||
#include "e_int_config_background.h"
|
#include "e_int_config_background.h"
|
||||||
#include "e_deskpreview.h"
|
#include "e_deskpreview.h"
|
||||||
|
#include "e_exebuf.h"
|
||||||
|
|
Loading…
Reference in New Issue