#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;
   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);
   evas_object_show(lbl);
   evas_object_show(sep);
   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);
   evas_object_show(box2);
   elm_object_text_set(btn, "Yes");
   evas_object_show(btn);
   evas_object_smart_callback_add(btn, "clicked", _yes_quit_cb, NULL);
   elm_object_text_set(btn, "No");
   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);
   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);
   evas_object_show(box);
   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>");
   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);
   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."
                      );
   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);
   evas_object_show(o);
   evas_object_show(o);
   elm_object_text_set(o, "Focus me");
   evas_object_show(o);
   evas_object_smart_callback_add(o, "clicked", _force_focus_cb, win2);
   elm_object_text_set(o, "<b>Override Window</b>");
   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;
}