#ifdef HAVE_ELEMENTARY_X
# include <Ecore_X.h>
#endif
#include <Elementary.h>
static Evas_Object *win2;
static void
_btn_activate_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_lower_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_raise_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_borderless_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_shaped_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_alpha_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_fullscreen_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_maximized_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_iconified_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_btn_rotation_cb(void *data, Evas_Object *obj, void *event)
{
angle = (angle + 90) % 360;
}
static void
_btn_rotation_resize_cb(void *data, Evas_Object *obj, void *event)
{
angle = (angle + 90) % 360;
}
static void
_btn_sticky_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_yes_quit_cb(void *data, Evas_Object *obj, void *event)
{
}
static void
_no_quit_cb(void *data, Evas_Object *obj, void *event)
{
evas_object_del(data);
}
static void
_main_win_del_cb(void *data, Evas_Object *obj, void *event)
{
Evas_Object *msg, *box, *box2, *btn, *lbl, *sep;
elm_notify_align_set(msg, 0.5, 0.5);
elm_notify_allow_events_set(msg, EINA_FALSE);
evas_object_show(msg);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_object_content_set(msg, box);
evas_object_show(box);
elm_object_text_set(lbl, "Really want quit?");
evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, lbl);
evas_object_show(lbl);
elm_separator_horizontal_set(sep, EINA_TRUE);
elm_box_pack_end(box, sep);
evas_object_show(sep);
elm_box_horizontal_set(box2, EINA_TRUE);
evas_object_size_hint_weight_set(box2, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(box2, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, box2);
evas_object_show(box2);
elm_object_text_set(btn, "Yes");
elm_box_pack_end(box2, btn);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked", _yes_quit_cb, NULL);
elm_object_text_set(btn, "No");
elm_box_pack_end(box2, btn);
evas_object_show(btn);
evas_object_smart_callback_add(btn, "clicked", _no_quit_cb, msg);
}
static void
_force_focus_cb(void *data, Evas_Object *obj, void *event)
{
#ifdef HAVE_ELEMENTARY_X
ecore_x_window_focus(xwin);
#endif
}
static void
_win_focused_cb(void *data, Evas_Object *obj, void *event)
{
const char *name = data;
printf("Window focused: %s\n", name);
}
static Eina_Bool
key_down()
{
return ECORE_CALLBACK_PASS_ON;
}
EAPI_MAIN int
elm_main(int argc, char *argv[])
{
Evas_Object *win, *bigbox, *box, *btn, *o;
char buf[256];
evas_object_smart_callback_add(win, "focus,in", _win_focused_cb, "mainwin");
evas_object_smart_callback_add(win, "delete,request", _main_win_del_cb,
NULL);
ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_down, NULL);
elm_box_horizontal_set(bigbox, EINA_TRUE);
evas_object_size_hint_weight_set(bigbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bigbox);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bigbox, box);
evas_object_show(box);
win2 =
elm_win_add(NULL,
"sub-win-example", ELM_WIN_DIALOG_BASIC);
evas_object_show(win2);
evas_object_smart_callback_add(win2, "focus,in", _win_focused_cb, "managed");
evas_object_show(o);
elm_object_text_set(o, "<b>Managed Window</b>");
elm_box_pack_end(box, o);
evas_object_show(o);
#define WIN_ACTION(name) \
do { \
btn = elm_button_add(win); \
elm_object_text_set(btn, #name); \
elm_box_pack_end(box, btn); \
evas_object_show(btn); \
evas_object_smart_callback_add(btn, "clicked", _btn_##name##_cb, win2); \
} while (0)
WIN_ACTION(activate);
WIN_ACTION(lower);
WIN_ACTION(raise);
WIN_ACTION(borderless);
WIN_ACTION(shaped);
WIN_ACTION(alpha);
WIN_ACTION(fullscreen);
WIN_ACTION(maximized);
WIN_ACTION(iconified);
WIN_ACTION(rotation);
WIN_ACTION(rotation_resize);
WIN_ACTION(sticky);
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bigbox, box);
evas_object_show(box);
evas_object_show(win2);
evas_object_smart_callback_add(win2, "focus,in", _win_focused_cb,
"override");
evas_object_size_hint_weight_set(bigbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_show(bigbox);
elm_object_text_set(o, "This window should have no borders or titlebar.<ps>"
"It was set in override mode, so the Window Manager<ps>"
"should ignore everything about it.<ps>"
"It's up to the program to handle it properly, and some"
"of the actions performed on it may not have any effect."
);
elm_box_pack_end(bigbox, o);
evas_object_show(o);
elm_object_text_set(o, "See if you can focus me");
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, 0.0);
evas_object_size_hint_align_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(bigbox, o);
evas_object_show(o);
elm_separator_horizontal_set(o, EINA_TRUE);
elm_box_pack_end(bigbox, o);
evas_object_show(o);
elm_object_text_set(o, "Focus me");
elm_box_pack_end(bigbox, o);
evas_object_show(o);
evas_object_smart_callback_add(o, "clicked", _force_focus_cb, win2);
elm_object_text_set(o, "<b>Override Window</b>");
elm_box_pack_end(box, o);
evas_object_show(o);
WIN_ACTION(activate);
WIN_ACTION(lower);
WIN_ACTION(raise);
WIN_ACTION(borderless);
WIN_ACTION(shaped);
WIN_ACTION(alpha);
WIN_ACTION(fullscreen);
WIN_ACTION(maximized);
WIN_ACTION(iconified);
WIN_ACTION(rotation);
WIN_ACTION(rotation_resize);
WIN_ACTION(sticky);
evas_object_resize(win, 400, 400);
evas_object_show(win);
return 0;
}