update for beta release
[platform/core/uifw/e17.git] / src / bin / e_manager.h
1 #ifdef E_TYPEDEFS
2
3 typedef struct _E_Manager             E_Manager;
4 typedef struct _E_Manager_Comp        E_Manager_Comp;
5 typedef struct _E_Manager_Comp_Source E_Manager_Comp_Source;
6
7 #else
8 #ifndef E_MANAGER_H
9 #define E_MANAGER_H
10
11 #define E_MANAGER_TYPE (int) 0xE0b01008
12   
13 struct _E_Manager
14 {
15    E_Object             e_obj_inherit;
16    
17    Ecore_X_Window       win;
18    int                  num;
19    int                  x, y, w, h;
20    char                 visible : 1;
21    Ecore_X_Window       root;
22    Eina_List           *handlers;
23    Eina_List           *containers;
24
25    E_Pointer           *pointer;
26    Ecore_X_Window       initwin;
27    
28    E_Manager_Comp      *comp;
29 };
30
31 struct _E_Manager_Comp
32 {
33   struct {
34     Evas             * (*evas_get)             (void *data, E_Manager *man);
35     void               (*update)               (void *data, E_Manager *man);
36     const Eina_List  * (*src_list_get)         (void *data, E_Manager *man);
37     Evas_Object      * (*src_image_get)        (void *data, E_Manager *man, E_Manager_Comp_Source *src);
38     Evas_Object      * (*src_shadow_get)       (void *data, E_Manager *man, E_Manager_Comp_Source *src);
39     Evas_Object      * (*src_image_mirror_add) (void *data, E_Manager *man, E_Manager_Comp_Source *src);
40     Eina_Bool          (*src_visible_get)      (void *data, E_Manager *man, E_Manager_Comp_Source *src);
41     void               (*src_hidden_set)       (void *data, E_Manager *man, E_Manager_Comp_Source *src, Eina_Bool hidden);
42     Eina_Bool          (*src_hidden_get)       (void *data, E_Manager *man, E_Manager_Comp_Source *src);
43     E_Manager_Comp_Source * (*src_get)         (void *data, E_Manager *man, Ecore_X_Window win);
44     E_Popup          * (*src_popup_get)        (void *data, E_Manager *man, E_Manager_Comp_Source *src);
45     E_Border         * (*src_border_get)       (void *data, E_Manager *man, E_Manager_Comp_Source *src);
46     Ecore_X_Window     (*src_window_get)       (void *data, E_Manager *man, E_Manager_Comp_Source *src);
47 #ifdef _F_COMP_SCREEN_LOCK_
48     void               (*screen_lock)          (void *data, E_Manager *man);
49     void               (*screen_unlock)        (void *data, E_Manager *man);
50 #endif
51 #ifdef _F_COMP_INPUT_REGION_SET_
52     Eina_Bool          (*src_input_region_set) (void *data, E_Manager *man, E_Manager_Comp_Source *src, int x, int y, int w, int h);
53 #endif
54 #ifdef _F_COMP_MOVE_LOCK_
55     Eina_Bool          (*src_move_lock)        (void *data, E_Manager *man, E_Manager_Comp_Source *src);
56     Eina_Bool          (*src_move_unlock)      (void *data, E_Manager *man, E_Manager_Comp_Source *src);
57 #endif
58   } func;
59   void                   *data;
60 };
61
62 EINTERN int        e_manager_init(void);
63 EINTERN int        e_manager_shutdown(void);
64 EAPI Eina_List *e_manager_list(void);
65     
66 EAPI E_Manager      *e_manager_new(Ecore_X_Window root, int num);
67 EAPI void            e_manager_manage_windows(E_Manager *man);
68 EAPI void            e_manager_show(E_Manager *man);
69 EAPI void            e_manager_hide(E_Manager *man);
70 EAPI void            e_manager_move(E_Manager *man, int x, int y);
71 EAPI void            e_manager_resize(E_Manager *man, int w, int h);
72 EAPI void            e_manager_move_resize(E_Manager *man, int x, int y, int w, int h);
73 EAPI void            e_manager_raise(E_Manager *man);
74 EAPI void            e_manager_lower(E_Manager *man);
75 EAPI E_Manager      *e_manager_current_get(void);
76 EAPI E_Manager      *e_manager_number_get(int num);
77
78 EAPI void            e_managers_keys_grab(void);
79 EAPI void            e_managers_keys_ungrab(void);
80
81 // tenative api for e's compositor to advertise to the rest of e the comp
82 // canvas. on comp evas register (set evas) we send:
83 //   e_msg_send("comp.manager", "comp.change", 0, man);
84 // so to hook up to it:
85 //   static void handler(void *data, const char *name, const char *info, int val, E_Object *obj, void *msgdata)
86 //   {
87 //     if (!strcmp(name, "comp.manager"))
88 //       {
89 //         if (!strcmp(info, "change.comp"))
90 //           { // compositor canvas added or deleted
91 //             Evas *e = e_manager_comp_evas_get((E_Manager *)obj);
92 //             if (!e) printf("No comp manager\n");
93 //             else printf("comp canvas = %p\n", e);
94 //           }
95 /// FIXME: implement below
96 //         else if (!strcmp(info, "resize.comp"))
97 //           { // compositor canvas resized
98 //           }
99 //         else if (!strcmp(info, "add.src"))
100 //           { // compositor source added
101 //           }
102 //         else if (!strcmp(info, "del.src"))
103 //           { // compositor source deleted
104 //           }
105 //         else if (!strcmp(info, "config.src"))
106 //           { // compositor src reconfigured (moved, resized)
107 //           }
108 //         else if (!strcmp(info, "visible.src"))
109 //           { // compositor src shown or hidden
110 //           }
111 //       }
112 //   }
113 //   e_msg_handler_add(handler, mydata);
114 // 
115 // remember to listen to zone confiugre events like:
116 // E_EVENT_ZONE_MOVE_RESIZE
117 // E_EVENT_ZONE_ADD
118 // E_EVENT_ZONE_DEL
119 // 
120 // only 1 compositor can own a manager at a time, so before you "set" the 
121 // comp evas, you need to get it and make sure it's NULL, if so, then
122 // you can set the update func and the comp evas
123 EAPI void             e_manager_comp_set(E_Manager *man, E_Manager_Comp *comp);
124 EAPI Evas            *e_manager_comp_evas_get(E_Manager *man);
125 EAPI void             e_manager_comp_evas_update(E_Manager *man);
126 EAPI const Eina_List *e_manager_comp_src_list(E_Manager *man);
127 EAPI Evas_Object     *e_manager_comp_src_image_get(E_Manager *man, E_Manager_Comp_Source *src);
128 EAPI Evas_Object     *e_manager_comp_src_shadow_get(E_Manager *man, E_Manager_Comp_Source *src);
129 EAPI Evas_Object     *e_manager_comp_src_image_mirror_add(E_Manager *man, E_Manager_Comp_Source *src);
130 EAPI Eina_Bool        e_manager_comp_src_visible_get(E_Manager *man, E_Manager_Comp_Source *src);
131 EAPI void             e_manager_comp_src_hidden_set(E_Manager *man, E_Manager_Comp_Source *src, Eina_Bool hidden);
132 EAPI Eina_Bool        e_manager_comp_src_hidden_get(E_Manager *man, E_Manager_Comp_Source *src);
133 EAPI void             e_manager_comp_event_resize_send(E_Manager *man);
134 EAPI void             e_manager_comp_event_src_add_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data);
135 EAPI void             e_manager_comp_event_src_del_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data);
136 EAPI void             e_manager_comp_event_src_config_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data);
137 EAPI void             e_manager_comp_event_src_visibility_send(E_Manager *man, E_Manager_Comp_Source *src, void (*afterfunc) (void *data, E_Manager *man, E_Manager_Comp_Source *src), void *data);
138 EAPI E_Manager_Comp_Source *e_manager_comp_src_get(E_Manager *man, Ecore_X_Window win);
139 EAPI E_Popup         *e_manager_comp_src_popup_get(E_Manager *man, E_Manager_Comp_Source *src);
140 EAPI E_Border        *e_manager_comp_src_border_get(E_Manager *man, E_Manager_Comp_Source *src);
141 EAPI Ecore_X_Window   e_manager_comp_src_window_get(E_Manager *man, E_Manager_Comp_Source *src);
142 #ifdef _F_COMP_SCREEN_LOCK_
143 EAPI void             e_manager_comp_screen_lock(E_Manager *man);
144 EAPI void             e_manager_comp_screen_unlock(E_Manager *man);
145 #endif
146 #ifdef _F_COMP_INPUT_REGION_SET_
147 EAPI Eina_Bool        e_manager_comp_src_input_region_set(E_Manager *man, E_Manager_Comp_Source *src, int x, int y, int w, int h);
148 #endif
149 #ifdef _F_COMP_MOVE_LOCK_
150 EAPI Eina_Bool        e_manager_comp_src_move_lock(E_Manager *man, E_Manager_Comp_Source *src);
151 EAPI Eina_Bool        e_manager_comp_src_move_unlock(E_Manager *man, E_Manager_Comp_Source *src);
152 #endif
153 #endif
154 #endif