\section{win\-\_\-example.\-c}

\begin{DoxyCodeInclude}
\textcolor{comment}{/*}
\textcolor{comment}{ * gcc -o win\_example win\_example.c `pkg-config --cflags --libs elementary ecore-x`}
\textcolor{comment}{ */}
\textcolor{preprocessor}{#ifdef HAVE\_ELEMENTARY\_X}
\textcolor{preprocessor}{}\textcolor{preprocessor}{# include <Ecore\_X.h>}
\textcolor{preprocessor}{#endif}
\textcolor{preprocessor}{}
\textcolor{preprocessor}{#include <Elementary.h>}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_activate\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   elm_win_activate(data);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_lower\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   elm_win_lower(data);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_raise\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   elm_win_raise(data);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_borderless\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_borderless_get(data);
   elm_win_borderless_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_shaped\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_shaped_get(data);
   elm_win_shaped_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_alpha\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_alpha_get(data);
   elm_win_alpha_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_fullscreen\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_fullscreen_get(data);
   elm_win_fullscreen_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_maximized\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_maximized_get(data);
   elm_win_maximized_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_iconified\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_iconified_get(data);
   elm_win_iconified_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_rotation\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   \textcolor{keywordtype}{int} angle = elm_win_rotation_get(data);
   angle = (angle + 90) % 360;
   elm_win_rotation_set(data, angle);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_rotation\_resize\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   \textcolor{keywordtype}{int} angle = elm_win_rotation_get(data);
   angle = (angle + 90) % 360;
   elm_win_rotation_with_resize_set(data, angle);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_btn\_sticky\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Eina\_Bool flag = elm_win_sticky_get(data);
   elm_win_sticky_set(data, !flag);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_yes\_quit\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   elm_exit();
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_no\_quit\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   evas\_object\_del(data);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_main\_win\_del\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   Evas\_Object *msg, *box, *box2, *btn, *lbl, *sep;

   msg = elm_notify_add(obj);
   elm_notify_align_set(msg, 0.5, 0.5);
   elm_notify_allow_events_set(msg, EINA\_FALSE);
   evas\_object\_show(msg);

   box = elm_box_add(obj);
   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);

   lbl = elm_label_add(obj);
   elm\_object\_text\_set(lbl, \textcolor{stringliteral}{"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);

   sep = elm_separator_add(obj);
   elm_separator_horizontal_set(sep, EINA\_TRUE);
   elm_box_pack_end(box, sep);
   evas\_object\_show(sep);

   box2 = elm_box_add(obj);
   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);

   btn = elm_button_add(obj);
   elm\_object\_text\_set(btn, \textcolor{stringliteral}{"Yes"});
   elm_box_pack_end(box2, btn);
   evas\_object\_show(btn);

   evas\_object\_smart\_callback\_add(btn, \textcolor{stringliteral}{"clicked"}, \_yes\_quit\_cb, NULL);

   btn = elm_button_add(obj);
   elm\_object\_text\_set(btn, \textcolor{stringliteral}{"No"});
   elm_box_pack_end(box2, btn);
   evas\_object\_show(btn);

   evas\_object\_smart\_callback\_add(btn, \textcolor{stringliteral}{"clicked"}, \_no\_quit\_cb, msg);
\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_force\_focus\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
\textcolor{preprocessor}{#ifdef HAVE\_ELEMENTARY\_X}
\textcolor{preprocessor}{}   Ecore\_X\_Window xwin = elm_win_xwindow_get(data);
   ecore\_x\_window\_focus(xwin);
\textcolor{preprocessor}{#endif}
\textcolor{preprocessor}{}\}

\textcolor{keyword}{static} \textcolor{keywordtype}{void}
\_win\_focused\_cb(\textcolor{keywordtype}{void} *data, Evas\_Object *obj, \textcolor{keywordtype}{void} *event)
\{
   \textcolor{keyword}{const} \textcolor{keywordtype}{char} *name = data;
   printf(\textcolor{stringliteral}{"Window focused: %s\(\backslash\)n"}, name);
\}

EAPI\_MAIN \textcolor{keywordtype}{int}
elm\_main(\textcolor{keywordtype}{int} argc, \textcolor{keywordtype}{char} *argv[])
\{
   Evas\_Object *win, *win2, *bigbox, *box, *btn, *o;
   \textcolor{keywordtype}{char} buf[256];

   elm_app_info_set(elm\_main, \textcolor{stringliteral}{"elementary"}, \textcolor{stringliteral}{"images/logo.png"});

   win = elm_win_util_standard_add(\textcolor{stringliteral}{"win-example"}, \textcolor{stringliteral}{"Elm\_Win Example"});
   elm_win_focus_highlight_enabled_set(win, EINA\_TRUE);
   evas\_object\_resize(win, 400, 400);
   evas\_object\_show(win);

   evas\_object\_smart\_callback\_add(win, \textcolor{stringliteral}{"focus,in"}, \_win\_focused\_cb, \textcolor{stringliteral}{"mainwin"});

   evas\_object\_smart\_callback\_add(win, \textcolor{stringliteral}{"delete,request"}, \_main\_win\_del\_cb,
                                  NULL);

   bigbox = elm_box_add(win);
   elm_box_horizontal_set(bigbox, EINA\_TRUE);
   evas\_object\_size\_hint\_weight\_set(bigbox, EVAS\_HINT\_EXPAND, EVAS\_HINT\_EXPAND);
   elm_win_resize_object_add(win, bigbox);
   evas\_object\_show(bigbox);

   box = elm_box_add(win);
   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, \textcolor{stringliteral}{"sub-win-example"}, ELM\_WIN\_DIALOG\_BASIC);
   elm_win_autodel_set(win2, EINA\_TRUE);
   elm_win_title_set(win2, \textcolor{stringliteral}{"Managed window"});
   evas\_object\_show(win2);

   evas\_object\_smart\_callback\_add(win2, \textcolor{stringliteral}{"focus,in"}, \_win\_focused\_cb, \textcolor{stringliteral}{"managed"});

   o = elm_icon_add(win2);
   sprintf(buf, \textcolor{stringliteral}{"%s/images/logo.png"}, elm_app_data_dir_get());
   elm_image_file_set(o, buf, NULL);
   elm_image_resizable_set(o, 0, 0);
   elm_image_no_scale_set(o, EINA\_TRUE);
   elm_win_resize_object_add(win2, o);
   evas\_object\_show(o);

   o = elm_label_add(win);
   elm\_object\_text\_set(o, \textcolor{stringliteral}{"<b>Managed Window</b>"});
   elm_box_pack_end(box, o);
   evas\_object\_show(o);

\textcolor{preprocessor}{#define WIN\_ACTION(name) \(\backslash\)}
\textcolor{preprocessor}{   do \{ \(\backslash\)}
\textcolor{preprocessor}{        btn = elm\_button\_add(win); \(\backslash\)}
\textcolor{preprocessor}{        elm\_object\_text\_set(btn, #name); \(\backslash\)}
\textcolor{preprocessor}{        elm\_box\_pack\_end(box, btn); \(\backslash\)}
\textcolor{preprocessor}{        evas\_object\_show(btn); \(\backslash\)}
\textcolor{preprocessor}{        evas\_object\_smart\_callback\_add(btn, "clicked", \_btn\_##name##\_cb, win2); \(\backslash\)}
\textcolor{preprocessor}{   \} while (0)}
\textcolor{preprocessor}{}
   WIN\_ACTION(activate);
   WIN\_ACTION(lower);
   WIN\_ACTION(\textcolor{keyword}{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);

   box = elm_box_add(win);
   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_util_standard_add(\textcolor{stringliteral}{"sub-win-example2"}, \textcolor{stringliteral}{"Non-managed window"});
   elm_win_autodel_set(win2, EINA\_TRUE);
   elm_win_override_set(win2, EINA\_TRUE);
   evas\_object\_show(win2);

   evas\_object\_smart\_callback\_add(win2, \textcolor{stringliteral}{"focus,in"}, \_win\_focused\_cb,
                                  \textcolor{stringliteral}{"override"});

   bigbox = elm_box_add(win2);
   evas\_object\_size\_hint\_weight\_set(bigbox, EVAS\_HINT\_EXPAND, EVAS\_HINT\_EXPAND);
   elm_win_resize_object_add(win2, bigbox);
   evas\_object\_show(bigbox);

   o = elm_label_add(win2);
   elm\_object\_text\_set(o, \textcolor{stringliteral}{"This window should have no borders or titlebar.<ps>"}
                       \textcolor{stringliteral}{"It was set in override mode, so the Window Manager<ps>"}
                       \textcolor{stringliteral}{"should ignore everything about it.<ps>"}
                       \textcolor{stringliteral}{"It's up to the program to handle it properly, and some"}
                       \textcolor{stringliteral}{"of the actions performed on it may not have any effect."}
                      );
   elm_box_pack_end(bigbox, o);
   evas\_object\_show(o);

   o = elm_entry_add(win2);
   elm\_object\_text\_set(o, \textcolor{stringliteral}{"See if you can focus me"});
   elm_entry_single_line_set(o, EINA\_TRUE);
   elm_entry_scrollable_set(o, EINA\_TRUE);
   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);

   o = elm_separator_add(win2);
   elm_separator_horizontal_set(o, EINA\_TRUE);
   elm_box_pack_end(bigbox, o);
   evas\_object\_show(o);

   o = elm_button_add(win2);
   elm\_object\_text\_set(o, \textcolor{stringliteral}{"Focus me"});
   elm_box_pack_end(bigbox, o);
   evas\_object\_show(o);

   evas\_object\_smart\_callback\_add(o, \textcolor{stringliteral}{"clicked"}, \_force\_focus\_cb, win2);

   o = elm_label_add(win);
   elm\_object\_text\_set(o, \textcolor{stringliteral}{"<b>Override Window</b>"});
   elm_box_pack_end(box, o);
   evas\_object\_show(o);

   WIN\_ACTION(activate);
   WIN\_ACTION(lower);
   WIN\_ACTION(\textcolor{keyword}{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);

   elm_run();
   elm_shutdown();

   \textcolor{keywordflow}{return} 0;
\}
ELM_MAIN()
\end{DoxyCodeInclude}
 